summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/CMakeLists.txt79
-rw-r--r--indra/newview/app_settings/commands.xml240
-rw-r--r--indra/newview/app_settings/keywords.ini86
-rw-r--r--indra/newview/app_settings/logcontrol.xml2
-rw-r--r--indra/newview/app_settings/settings.xml716
-rw-r--r--indra/newview/app_settings/settings_minimal.xml475
-rw-r--r--indra/newview/app_settings/settings_per_account.xml11
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl26
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl23
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl84
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl66
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl79
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl8
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl71
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl21
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl7
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl27
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl29
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl32
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl131
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl10
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl21
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl30
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl28
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl40
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/cofF.glsl87
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl52
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl45
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl27
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl67
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl50
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl63
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl30
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl2118
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/giF.glsl10
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/giV.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl17
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl10
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl12
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl155
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl7
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl26
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl250
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl56
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl36
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl126
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl91
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl151
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl15
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl12
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl15
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl8
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/skyF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/skyV.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl34
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl342
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl28
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl252
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/starsF.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/starsV.glsl15
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl35
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl8
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl140
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl24
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl32
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/treeF.glsl19
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl45
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/treeV.glsl20
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/waterF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/waterV.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl12
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl56
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/glowF.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/glowV.glsl26
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/terrainF.glsl45
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/terrainV.glsl51
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl48
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl83
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/waterF.glsl90
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl50
-rw-r--r--indra/newview/app_settings/shaders/class1/environment/waterV.glsl30
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl46
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl42
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl15
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/debugF.glsl35
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/debugV.glsl34
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl42
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/highlightF.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/highlightV.glsl23
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl38
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl40
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl41
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/uiF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/uiV.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl53
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightF.glsl17
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl53
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl17
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl48
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl28
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl56
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl27
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl54
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl53
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl17
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl53
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl46
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl48
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl24
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl52
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl20
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightV.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl51
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl19
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl46
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl7
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/bumpF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/bumpV.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl58
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl56
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl53
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl31
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl36
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl27
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl27
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/impostorF.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/impostorV.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl33
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl34
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl31
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/previewV.glsl57
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl30
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/shinyV.glsl45
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl59
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl61
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl29
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl77
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/simpleV.glsl33
-rw-r--r--indra/newview/app_settings/shaders/class1/objects/treeV.glsl60
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl5
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl7
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl33
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl30
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl40
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl28
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl142
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl75
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl82
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl72
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl81
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl92
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl28
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl262
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl32
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl337
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl19
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl263
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl220
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl258
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl20
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/blurF.glsl51
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/blurV.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl51
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl34
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/extractF.glsl42
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl62
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/simpleF.glsl34
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/terrainF.glsl58
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/terrainV.glsl72
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl59
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl108
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/waterF.glsl137
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl74
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl48
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl51
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightF.glsl41
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl47
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl41
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl43
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl50
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl48
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl47
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl41
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl47
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl41
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl43
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl50
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl46
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl47
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl36
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightV.glsl36
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl45
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl41
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl17
-rw-r--r--indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl53
-rw-r--r--indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl47
-rw-r--r--indra/newview/app_settings/shaders/class2/objects/shinyV.glsl55
-rw-r--r--indra/newview/app_settings/shaders/class2/objects/simpleV.glsl51
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl20
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl38
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl50
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl81
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/skyF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/skyV.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl40
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl106
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giF.glsl211
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl45
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giV.glsl42
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl40
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl100
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl89
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl37
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl335
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl44
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/treeF.glsl39
-rw-r--r--indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl24
-rw-r--r--indra/newview/app_settings/toolbars.xml25
-rw-r--r--indra/newview/character/avatar_lad.xml21
-rw-r--r--[-rwxr-xr-x]indra/newview/featuretable.txt11
-rw-r--r--indra/newview/featuretable_linux.txt9
-rw-r--r--indra/newview/featuretable_mac.txt21
-rw-r--r--indra/newview/featuretable_solaris.txt4
-rw-r--r--indra/newview/featuretable_xp.txt10
-rw-r--r--indra/newview/gpu_table.txt34
-rw-r--r--indra/newview/installers/darwin/dmg-cleanup.applescript2
-rw-r--r--indra/newview/installers/darwin/fix_application_icon_position.sh2
-rw-r--r--indra/newview/installers/darwin/release-dmg/_DS_Storebin12292 -> 12292 bytes
-rw-r--r--indra/newview/installers/windows/installer_template.nsi250
-rw-r--r--indra/newview/installers/windows/lang_ko.nsibin6200 -> 0 bytes
-rw-r--r--indra/newview/installers/windows/lang_nl.nsibin7414 -> 0 bytes
-rw-r--r--indra/newview/installers/windows/lang_ru.nsibin0 -> 7598 bytes
-rw-r--r--indra/newview/installers/windows/lang_tr.nsibin0 -> 7722 bytes
-rw-r--r--indra/newview/installers/windows/lang_zh.nsibin5554 -> 5824 bytes
-rw-r--r--indra/newview/installers/windows/language_menu.nsibin1444 -> 1448 bytes
-rwxr-xr-xindra/newview/llagent.cpp117
-rw-r--r--indra/newview/llagent.h26
-rw-r--r--indra/newview/llagentcamera.cpp5
-rw-r--r--indra/newview/llagentwearables.cpp4
-rw-r--r--indra/newview/llappearancemgr.cpp13
-rw-r--r--indra/newview/llappviewer.cpp220
-rw-r--r--indra/newview/llappviewerwin32.cpp4
-rw-r--r--indra/newview/llassetuploadresponders.cpp15
-rwxr-xr-xindra/newview/llavataractions.cpp44
-rw-r--r--indra/newview/llavataractions.h3
-rw-r--r--indra/newview/llbottomtray.cpp1991
-rw-r--r--indra/newview/llbottomtray.h564
-rw-r--r--indra/newview/llcallfloater.cpp20
-rw-r--r--indra/newview/llchannelmanager.cpp51
-rw-r--r--indra/newview/llchannelmanager.h26
-rw-r--r--indra/newview/llchatbar.cpp3
-rw-r--r--indra/newview/llchathistory.cpp5
-rw-r--r--indra/newview/llchatitemscontainerctrl.cpp5
-rw-r--r--indra/newview/llchiclet.cpp12
-rw-r--r--indra/newview/llchicletbar.cpp374
-rw-r--r--indra/newview/llchicletbar.h105
-rw-r--r--indra/newview/llcofwearables.cpp13
-rw-r--r--indra/newview/llcylinder.cpp260
-rw-r--r--indra/newview/llcylinder.h33
-rw-r--r--indra/newview/lldebugview.cpp38
-rw-r--r--indra/newview/lldebugview.h5
-rw-r--r--indra/newview/lldirpicker.cpp4
-rw-r--r--indra/newview/lldndbutton.cpp9
-rw-r--r--indra/newview/lldndbutton.h5
-rw-r--r--indra/newview/lldrawpool.cpp16
-rw-r--r--indra/newview/lldrawpool.h1
-rw-r--r--indra/newview/lldrawpoolalpha.cpp54
-rw-r--r--indra/newview/lldrawpoolalpha.h1
-rw-r--r--indra/newview/lldrawpoolavatar.cpp264
-rw-r--r--indra/newview/lldrawpoolavatar.h3
-rw-r--r--indra/newview/lldrawpoolbump.cpp251
-rw-r--r--indra/newview/lldrawpoolground.cpp6
-rw-r--r--indra/newview/lldrawpoolsimple.cpp47
-rw-r--r--indra/newview/lldrawpoolsimple.h5
-rw-r--r--indra/newview/lldrawpoolsky.cpp21
-rw-r--r--indra/newview/lldrawpoolterrain.cpp230
-rw-r--r--indra/newview/lldrawpoolterrain.h3
-rw-r--r--indra/newview/lldrawpooltree.cpp170
-rw-r--r--indra/newview/lldrawpooltree.h3
-rw-r--r--indra/newview/lldrawpoolwater.cpp69
-rw-r--r--indra/newview/lldrawpoolwater.h1
-rw-r--r--indra/newview/lldrawpoolwlsky.cpp44
-rw-r--r--indra/newview/lldynamictexture.cpp4
-rw-r--r--indra/newview/llface.cpp100
-rw-r--r--indra/newview/llface.h6
-rw-r--r--indra/newview/llfasttimerview.cpp12
-rw-r--r--indra/newview/llfavoritesbar.cpp376
-rw-r--r--indra/newview/llfavoritesbar.h20
-rw-r--r--indra/newview/llfeaturemanager.cpp10
-rw-r--r--indra/newview/llfilepicker.cpp20
-rw-r--r--indra/newview/llfloaterabout.cpp3
-rw-r--r--indra/newview/llfloateranimpreview.cpp19
-rw-r--r--indra/newview/llfloateravatar.cpp54
-rw-r--r--indra/newview/llfloateravatar.h43
-rw-r--r--indra/newview/llfloatercamera.cpp40
-rw-r--r--indra/newview/llfloatercamera.h8
-rw-r--r--indra/newview/llfloaterchat.cpp485
-rw-r--r--indra/newview/llfloaterchat.h78
-rw-r--r--indra/newview/llfloaterchatterbox.cpp344
-rw-r--r--indra/newview/llfloaterchatterbox.h80
-rw-r--r--indra/newview/llfloaterdestinations.cpp54
-rw-r--r--indra/newview/llfloaterdestinations.h43
-rw-r--r--indra/newview/llfloaterfriends.cpp807
-rw-r--r--indra/newview/llfloaterfriends.h140
-rw-r--r--indra/newview/llfloaterhardwaresettings.cpp38
-rw-r--r--indra/newview/llfloaterhelpbrowser.cpp17
-rw-r--r--indra/newview/llfloaterhelpbrowser.h4
-rw-r--r--indra/newview/llfloaterhud.cpp8
-rw-r--r--indra/newview/llfloaterimagepreview.cpp69
-rw-r--r--indra/newview/llfloaterinspect.cpp39
-rw-r--r--indra/newview/llfloaterinspect.h4
-rw-r--r--indra/newview/llfloaterinventory.cpp9
-rw-r--r--indra/newview/llfloaterinventory.h1
-rw-r--r--indra/newview/llfloaterland.cpp27
-rw-r--r--indra/newview/llfloaterland.h1
-rw-r--r--indra/newview/llfloatermap.cpp49
-rw-r--r--indra/newview/llfloatermap.h6
-rw-r--r--indra/newview/llfloatermediabrowser.cpp462
-rw-r--r--indra/newview/llfloatermediabrowser.h86
-rwxr-xr-x[-rw-r--r--]indra/newview/llfloatermodelpreview.cpp157
-rw-r--r--indra/newview/llfloatermodelpreview.h3
-rw-r--r--indra/newview/llfloaterpostcard.cpp384
-rw-r--r--indra/newview/llfloaterpostcard.h79
-rwxr-xr-xindra/newview/llfloaterpreference.cpp20
-rw-r--r--indra/newview/llfloaterpreference.h1
-rw-r--r--indra/newview/llfloatersidepanelcontainer.cpp111
-rw-r--r--indra/newview/llfloatersidepanelcontainer.h81
-rw-r--r--indra/newview/llfloatersidetraytab.cpp52
-rw-r--r--indra/newview/llfloatersidetraytab.h49
-rw-r--r--indra/newview/llfloatersnapshot.cpp1408
-rw-r--r--indra/newview/llfloatersnapshot.h31
-rw-r--r--indra/newview/llfloatersounddevices.cpp7
-rw-r--r--indra/newview/llfloatertoybox.cpp191
-rw-r--r--indra/newview/llfloatertoybox.h62
-rw-r--r--indra/newview/llfloatertranslationsettings.cpp296
-rw-r--r--indra/newview/llfloatertranslationsettings.h76
-rw-r--r--indra/newview/llfloaterwebcontent.cpp163
-rw-r--r--indra/newview/llfloaterwebcontent.h26
-rw-r--r--indra/newview/llfloaterwebprofile.cpp79
-rw-r--r--indra/newview/llfloaterwebprofile.h59
-rw-r--r--indra/newview/llfloaterwindowsize.cpp35
-rw-r--r--indra/newview/llfloaterwindowsize.h22
-rw-r--r--indra/newview/llfolderview.cpp4
-rw-r--r--indra/newview/llfolderviewitem.cpp6
-rw-r--r--indra/newview/llfolderviewitem.h6
-rw-r--r--indra/newview/llglsandbox.cpp42
-rw-r--r--indra/newview/llgroupactions.cpp16
-rw-r--r--indra/newview/llgrouplist.cpp2
-rw-r--r--indra/newview/llhudeffectbeam.cpp12
-rw-r--r--indra/newview/llhudeffectblob.cpp8
-rw-r--r--indra/newview/llhudeffectblob.h2
-rw-r--r--indra/newview/llhudeffectlookat.cpp4
-rw-r--r--indra/newview/llhudeffectpointat.cpp2
-rw-r--r--indra/newview/llhudrender.cpp26
-rw-r--r--indra/newview/llimfloater.cpp57
-rw-r--r--indra/newview/llimfloater.h6
-rw-r--r--indra/newview/llimfloatercontainer.cpp3
-rw-r--r--indra/newview/llimfloatercontainer.h2
-rw-r--r--indra/newview/llimpanel.cpp1
-rw-r--r--indra/newview/llimview.cpp106
-rw-r--r--indra/newview/llimview.h11
-rw-r--r--indra/newview/llinspectobject.cpp4
-rw-r--r--indra/newview/llinventorybridge.cpp18
-rw-r--r--indra/newview/llinventoryfilter.cpp25
-rw-r--r--indra/newview/llinventoryfilter.h4
-rw-r--r--indra/newview/llinventoryfunctions.cpp18
-rw-r--r--indra/newview/llinventorymodel.cpp60
-rw-r--r--indra/newview/llinventorymodel.h13
-rw-r--r--indra/newview/llinventorypanel.cpp138
-rw-r--r--indra/newview/llinventorypanel.h2
-rw-r--r--indra/newview/lllandmarkactions.cpp2
-rw-r--r--indra/newview/lllocationinputctrl.cpp14
-rw-r--r--indra/newview/lllogininstance.cpp10
-rw-r--r--indra/newview/llmanip.cpp28
-rw-r--r--indra/newview/llmaniprotate.cpp120
-rw-r--r--indra/newview/llmanipscale.cpp42
-rw-r--r--indra/newview/llmaniptranslate.cpp43
-rw-r--r--indra/newview/llmediactrl.cpp72
-rw-r--r--indra/newview/llmediactrl.h45
-rw-r--r--indra/newview/llmenucommands.cpp94
-rw-r--r--indra/newview/llmenucommands.h37
-rw-r--r--indra/newview/llmoveview.cpp83
-rw-r--r--indra/newview/llmoveview.h6
-rw-r--r--indra/newview/llnamelistctrl.h2
-rw-r--r--indra/newview/llnavigationbar.cpp190
-rw-r--r--indra/newview/llnavigationbar.h7
-rw-r--r--indra/newview/llnearbychat.cpp100
-rw-r--r--indra/newview/llnearbychat.h19
-rw-r--r--indra/newview/llnearbychatbar.cpp458
-rw-r--r--indra/newview/llnearbychatbar.h82
-rw-r--r--indra/newview/llnearbychathandler.cpp123
-rw-r--r--indra/newview/llnetmap.cpp10
-rw-r--r--indra/newview/llnotificationalerthandler.cpp4
-rw-r--r--indra/newview/llnotificationhandlerutil.cpp2
-rw-r--r--indra/newview/llnotificationtiphandler.cpp7
-rw-r--r--indra/newview/lloutfitslist.cpp4
-rw-r--r--indra/newview/lloverlaybar.cpp378
-rw-r--r--indra/newview/lloverlaybar.h95
-rw-r--r--indra/newview/llpanelavatar.cpp709
-rw-r--r--indra/newview/llpanelavatar.h191
-rw-r--r--indra/newview/llpanelblockedlist.cpp4
-rw-r--r--indra/newview/llpanelgroup.cpp6
-rw-r--r--indra/newview/llpanelgrouplandmoney.cpp9
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp1
-rw-r--r--indra/newview/llpanellandmarks.cpp18
-rw-r--r--indra/newview/llpanellogin.cpp38
-rw-r--r--indra/newview/llpanellogin.h2
-rw-r--r--indra/newview/llpanelmaininventory.cpp15
-rw-r--r--indra/newview/llpanelmarketplaceinbox.cpp39
-rw-r--r--indra/newview/llpanelmarketplaceinbox.h4
-rw-r--r--indra/newview/llpanelmarketplaceinboxinventory.cpp115
-rw-r--r--indra/newview/llpanelmarketplaceinboxinventory.h37
-rw-r--r--indra/newview/llpanelmarketplaceoutbox.cpp18
-rw-r--r--indra/newview/llpanelme.cpp345
-rw-r--r--indra/newview/llpanelme.h66
-rw-r--r--indra/newview/llpanelnearbymedia.cpp42
-rw-r--r--indra/newview/llpanelnearbymedia.h1
-rw-r--r--indra/newview/llpanelobjectinventory.cpp1
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp9
-rw-r--r--indra/newview/llpanelpeople.cpp26
-rwxr-xr-xindra/newview/llpanelpicks.cpp61
-rwxr-xr-xindra/newview/llpanelpicks.h6
-rw-r--r--indra/newview/llpanelplaces.cpp182
-rw-r--r--indra/newview/llpanelplaces.h7
-rwxr-xr-xindra/newview/llpanelprofile.cpp56
-rwxr-xr-xindra/newview/llpanelprofile.h6
-rw-r--r--indra/newview/llpanelprofileview.cpp247
-rw-r--r--indra/newview/llpanelprofileview.h108
-rw-r--r--indra/newview/llpanelsnapshot.cpp201
-rw-r--r--indra/newview/llpanelsnapshot.h71
-rw-r--r--indra/newview/llpanelsnapshotinventory.cpp109
-rw-r--r--indra/newview/llpanelsnapshotlocal.cpp168
-rw-r--r--indra/newview/llpanelsnapshotoptions.cpp120
-rw-r--r--indra/newview/llpanelsnapshotpostcard.cpp270
-rw-r--r--indra/newview/llpanelsnapshotprofile.cpp101
-rw-r--r--indra/newview/llpanelteleporthistory.cpp81
-rw-r--r--indra/newview/llpanelteleporthistory.h2
-rw-r--r--indra/newview/llpaneltopinfobar.cpp27
-rw-r--r--indra/newview/llpaneltopinfobar.h8
-rw-r--r--indra/newview/llpanelwearing.cpp4
-rw-r--r--indra/newview/llparticipantlist.cpp9
-rw-r--r--indra/newview/llparticipantlist.h2
-rw-r--r--indra/newview/llpostcard.cpp155
-rw-r--r--indra/newview/llpostcard.h48
-rw-r--r--indra/newview/llpreview.cpp6
-rw-r--r--indra/newview/llpreviewtexture.cpp2
-rw-r--r--indra/newview/llprogressview.cpp12
-rw-r--r--indra/newview/llscreenchannel.cpp257
-rw-r--r--indra/newview/llscreenchannel.h48
-rw-r--r--indra/newview/llscriptfloater.cpp31
-rw-r--r--indra/newview/llscriptfloater.h2
-rw-r--r--indra/newview/llselectmgr.cpp110
-rw-r--r--indra/newview/llselectmgr.h2
-rw-r--r--indra/newview/llsidepanelappearance.cpp5
-rw-r--r--indra/newview/llsidepanelinventory.cpp62
-rw-r--r--indra/newview/llsidepanelinventory.h8
-rw-r--r--indra/newview/llsidepaneltaskinfo.cpp159
-rw-r--r--indra/newview/llsidepaneltaskinfo.h40
-rw-r--r--indra/newview/llsidetray.cpp1488
-rw-r--r--indra/newview/llsidetray.h260
-rw-r--r--indra/newview/llsidetraylistener.cpp179
-rw-r--r--indra/newview/llsidetraylistener.h53
-rw-r--r--indra/newview/llsidetraypanelcontainer.cpp7
-rw-r--r--indra/newview/llsidetraypanelcontainer.h5
-rw-r--r--indra/newview/llspatialpartition.cpp299
-rw-r--r--indra/newview/llspatialpartition.h1
-rw-r--r--indra/newview/llspeakbutton.cpp165
-rw-r--r--indra/newview/llspeakbutton.h88
-rw-r--r--indra/newview/llsprite.cpp2
-rw-r--r--indra/newview/llstartup.cpp170
-rw-r--r--indra/newview/llstatusbar.cpp43
-rw-r--r--indra/newview/llstatusbar.h5
-rw-r--r--indra/newview/llsyswellwindow.cpp23
-rw-r--r--indra/newview/llsyswellwindow.h5
-rw-r--r--indra/newview/llteleporthistory.cpp9
-rw-r--r--indra/newview/llteleporthistory.h3
-rw-r--r--indra/newview/llteleporthistorystorage.cpp1
-rw-r--r--indra/newview/llteleporthistorystorage.h6
-rw-r--r--indra/newview/lltexlayer.cpp122
-rw-r--r--indra/newview/lltexturecache.cpp7
-rw-r--r--indra/newview/lltextureview.cpp7
-rw-r--r--indra/newview/lltoast.cpp125
-rw-r--r--indra/newview/lltoast.h12
-rw-r--r--indra/newview/lltoastnotifypanel.cpp2
-rw-r--r--indra/newview/lltool.h2
-rw-r--r--indra/newview/lltoolbar.cpp365
-rw-r--r--indra/newview/lltoolbar.h82
-rw-r--r--indra/newview/lltoolbarview.cpp697
-rw-r--r--indra/newview/lltoolbarview.h137
-rw-r--r--indra/newview/lltoolbrush.cpp8
-rw-r--r--indra/newview/lltooldraganddrop.cpp31
-rw-r--r--indra/newview/lltooldraganddrop.h3
-rw-r--r--indra/newview/lltoolgun.cpp4
-rw-r--r--indra/newview/lltoolmgr.cpp42
-rw-r--r--indra/newview/lltoolmorph.cpp19
-rw-r--r--indra/newview/lltracker.cpp16
-rw-r--r--indra/newview/lltransientfloatermgr.cpp43
-rw-r--r--indra/newview/lltransientfloatermgr.h9
-rwxr-xr-x[-rw-r--r--]indra/newview/lltranslate.cpp357
-rwxr-xr-x[-rw-r--r--]indra/newview/lltranslate.h300
-rw-r--r--indra/newview/llurldispatcher.cpp8
-rw-r--r--indra/newview/llviewerassetstorage.cpp8
-rw-r--r--indra/newview/llviewerassettype.cpp4
-rw-r--r--indra/newview/llvieweraudio.cpp238
-rw-r--r--indra/newview/llvieweraudio.h47
-rw-r--r--indra/newview/llviewercamera.cpp68
-rw-r--r--indra/newview/llviewercontrol.cpp50
-rw-r--r--indra/newview/llviewerdisplay.cpp168
-rw-r--r--indra/newview/llviewerfloaterreg.cpp36
-rw-r--r--indra/newview/llviewerfoldertype.cpp71
-rw-r--r--indra/newview/llviewerfoldertype.h1
-rw-r--r--indra/newview/llviewerhelp.cpp38
-rw-r--r--indra/newview/llviewerhelp.h6
-rw-r--r--indra/newview/llviewerinventory.cpp27
-rw-r--r--indra/newview/llviewerinventory.h5
-rw-r--r--indra/newview/llviewerjoint.cpp18
-rw-r--r--indra/newview/llviewerjointmesh.cpp230
-rw-r--r--indra/newview/llviewerjointmesh.h19
-rw-r--r--indra/newview/llviewerjointmesh_sse.cpp114
-rw-r--r--indra/newview/llviewerjointmesh_sse2.cpp121
-rw-r--r--indra/newview/llviewerjointmesh_vec.cpp97
-rw-r--r--indra/newview/llviewermedia.cpp403
-rw-r--r--indra/newview/llviewermedia.h4
-rw-r--r--indra/newview/llviewermenu.cpp357
-rw-r--r--indra/newview/llviewermenu.h2
-rw-r--r--indra/newview/llviewermenufile.cpp18
-rwxr-xr-x[-rw-r--r--]indra/newview/llviewermessage.cpp52
-rw-r--r--[-rwxr-xr-x]indra/newview/llviewerobject.cpp4
-rw-r--r--indra/newview/llviewerobject.h8
-rw-r--r--indra/newview/llviewerparcelmgr.cpp172
-rw-r--r--indra/newview/llviewerparcelmgr.h2
-rw-r--r--indra/newview/llviewerparceloverlay.cpp10
-rw-r--r--indra/newview/llviewerprecompiledheaders.h3
-rw-r--r--indra/newview/llviewershadermgr.cpp971
-rw-r--r--indra/newview/llviewershadermgr.h123
-rw-r--r--indra/newview/llviewerstats.cpp2
-rw-r--r--indra/newview/llviewertexteditor.cpp23
-rw-r--r--indra/newview/llviewertexture.cpp81
-rw-r--r--indra/newview/llviewertexture.h1
-rw-r--r--indra/newview/llviewertexturelist.cpp138
-rw-r--r--indra/newview/llviewertexturelist.h7
-rw-r--r--indra/newview/llviewerwindow.cpp407
-rw-r--r--indra/newview/llviewerwindow.h38
-rw-r--r--indra/newview/llvoavatar.cpp28
-rw-r--r--indra/newview/llvoavatar.h3
-rw-r--r--indra/newview/llvoavatarself.cpp85
-rw-r--r--indra/newview/llvoavatarself.h3
-rw-r--r--indra/newview/llvograss.cpp22
-rw-r--r--indra/newview/llvograss.h2
-rw-r--r--indra/newview/llvoground.cpp2
-rw-r--r--indra/newview/llvoicevivox.cpp17
-rw-r--r--indra/newview/llvopartgroup.cpp96
-rw-r--r--indra/newview/llvopartgroup.h2
-rw-r--r--indra/newview/llvosky.cpp54
-rw-r--r--indra/newview/llvosurfacepatch.cpp50
-rw-r--r--indra/newview/llvosurfacepatch.h7
-rw-r--r--indra/newview/llvotextbubble.cpp272
-rw-r--r--indra/newview/llvotextbubble.h66
-rw-r--r--indra/newview/llvotree.cpp125
-rw-r--r--indra/newview/llvotree.h1
-rw-r--r--[-rwxr-xr-x]indra/newview/llvovolume.cpp66
-rw-r--r--indra/newview/llvovolume.h5
-rw-r--r--indra/newview/llvowater.cpp4
-rw-r--r--indra/newview/llvowlsky.cpp28
-rw-r--r--indra/newview/llwaterparammanager.cpp1
-rw-r--r--indra/newview/llwearable.cpp8
-rw-r--r--indra/newview/llweb.cpp39
-rw-r--r--indra/newview/llweb.h18
-rw-r--r--indra/newview/llwebprofile.cpp305
-rw-r--r--indra/newview/llwebprofile.h69
-rw-r--r--indra/newview/llwind.cpp115
-rw-r--r--indra/newview/llwind.h7
-rw-r--r--indra/newview/llwlparamset.cpp14
-rw-r--r--indra/newview/llworld.cpp52
-rw-r--r--indra/newview/llworldmapmessage.cpp5
-rw-r--r--indra/newview/llworldmapview.cpp6
-rw-r--r--indra/newview/llworldview.cpp61
-rw-r--r--indra/newview/llxmlrpctransaction.cpp16
-rw-r--r--indra/newview/pipeline.cpp2770
-rw-r--r--indra/newview/pipeline.h97
-rw-r--r--indra/newview/skins/default/colors.xml4
-rw-r--r--indra/newview/skins/default/textures/arrow_keys.pngbin6558 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.pngbin275 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/CameraView_Press.pngbin489 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.pngbin50975 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.pngbin54713 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.pngbin51053 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.pngbin0 -> 602 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.pngbin0 -> 669 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.pngbin0 -> 639 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.pngbin0 -> 547 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.pngbin0 -> 526 bytes
-rw-r--r--indra/newview/skins/default/textures/checkerboard_transparency_bg.pngbin1110 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/circle.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.pngbin170 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.pngbin162 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Left_Over.pngbin337 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Middle_Over.pngbin285 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Right_Over.pngbin362 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icn_label_web.tgabin4140 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icn_media.tgabin4140 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icn_voice-groupfocus.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icn_voice-localchat.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icn_voice-pvtfocus.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icon_day_cycle.tgabin25682 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icon_event_adult.tgabin1006 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icon_lock.tgabin1030 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/AddItem_Over.pngbin165 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/BackArrow_Over.pngbin214 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/DragHandle.pngbin163 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Generic_Object.pngbin366 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Inv_Gift.pngbin1335 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OptionsMenu_Over.pngbin277 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.pngbin1912 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.pngbin285 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.pngbin620 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/TrashItem_Over.pngbin201 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/parcel_color_EVRY.pngbin393 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/parcel_color_EXP.pngbin272 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/parcel_color_M.pngbin306 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/image_edit_icon.tgabin3116 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/inv_folder_animation.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/inv_folder_inbox.tgabin2085 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/map_avatar_above_8.tgabin300 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/map_avatar_below_8.tgabin300 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/map_event_adult.tgabin1006 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/map_event_mature.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/map_track_8.tgabin300 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/model_wizard/divider_line.pngbin2815 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/mute_icon.tgabin1042 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Arrow_Left_Over.pngbin381 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Arrow_Right_Over.pngbin379 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Help_Over.pngbin348 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Home_Over.pngbin330 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/separator.pngbin0 -> 2826 bytes
-rw-r--r--indra/newview/skins/default/textures/places_rating_adult.tgabin648 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/places_rating_mature.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/places_rating_pg.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/propertyline.tgabin2092 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/avatar_free_mode.pngbin1447 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/camera_free_mode.pngbin2267 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.pngbin2381 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/camera_pan_mode.pngbin2418 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.pngbin2365 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.pngbin2595 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.pngbin2221 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/move_fly_first.pngbin1528 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/move_fly_second.pngbin2128 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/move_run_first.pngbin1554 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/move_run_second.pngbin2534 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/move_walk_first.pngbin2106 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/quick_tips/move_walk_second.pngbin3108 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/show_btn.tgabin3884 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/show_btn_selected.tgabin3884 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/smicon_warn.tgabin1068 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/snapshot_download.pngbin0 -> 1226 bytes
-rw-r--r--indra/newview/skins/default/textures/snapshot_email.pngbin0 -> 1231 bytes
-rw-r--r--indra/newview/skins/default/textures/spacer35.tgabin3404 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/square_btn_32x128.tgabin6292 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/square_btn_selected_32x128.tgabin6983 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/startup_logo.j2cbin69118 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/status_busy.tgabin4140 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.pngbin273 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.pngbin349 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.pngbin749 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.pngbin359 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.pngbin536 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.pngbin709 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.pngbin653 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.pngbin297 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml70
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/appearance.pngbin0 -> 1205 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/avatars.pngbin0 -> 1432 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/build.pngbin0 -> 1246 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_bottom.pngbin0 -> 195 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_left.pngbin0 -> 948 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_right.pngbin0 -> 949 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/chat.pngbin0 -> 1277 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/destinations.pngbin0 -> 1297 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/gestures.pngbin0 -> 1675 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/howto.pngbin0 -> 1306 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/inventory.pngbin0 -> 1114 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/land.pngbin0 -> 1123 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/map.pngbin0 -> 1206 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/marketplace.pngbin0 -> 1311 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/mini_cart.pngbin0 -> 2987 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/mini_map.pngbin0 -> 1766 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/move.pngbin0 -> 1328 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.pngbin0 -> 1479 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/people.pngbin0 -> 1313 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/picks.pngbin0 -> 1396 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/places.pngbin0 -> 1391 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/preferences.pngbin0 -> 1587 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/profile.pngbin0 -> 1180 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/search.pngbin0 -> 1406 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/snapshot.pngbin0 -> 1142 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/speak.pngbin0 -> 1253 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/view.pngbin0 -> 1487 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Checkbox_On_Over.pngbin547 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Checkbox_Over.pngbin318 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.pngbin482 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.pngbin164 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.pngbin165 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_On_Over.pngbin498 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.pngbin498 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/RadioButton_On_Over.pngbin635 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/RadioButton_Over.pngbin575 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.pngbin257 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.pngbin295 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.pngbin283 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.pngbin276 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.pngbin311 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.pngbin311 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.pngbin404 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.pngbin404 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.pngbin394 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.pngbin495 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.pngbin308 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.pngbin300 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.pngbin393 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.pngbin286 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.pngbin300 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.pngbin420 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.pngbin416 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.pngbin416 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SliderThumb_Over.pngbin482 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Stepper_Down_Over.pngbin310 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Stepper_Up_Over.pngbin314 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Flyout.pngbin820 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Flyout_Left.pngbin0 -> 271 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.pngbin260 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Flyout_Right.pngbin0 -> 280 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Icon_Gear_Over.pngbin293 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Icon_Undock_Press.pngbin267 -> 0 bytes
-rw-r--r--indra/newview/skins/default/xui/da/floater_about.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_camera.xml9
-rw-r--r--indra/newview/skins/default/xui/da/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/da/notifications.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_my_profile.xml31
-rw-r--r--indra/newview/skins/default/xui/da/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/da/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/da/panel_profile.xml59
-rw-r--r--indra/newview/skins/default/xui/da/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/da/strings.xml3
-rw-r--r--indra/newview/skins/default/xui/da/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_about.xml5
-rw-r--r--indra/newview/skins/default/xui/de/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_camera.xml11
-rw-r--r--indra/newview/skins/default/xui/de/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/de/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/de/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/de/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/de/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_stats.xml14
-rw-r--r--indra/newview/skins/default/xui/de/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/de/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/de/floater_voice_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/de/inspect_group.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_bottomtray.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/de/menu_viewer.xml25
-rw-r--r--indra/newview/skins/default/xui/de/notifications.xml24
-rw-r--r--indra/newview/skins/default/xui/de/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/de/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/de/panel_my_profile.xml42
-rw-r--r--indra/newview/skins/default/xui/de/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/de/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_general.xml5
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/de/panel_profile.xml74
-rw-r--r--indra/newview/skins/default/xui/de/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/de/panel_status_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml175
-rw-r--r--indra/newview/skins/default/xui/de/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_about.xml53
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml116
-rw-r--r--indra/newview/skins/default/xui/en/floater_activeim.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar.xml27
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar_picker.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_build_options.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_buy_currency_html.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml28
-rw-r--r--indra/newview/skins/default/xui/en/floater_chat_bar.xml82
-rw-r--r--indra/newview/skins/default/xui/en/floater_color_picker.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_critical.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_destinations.xml28
-rw-r--r--indra/newview/skins/default/xui/en/floater_event.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_gesture.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_hardware_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_help_browser.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_how_to.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_hud.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_inventory.xml28
-rw-r--r--indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_land_holdings.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_live_lsleditor.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_lsl_guide.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_map.xml33
-rw-r--r--indra/newview/skins/default/xui/en/floater_media_browser.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_media_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_mem_leaking.xml1
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/en/floater_model_preview.xml7
-rw-r--r--indra/newview/skins/default/xui/en/floater_model_wizard.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml12
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_appearance.xml25
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_inventory.xml22
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_web_profile.xml9
-rw-r--r--indra/newview/skins/default/xui/en/floater_nearby_chat.xml50
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_outgoing_call.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_people.xml41
-rw-r--r--indra/newview/skins/default/xui/en/floater_picks.xml21
-rw-r--r--indra/newview/skins/default/xui/en/floater_places.xml24
-rw-r--r--indra/newview/skins/default/xui/en/floater_postcard.xml150
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_animation.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_notecard.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_sound.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_texture.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_script.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_debug_panel.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_preview.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_script_queue.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_search.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml730
-rw-r--r--indra/newview/skins/default/xui/en/floater_sound_devices.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_stats.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_sys_well.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_telehub.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_button.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_toolbar.xml62
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_toybox.xml114
-rw-r--r--indra/newview/skins/default/xui/en/floater_translation_settings.xml244
-rw-r--r--indra/newview/skins/default/xui/en/floater_voice_controls.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_voice_effect.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_web_content.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_web_profile.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_world_map.xml4
-rw-r--r--indra/newview/skins/default/xui/en/inspect_remote_object.xml2
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml202
-rw-r--r--indra/newview/skins/default/xui/en/menu_bottomtray.xml163
-rw-r--r--indra/newview/skins/default/xui/en/menu_hide_navbar.xml13
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml17
-rw-r--r--indra/newview/skins/default/xui/en/menu_mode_change.xml24
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_toolbars.xml35
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml640
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml102
-rw-r--r--indra/newview/skins/default/xui/en/outfit_accordion_tab.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml530
-rw-r--r--indra/newview/skins/default/xui/en/panel_chat_item.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_chiclet_bar.xml176
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_jacket.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_land_money.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml49
-rw-r--r--indra/newview/skins/default/xui/en/panel_me.xml45
-rw-r--r--indra/newview/skins/default/xui/en/panel_my_profile.xml146
-rw-r--r--indra/newview/skins/default/xui/en/panel_navigation_bar.xml155
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat.xml35
-rw-r--r--indra/newview/skins/default/xui/en/panel_notes.xml236
-rw-r--r--indra/newview/skins/default/xui/en/panel_notification.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_picks.xml17
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_postcard_message.xml125
-rw-r--r--indra/newview/skins/default/xui/en/panel_postcard_settings.xml137
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_chat.xml127
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_general.xml20
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_move.xml18
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_setup.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml458
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile_view.xml162
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_covenant.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_side_tray.xml174
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml147
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_local.xml236
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_options.xml84
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml107
-rw-r--r--indra/newview/skins/default/xui/en/panel_snapshot_profile.xml200
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml67
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_toolbar_view.xml164
-rw-r--r--indra/newview/skins/default/xui/en/panel_topinfo_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_inventory.xml16
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml91
-rw-r--r--indra/newview/skins/default/xui/en/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/button.xml7
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml21
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml21
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml21
-rw-r--r--indra/newview/skins/default/xui/en/widgets/floater.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml19
-rw-r--r--indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml7
-rw-r--r--indra/newview/skins/default/xui/en/widgets/toolbar.xml57
-rw-r--r--indra/newview/skins/default/xui/es/floater_about.xml5
-rw-r--r--indra/newview/skins/default/xui/es/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_camera.xml11
-rw-r--r--indra/newview/skins/default/xui/es/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/es/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/es/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/es/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/es/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_stats.xml24
-rw-r--r--indra/newview/skins/default/xui/es/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/es/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/es/floater_voice_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/es/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/es/menu_viewer.xml25
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml24
-rw-r--r--indra/newview/skins/default/xui/es/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/es/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/es/panel_my_profile.xml31
-rw-r--r--indra/newview/skins/default/xui/es/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/es/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/es/panel_people.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_general.xml5
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/es/panel_profile.xml70
-rw-r--r--indra/newview/skins/default/xui/es/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/es/panel_status_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/es/sidepanel_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml186
-rw-r--r--indra/newview/skins/default/xui/es/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_camera.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/fr/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/fr/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_animation.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_snapshot.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_stats.xml30
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/floater_voice_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/menu_group_plus.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/menu_viewer.xml29
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml24
-rw-r--r--indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_my_profile.xml42
-rw-r--r--indra/newview/skins/default/xui/fr/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/fr/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_general.xml5
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_sound.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/panel_profile.xml74
-rw-r--r--indra/newview/skins/default/xui/fr/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_status_bar.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml173
-rw-r--r--indra/newview/skins/default/xui/fr/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_about.xml7
-rw-r--r--indra/newview/skins/default/xui/it/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/it/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_camera.xml11
-rw-r--r--indra/newview/skins/default/xui/it/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/it/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/it/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/it/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/it/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/it/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/it/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/it/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_snapshot.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_stats.xml26
-rw-r--r--indra/newview/skins/default/xui/it/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/it/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/it/floater_voice_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/it/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/it/menu_viewer.xml25
-rw-r--r--indra/newview/skins/default/xui/it/notifications.xml24
-rw-r--r--indra/newview/skins/default/xui/it/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/it/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/it/panel_my_profile.xml31
-rw-r--r--indra/newview/skins/default/xui/it/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/it/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/it/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_chat.xml6
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_general.xml5
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/it/panel_profile.xml70
-rw-r--r--indra/newview/skins/default/xui/it/panel_profile_view.xml22
-rw-r--r--indra/newview/skins/default/xui/it/panel_status_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/it/sidepanel_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/it/strings.xml181
-rw-r--r--indra/newview/skins/default/xui/it/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_camera.xml11
-rw-r--r--indra/newview/skins/default/xui/ja/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_map.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/ja/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/ja/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/ja/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_stats.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/ja/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/menu_viewer.xml25
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml24
-rw-r--r--indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/panel_my_profile.xml42
-rw-r--r--indra/newview/skins/default/xui/ja/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/ja/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_chat.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_general.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/ja/panel_profile.xml74
-rw-r--r--indra/newview/skins/default/xui/ja/panel_profile_view.xml22
-rw-r--r--indra/newview/skins/default/xui/ja/panel_status_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml181
-rw-r--r--indra/newview/skins/default/xui/ja/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/nl/floater_about.xml81
-rw-r--r--indra/newview/skins/default/xui/nl/floater_about_land.xml488
-rw-r--r--indra/newview/skins/default/xui/nl/floater_animation_preview.xml85
-rw-r--r--indra/newview/skins/default/xui/nl/floater_auction.xml9
-rw-r--r--indra/newview/skins/default/xui/nl/floater_avatar_picker.xml42
-rw-r--r--indra/newview/skins/default/xui/nl/floater_avatar_textures.xml30
-rw-r--r--indra/newview/skins/default/xui/nl/floater_beacons.xml15
-rw-r--r--indra/newview/skins/default/xui/nl/floater_build_options.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_bulk_perms.xml44
-rw-r--r--indra/newview/skins/default/xui/nl/floater_bumps.xml21
-rw-r--r--indra/newview/skins/default/xui/nl/floater_buy_contents.xml21
-rw-r--r--indra/newview/skins/default/xui/nl/floater_buy_currency.xml68
-rw-r--r--indra/newview/skins/default/xui/nl/floater_buy_land.xml235
-rw-r--r--indra/newview/skins/default/xui/nl/floater_buy_object.xml26
-rw-r--r--indra/newview/skins/default/xui/nl/floater_camera.xml16
-rw-r--r--indra/newview/skins/default/xui/nl/floater_choose_group.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_color_picker.xml31
-rw-r--r--indra/newview/skins/default/xui/nl/floater_critical.xml11
-rw-r--r--indra/newview/skins/default/xui/nl/floater_event.xml40
-rw-r--r--indra/newview/skins/default/xui/nl/floater_font_test.xml6
-rw-r--r--indra/newview/skins/default/xui/nl/floater_gesture.xml15
-rw-r--r--indra/newview/skins/default/xui/nl/floater_hardware_settings.xml28
-rw-r--r--indra/newview/skins/default/xui/nl/floater_hud.xml2
-rw-r--r--indra/newview/skins/default/xui/nl/floater_image_preview.xml33
-rw-r--r--indra/newview/skins/default/xui/nl/floater_inspect.xml11
-rw-r--r--indra/newview/skins/default/xui/nl/floater_inventory.xml47
-rw-r--r--indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml75
-rw-r--r--indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml24
-rw-r--r--indra/newview/skins/default/xui/nl/floater_joystick.xml80
-rw-r--r--indra/newview/skins/default/xui/nl/floater_lagmeter.xml152
-rw-r--r--indra/newview/skins/default/xui/nl/floater_land_holdings.xml39
-rw-r--r--indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml12
-rw-r--r--indra/newview/skins/default/xui/nl/floater_lsl_guide.xml7
-rw-r--r--indra/newview/skins/default/xui/nl/floater_map.xml51
-rw-r--r--indra/newview/skins/default/xui/nl/floater_media_browser.xml19
-rw-r--r--indra/newview/skins/default/xui/nl/floater_mem_leaking.xml18
-rw-r--r--indra/newview/skins/default/xui/nl/floater_moveview.xml13
-rw-r--r--indra/newview/skins/default/xui/nl/floater_mute_object.xml14
-rw-r--r--indra/newview/skins/default/xui/nl/floater_openobject.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_pay.xml21
-rw-r--r--indra/newview/skins/default/xui/nl/floater_pay_object.xml30
-rw-r--r--indra/newview/skins/default/xui/nl/floater_perm_prefs.xml16
-rw-r--r--indra/newview/skins/default/xui/nl/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/nl/floater_postcard.xml36
-rw-r--r--indra/newview/skins/default/xui/nl/floater_preferences.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_preview_animation.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_preview_gesture.xml58
-rw-r--r--indra/newview/skins/default/xui/nl/floater_preview_notecard.xml16
-rw-r--r--indra/newview/skins/default/xui/nl/floater_preview_sound.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/floater_preview_texture.xml9
-rw-r--r--indra/newview/skins/default/xui/nl/floater_region_info.xml2
-rw-r--r--indra/newview/skins/default/xui/nl/floater_report_abuse.xml103
-rw-r--r--indra/newview/skins/default/xui/nl/floater_script_debug.xml6
-rw-r--r--indra/newview/skins/default/xui/nl/floater_script_preview.xml6
-rw-r--r--indra/newview/skins/default/xui/nl/floater_script_queue.xml4
-rw-r--r--indra/newview/skins/default/xui/nl/floater_script_search.xml15
-rw-r--r--indra/newview/skins/default/xui/nl/floater_select_key.xml7
-rw-r--r--indra/newview/skins/default/xui/nl/floater_sell_land.xml65
-rw-r--r--indra/newview/skins/default/xui/nl/floater_settings_debug.xml13
-rw-r--r--indra/newview/skins/default/xui/nl/floater_snapshot.xml79
-rw-r--r--indra/newview/skins/default/xui/nl/floater_sound_preview.xml11
-rw-r--r--indra/newview/skins/default/xui/nl/floater_stats.xml71
-rw-r--r--indra/newview/skins/default/xui/nl/floater_telehub.xml33
-rw-r--r--indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml23
-rw-r--r--indra/newview/skins/default/xui/nl/floater_tools.xml567
-rw-r--r--indra/newview/skins/default/xui/nl/floater_top_objects.xml55
-rw-r--r--indra/newview/skins/default/xui/nl/floater_tos.xml16
-rw-r--r--indra/newview/skins/default/xui/nl/floater_url_entry.xml12
-rw-r--r--indra/newview/skins/default/xui/nl/floater_world_map.xml54
-rw-r--r--indra/newview/skins/default/xui/nl/language_settings.xml57
-rw-r--r--indra/newview/skins/default/xui/nl/menu_inventory.xml82
-rw-r--r--indra/newview/skins/default/xui/nl/menu_inventory_add.xml32
-rw-r--r--indra/newview/skins/default/xui/nl/menu_login.xml13
-rw-r--r--indra/newview/skins/default/xui/nl/menu_mini_map.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/menu_picks.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/default/xui/nl/menu_slurl.xml6
-rw-r--r--indra/newview/skins/default/xui/nl/menu_viewer.xml207
-rw-r--r--indra/newview/skins/default/xui/nl/mime_types.xml230
-rw-r--r--indra/newview/skins/default/xui/nl/notifications.xml3044
-rw-r--r--indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml10
-rw-r--r--indra/newview/skins/default/xui/nl/panel_edit_profile.xml45
-rw-r--r--indra/newview/skins/default/xui/nl/panel_group_general.xml72
-rw-r--r--indra/newview/skins/default/xui/nl/panel_group_invite.xml24
-rw-r--r--indra/newview/skins/default/xui/nl/panel_group_land_money.xml84
-rw-r--r--indra/newview/skins/default/xui/nl/panel_group_notices.xml62
-rw-r--r--indra/newview/skins/default/xui/nl/panel_group_roles.xml101
-rw-r--r--indra/newview/skins/default/xui/nl/panel_login.xml41
-rw-r--r--indra/newview/skins/default/xui/nl/panel_main_inventory.xml64
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml48
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml14
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_chat.xml42
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_general.xml90
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml145
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml32
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_setup.xml31
-rw-r--r--indra/newview/skins/default/xui/nl/panel_preferences_sound.xml39
-rw-r--r--indra/newview/skins/default/xui/nl/panel_region_covenant.xml84
-rw-r--r--indra/newview/skins/default/xui/nl/panel_region_debug.xml40
-rw-r--r--indra/newview/skins/default/xui/nl/panel_region_estate.xml70
-rw-r--r--indra/newview/skins/default/xui/nl/panel_region_general.xml53
-rw-r--r--indra/newview/skins/default/xui/nl/panel_region_terrain.xml27
-rw-r--r--indra/newview/skins/default/xui/nl/panel_region_texture.xml57
-rw-r--r--indra/newview/skins/default/xui/nl/panel_scrolling_param.xml10
-rw-r--r--indra/newview/skins/default/xui/nl/panel_status_bar.xml38
-rw-r--r--indra/newview/skins/default/xui/nl/panel_world_map.xml57
-rw-r--r--indra/newview/skins/default/xui/nl/role_actions.xml76
-rw-r--r--indra/newview/skins/default/xui/nl/strings.xml3247
-rw-r--r--indra/newview/skins/default/xui/nl/teleport_strings.xml75
-rw-r--r--indra/newview/skins/default/xui/pl/floater_about.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_camera.xml9
-rw-r--r--indra/newview/skins/default/xui/pl/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/notifications.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/panel_my_profile.xml31
-rw-r--r--indra/newview/skins/default/xui/pl/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_general.xml1
-rw-r--r--indra/newview/skins/default/xui/pl/panel_profile.xml59
-rw-r--r--indra/newview/skins/default/xui/pl/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/pl/strings.xml3
-rw-r--r--indra/newview/skins/default/xui/pl/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/floater_about.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_about_land.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_camera.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_map.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/floater_model_preview.xml376
-rw-r--r--indra/newview/skins/default/xui/pt/floater_model_wizard.xml122
-rw-r--r--indra/newview/skins/default/xui/pt/floater_moveview.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/floater_sound_devices.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_stats.xml26
-rw-r--r--indra/newview/skins/default/xui/pt/floater_tools.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/pt/floater_voice_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/menu_bottomtray.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/menu_viewer.xml25
-rw-r--r--indra/newview/skins/default/xui/pt/notifications.xml24
-rw-r--r--indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/panel_me.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/panel_my_profile.xml31
-rw-r--r--indra/newview/skins/default/xui/pt/panel_navigation_bar.xml35
-rw-r--r--indra/newview/skins/default/xui/pt/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_general.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_move.xml31
-rw-r--r--indra/newview/skins/default/xui/pt/panel_profile.xml70
-rw-r--r--indra/newview/skins/default/xui/pt/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/pt/panel_status_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/pt/strings.xml181
-rw-r--r--indra/newview/skins/default/xui/pt/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/floater_aaa.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/floater_about.xml95
-rw-r--r--indra/newview/skins/default/xui/ru/floater_about_land.xml490
-rw-r--r--indra/newview/skins/default/xui/ru/floater_activeim.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_animation_preview.xml183
-rw-r--r--indra/newview/skins/default/xui/ru/floater_auction.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_avatar_picker.xml53
-rw-r--r--indra/newview/skins/default/xui/ru/floater_avatar_textures.xml50
-rw-r--r--indra/newview/skins/default/xui/ru/floater_beacons.xml22
-rw-r--r--indra/newview/skins/default/xui/ru/floater_build_options.xml33
-rw-r--r--indra/newview/skins/default/xui/ru/floater_bulk_perms.xml45
-rw-r--r--indra/newview/skins/default/xui/ru/floater_bumps.xml24
-rw-r--r--indra/newview/skins/default/xui/ru/floater_buy_contents.xml21
-rw-r--r--indra/newview/skins/default/xui/ru/floater_buy_currency.xml66
-rw-r--r--indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_buy_land.xml233
-rw-r--r--indra/newview/skins/default/xui/ru/floater_buy_object.xml29
-rw-r--r--indra/newview/skins/default/xui/ru/floater_camera.xml56
-rw-r--r--indra/newview/skins/default/xui/ru/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_choose_group.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/floater_color_picker.xml30
-rw-r--r--indra/newview/skins/default/xui/ru/floater_critical.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml35
-rw-r--r--indra/newview/skins/default/xui/ru/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_display_name.xml18
-rw-r--r--indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml104
-rw-r--r--indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml143
-rw-r--r--indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml72
-rw-r--r--indra/newview/skins/default/xui/ru/floater_env_settings.xml25
-rw-r--r--indra/newview/skins/default/xui/ru/floater_environment_settings.xml36
-rw-r--r--indra/newview/skins/default/xui/ru/floater_event.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/floater_font_test.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_gesture.xml26
-rw-r--r--indra/newview/skins/default/xui/ru/floater_god_tools.xml96
-rw-r--r--indra/newview/skins/default/xui/ru/floater_hardware_settings.xml31
-rw-r--r--indra/newview/skins/default/xui/ru/floater_help_browser.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_hud.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_im_container.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_im_session.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/floater_image_preview.xml31
-rw-r--r--indra/newview/skins/default/xui/ru/floater_import_collada.xml23
-rw-r--r--indra/newview/skins/default/xui/ru/floater_incoming_call.xml33
-rw-r--r--indra/newview/skins/default/xui/ru/floater_inspect.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/floater_inventory.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml67
-rw-r--r--indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml25
-rw-r--r--indra/newview/skins/default/xui/ru/floater_joystick.xml79
-rw-r--r--indra/newview/skins/default/xui/ru/floater_lagmeter.xml151
-rw-r--r--indra/newview/skins/default/xui/ru/floater_land_holdings.xml39
-rw-r--r--indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml15
-rw-r--r--indra/newview/skins/default/xui/ru/floater_lsl_guide.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_map.xml36
-rw-r--r--indra/newview/skins/default/xui/ru/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/default/xui/ru/floater_media_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/floater_mem_leaking.xml18
-rw-r--r--indra/newview/skins/default/xui/ru/floater_model_preview.xml274
-rw-r--r--indra/newview/skins/default/xui/ru/floater_model_wizard.xml205
-rw-r--r--indra/newview/skins/default/xui/ru/floater_moveview.xml75
-rw-r--r--indra/newview/skins/default/xui/ru/floater_mute_object.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/floater_notification.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_notifications_console.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/ru/floater_openobject.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/floater_outgoing_call.xml40
-rw-r--r--indra/newview/skins/default/xui/ru/floater_pay.xml21
-rw-r--r--indra/newview/skins/default/xui/ru/floater_pay_object.xml28
-rw-r--r--indra/newview/skins/default/xui/ru/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_perm_prefs.xml15
-rw-r--r--indra/newview/skins/default/xui/ru/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/ru/floater_postcard.xml33
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preferences.xml17
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml40
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preview_animation.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preview_gesture.xml73
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preview_notecard.xml20
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preview_sound.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/floater_preview_texture.xml47
-rw-r--r--indra/newview/skins/default/xui/ru/floater_price_for_listing.xml18
-rw-r--r--indra/newview/skins/default/xui/ru/floater_publish_classified.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/floater_region_debug_console.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_region_info.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_report_abuse.xml94
-rw-r--r--indra/newview/skins/default/xui/ru/floater_script_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_script_limits.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_script_preview.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/floater_script_queue.xml19
-rw-r--r--indra/newview/skins/default/xui/ru/floater_script_search.xml13
-rw-r--r--indra/newview/skins/default/xui/ru/floater_search.xml16
-rw-r--r--indra/newview/skins/default/xui/ru/floater_select_key.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_sell_land.xml65
-rw-r--r--indra/newview/skins/default/xui/ru/floater_settings_debug.xml13
-rw-r--r--indra/newview/skins/default/xui/ru/floater_snapshot.xml74
-rw-r--r--indra/newview/skins/default/xui/ru/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_sound_preview.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/floater_stats.xml79
-rw-r--r--indra/newview/skins/default/xui/ru/floater_sys_well.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/floater_telehub.xml29
-rw-r--r--indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml23
-rw-r--r--indra/newview/skins/default/xui/ru/floater_tools.xml491
-rw-r--r--indra/newview/skins/default/xui/ru/floater_top_objects.xml55
-rw-r--r--indra/newview/skins/default/xui/ru/floater_tos.xml15
-rw-r--r--indra/newview/skins/default/xui/ru/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/floater_url_entry.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/floater_voice_controls.xml30
-rw-r--r--indra/newview/skins/default/xui/ru/floater_voice_effect.xml138
-rw-r--r--indra/newview/skins/default/xui/ru/floater_water.xml70
-rw-r--r--indra/newview/skins/default/xui/ru/floater_web_content.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/floater_windlight_options.xml167
-rw-r--r--indra/newview/skins/default/xui/ru/floater_window_size.xml17
-rw-r--r--indra/newview/skins/default/xui/ru/floater_world_map.xml73
-rw-r--r--indra/newview/skins/default/xui/ru/inspect_avatar.xml25
-rw-r--r--indra/newview/skins/default/xui/ru/inspect_group.xml32
-rw-r--r--indra/newview/skins/default/xui/ru/inspect_object.xml44
-rw-r--r--indra/newview/skins/default/xui/ru/inspect_remote_object.xml22
-rw-r--r--indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/default/xui/ru/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/default/xui/ru/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/default/xui/ru/menu_avatar_self.xml32
-rw-r--r--indra/newview/skins/default/xui/ru/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/default/xui/ru/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_edit.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/menu_favorites.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/menu_gesture_gear.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inventory.xml89
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inventory_add.xml36
-rw-r--r--indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/default/xui/ru/menu_land.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/menu_landmark.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_login.xml25
-rw-r--r--indra/newview/skins/default/xui/ru/menu_media_ctrl.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/menu_mode_change.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_navbar.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/menu_object.xml27
-rw-r--r--indra/newview/skins/default/xui/ru/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_outfit_gear.xml28
-rw-r--r--indra/newview/skins/default/xui/ru/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_picks.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_place.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/default/xui/ru/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/menu_slurl.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_group.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_http.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_map.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_viewer.xml456
-rw-r--r--indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/menu_wearing_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/mime_types.xml217
-rw-r--r--indra/newview/skins/default/xui/ru/mime_types_linux.xml217
-rw-r--r--indra/newview/skins/default/xui/ru/mime_types_mac.xml217
-rw-r--r--indra/newview/skins/default/xui/ru/notifications.xml3076
-rw-r--r--indra/newview/skins/default/xui/ru/panel_active_object_row.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml31
-rw-r--r--indra/newview/skins/default/xui/ru/panel_avatar_tag.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_bottomtray.xml47
-rw-r--r--indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/panel_chat_header.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/ru/panel_classified_info.xml67
-rw-r--r--indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/panel_cof_wearables.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_alpha.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_classified.xml54
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_eyes.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_gloves.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_hair.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_jacket.xml13
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_pants.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_physics.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_pick.xml37
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_profile.xml68
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_shape.xml25
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_shirt.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_shoes.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_skin.xml16
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_skirt.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_socks.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_underpants.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_edit_wearable.xml120
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_general.xml56
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml41
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_invite.xml27
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_land_money.xml85
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_list_item.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_notices.xml61
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_notify.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_group_roles.xml95
-rw-r--r--indra/newview/skins/default/xui/ru/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/default/xui/ru/panel_instant_message.xml9
-rw-r--r--indra/newview/skins/default/xui/ru/panel_inventory_item.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_landmark_info.xml41
-rw-r--r--indra/newview/skins/default/xui/ru/panel_landmarks.xml22
-rw-r--r--indra/newview/skins/default/xui/ru/panel_login.xml48
-rw-r--r--indra/newview/skins/default/xui/ru/panel_main_inventory.xml28
-rw-r--r--indra/newview/skins/default/xui/ru/panel_me.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_media_settings_general.xml32
-rw-r--r--indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml29
-rw-r--r--indra/newview/skins/default/xui/ru/panel_media_settings_security.xml12
-rw-r--r--indra/newview/skins/default/xui/ru/panel_navigation_bar.xml23
-rw-r--r--indra/newview/skins/default/xui/ru/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/panel_nearby_media.xml70
-rw-r--r--indra/newview/skins/default/xui/ru/panel_notify_textbox.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/panel_online_status_toast.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/panel_outfit_edit.xml57
-rw-r--r--indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml23
-rw-r--r--indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml8
-rw-r--r--indra/newview/skins/default/xui/ru/panel_outfits_list.xml11
-rw-r--r--indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/panel_people.xml94
-rw-r--r--indra/newview/skins/default/xui/ru/panel_pick_info.xml24
-rw-r--r--indra/newview/skins/default/xui/ru/panel_picks.xml29
-rw-r--r--indra/newview/skins/default/xui/ru/panel_place_profile.xml118
-rw-r--r--indra/newview/skins/default/xui/ru/panel_places.xml48
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml31
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml14
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_chat.xml57
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_colors.xml44
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_general.xml76
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml114
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_move.xml39
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml30
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_setup.xml36
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_sound.xml40
-rw-r--r--indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml91
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_covenant.xml79
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_debug.xml34
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_environment.xml33
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_estate.xml52
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_general.xml44
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_terrain.xml60
-rw-r--r--indra/newview/skins/default/xui/ru/panel_region_texture.xml54
-rw-r--r--indra/newview/skins/default/xui/ru/panel_script_ed.xml47
-rw-r--r--indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml16
-rw-r--r--indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml20
-rw-r--r--indra/newview/skins/default/xui/ru/panel_scrolling_param.xml10
-rw-r--r--indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/panel_side_tray.xml29
-rw-r--r--indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/panel_sound_devices.xml25
-rw-r--r--indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml6
-rw-r--r--indra/newview/skins/default/xui/ru/panel_status_bar.xml28
-rw-r--r--indra/newview/skins/default/xui/ru/panel_teleport_history.xml19
-rw-r--r--indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml5
-rw-r--r--indra/newview/skins/default/xui/ru/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/ru/panel_world_map.xml63
-rw-r--r--indra/newview/skins/default/xui/ru/role_actions.xml73
-rw-r--r--indra/newview/skins/default/xui/ru/sidepanel_appearance.xml19
-rw-r--r--indra/newview/skins/default/xui/ru/sidepanel_inventory.xml65
-rw-r--r--indra/newview/skins/default/xui/ru/sidepanel_item_info.xml76
-rw-r--r--indra/newview/skins/default/xui/ru/sidepanel_task_info.xml123
-rw-r--r--indra/newview/skins/default/xui/ru/strings.xml4946
-rw-r--r--indra/newview/skins/default/xui/ru/teleport_strings.xml84
-rw-r--r--indra/newview/skins/default/xui/tr/floater_aaa.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/floater_about.xml96
-rw-r--r--indra/newview/skins/default/xui/tr/floater_about_land.xml490
-rw-r--r--indra/newview/skins/default/xui/tr/floater_activeim.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_animation_preview.xml186
-rw-r--r--indra/newview/skins/default/xui/tr/floater_auction.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_avatar_picker.xml53
-rw-r--r--indra/newview/skins/default/xui/tr/floater_avatar_textures.xml50
-rw-r--r--indra/newview/skins/default/xui/tr/floater_beacons.xml22
-rw-r--r--indra/newview/skins/default/xui/tr/floater_build_options.xml33
-rw-r--r--indra/newview/skins/default/xui/tr/floater_bulk_perms.xml45
-rw-r--r--indra/newview/skins/default/xui/tr/floater_bumps.xml24
-rw-r--r--indra/newview/skins/default/xui/tr/floater_buy_contents.xml21
-rw-r--r--indra/newview/skins/default/xui/tr/floater_buy_currency.xml66
-rw-r--r--indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_buy_land.xml233
-rw-r--r--indra/newview/skins/default/xui/tr/floater_buy_object.xml29
-rw-r--r--indra/newview/skins/default/xui/tr/floater_camera.xml56
-rw-r--r--indra/newview/skins/default/xui/tr/floater_chat_bar.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_choose_group.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/floater_color_picker.xml30
-rw-r--r--indra/newview/skins/default/xui/tr/floater_critical.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml35
-rw-r--r--indra/newview/skins/default/xui/tr/floater_destinations.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_display_name.xml18
-rw-r--r--indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml104
-rw-r--r--indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml143
-rw-r--r--indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml72
-rw-r--r--indra/newview/skins/default/xui/tr/floater_env_settings.xml25
-rw-r--r--indra/newview/skins/default/xui/tr/floater_environment_settings.xml36
-rw-r--r--indra/newview/skins/default/xui/tr/floater_event.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/floater_fast_timers.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/floater_font_test.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_gesture.xml26
-rw-r--r--indra/newview/skins/default/xui/tr/floater_god_tools.xml96
-rw-r--r--indra/newview/skins/default/xui/tr/floater_hardware_settings.xml31
-rw-r--r--indra/newview/skins/default/xui/tr/floater_help_browser.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/floater_how_to.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_hud.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_im_container.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_im_session.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/floater_image_preview.xml32
-rw-r--r--indra/newview/skins/default/xui/tr/floater_import_collada.xml23
-rw-r--r--indra/newview/skins/default/xui/tr/floater_incoming_call.xml33
-rw-r--r--indra/newview/skins/default/xui/tr/floater_inspect.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/floater_inventory.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml67
-rw-r--r--indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml25
-rw-r--r--indra/newview/skins/default/xui/tr/floater_joystick.xml79
-rw-r--r--indra/newview/skins/default/xui/tr/floater_lagmeter.xml151
-rw-r--r--indra/newview/skins/default/xui/tr/floater_land_holdings.xml39
-rw-r--r--indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml15
-rw-r--r--indra/newview/skins/default/xui/tr/floater_lsl_guide.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_map.xml36
-rw-r--r--indra/newview/skins/default/xui/tr/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/default/xui/tr/floater_media_settings.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/floater_mem_leaking.xml18
-rw-r--r--indra/newview/skins/default/xui/tr/floater_model_preview.xml274
-rw-r--r--indra/newview/skins/default/xui/tr/floater_model_wizard.xml205
-rw-r--r--indra/newview/skins/default/xui/tr/floater_moveview.xml75
-rw-r--r--indra/newview/skins/default/xui/tr/floater_mute_object.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/floater_my_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/floater_my_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/floater_notification.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_notifications_console.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/floater_object_weights.xml28
-rw-r--r--indra/newview/skins/default/xui/tr/floater_openobject.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/floater_outgoing_call.xml40
-rw-r--r--indra/newview/skins/default/xui/tr/floater_pay.xml21
-rw-r--r--indra/newview/skins/default/xui/tr/floater_pay_object.xml28
-rw-r--r--indra/newview/skins/default/xui/tr/floater_people.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_perm_prefs.xml15
-rw-r--r--indra/newview/skins/default/xui/tr/floater_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_places.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/tr/floater_postcard.xml33
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preferences.xml17
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml40
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preview_animation.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preview_gesture.xml73
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preview_notecard.xml20
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preview_sound.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/floater_preview_texture.xml47
-rw-r--r--indra/newview/skins/default/xui/tr/floater_price_for_listing.xml18
-rw-r--r--indra/newview/skins/default/xui/tr/floater_publish_classified.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/floater_region_debug_console.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_region_info.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_report_abuse.xml94
-rw-r--r--indra/newview/skins/default/xui/tr/floater_script_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_script_limits.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_script_preview.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/floater_script_queue.xml19
-rw-r--r--indra/newview/skins/default/xui/tr/floater_script_search.xml13
-rw-r--r--indra/newview/skins/default/xui/tr/floater_search.xml16
-rw-r--r--indra/newview/skins/default/xui/tr/floater_select_key.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_sell_land.xml65
-rw-r--r--indra/newview/skins/default/xui/tr/floater_settings_debug.xml13
-rw-r--r--indra/newview/skins/default/xui/tr/floater_snapshot.xml74
-rw-r--r--indra/newview/skins/default/xui/tr/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_sound_preview.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/floater_stats.xml79
-rw-r--r--indra/newview/skins/default/xui/tr/floater_sys_well.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/floater_telehub.xml29
-rw-r--r--indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml23
-rw-r--r--indra/newview/skins/default/xui/tr/floater_tools.xml491
-rw-r--r--indra/newview/skins/default/xui/tr/floater_top_objects.xml55
-rw-r--r--indra/newview/skins/default/xui/tr/floater_tos.xml15
-rw-r--r--indra/newview/skins/default/xui/tr/floater_toybox.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/floater_url_entry.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/floater_voice_controls.xml30
-rw-r--r--indra/newview/skins/default/xui/tr/floater_voice_effect.xml138
-rw-r--r--indra/newview/skins/default/xui/tr/floater_water.xml70
-rw-r--r--indra/newview/skins/default/xui/tr/floater_web_content.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/floater_windlight_options.xml167
-rw-r--r--indra/newview/skins/default/xui/tr/floater_window_size.xml17
-rw-r--r--indra/newview/skins/default/xui/tr/floater_world_map.xml73
-rw-r--r--indra/newview/skins/default/xui/tr/inspect_avatar.xml25
-rw-r--r--indra/newview/skins/default/xui/tr/inspect_group.xml32
-rw-r--r--indra/newview/skins/default/xui/tr/inspect_object.xml44
-rw-r--r--indra/newview/skins/default/xui/tr/inspect_remote_object.xml22
-rw-r--r--indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/default/xui/tr/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/default/xui/tr/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/default/xui/tr/menu_avatar_self.xml32
-rw-r--r--indra/newview/skins/default/xui/tr/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/default/xui/tr/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_edit.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/menu_favorites.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/menu_gesture_gear.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inventory.xml89
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inventory_add.xml36
-rw-r--r--indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/default/xui/tr/menu_land.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/menu_landmark.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_login.xml25
-rw-r--r--indra/newview/skins/default/xui/tr/menu_media_ctrl.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/menu_mode_change.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_navbar.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/menu_object.xml27
-rw-r--r--indra/newview/skins/default/xui/tr/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_outfit_gear.xml28
-rw-r--r--indra/newview/skins/default/xui/tr/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_picks.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_place.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/default/xui/tr/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/menu_slurl.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_toolbars.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_group.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_http.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_map.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_viewer.xml456
-rw-r--r--indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/menu_wearing_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/mime_types.xml217
-rw-r--r--indra/newview/skins/default/xui/tr/mime_types_linux.xml217
-rw-r--r--indra/newview/skins/default/xui/tr/mime_types_mac.xml217
-rw-r--r--indra/newview/skins/default/xui/tr/notifications.xml3076
-rw-r--r--indra/newview/skins/default/xui/tr/panel_active_object_row.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml31
-rw-r--r--indra/newview/skins/default/xui/tr/panel_avatar_tag.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_bottomtray.xml47
-rw-r--r--indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/panel_chat_header.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/tr/panel_classified_info.xml67
-rw-r--r--indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/panel_cof_wearables.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_alpha.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_classified.xml54
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_eyes.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_gloves.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_hair.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_jacket.xml13
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_pants.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_physics.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_pick.xml37
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_profile.xml68
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_shape.xml25
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_shirt.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_shoes.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_skin.xml16
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_skirt.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_socks.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_underpants.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_edit_wearable.xml120
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_general.xml57
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml41
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_invite.xml27
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_land_money.xml85
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_list_item.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_notices.xml61
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_notify.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_group_roles.xml93
-rw-r--r--indra/newview/skins/default/xui/tr/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/default/xui/tr/panel_instant_message.xml9
-rw-r--r--indra/newview/skins/default/xui/tr/panel_inventory_item.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_landmark_info.xml41
-rw-r--r--indra/newview/skins/default/xui/tr/panel_landmarks.xml22
-rw-r--r--indra/newview/skins/default/xui/tr/panel_login.xml48
-rw-r--r--indra/newview/skins/default/xui/tr/panel_main_inventory.xml28
-rw-r--r--indra/newview/skins/default/xui/tr/panel_me.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_media_settings_general.xml32
-rw-r--r--indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml29
-rw-r--r--indra/newview/skins/default/xui/tr/panel_media_settings_security.xml12
-rw-r--r--indra/newview/skins/default/xui/tr/panel_navigation_bar.xml23
-rw-r--r--indra/newview/skins/default/xui/tr/panel_nearby_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/panel_nearby_media.xml70
-rw-r--r--indra/newview/skins/default/xui/tr/panel_notify_textbox.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/panel_online_status_toast.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/panel_outfit_edit.xml57
-rw-r--r--indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml23
-rw-r--r--indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/panel_outfits_list.xml11
-rw-r--r--indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/panel_people.xml94
-rw-r--r--indra/newview/skins/default/xui/tr/panel_pick_info.xml24
-rw-r--r--indra/newview/skins/default/xui/tr/panel_picks.xml29
-rw-r--r--indra/newview/skins/default/xui/tr/panel_place_profile.xml118
-rw-r--r--indra/newview/skins/default/xui/tr/panel_places.xml48
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml31
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml14
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_chat.xml57
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_colors.xml44
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_general.xml76
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml114
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_move.xml39
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml30
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_setup.xml36
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_sound.xml40
-rw-r--r--indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml91
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_covenant.xml79
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_debug.xml34
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_environment.xml33
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_estate.xml52
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_general.xml44
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_terrain.xml60
-rw-r--r--indra/newview/skins/default/xui/tr/panel_region_texture.xml54
-rw-r--r--indra/newview/skins/default/xui/tr/panel_script_ed.xml47
-rw-r--r--indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml16
-rw-r--r--indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml20
-rw-r--r--indra/newview/skins/default/xui/tr/panel_scrolling_param.xml10
-rw-r--r--indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/panel_side_tray.xml29
-rw-r--r--indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/panel_sound_devices.xml25
-rw-r--r--indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml6
-rw-r--r--indra/newview/skins/default/xui/tr/panel_status_bar.xml28
-rw-r--r--indra/newview/skins/default/xui/tr/panel_teleport_history.xml19
-rw-r--r--indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml5
-rw-r--r--indra/newview/skins/default/xui/tr/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/tr/panel_world_map.xml63
-rw-r--r--indra/newview/skins/default/xui/tr/role_actions.xml73
-rw-r--r--indra/newview/skins/default/xui/tr/sidepanel_appearance.xml19
-rw-r--r--indra/newview/skins/default/xui/tr/sidepanel_inventory.xml65
-rw-r--r--indra/newview/skins/default/xui/tr/sidepanel_item_info.xml76
-rw-r--r--indra/newview/skins/default/xui/tr/sidepanel_task_info.xml123
-rw-r--r--indra/newview/skins/default/xui/tr/strings.xml4950
-rw-r--r--indra/newview/skins/default/xui/tr/teleport_strings.xml84
-rw-r--r--indra/newview/skins/default/xui/zh/floater_about.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/floater_buy_currency.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/floater_camera.xml9
-rw-r--r--indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml95
-rw-r--r--indra/newview/skins/default/xui/zh/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/notifications.xml10
-rw-r--r--indra/newview/skins/default/xui/zh/panel_my_profile.xml42
-rw-r--r--indra/newview/skins/default/xui/zh/panel_notes.xml35
-rw-r--r--indra/newview/skins/default/xui/zh/panel_preferences_chat.xml4
-rw-r--r--indra/newview/skins/default/xui/zh/panel_preferences_general.xml19
-rw-r--r--indra/newview/skins/default/xui/zh/panel_profile.xml67
-rw-r--r--indra/newview/skins/default/xui/zh/panel_profile_view.xml20
-rw-r--r--indra/newview/skins/default/xui/zh/teleport_strings.xml4
-rw-r--r--indra/newview/skins/minimal/colors.xml6
-rw-r--r--indra/newview/skins/minimal/textures/arrow_keys.pngbin6558 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.pngbin993 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.pngbin1217 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/button_separator.pngbin153 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/close_off.pngbin3184 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/close_over.pngbin3173 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/bottomtray/close_press.pngbin3259 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/click_to_move.pngbin8188 -> 0 bytes
-rw-r--r--indra/newview/skins/minimal/textures/textures.xml11
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/da/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inventory.xml84
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/da/notifications.xml1831
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_login.xml48
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/da/panel_status_bar.xml33
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/de/inspect_avatar.xml25
-rw-r--r--indra/newview/skins/minimal/xui/de/inspect_object.xml48
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_login.xml25
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/de/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_people.xml73
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/de/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_camera.xml284
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_help_browser.xml51
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_media_browser.xml242
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml52
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml10
-rw-r--r--indra/newview/skins/minimal/xui/en/floater_web_content.xml196
-rw-r--r--indra/newview/skins/minimal/xui/en/inspect_avatar.xml206
-rw-r--r--indra/newview/skins/minimal/xui/en/inspect_object.xml144
-rw-r--r--indra/newview/skins/minimal/xui/en/main_view.xml269
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_attachment_other.xml84
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_attachment_self.xml26
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_avatar_other.xml83
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_avatar_self.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_bottomtray.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_cof_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_edit.xml90
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_favorites.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_group_plus.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_im_well_button.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml125
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml50
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml49
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inventory.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inventory_add.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_land.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_landmark.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_login.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_mini_map.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_navbar.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_object.xml40
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_object_icon.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_participant_list.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_groups.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_nearby.xml71
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_picks.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_picks_plus.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_place.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_place_add_button.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_save_outfit.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_slurl.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_text_editor.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_topinfobar.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_agent.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_group.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_http.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_inventory.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_map.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_objectim.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_parcel.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_slapp.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_slurl.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_url_teleport.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_viewer.xml71
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml2
-rw-r--r--indra/newview/skins/minimal/xui/en/notification_visibility.xml27
-rw-r--r--indra/newview/skins/minimal/xui/en/notifications.xml44
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml81
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_bottomtray.xml557
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml79
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml194
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_login.xml205
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml76
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_people.xml571
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml11
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_status_bar.xml83
-rw-r--r--indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml34
-rw-r--r--indra/newview/skins/minimal/xui/en/widgets/location_input.xml139
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/es/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/es/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/es/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_people.xml74
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/es/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/fr/inspect_avatar.xml25
-rw-r--r--indra/newview/skins/minimal/xui/fr/inspect_object.xml48
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_login.xml25
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/fr/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_people.xml74
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/fr/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_media_browser.xml31
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/inspect_avatar.xml26
-rw-r--r--indra/newview/skins/minimal/xui/it/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_avatar_self.xml32
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inventory.xml87
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inventory_add.xml34
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml28
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/it/notifications.xml2951
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_login.xml48
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/it/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/inspect_avatar.xml27
-rw-r--r--indra/newview/skins/minimal/xui/ja/inspect_object.xml48
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml32
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inventory.xml87
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml34
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_login.xml25
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml28
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/ja/notifications.xml2995
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_login.xml48
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/ja/panel_status_bar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pl/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml21
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml31
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inventory.xml84
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml19
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pl/notifications.xml2907
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml39
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_login.xml45
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_people.xml94
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pl/panel_status_bar.xml33
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_camera.xml65
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_help_browser.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_media_browser.xml30
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/floater_web_content.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/inspect_avatar.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pt/inspect_object.xml41
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml31
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml17
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_edit.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_favorites.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_group_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inventory.xml86
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml33
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml16
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_land.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_landmark.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_login.xml24
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_mini_map.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_navbar.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_object.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_object_icon.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml27
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml9
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_participant_list.xml21
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_groups.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml13
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml10
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_picks.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_place.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml15
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml12
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml4
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_slurl.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_text_editor.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_agent.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_group.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_http.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_map.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml8
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_viewer.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml5
-rw-r--r--indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml6
-rw-r--r--indra/newview/skins/minimal/xui/pt/notifications.xml19
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml14
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml45
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml11
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml29
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_login.xml40
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml18
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_people.xml74
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml7
-rw-r--r--indra/newview/skins/minimal/xui/pt/panel_status_bar.xml24
-rw-r--r--indra/newview/tests/lltranslate_test.cpp345
-rw-r--r--indra/newview/viewer_manifest.py13
2846 files changed, 67490 insertions, 73707 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index cb0f630aa0..6b2fe1e45a 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -102,7 +102,6 @@ set(viewer_SOURCE_FILES
llavatarlist.cpp
llavatarlistitem.cpp
llavatarpropertiesprocessor.cpp
- llbottomtray.cpp
llbox.cpp
llbreadcrumbview.cpp
llbrowsernotification.cpp
@@ -118,6 +117,7 @@ set(viewer_SOURCE_FILES
llchatitemscontainerctrl.cpp
llchatmsgbox.cpp
llchiclet.cpp
+ llchicletbar.cpp
llclassifiedinfo.cpp
llclassifiedstatsresponder.cpp
llcofwearables.cpp
@@ -168,6 +168,7 @@ set(viewer_SOURCE_FILES
llfloaterabout.cpp
llfloateranimpreview.cpp
llfloaterauction.cpp
+ llfloateravatar.cpp
llfloateravatarpicker.cpp
llfloateravatartextures.cpp
llfloaterbeacons.cpp
@@ -182,6 +183,7 @@ set(viewer_SOURCE_FILES
llfloatercamera.cpp
llfloatercolorpicker.cpp
llfloaterdeleteenvpreset.cpp
+ llfloaterdestinations.cpp
llfloaterdisplayname.cpp
llfloatereditdaycycle.cpp
llfloatereditsky.cpp
@@ -205,7 +207,6 @@ set(viewer_SOURCE_FILES
llfloaterland.cpp
llfloaterlandholdings.cpp
llfloatermap.cpp
- llfloatermediabrowser.cpp
llfloatermediasettings.cpp
llfloatermemleak.cpp
llfloatermodelpreview.cpp
@@ -217,7 +218,6 @@ set(viewer_SOURCE_FILES
llfloateropenobject.cpp
llfloaterpay.cpp
llfloaterperms.cpp
- llfloaterpostcard.cpp
llfloaterpostprocess.cpp
llfloaterpreference.cpp
llfloaterproperties.cpp
@@ -229,7 +229,7 @@ set(viewer_SOURCE_FILES
llfloatersearch.cpp
llfloatersellland.cpp
llfloatersettingsdebug.cpp
- llfloatersidetraytab.cpp
+ llfloatersidepanelcontainer.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloatertelehub.cpp
@@ -238,10 +238,13 @@ set(viewer_SOURCE_FILES
llfloatertools.cpp
llfloatertopobjects.cpp
llfloatertos.cpp
+ llfloatertoybox.cpp
+ llfloatertranslationsettings.cpp
llfloateruipreview.cpp
llfloaterurlentry.cpp
llfloatervoiceeffect.cpp
llfloaterwebcontent.cpp
+ llfloaterwebprofile.cpp
llfloaterwhitelistentry.cpp
llfloaterwindowsize.cpp
llfloaterworldmap.cpp
@@ -314,7 +317,6 @@ set(viewer_SOURCE_FILES
llmediactrl.cpp
llmediadataclient.cpp
llmemoryview.cpp
- llmenucommands.cpp
llmeshrepository.cpp
llmimetypes.cpp
llmorphview.cpp
@@ -391,7 +393,12 @@ set(viewer_SOURCE_FILES
llpanelplacestab.cpp
llpanelprimmediacontrols.cpp
llpanelprofile.cpp
- llpanelprofileview.cpp
+ llpanelsnapshot.cpp
+ llpanelsnapshotinventory.cpp
+ llpanelsnapshotlocal.cpp
+ llpanelsnapshotoptions.cpp
+ llpanelsnapshotpostcard.cpp
+ llpanelsnapshotprofile.cpp
llpanelteleporthistory.cpp
llpaneltiptoast.cpp
llpanelvoiceeffect.cpp
@@ -410,6 +417,7 @@ set(viewer_SOURCE_FILES
llpopupview.cpp
llpolymesh.cpp
llpolymorph.cpp
+ llpostcard.cpp
llpreview.cpp
llpreviewanim.cpp
llpreviewgesture.cpp
@@ -441,13 +449,10 @@ set(viewer_SOURCE_FILES
llsidepanelinventorysubpanel.cpp
llsidepaneliteminfo.cpp
llsidepaneltaskinfo.cpp
- llsidetray.cpp
- llsidetraylistener.cpp
llsidetraypanelcontainer.cpp
llsky.cpp
llslurl.cpp
llspatialpartition.cpp
- llspeakbutton.cpp
llspeakers.cpp
llspeakingindicatormanager.cpp
llsplitbutton.cpp
@@ -483,6 +488,7 @@ set(viewer_SOURCE_FILES
lltoastpanel.cpp
lltoastscripttextbox.cpp
lltool.cpp
+ lltoolbarview.cpp
lltoolbrush.cpp
lltoolcomp.cpp
lltooldraganddrop.cpp
@@ -538,9 +544,6 @@ set(viewer_SOURCE_FILES
llviewerjoint.cpp
llviewerjointattachment.cpp
llviewerjointmesh.cpp
- llviewerjointmesh_sse.cpp
- llviewerjointmesh_sse2.cpp
- llviewerjointmesh_vec.cpp
llviewerjoystick.cpp
llviewerkeyboard.cpp
llviewerlayer.cpp
@@ -588,7 +591,6 @@ set(viewer_SOURCE_FILES
llvopartgroup.cpp
llvosky.cpp
llvosurfacepatch.cpp
- llvotextbubble.cpp
llvotree.cpp
llvovolume.cpp
llvowater.cpp
@@ -601,6 +603,7 @@ set(viewer_SOURCE_FILES
llwearablelist.cpp
llwearabletype.cpp
llweb.cpp
+ llwebprofile.cpp
llwebsharing.cpp
llwind.cpp
llwindowlistener.cpp
@@ -623,20 +626,6 @@ set(viewer_SOURCE_FILES
set(VIEWER_BINARY_NAME "secondlife-bin" CACHE STRING
"The name of the viewer executable to create.")
-if (LINUX)
- # We can't set these flags for Darwin, because they get passed to
- # the PPC compiler. Ugh.
-
- set_source_files_properties(
- llviewerjointmesh_sse.cpp
- PROPERTIES COMPILE_FLAGS "-msse -mfpmath=sse"
- )
- set_source_files_properties(
- llviewerjointmesh_sse2.cpp
- PROPERTIES COMPILE_FLAGS "-msse2 -mfpmath=sse"
- )
-endif (LINUX)
-
set(viewer_HEADER_FILES
CMakeLists.txt
ViewerInstall.cmake
@@ -667,7 +656,6 @@ set(viewer_HEADER_FILES
llavatarlist.h
llavatarlistitem.h
llavatarpropertiesprocessor.h
- llbottomtray.h
llbox.h
llbreadcrumbview.h
llbuycurrencyhtml.h
@@ -683,6 +671,7 @@ set(viewer_HEADER_FILES
llchatitemscontainerctrl.h
llchatmsgbox.h
llchiclet.h
+ llchicletbar.h
llclassifiedinfo.h
llclassifiedstatsresponder.h
llcofwearables.h
@@ -733,6 +722,7 @@ set(viewer_HEADER_FILES
llfloaterabout.h
llfloateranimpreview.h
llfloaterauction.h
+ llfloateravatar.h
llfloateravatarpicker.h
llfloateravatartextures.h
llfloaterbeacons.h
@@ -747,6 +737,7 @@ set(viewer_HEADER_FILES
llfloatercamera.h
llfloatercolorpicker.h
llfloaterdeleteenvpreset.h
+ llfloaterdestinations.h
llfloaterdisplayname.h
llfloatereditdaycycle.h
llfloatereditsky.h
@@ -770,7 +761,6 @@ set(viewer_HEADER_FILES
llfloaterland.h
llfloaterlandholdings.h
llfloatermap.h
- llfloatermediabrowser.h
llfloatermediasettings.h
llfloatermemleak.h
llfloatermodelpreview.h
@@ -782,7 +772,6 @@ set(viewer_HEADER_FILES
llfloateropenobject.h
llfloaterpay.h
llfloaterperms.h
- llfloaterpostcard.h
llfloaterpostprocess.h
llfloaterpreference.h
llfloaterproperties.h
@@ -794,7 +783,7 @@ set(viewer_HEADER_FILES
llfloatersearch.h
llfloatersellland.h
llfloatersettingsdebug.h
- llfloatersidetraytab.h
+ llfloatersidepanelcontainer.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloatertelehub.h
@@ -803,10 +792,13 @@ set(viewer_HEADER_FILES
llfloatertools.h
llfloatertopobjects.h
llfloatertos.h
+ llfloatertoybox.h
+ llfloatertranslationsettings.h
llfloateruipreview.h
llfloaterurlentry.h
llfloatervoiceeffect.h
llfloaterwebcontent.h
+ llfloaterwebprofile.h
llfloaterwhitelistentry.h
llfloaterwindowsize.h
llfloaterworldmap.h
@@ -879,7 +871,6 @@ set(viewer_HEADER_FILES
llmediactrl.h
llmediadataclient.h
llmemoryview.h
- llmenucommands.h
llmeshrepository.h
llmimetypes.h
llmorphview.h
@@ -950,7 +941,7 @@ set(viewer_HEADER_FILES
llpanelplacestab.h
llpanelprimmediacontrols.h
llpanelprofile.h
- llpanelprofileview.h
+ llpanelsnapshot.h
llpanelteleporthistory.h
llpaneltiptoast.h
llpanelvoicedevicesettings.h
@@ -969,6 +960,7 @@ set(viewer_HEADER_FILES
llpolymesh.h
llpolymorph.h
llpopupview.h
+ llpostcard.h
llpreview.h
llpreviewanim.h
llpreviewgesture.h
@@ -1001,13 +993,10 @@ set(viewer_HEADER_FILES
llsidepanelinventorysubpanel.h
llsidepaneliteminfo.h
llsidepaneltaskinfo.h
- llsidetray.h
- llsidetraylistener.h
llsidetraypanelcontainer.h
llsky.h
llslurl.h
llspatialpartition.h
- llspeakbutton.h
llspeakers.h
llspeakingindicatormanager.h
llsplitbutton.h
@@ -1044,6 +1033,7 @@ set(viewer_HEADER_FILES
lltoastpanel.h
lltoastscripttextbox.h
lltool.h
+ lltoolbarview.h
lltoolbrush.h
lltoolcomp.h
lltooldraganddrop.h
@@ -1146,7 +1136,6 @@ set(viewer_HEADER_FILES
llvopartgroup.h
llvosky.h
llvosurfacepatch.h
- llvotextbubble.h
llvotree.h
llvotreenew.h
llvovolume.h
@@ -1160,6 +1149,7 @@ set(viewer_HEADER_FILES
llwearablelist.h
llwearabletype.h
llweb.h
+ llwebprofile.h
llwebsharing.h
llwind.h
llwindowlistener.h
@@ -1385,11 +1375,6 @@ endif (WINDOWS)
set(viewer_XUI_FILES
skins/default/colors.xml
skins/default/textures/textures.xml
- skins/minimal/colors.xml
- skins/minimal/textures/textures.xml
-
-
-
)
file(GLOB DEFAULT_XUI_FILE_GLOB_LIST
${CMAKE_CURRENT_SOURCE_DIR}/skins/*/xui/en/*.xml)
@@ -1416,6 +1401,7 @@ list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
set(viewer_APPSETTINGS_FILES
app_settings/anim.ini
app_settings/cmd_line.xml
+ app_settings/commands.xml
app_settings/grass.xml
app_settings/high_graphics.xml
app_settings/ignorable_dialogs.xml
@@ -1428,8 +1414,8 @@ set(viewer_APPSETTINGS_FILES
app_settings/settings_crash_behavior.xml
app_settings/settings_files.xml
app_settings/settings_per_account.xml
- app_settings/settings_minimal.xml
app_settings/std_bump.ini
+ app_settings/toolbars.xml
app_settings/trees.xml
app_settings/ultra_graphics.xml
app_settings/viewerart.xml
@@ -1989,12 +1975,19 @@ if (LL_TESTS)
llmediadataclient.cpp
lllogininstance.cpp
llremoteparcelrequest.cpp
+ lltranslate.cpp
llviewerhelputil.cpp
llversioninfo.cpp
llworldmap.cpp
llworldmipmap.cpp
)
+ set_source_files_properties(
+ lltranslate.cpp
+ PROPERTIES
+ LL_TEST_ADDITIONAL_LIBRARIES "${JSONCPP_LIBRARIES}"
+ )
+
##################################################
# DISABLING PRECOMPILED HEADERS USAGE FOR TESTS
##################################################
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
new file mode 100644
index 0000000000..a44b895f7b
--- /dev/null
+++ b/indra/newview/app_settings/commands.xml
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<commands>
+ <command name="aboutland"
+ available_in_toybox="true"
+ icon="Command_AboutLand_Icon"
+ label_ref="Command_AboutLand_Label"
+ tooltip_ref="Command_AboutLand_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="about_land"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="about_land"
+ />
+ <command name="appearance"
+ available_in_toybox="true"
+ icon="Command_Appearance_Icon"
+ label_ref="Command_Appearance_Label"
+ tooltip_ref="Command_Appearance_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="appearance"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="appearance"
+ />
+ <command name="avatar"
+ available_in_toybox="true"
+ icon="Command_Avatar_Icon"
+ label_ref="Command_Avatar_Label"
+ tooltip_ref="Command_Avatar_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="avatar"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="avatar"
+ />
+ <command name="build"
+ available_in_toybox="true"
+ icon="Command_Build_Icon"
+ label_ref="Command_Build_Label"
+ tooltip_ref="Command_Build_Tooltip"
+ execute_function="Build.Toggle"
+ execute_parameters="build"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="build"
+ />
+ <command name="chat"
+ available_in_toybox="true"
+ icon="Command_Chat_Icon"
+ label_ref="Command_Chat_Label"
+ tooltip_ref="Command_Chat_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="chat_bar"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="chat_bar"
+ />
+ <command name="compass"
+ available_in_toybox="false"
+ icon="Command_Compass_Icon"
+ label_ref="Command_Compass_Label"
+ tooltip_ref="Command_Compass_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="compass"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="compass"
+ />
+ <command name="destinations"
+ available_in_toybox="true"
+ icon="Command_Destinations_Icon"
+ label_ref="Command_Destinations_Label"
+ tooltip_ref="Command_Destinations_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="destinations"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="destinations"
+ />
+ <command name="gestures"
+ available_in_toybox="true"
+ icon="Command_Gestures_Icon"
+ label_ref="Command_Gestures_Label"
+ tooltip_ref="Command_Gestures_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="gestures"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="gestures"
+ />
+ <command name="howto"
+ available_in_toybox="true"
+ icon="Command_HowTo_Icon"
+ label_ref="Command_HowTo_Label"
+ tooltip_ref="Command_HowTo_Tooltip"
+ execute_function="Help.ToggleHowTo"
+ is_running_function="Help.HowToVisible"
+ />
+ <command name="inventory"
+ available_in_toybox="true"
+ icon="Command_Inventory_Icon"
+ label_ref="Command_Inventory_Label"
+ tooltip_ref="Command_Inventory_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="inventory"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="inventory"
+ />
+ <command name="map"
+ available_in_toybox="true"
+ icon="Command_Map_Icon"
+ label_ref="Command_Map_Label"
+ tooltip_ref="Command_Map_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="world_map"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="world_map"
+ />
+ <command name="marketplace"
+ available_in_toybox="false"
+ icon="Command_Marketplace_Icon"
+ label_ref="Command_Marketplace_Label"
+ tooltip_ref="Command_Marketplace_Tooltip"
+ execute_function="Avatar.OpenMarketplace"
+ />
+ <command name="minimap"
+ available_in_toybox="true"
+ icon="Command_MiniMap_Icon"
+ label_ref="Command_MiniMap_Label"
+ tooltip_ref="Command_MiniMap_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="mini_map"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="mini_map"
+ />
+ <command name="move"
+ available_in_toybox="true"
+ icon="Command_Move_Icon"
+ label_ref="Command_Move_Label"
+ tooltip_ref="Command_Move_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="moveview"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="moveview"
+ />
+ <command name="people"
+ available_in_toybox="true"
+ icon="Command_People_Icon"
+ label_ref="Command_People_Label"
+ tooltip_ref="Command_People_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="people"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="people"
+ />
+ <command name="picks"
+ available_in_toybox="true"
+ icon="Command_Picks_Icon"
+ label_ref="Command_Picks_Label"
+ tooltip_ref="Command_Picks_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="picks"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="picks"
+ />
+ <command name="places"
+ available_in_toybox="true"
+ icon="Command_Places_Icon"
+ label_ref="Command_Places_Label"
+ tooltip_ref="Command_Places_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="places"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="places"
+ />
+ <command name="preferences"
+ available_in_toybox="true"
+ icon="Command_Preferences_Icon"
+ label_ref="Command_Preferences_Label"
+ tooltip_ref="Command_Preferences_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="preferences"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="preferences"
+ />
+ <command name="profile"
+ available_in_toybox="true"
+ icon="Command_Profile_Icon"
+ label_ref="Command_Profile_Label"
+ tooltip_ref="Command_Profile_Tooltip"
+ execute_function="Avatar.ToggleMyProfile"
+ is_running_function="Avatar.IsMyProfileOpen"
+ />
+ <command name="search"
+ available_in_toybox="true"
+ icon="Command_Search_Icon"
+ label_ref="Command_Search_Label"
+ tooltip_ref="Command_Search_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="search"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="search"
+ />
+ <command name="snapshot"
+ available_in_toybox="true"
+ icon="Command_Snapshot_Icon"
+ label_ref="Command_Snapshot_Label"
+ tooltip_ref="Command_Snapshot_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="snapshot"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="snapshot"
+ />
+ <command name="speak"
+ available_in_toybox="true"
+ icon="Command_Speak_Icon"
+ label_ref="Command_Speak_Label"
+ tooltip_ref="Command_Speak_Tooltip"
+ execute_function="Agent.PressMicrophone"
+ execute_parameters="speak"
+ execute_stop_function="Agent.ReleaseMicrophone"
+ execute_stop_parameters="speak"
+ is_enabled_function="Agent.IsActionAllowed"
+ is_enabled_parameters="speak"
+ is_running_function="Agent.IsMicrophoneOn"
+ is_running_parameters="speak"
+ />
+ <command name="view"
+ available_in_toybox="true"
+ icon="Command_View_Icon"
+ label_ref="Command_View_Label"
+ tooltip_ref="Command_View_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="camera"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="camera"
+ />
+ <command name="voice"
+ available_in_toybox="true"
+ icon="Command_Voice_Icon"
+ label_ref="Command_Voice_Label"
+ tooltip_ref="Command_Voice_Tooltip"
+ execute_function="Floater.ToggleOrBringToFront"
+ execute_parameters="voice_controls"
+ is_running_function="Floater.IsOpen"
+ is_running_parameters="voice_controls"
+ />
+</commands>
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 9fa4046fdf..82b43432eb 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -10,7 +10,7 @@ state Keyword to indicate state block or state transition
integer Integer type
float Floating-point type
string String type
-key Key type. Use NULL_KEY to test for empty keys.
+key Key type. Use NULL_KEY to test for empty keys
vector Vector type of 3 floats. Used to represent 3D motion, Euler angles, and color.:Access components by .x, .y. or .z
rotation Rotation type of 4 floats. Used to represent rotation.:Access components by .x, .y., .z, or .w
list List of various data types
@@ -28,7 +28,7 @@ collision_end collision_end(integer num_detected):Triggered when task stops coll
land_collision_start land_collision_start(vector pos):Triggered when task starts colliding with land
land_collision land_collision(vector pos):Triggered when task is colliding with land
land_collision_end land_collision_end(vector pos):Triggered when task stops colliding with land
-timer timer():Result of the llSetTimerEvent library function call.
+timer timer():Result of the llSetTimerEvent library function call
listen listen(integer channel, string name, key id, string message):Result of the llListen library function call
sensor sensor(integer num_detected):Result of the llSensor library function call
no_sensor no_sensor():Result of the llSensor library function call
@@ -44,8 +44,8 @@ attach attach(key id):Triggered when task attaches or detaches from agent
dataserver dataserver(key queryid, string data):Triggered when task receives asynchronous data
moving_start moving_start():Triggered when task begins moving
moving_end moving_end():Triggered when task stops moving
-on_rez on_rez(integer start_param):Triggered when task is rezed in from inventory or another task
-object_rez object_rez(key id):Triggered when task rezes in another task
+on_rez on_rez(integer start_param):Triggered when task is rezzed in from inventory or another task
+object_rez object_rez(key id):Triggered when task rezzes in another task
link_message link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call
changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT, CHANGED_REGION_START, CHANGED_MEDIA)
remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
@@ -151,15 +151,15 @@ PSYS_SRC_PATTERN_ANGLE
PSYS_SRC_PATTERN_ANGLE_CONE
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
-OBJECT_UNKNOWN_DETAIL Returned by llGetObjectDetails when passed an invalid object parameter type.
-OBJECT_NAME Used with llGetObjectDetails to get an object's name.
-OBJECT_DESC Used with llGetObjectDetails to get an object's description.
-OBJECT_POS Used with llGetObjectDetails to get an object's position.
-OBJECT_ROT Used with llGetObjectDetails to get an object's rotation.
-OBJECT_VELOCITY Used with llGetObjectDetails to get an object's velocity.
-OBJECT_OWNER Used with llGetObjectDetails to get an object's owner's key. Will be NULL_KEY if group owned.
-OBJECT_GROUP Used with llGetObjectDetails to get an object's group's key.
-OBJECT_CREATOR Used with llGetObjectDetails to get an object's creator's key.
+OBJECT_UNKNOWN_DETAIL Returned by llGetObjectDetails when passed an invalid object parameter type
+OBJECT_NAME Used with llGetObjectDetails to get an object's name
+OBJECT_DESC Used with llGetObjectDetails to get an object's description
+OBJECT_POS Used with llGetObjectDetails to get an object's position
+OBJECT_ROT Used with llGetObjectDetails to get an object's rotation
+OBJECT_VELOCITY Used with llGetObjectDetails to get an object's velocity
+OBJECT_OWNER Used with llGetObjectDetails to get an object's owner's key. Will be NULL_KEY if group owned
+OBJECT_GROUP Used with llGetObjectDetails to get an object's group's key
+OBJECT_CREATOR Used with llGetObjectDetails to get an object's creator's key
# some vehicle params
VEHICLE_TYPE_NONE
@@ -198,7 +198,7 @@ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY A slider between 0 (bouncy) and 1 (critic
VEHICLE_VERTICAL_ATTRACTION_TIMESCALE The exponential timescale for the vehicle to align its z-axis to the world z-axis (vertical)
VEHICLE_BANKING_EFFICIENCY A slider between -1 (leans out of turns), 0 (no banking), and +1 (leans into turns)
-VEHICLE_BANKING_MIX A slider betwen 0 (static banking) and 1 (dynamic banking)
+VEHICLE_BANKING_MIX A slider between 0 (static banking) and 1 (dynamic banking)
VEHICLE_BANKING_TIMESCALE The exponential timescale for the banking behavior to take full effect
VEHICLE_FLAG_NO_DEFLECTION_UP Prevents linear deflection along world-z axis
@@ -208,9 +208,9 @@ VEHICLE_FLAG_HOVER_TERRAIN_ONLY Hover only pays attention to terrain height
VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT Hover only pays attention to global height
VEHICLE_FLAG_HOVER_UP_ONLY Hover only pushes up
VEHICLE_FLAG_LIMIT_MOTOR_UP Prevents ground vehicles from motoring into the sky
-VEHICLE_FLAG_MOUSELOOK_STEER Makes vehicle try to turn toward mouselook direction.
-VEHICLE_FLAG_MOUSELOOK_BANK Makes vehicle try to turn toward mouselook direction assuming banking is enabled.
-VEHICLE_FLAG_CAMERA_DECOUPLED Causes the camera look-at axis to NOT move when the vehicle rotates.
+VEHICLE_FLAG_MOUSELOOK_STEER Makes vehicle try to turn toward mouselook direction
+VEHICLE_FLAG_MOUSELOOK_BANK Makes vehicle try to turn toward mouselook direction assuming banking is enabled
+VEHICLE_FLAG_CAMERA_DECOUPLED Causes the camera look-at axis to NOT move when the vehicle rotates
CAMERA_PITCH (-45 to 80) (Adjusts the angular amount that the camera aims straight ahead vs. straight down, maintaining the same distance. Analogous to 'incidence'.")
CAMERA_FOCUS_OFFSET (-10 to 10) A vector that adjusts the position of the camera focus position relative to the subject
@@ -238,7 +238,7 @@ INVENTORY_BODYPART Passed to task inventory library functions to reference body
INVENTORY_ANIMATION Passed to task inventory library functions to reference animations
INVENTORY_GESTURE Passed to task inventory library functions to reference gestures
INVENTORY_ALL Passed to task inventory library functions to reference all inventory items
-INVENTORY_NONE Returned by llGetInventoryType when no item is found.
+INVENTORY_NONE Returned by llGetInventoryType when no item is found
ATTACH_CHEST Passed to llAttachToAvatar to attach task to chest
ATTACH_HEAD Passed to llAttachToAvatar to attach task to head
@@ -256,7 +256,7 @@ ATTACH_LEAR Passed to llAttachToAvatar to attach task to left ear
ATTACH_REAR Passed to llAttachToAvatar to attach task to right ear
ATTACH_LEYE Passed to llAttachToAvatar to attach task to left eye
ATTACH_REYE Passed to llAttachToAvatar to attach task to right eye
-ATTACH_NOSE Passed to llAttachToAvatar to attach task to noce
+ATTACH_NOSE Passed to llAttachToAvatar to attach task to nose
ATTACH_RUARM Passed to llAttachToAvatar to attach task to right upper arm
ATTACH_RLARM Passed to llAttachToAvatar to attach task to right lower arm
ATTACH_LUARM Passed to llAttachToAvatar to attach task to left upper arm
@@ -296,7 +296,7 @@ PAYMENT_INFO_USED Used with llRequestAgentData to tell if Agent is of "Payment I
ANIM_ON Enable texture animation
LOOP Loop when animating textures
REVERSE Animate in the reverse direction
-PING_PONG Animate forward, then reverse.
+PING_PONG Animate forward, then reverse
SMOOTH Textures slides, instead of stepping
ROTATE Rotates the texture, instead of using frames
SCALE Scales the texture, instead of using frames
@@ -343,7 +343,7 @@ PRIM_FLEXIBLE Followed by TRUE or FALSE, integer softness, float gravity, float
PRIM_POINT_LIGHT Followed by TRUE or FALSE, vector color, float intensity, float radius, float falloff
PRIM_TEMP_ON_REZ Sets temporay on rez to TRUE or FALSE
PRIM_PHANTOM Sets phantom to TRUE or FALSE
-PRIM_CAST_SHADOWS DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams.
+PRIM_CAST_SHADOWS DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams
PRIM_POSITION Sets primitive position to a vector position
PRIM_SIZE Sets primitive size to a vector size
PRIM_ROTATION Sets primitive rotation
@@ -363,10 +363,10 @@ PRIM_TYPE_TUBE Followed by integer hole shape, vector cut, float hollow, vector
PRIM_TYPE_RING Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
PRIM_TYPE_SCULPT Followed by a key/string texture uuid, and one of PRIM_SCULPT_TYPE_SPHERE, PRIM_SCULPT_TYPE_TORUS, PRIM_SCULPT_TYPE_PLANE, or PRIM_SCULPT_TYPE_CYLINDER
-PRIM_HOLE_DEFAULT Sets hole type to match the prim type.
-PRIM_HOLE_SQUARE Sets hole type to square.
-PRIM_HOLE_CIRCLE Sets hole type to circle.
-PRIM_HOLE_TRIANGLE Sets hole type to triangle.
+PRIM_HOLE_DEFAULT Sets hole type to match the prim type
+PRIM_HOLE_SQUARE Sets hole type to square
+PRIM_HOLE_CIRCLE Sets hole type to circle
+PRIM_HOLE_TRIANGLE Sets hole type to triangle
PRIM_MATERIAL_STONE Sets material to stone
PRIM_MATERIAL_METAL Sets material to metal
@@ -436,7 +436,7 @@ PARCEL_MEDIA_COMMAND_TIME Set media stream to specific time
PARCEL_MEDIA_COMMAND_SIZE Get or set the parcel's media pixel resolution
PARCEL_MEDIA_COMMAND_AGENT Allows media stream commands to apply to only one agent
PARCEL_MEDIA_COMMAND_UNLOAD Unloads the media stream
-PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size. May cause a performance hit and loss of some visual quality.
+PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size. May cause a performance hit and loss of some visual quality
PAY_HIDE Used with llSetPayPrice to hide a button
PAY_DEFAULT Used with llSetPayPrice to use the default price for a button
@@ -481,7 +481,7 @@ REGION_FLAG_RESTRICT_PUSHOBJECT Used with llGetRegionFlags to find if a region
HTTP_METHOD Used with llHTTPRequest to specify the method, such as "GET" or "POST"
HTTP_MIMETYPE Used with llHTTPRequest to specify the MIME type, defaults to "text/plain"
-HTTP_BODY_MAXLENGTH Used with llHTTPRequest to specify the maxium reponse body to return
+HTTP_BODY_MAXLENGTH Used with llHTTPRequest to specify the maximum response body to return
HTTP_VERIFY_CERT Used with llHTTPRequest to specify SSL certificate verification
HTTP_BODY_TRUNCATED Used with http_response to indicate truncation point in bytes
@@ -492,17 +492,17 @@ PARCEL_COUNT_OTHER Used with llGetParcelPrimCount to get the number of prims on
PARCEL_COUNT_SELECTED Used with llGetParcelPrimCount to get the number of prims on the parcel currently selected or sat upon
PARCEL_COUNT_TEMP Used with llGetParcelPrimCount to get the number of prims on the parcel that are temp on rez
-PARCEL_DETAILS_NAME Used with llGetParcelDetails to get the parcel name.
-PARCEL_DETAILS_DESC Used with llGetParcelDetails to get the parcel description.
-PARCEL_DETAILS_OWNER Used with llGetParcelDetails to get the parcel owner id.
-PARCEL_DETAILS_GROUP Used with llGetParcelDetails to get the parcel group id.
-PARCEL_DETAILS_AREA Used with llGetParcelDetails to get the parcel area in square meters.
-PARCEL_DETAILS_ID Used with llGetParcelDetails to get the parcel id.
-PARCEL_DETAILS_SEE_AVATARS Used with llGetParcelDetails to get the avatars visibility setting.
+PARCEL_DETAILS_NAME Used with llGetParcelDetails to get the parcel name
+PARCEL_DETAILS_DESC Used with llGetParcelDetails to get the parcel description
+PARCEL_DETAILS_OWNER Used with llGetParcelDetails to get the parcel owner id
+PARCEL_DETAILS_GROUP Used with llGetParcelDetails to get the parcel group id
+PARCEL_DETAILS_AREA Used with llGetParcelDetails to get the parcel area in square meters
+PARCEL_DETAILS_ID Used with llGetParcelDetails to get the parcel id
+PARCEL_DETAILS_SEE_AVATARS Used with llGetParcelDetails to get the avatars visibility setting
-STRING_TRIM_HEAD Used with llStringTrim to trim leading spaces from a string.
-STRING_TRIM_TAIL Used with llStringTrim to trim trailing spaces from a string.
-STRING_TRIM Used with llStringTrim to trim both leading and trailing spaces from a string.
+STRING_TRIM_HEAD Used with llStringTrim to trim leading spaces from a string
+STRING_TRIM_TAIL Used with llStringTrim to trim trailing spaces from a string
+STRING_TRIM Used with llStringTrim to trim both leading and trailing spaces from a string
CLICK_ACTION_NONE Used with llSetClickAction to disable the click action
CLICK_ACTION_TOUCH Used with llSetClickAction to set touch as the default action when object is clicked
@@ -514,9 +514,9 @@ CLICK_ACTION_PLAY Used with llSetClickAction to set play as the default ac
CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the default action when object is clicked
CLICK_ACTION_ZOOM Used with llSetClickAction to set zoom in as the default action when object is clicked
-TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid.
-TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid.
-TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid.
+TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid
+TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid
+TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid
PRIM_MEDIA_ALT_IMAGE_ENABLE Used with ll{Get,Set}PrimMediaParams to enable the default alt image for media
PRIM_MEDIA_CONTROLS Used with ll{Get,Set}PrimMediaParams to determine the controls shown for media
@@ -603,9 +603,11 @@ return Leave current function or event handler
# Comment
[one_sided_delimiter .8, .3, .15]
// Comment:Non-functional commentary or disabled code
+[two_sided_delimiter .8, .3, .15]
+/* */ Comment:Non-functional commentary or disabled code
# String literals
-[two_sided_delimiter 0, .2, 0]
+[double_quotation_marks 0, .2, 0]
" String literal
-#functions are supplied by the program now.
+#functions are supplied by the program now
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index ae72dee900..a76eb3cd37 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -43,7 +43,7 @@
<key>tags</key>
<array>
<!-- sample entry for debugging a specific item -->
-<!-- <string>Voice</string> -->
+<!-- <string>Voice</string> -->
</array>
</map>
</array>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 15f1bbd1b1..aa8ad53a3d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -619,7 +619,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string></string>
+ <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/avatars.html</string>
</map>
<key>AvatarBakedTextureUploadTimeout</key>
<map>
@@ -1150,28 +1150,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>ButtonFlashCount</key>
- <map>
- <key>Comment</key>
- <string>Number of flashes after which flashing buttons stay lit up</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>8</integer>
- </map>
- <key>ButtonFlashRate</key>
- <map>
- <key>Comment</key>
- <string>Frequency at which buttons flash (hz)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>1.25</real>
- </map>
<key>ButtonHPad</key>
<map>
<key>Comment</key>
@@ -1414,6 +1392,18 @@
<real>0.5</real>
</map>
+ <key>CameraMaxCoF</key>
+ <map>
+ <key>Comment</key>
+ <string>Maximum camera circle of confusion for DoF effect</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>10.0</real>
+ </map>
+
<key>CameraFNumber</key>
<map>
<key>Comment</key>
@@ -1572,17 +1562,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>ChatVisible</key>
- <map>
- <key>Comment</key>
- <string>Chat bar is visible</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>ChatWindow</key>
<map>
<key>Comment</key>
@@ -1627,17 +1606,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>CloseSnapshotOnKeep</key>
- <map>
- <key>Comment</key>
- <string>Close snapshot window after saving snapshot</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>CmdLineDisableVoice</key>
<map>
<key>Comment</key>
@@ -1926,6 +1894,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>DebugHideEmptySystemFolders</key>
+ <map>
+ <key>Comment</key>
+ <string>Hide empty system folders when on</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>DebugInventoryFilters</key>
<map>
<key>Comment</key>
@@ -2728,7 +2707,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string></string>
+ <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/guide.html</string>
</map>
<key>DisableCameraConstraints</key>
<map>
@@ -3148,17 +3127,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>EnableRippleWater</key>
- <map>
- <key>Comment</key>
- <string>Whether to use ripple water shader or not</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>EnableTextureAtlas</key>
<map>
<key>Comment</key>
@@ -3179,7 +3147,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>EnableVoiceChat</key>
<map>
@@ -4039,6 +4007,17 @@
<key>Value</key>
<string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string>
</map>
+ <key>HowToHelpURL</key>
+ <map>
+ <key>Comment</key>
+ <string>URL for How To help content</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/howto/index.html</string>
+ </map>
<key>HomeSidePanelURL</key>
<map>
<key>Comment</key>
@@ -4589,21 +4568,21 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>LastGPUClass</key>
+ <key>LastGPUString</key>
<map>
<key>Comment</key>
- <string>[DO NOT MODIFY] previous GPU class for tracking hardware changes</string>
+ <string>[DO NOT MODIFY] previous GPU id string for tracking hardware changes</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>S32</string>
+ <string>String</string>
<key>Value</key>
- <integer>-1</integer>
+ <string></string>
</map>
<key>LastFeatureVersion</key>
<map>
<key>Comment</key>
- <string>[DO NOT MODIFY] Version number for tracking hardware changes</string>
+ <string>[DO NOT MODIFY] Feature Table Version number for tracking rendering system changes</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -4667,6 +4646,17 @@
<string>0.0.0</string>
</map>
+ <key>LastSnapshotToProfileHeight</key>
+ <map>
+ <key>Comment</key>
+ <string>The height of the last profile snapshot, in px</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>768</integer>
+ </map>
<key>LastSnapshotToEmailHeight</key>
<map>
<key>Comment</key>
@@ -4678,6 +4668,17 @@
<key>Value</key>
<integer>768</integer>
</map>
+ <key>LastSnapshotToProfileWidth</key>
+ <map>
+ <key>Comment</key>
+ <string>The width of the last profile snapshot, in px</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>1024</integer>
+ </map>
<key>LastSnapshotToEmailWidth</key>
<map>
<key>Comment</key>
@@ -4733,17 +4734,6 @@
<key>Value</key>
<integer>512</integer>
</map>
- <key>LastSnapshotType</key>
- <map>
- <key>Comment</key>
- <string>Select this as next type of snapshot to take (0 = postcard, 1 = texture, 2 = local image)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>LeftClickShowMenu</key>
<map>
<key>Comment</key>
@@ -5094,7 +5084,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/</string>
+ <string>https://marketplace.secondlife.com/</string>
</map>
<key>MarketplaceURL_objectFemale</key>
<map>
@@ -5105,7 +5095,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
</map>
<key>MarketplaceURL_objectMale</key>
<map>
@@ -5116,7 +5106,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
</map>
<key>MarketplaceURL_clothingFemale</key>
<map>
@@ -5127,7 +5117,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/clothing_female_avatar</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/clothing_female_avatar</string>
</map>
<key>MarketplaceURL_clothingMale</key>
<map>
@@ -5138,7 +5128,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/clothing_male_avatar</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/clothing_male_avatar</string>
</map>
<key>MarketplaceURL_bodypartFemale</key>
<map>
@@ -5149,7 +5139,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com</string>
+ <string>https://marketplace.secondlife.com/</string>
</map>
<key>MarketplaceURL_bodypartMale</key>
<map>
@@ -5160,7 +5150,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/</string>
+ <string>https://marketplace.secondlife.com/</string>
</map>
<key>MarketplaceURL_glovesMale</key>
<map>
@@ -5171,7 +5161,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
</map>
<key>MarketplaceURL_glovesFemale</key>
<map>
@@ -5182,7 +5172,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
</map>
<key>MarketplaceURL_jacketFemale</key>
<map>
@@ -5193,7 +5183,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/jacket_womens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/jacket_womens</string>
</map>
<key>MarketplaceURL_jacketMale</key>
<map>
@@ -5204,7 +5194,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/jacket_mens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/jacket_mens</string>
</map>
<key>MarketplaceURL_shirtFemale</key>
<map>
@@ -5215,7 +5205,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shirt_womens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shirt_womens</string>
</map>
<key>MarketplaceURL_shirtMale</key>
<map>
@@ -5226,7 +5216,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shirt_mens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shirt_mens</string>
</map>
<key>MarketplaceURL_undershirtFemale</key>
<map>
@@ -5237,7 +5227,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/undershirt_womens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/undershirt_womens</string>
</map>
<key>MarketplaceURL_undershirtMale</key>
<map>
@@ -5248,7 +5238,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/undershirt_mens</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/undershirt_mens</string>
</map>
<key>MarketplaceURL_skirtFemale</key>
<map>
@@ -5259,7 +5249,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
</map>
<key>MarketplaceURL_skirtMale</key>
<map>
@@ -5270,7 +5260,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
</map>
<key>MarketplaceURL_pantsFemale</key>
<map>
@@ -5281,7 +5271,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/pants_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/pants_women</string>
</map>
<key>MarketplaceURL_pantsMale</key>
<map>
@@ -5292,7 +5282,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/pants_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/pants_men</string>
</map>
<key>MarketplaceURL_underpantsFemale</key>
<map>
@@ -5303,7 +5293,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/underwear_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/underwear_women</string>
</map>
<key>MarketplaceURL_underpantsMale</key>
<map>
@@ -5314,7 +5304,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/underwear_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/underwear_men</string>
</map>
<key>MarketplaceURL_shoesFemale</key>
<map>
@@ -5325,7 +5315,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shoes_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shoes_women</string>
</map>
<key>MarketplaceURL_shoesMale</key>
<map>
@@ -5336,7 +5326,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/shoes_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/shoes_men</string>
</map>
<key>MarketplaceURL_socksFemale</key>
<map>
@@ -5347,7 +5337,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
</map>
<key>MarketplaceURL_socksMale</key>
<map>
@@ -5358,7 +5348,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
</map>
<key>MarketplaceURL_tattooMale</key>
<map>
@@ -5369,7 +5359,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
</map>
<key>MarketplaceURL_tattooFemale</key>
<map>
@@ -5380,7 +5370,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
</map>
<key>MarketplaceURL_hairFemale</key>
<map>
@@ -5391,7 +5381,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_hair</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_hair</string>
</map>
<key>MarketplaceURL_hairMale</key>
<map>
@@ -5402,7 +5392,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_hair</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_hair</string>
</map>
<key>MarketplaceURL_eyesFemale</key>
<map>
@@ -5413,7 +5403,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_eyes</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_eyes</string>
</map>
<key>MarketplaceURL_eyesMale</key>
<map>
@@ -5424,7 +5414,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_eyes</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_eyes</string>
</map>
<key>MarketplaceURL_shapeFemale</key>
<map>
@@ -5435,7 +5425,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_shape</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_shape</string>
</map>
<key>MarketplaceURL_shapeMale</key>
<map>
@@ -5446,7 +5436,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_shape</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_shape</string>
</map>
<key>MarketplaceURL_skinFemale</key>
<map>
@@ -5457,7 +5447,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_skin</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_skin</string>
</map>
<key>MarketplaceURL_skinMale</key>
<map>
@@ -5468,7 +5458,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_skin</string>
+ <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_skin</string>
</map>
<key>MaxDragDistance</key>
<map>
@@ -7509,7 +7499,7 @@
<key>Value</key>
<integer>-1</integer>
</map>
- <key>RenderAvatarLODFactor</key>
+ <key>RenderAvatarLODFactor</key>
<map>
<key>Comment</key>
<string>Controls level of detail of avatars (multiplier for current screen area when calculated level of detail)</string>
@@ -7807,7 +7797,7 @@
<key>Type</key>
<string>U32</string>
<key>Value</key>
- <integer>6</integer>
+ <integer>16</integer>
</map>
<key>RenderDebugTextureBind</key>
<map>
@@ -7868,162 +7858,6 @@
<integer>0</integer>
</map>
- <key>RenderAnimateTrees</key>
- <map>
- <key>Comment</key>
- <string>Use GL matrix ops to animate tree branches.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
-
- <key>RenderGIRange</key>
- <map>
- <key>Comment</key>
- <string>Distance to cut off GI effect.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>96</real>
- </map>
-
- <key>RenderGILuminance</key>
- <map>
- <key>Comment</key>
- <string>Luminance factor of global illumination contribution.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.075</real>
- </map>
-
- <key>RenderGIBrightness</key>
- <map>
- <key>Comment</key>
- <string>Brightness factor of global illumination contribution.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.3</real>
- </map>
-
- <key>RenderGINoise</key>
- <map>
- <key>Comment</key>
- <string>Noise of position sampling for GI photon mapping.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.7</real>
- </map>
-
- <key>RenderGIAttenuation</key>
- <map>
- <key>Comment</key>
- <string>Distance attenuation factor for indirect lighting.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.1</real>
- </map>
-
- <key>RenderGIBlurBrightness</key>
- <map>
- <key>Comment</key>
- <string>Brightness factor of global illumination blur effect.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>1.025</real>
- </map>
-
- <key>RenderGIBlurEdgeWeight</key>
- <map>
- <key>Comment</key>
- <string>Edge weight for GI soften filter (sharpness).</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.8</real>
- </map>
-
- <key>RenderGIBlurIncrement</key>
- <map>
- <key>Comment</key>
- <string>Increment of scale for each pass of global illumination blur effect.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.8</real>
- </map>
-
- <key>RenderLuminanceScale</key>
- <map>
- <key>Comment</key>
- <string>Luminance value scalar for darkening effect.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>1.0</real>
- </map>
-
- <key>RenderSunLuminanceScale</key>
- <map>
- <key>Comment</key>
- <string>Sun Luminance value scalar for darkening effect.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>1.0</real>
- </map>
-
- <key>RenderSunLuminanceOffset</key>
- <map>
- <key>Comment</key>
- <string>Sun Luminance value offset for darkening effect.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0</real>
- </map>
-
- <key>RenderLuminanceDetail</key>
- <map>
- <key>Comment</key>
- <string>Mipmap level to use for luminance</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>16.0</real>
- </map>
-
<key>RenderMinimumLODTriangleCount</key>
<map>
<key>Comment</key>
@@ -8160,7 +7994,19 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
+ <key>CameraDoFResScale</key>
+ <map>
+ <key>Comment</key>
+ <string>Amount to scale down depth of field resolution. Valid range is 0.25 (quarter res) to 1.0 (full res)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.7</real>
+ </map>
+
<key>RenderSpotLightsInNondeferred</key>
<map>
<key>Comment</key>
@@ -8344,18 +8190,6 @@
<integer>0</integer>
</map>
- <key>RenderDeferredGI</key>
- <map>
- <key>Comment</key>
- <string>Enable GI in deferred renderer.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
-
<key>RenderDeferredSun</key>
<map>
<key>Comment</key>
@@ -8499,92 +8333,6 @@
<real>0</real>
</map>
- <key>RenderGIAmbiance</key>
- <map>
- <key>Comment</key>
- <string>Ambiance factor of global illumination contribution.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.5</real>
- </map>
-
- <key>RenderGIMinRenderSize</key>
- <map>
- <key>Comment</key>
- <string>Minimum size of objects to put into GI source map.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.5</real>
- </map>
-
- <key>RenderGIBlurColorCurve</key>
- <map>
- <key>Comment</key>
- <string>Color curve for GI softening kernel</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Vector3</string>
- <key>Value</key>
- <array>
- <real>1.0</real>
- <real>0.6</real>
- <real>0.02</real>
- </array>
- </map>
-
- <key>RenderGIBlurPasses</key>
- <map>
- <key>Comment</key>
- <string>Scale of GI softening kernel.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>U32</string>
- <key>Value</key>
- <real>4</real>
- </map>
-
- <key>RenderGIBlurSize</key>
- <map>
- <key>Comment</key>
- <string>Scale of GI softening kernel.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>4.0</real>
- </map>
- <key>RenderGIBlurSamples</key>
- <map>
- <key>Comment</key>
- <string>Number of samples to take for each pass of GI blur (value range 1-16). Actual number of samples is value * 2 - 1.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>U32</string>
- <key>Value</key>
- <real>16</real>
- </map>
- <key>RenderGIBlurDistFactor</key>
- <map>
- <key>Comment</key>
- <string>Distance scaler for GI blur.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.0</real>
- </map>
-
<key>RenderDynamicLOD</key>
<map>
<key>Comment</key>
@@ -8627,7 +8375,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>RenderAutoMaskAlphaDeferred</key>
<map>
@@ -8684,6 +8432,17 @@
<key>Value</key>
<real>1.0</real>
</map>
+ <key>RenderGLCoreProfile</key>
+ <map>
+ <key>Comment</key>
+ <string>Don't use a compatibility profile OpenGL context. Requires restart. Basic shaders MUST be enabled.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>RenderGlow</key>
<map>
<key>Comment</key>
@@ -9287,6 +9046,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>RenderUseVAO</key>
+ <map>
+ <key>Comment</key>
+ <string>Use GL Vertex Array Objects</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>RenderVBOMappingDisable</key>
<map>
<key>Comment</key>
@@ -9296,7 +9066,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>RenderUseStreamVBO</key>
<map>
@@ -9731,7 +9501,7 @@
<key>ShowBuildButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Build button in the bottom tray.</string>
+ <string>Shows/hides build button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9742,7 +9512,7 @@
<key>ShowCameraButton</key>
<map>
<key>Comment</key>
- <string>Show/Hide View button in the bottom tray.</string>
+ <string>Show/hide view button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9830,7 +9600,7 @@
<key>ShowGestureButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Gesture button in the bottom tray.</string>
+ <string>Shows/hides gesture button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9863,7 +9633,7 @@
<key>ShowMiniMapButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Mini-Map button in the bottom tray.</string>
+ <string>Shows/hides mini-map button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9874,7 +9644,7 @@
<key>ShowMoveButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Move button in the bottom tray.</string>
+ <string>Shows/hides move button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9907,7 +9677,7 @@
<key>ShowSearchButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Search button in the bottom tray.</string>
+ <string>Shows/hides search button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9918,7 +9688,7 @@
<key>ShowSnapshotButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Snapshot button button in the bottom tray.</string>
+ <string>Shows/hides snapshot button button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9940,7 +9710,7 @@
<key>ShowNavbarFavoritesPanel</key>
<map>
<key>Comment</key>
- <string>Show/Hide Navigation Bar Favorites Panel</string>
+ <string>Show/hide navigation bar favorites panel</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9951,7 +9721,7 @@
<key>ShowNavbarNavigationPanel</key>
<map>
<key>Comment</key>
- <string>Show/Hide Navigation Bar Navigation Panel</string>
+ <string>Show/hide navigation bar navigation panel</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9962,7 +9732,7 @@
<key>ShowWorldMapButton</key>
<map>
<key>Comment</key>
- <string>Shows/Hides Map button in the bottom tray.</string>
+ <string>Shows/hides map button in the bottom tray.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9973,18 +9743,7 @@
<key>ShowMiniLocationPanel</key>
<map>
<key>Comment</key>
- <string>Show/Hide Mini-Location Panel</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SidebarCameraMovement</key>
- <map>
- <key>Comment</key>
- <string>Reflects world rect changing while changing sidebar visibility.</string>
+ <string>Show/hide mini-location panel</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -10608,28 +10367,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>SnapshotLocalLastResolution</key>
- <map>
- <key>Comment</key>
- <string>Take next local snapshot at this resolution</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SnapshotPostcardLastResolution</key>
- <map>
- <key>Comment</key>
- <string>Take next postcard snapshot at this resolution</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>SnapshotQuality</key>
<map>
<key>Comment</key>
@@ -10663,17 +10400,6 @@
<key>Value</key>
<string>http://photos.apps.staging.avatarsunited.com/viewer_config</string>
</map>
- <key>SnapshotTextureLastResolution</key>
- <map>
- <key>Comment</key>
- <string>Take next texture snapshot at this resolution</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>SpeedTest</key>
<map>
<key>Comment</key>
@@ -10927,7 +10653,17 @@
<key>Value</key>
<real>0.699999988079</real>
</map>
- <key>ToolTipFadeTime</key>
+ <key>ToolTipFastDelay</key>
+ <map>
+ <key>Comment</key>
+ <string>Seconds before displaying tooltip when mouse stops over UI element (when a tooltip is already visible)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.1</real>
+ </map> <key>ToolTipFadeTime</key>
<map>
<key>Comment</key>
<string>Seconds over which tooltip fades away</string>
@@ -11015,6 +10751,39 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>TranslationService</key>
+ <map>
+ <key>Comment</key>
+ <string>Translation API to use. (google|bing)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>bing</string>
+ </map>
+ <key>GoogleTranslateAPIKey</key>
+ <map>
+ <key>Comment</key>
+ <string>Google Translate API key</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string></string>
+ </map>
+ <key>BingTranslateAPIKey</key>
+ <map>
+ <key>Comment</key>
+ <string>Bing AppID to use with the Microsoft Translator API</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string></string>
+ </map>
<key>TutorialURL</key>
<map>
<key>Comment</key>
@@ -12245,7 +12014,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <boolean>1</boolean>
</map>
<key>UseFreezeFrame</key>
<map>
@@ -12389,50 +12158,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>VectorizeEnable</key>
- <map>
- <key>Comment</key>
- <string>Enable general vector operations and data alignment.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>VectorizePerfTest</key>
- <map>
- <key>Comment</key>
- <string>Test SSE/vectorization performance and choose fastest version.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>VectorizeProcessor</key>
- <map>
- <key>Comment</key>
- <string>0=Compiler Default, 1=SSE, 2=SSE2, autodetected</string>
- <key>Persist</key>
- <integer>0</integer>
- <key>Type</key>
- <string>U32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>VectorizeSkin</key>
- <map>
- <key>Comment</key>
- <string>Enable vector operations for avatar skinning.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>VelocityInterpolate</key>
<map>
<key>Comment</key>
@@ -12884,10 +12609,10 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>WindowFullScreen</key>
+ <key>FullScreen</key>
<map>
<key>Comment</key>
- <string>SL viewer window full screen</string>
+ <string>run a fullscreen session</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -12895,6 +12620,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>MinWindowHeight</key>
+ <map>
+ <key>Comment</key>
+ <string>SL viewer minimum window height in pixels</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>WindowHeight</key>
<map>
<key>Comment</key>
@@ -12902,7 +12638,7 @@
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>S32</string>
+ <string>U32</string>
<key>Value</key>
<integer>738</integer>
</map>
@@ -12917,6 +12653,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>MinWindowWidth</key>
+ <map>
+ <key>Comment</key>
+ <string>SL viewer minimum window width in pixels</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>WindowWidth</key>
<map>
<key>Comment</key>
@@ -12924,7 +12671,7 @@
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>S32</string>
+ <string>U32</string>
<key>Value</key>
<integer>1024</integer>
</map>
@@ -13351,7 +13098,7 @@
<key>Comment</key>
<string>Settings that are a applied per session (not saved).</string>
<key>Persist</key>
- <integer>1</integer>
+ <integer>0</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
@@ -13362,7 +13109,7 @@
<key>Comment</key>
<string>User settings that are a applied per session (not saved).</string>
<key>Persist</key>
- <integer>1</integer>
+ <integer>0</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
@@ -13599,17 +13346,6 @@
<key>Value</key>
<string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/404.html</string>
</map>
- <key>DestinationsAndAvatarsVisibility</key>
- <map>
- <key>Comment</key>
- <string>Whether destination panel or avatar picker are open (0=destination guide, 1=avatar picker, default=nothing)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>OpenIMOnVoice</key>
<map>
<key>Comment</key>
@@ -13632,10 +13368,10 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>WebProfileRect</key>
+ <key>WebProfileFloaterRect</key>
<map>
<key>Comment</key>
- <string>Web profile dimensions</string>
+ <string>Web profile floater dimensions</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -13643,8 +13379,8 @@
<key>Value</key>
<array>
<integer>0</integer>
- <integer>650</integer>
- <integer>490</integer>
+ <integer>680</integer>
+ <integer>485</integer>
<integer>0</integer>
</array>
</map>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 29e52ab054..01a70f2671 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -1,474 +1 @@
-<llsd>
- <map>
- <key>ChannelBottomPanelMargin</key>
- <map>
- <key>Comment</key>
- <string>Space from a lower toast to the Bottom Tray</string>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>2</integer>
- </map>
- <key>ClickActionBuyEnabled</key>
- <map>
- <key>Comment</key>
- <string>Enable click to buy actions in tool pie menu</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ClickActionPayEnabled</key>
- <map>
- <key>Comment</key>
- <string>Enable click to pay actions in tool pie menu</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableGrab</key>
- <map>
- <key>Comment</key>
- <string>Use Ctrl+mouse to grab and manipulate objects</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableMouselook</key>
- <map>
- <key>Comment</key>
- <string>Allow first person perspective and mouse control of camera</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>HelpURLFormat</key>
- <map>
- <key>Comment</key>
- <string>URL pattern for help page; arguments will be encoded; see llviewerhelp.cpp:buildHelpURL for arguments</string>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/howto/index.html?topic=[TOPIC]</string>
- </map>
- <key>PreferredMaturity</key>
- <map>
- <key>Comment</key>
- <string>Setting for the user&apos;s preferred maturity level (consts in indra_constants.h)</string>
- <key>Type</key>
- <string>U32</string>
- <key>Value</key>
- <integer>21</integer>
- </map>
- <key>RenderTrackerBeacon</key>
- <map>
- <key>Comment</key>
- <string>Display tracking arrow and beacon to target avatar, teleport destination</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ShowScriptErrors</key>
- <map>
- <key>Comment</key>
- <string>Show script errors</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ShowScriptErrorsLocation</key>
- <map>
- <key>Comment</key>
- <string>Show script error in chat or window</string>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SkinCurrent</key>
- <map>
- <key>Comment</key>
- <string>The currently selected skin.</string>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>minimal</string>
- </map>
- <key>UseExternalBrowser</key>
- <map>
- <key>Comment</key>
- <string>Use default browser when opening web pages instead of in-world browser.</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>VoiceCallsRejectGroup</key>
- <map>
- <key>Comment</key>
- <string>Silently reject all incoming group voice calls.</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>VoiceDisableMic</key>
- <map>
- <key>Comment</key>
- <string>Completely disable the ability to open the mic.</string>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ScriptsCanShowUI</key>
- <map>
- <key>Comment</key>
- <string>Allow LSL calls (such as LLMapDestination) to spawn viewer UI</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ChatFontSize</key>
- <map>
- <key>Comment</key>
- <string>Size of chat text in chat console (0 = small, 1 = big, 2 = extra large)</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AvatarPickerHintTimeout</key>
- <map>
- <key>Comment</key>
- <string>Number of seconds to wait before telling resident about avatar picker.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.0</real>
- </map>
- <key>RenderShowGroupTitleAll</key>
- <map>
- <key>Comment</key>
- <string>Show group titles in name labels</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>OpenSidePanelsInFloaters</key>
- <map>
- <key>Comment</key>
- <string>If true, will always open side panel contents in a floater.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AvatarInspectorTooltipDelay</key>
- <map>
- <key>Comment</key>
- <string>Seconds before displaying avatar inspector tooltip</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.1</real>
- </map>
- <key>AFKTimeout</key>
- <map>
- <key>Comment</key>
- <string>
- Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never).
- Valid values are: 0, 120, 300, 600, 1800
- </string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <real>0</real>
- </map>
- <key>SLURLTeleportDirectly</key>
- <map>
- <key>Comment</key>
- <string>Clicking on a slurl will teleport you directly instead of opening places panel</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>EnableClassifieds</key>
- <map>
- <key>Comment</key>
- <string>Enable creation of new classified ads</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableGroupInfo</key>
- <map>
- <key>Comment</key>
- <string>Enable viewing and editing of group info.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnablePlaceProfile</key>
- <map>
- <key>Comment</key>
- <string>Enable viewing of place profile from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnablePicks</key>
- <map>
- <key>Comment</key>
- <string>Enable editing of picks</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableWorldMap</key>
- <map>
- <key>Comment</key>
- <string>Enable opening world map from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableAvatarPay</key>
- <map>
- <key>Comment</key>
- <string>Enable paying other avatars from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableVoiceCall</key>
- <map>
- <key>Comment</key>
- <string>Enable voice calls from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>EnableAvatarShare</key>
- <map>
- <key>Comment</key>
- <string>Enable sharing from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableInventory</key>
- <map>
- <key>Comment</key>
- <string>Enable opening inventory from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableSearch</key>
- <map>
- <key>Comment</key>
- <string>Enable opening search from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableAppearance</key>
- <map>
- <key>Comment</key>
- <string>Enable opening appearance from web link</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>DoubleClickShowWorldMap</key>
- <map>
- <key>Comment</key>
- <string>Enable double-click to show world map from mini map</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>EnableGroupChatPopups</key>
- <map>
- <key>Comment</key>
- <string>Enable Incoming Group Chat Popups</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SearchFromAddressBar</key>
- <map>
- <key>Comment</key>
- <string>Can enter search queries into navigation address bar</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>DestinationGuideURL</key>
- <map>
- <key>Comment</key>
- <string>Destination guide contents</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html</string>
- </map>
- <key>AvatarPickerURL</key>
- <map>
- <key>Comment</key>
- <string>Avatar picker contents</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/avatars.html</string>
- </map>
- <key>LogInventoryDecline</key>
- <map>
- <key>Comment</key>
- <string>Log in system chat whenever an inventory offer is declined</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>UseHTTPInventory</key>
- <map>
- <key>Comment</key>
- <string>Allow use of http inventory transfers instead of UDP</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ClickToWalk</key>
- <map>
- <key>Comment</key>
- <string>Click in world to walk to location</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>ShowOfferedInventory</key>
- <map>
- <key>Comment</key>
- <string>Show inventory window with last inventory offer selected when receiving inventory from other users.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>OpenIMOnVoice</key>
- <map>
- <key>Comment</key>
- <string>Open the corresponding IM window when connecting to a voice call.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AllowBottomTrayButtonReordering</key>
- <map>
- <key>Comment</key>
- <string>Allow user to move and hide bottom tray buttons</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>ShowHelpOnFirstLogin</key>
- <map>
- <key>Comment</key>
- <string>Show Help Floater on first login</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- </map>
-</llsd>
+<llsd/> \ No newline at end of file
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index d8295ddb87..8cdd8ed838 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -33,6 +33,17 @@
<key>Value</key>
<string />
</map>
+ <key>DisplayDestinationsOnInitialRun</key>
+ <map>
+ <key>Comment</key>
+ <string>Display the destinations guide when a user first launches Second Life.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>LastInventoryInboxActivity</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
index c72da8d758..bc63d07d72 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
@@ -24,8 +24,7 @@
*/
-
-attribute vec4 weight; //1
+ATTRIBUTE vec4 weight;
uniform vec4 matrixPalette[45];
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
index c2fe60ddaf..19203ab670 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
@@ -22,8 +22,17 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform vec4 color;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
mat4 getSkinnedTransform();
@@ -31,32 +40,30 @@ void calcAtmospherics(vec3 inPositionEye);
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
vec4 pos;
vec3 norm;
+ vec4 pos_in = vec4(position.xyz, 1.0);
+
mat4 trans = getSkinnedTransform();
- pos.x = dot(trans[0], gl_Vertex);
- pos.y = dot(trans[1], gl_Vertex);
- pos.z = dot(trans[2], gl_Vertex);
+ pos.x = dot(trans[0], pos_in);
+ pos.y = dot(trans[1], pos_in);
+ pos.z = dot(trans[2], pos_in);
pos.w = 1.0;
- norm.x = dot(trans[0].xyz, gl_Normal);
- norm.y = dot(trans[1].xyz, gl_Normal);
- norm.z = dot(trans[2].xyz, gl_Normal);
+ norm.x = dot(trans[0].xyz, normal);
+ norm.y = dot(trans[1].xyz, normal);
+ norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm);
- gl_Position = gl_ProjectionMatrix * pos;
-
- //gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+ gl_Position = projection_matrix * pos;
- gl_FogFragCoord = length(pos.xyz);
-
calcAtmospherics(pos.xyz);
- vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0,0,0,0));
- gl_FrontColor = color;
+ vec4 col = calcLighting(pos.xyz, norm, color, vec4(0,0,0,0));
+ vertex_color = col;
}
diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
index 1a0866be0a..82db15c3ae 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
@@ -22,8 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -31,17 +42,18 @@ void calcAtmospherics(vec3 inPositionEye);
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vec3 pos = (modelview_matrix * vec4(position.xyz, 1.0)).xyz;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
- vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vec3 norm = normalize(normal_matrix * normal);
calcAtmospherics(pos.xyz);
vec4 specular = vec4(1.0);
- vec4 color = calcLightingSpecular(pos, norm, gl_Color, specular, vec4(0.0));
- gl_FrontColor = color;
+ vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular, vec4(0.0));
+ vertex_color = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index 09688b2be2..43ed41a205 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -24,7 +24,7 @@
-attribute vec4 object_weight;
+ATTRIBUTE vec4 weight4;
uniform mat4 matrixPalette[32];
@@ -32,8 +32,8 @@ mat4 getObjectSkinnedTransform()
{
int i;
- vec4 w = fract(object_weight);
- vec4 index = floor(object_weight);
+ vec4 w = fract(weight4);
+ vec4 index = floor(weight4);
float scale = 1.0/(w.x+w.y+w.z+w.w);
w *= scale;
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
index 374808c091..3e4d438ed3 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
@@ -22,12 +22,17 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
uniform sampler2D diffuseMap;
void main()
{
- gl_FragColor = vec4(gl_Color.rgb, texture2D(diffuseMap, gl_TexCoord[0].xy).a);
+ gl_FragColor = vec4(vertex_color.rgb, texture2D(diffuseMap, vary_texcoord0.xy).a);
}
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
index e25d84a594..78b5328c9a 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
@@ -22,22 +22,29 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
mat4 getSkinnedTransform();
void main()
{
vec4 pos;
-
+ vec4 pos_in = vec4(position, 1.0);
mat4 trans = getSkinnedTransform();
- pos.x = dot(trans[0], gl_Vertex);
- pos.y = dot(trans[1], gl_Vertex);
- pos.z = dot(trans[2], gl_Vertex);
+ pos.x = dot(trans[0], pos_in);
+ pos.y = dot(trans[1], pos_in);
+ pos.z = dot(trans[2], pos_in);
pos.w = 1.0;
- gl_FrontColor = gl_Color;
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_Position = gl_ProjectionMatrix * pos;
+ vertex_color = diffuse_color;
+ vary_texcoord0 = texcoord0;
+ gl_Position = projection_matrix * pos;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 19de0c0b39..c012efa056 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect depthMap;
vec4 diffuseLookup(vec2 texcoord);
@@ -38,26 +40,16 @@ uniform vec2 screen_res;
vec3 atmosLighting(vec3 light);
vec3 scaleSoftClip(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
-uniform mat4 inv_proj;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
-vec4 getPosition(vec2 pos_screen)
-{
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
+uniform mat4 inv_proj;
void main()
{
@@ -66,9 +58,9 @@ void main()
vec4 pos = vec4(vary_position, 1.0);
- vec4 diff= diffuseLookup(gl_TexCoord[0].xy);
+ vec4 diff= diffuseLookup(vary_texcoord0.xy);
- vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a);
+ vec4 col = vec4(vary_ambient + vary_directional.rgb, vertex_color.a);
vec4 color = diff * col;
color.rgb = atmosLighting(color.rgb);
@@ -78,8 +70,5 @@ void main()
color.rgb += diff.rgb * vary_pointlight_col.rgb;
gl_FragColor = color;
- //gl_FragColor = vec4(1,0,1,1);
- //gl_FragColor = vec4(1,0,1,1)*shadow;
-
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
index d4f56896cf..8641827777 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect depthMap;
uniform sampler2D diffuseMap;
@@ -38,11 +40,13 @@ uniform vec2 screen_res;
vec3 atmosLighting(vec3 light);
vec3 scaleSoftClip(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
uniform mat4 inv_proj;
@@ -66,9 +70,9 @@ void main()
vec4 pos = vec4(vary_position, 1.0);
- vec4 diff= texture2D(diffuseMap,gl_TexCoord[0].xy);
+ vec4 diff= texture2D(diffuseMap,vary_texcoord0.xy);
- vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a);
+ vec4 col = vec4(vary_ambient + vary_directional.rgb, vertex_color.a);
vec4 color = diff * col;
color.rgb = atmosLighting(color.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
new file mode 100644
index 0000000000..c13ea702db
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
@@ -0,0 +1,84 @@
+/**
+ * @file alphaNonIndexedNoColorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect depthMap;
+uniform sampler2D diffuseMap;
+
+uniform mat4 shadow_matrix[6];
+uniform vec4 shadow_clip;
+uniform vec2 screen_res;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+
+uniform mat4 inv_proj;
+
+vec4 getPosition(vec2 pos_screen)
+{
+ float depth = texture2DRect(depthMap, pos_screen.xy).a;
+ vec2 sc = pos_screen.xy*2.0;
+ sc /= screen_res;
+ sc -= vec2(1.0,1.0);
+ vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
+ vec4 pos = inv_proj * ndc;
+ pos /= pos.w;
+ pos.w = 1.0;
+ return pos;
+}
+
+void main()
+{
+ vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;
+ frag *= screen_res;
+
+ vec4 pos = vec4(vary_position, 1.0);
+
+ vec4 diff= texture2D(diffuseMap,vary_texcoord0.xy);
+
+ vec4 col = vec4(vary_ambient + vary_directional.rgb, 1.0);
+ vec4 color = diff * col;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ color.rgb += diff.rgb * vary_pointlight_col.rgb;
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
index d57b8f8525..b09441f7eb 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
@@ -21,8 +21,14 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
+uniform mat4 modelview_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
mat4 getObjectSkinnedTransform();
@@ -35,15 +41,23 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying vec3 vary_position;
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_normal;
-varying vec3 vary_fragcoord;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_position;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_normal;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_pointlight_col;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
uniform float near_clip;
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{
//get light vector
@@ -76,20 +90,20 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
vec4 pos;
vec3 norm;
mat4 trans = getObjectSkinnedTransform();
- trans = gl_ModelViewMatrix * trans;
+ trans = modelview_matrix * trans;
- pos = trans * gl_Vertex;
+ pos = trans * vec4(position.xyz, 1.0);
- norm = gl_Vertex.xyz + gl_Normal.xyz;
+ norm = position.xyz + normal.xyz;
norm = normalize(( trans*vec4(norm, 1.0) ).xyz-pos.xyz);
- vec4 frag_pos = gl_ProjectionMatrix * pos;
+ vec4 frag_pos = projection_matrix * pos;
gl_Position = frag_pos;
vary_position = pos.xyz;
@@ -97,31 +111,31 @@ void main()
calcAtmospherics(pos.xyz);
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
// Collect normal lights
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
-
- vary_pointlight_col = col.rgb*gl_Color.rgb;
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
+
+ vary_pointlight_col = col.rgb*diffuse_color.rgb;
col.rgb = vec3(0,0,0);
// Add windlight lights
col.rgb = atmosAmbient(vec3(0.));
- vary_ambient = col.rgb*gl_Color.rgb;
- vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+ vary_ambient = col.rgb*diffuse_color.rgb;
+ vary_directional = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
- col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+ col.rgb = min(col.rgb*diffuse_color.rgb, 1.0);
- gl_FrontColor = col;
+ vertex_color = col;
- gl_FogFragCoord = pos.z;
+
vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index f6a280462e..93b1a114db 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -23,7 +23,16 @@
* $/LicenseInfo$
*/
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -35,18 +44,26 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_light;
-varying vec3 vary_pointlight_col;
-varying float vary_texture_index;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_light;
+VARYING vec3 vary_pointlight_col;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
uniform float near_clip;
uniform float shadow_offset;
uniform float shadow_bias;
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{
//get light vector
@@ -80,50 +97,50 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
void main()
{
//transform vertex
- vec4 vert = vec4(gl_Vertex.xyz, 1.0);
- vary_texture_index = gl_Vertex.w;
- gl_Position = gl_ModelViewProjectionMatrix * vert;
+ vec4 vert = vec4(position.xyz, 1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vec4 pos = (gl_ModelViewMatrix * vert);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vec3 norm = normalize(normal_matrix * normal);
- float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
- vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+ float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+ vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
calcAtmospherics(pos.xyz);
- //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ //vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+ vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
// Collect normal lights
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
- vary_pointlight_col = col.rgb*gl_Color.rgb;
+ vary_pointlight_col = col.rgb*diffuse_color.rgb;
col.rgb = vec3(0,0,0);
// Add windlight lights
col.rgb = atmosAmbient(vec3(0.));
- vary_light = gl_LightSource[0].position.xyz;
+ vary_light = light_position[0].xyz;
- vary_ambient = col.rgb*gl_Color.rgb;
- vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+ vary_ambient = col.rgb*diffuse_color.rgb;
+ vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
- col.rgb = col.rgb*gl_Color.rgb;
+ col.rgb = col.rgb*diffuse_color.rgb;
- gl_FrontColor = col;
+ vertex_color = col;
- gl_FogFragCoord = pos.z;
- pos = gl_ModelViewProjectionMatrix * vert;
+
+ pos = modelview_projection_matrix * vert;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
index 0c930848e5..402f681631 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
@@ -22,14 +22,18 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
uniform sampler2D diffuseMap;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- //gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a);
+ //gl_FragColor = vec4(1,1,1,vertex_color.a * texture2D(diffuseMap, vary_texcoord0.xy).a);
gl_FragColor = vec4(1,1,1,1);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
index bf4e79d815..ded6cced27 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
@@ -22,23 +22,29 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+uniform mat4 modelview_matrix;
+uniform mat4 texture_matrix0;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
mat4 getObjectSkinnedTransform();
void main()
{
//transform vertex
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
- vec4 p = gl_ProjectionMatrix * vec4(pos, 1.0);
+ vec4 p = projection_matrix * vec4(pos, 1.0);
p.z = max(p.z, -p.w+0.01);
gl_Position = p;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
index f70ea4da52..d7b90978ba 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
@@ -22,8 +22,12 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
mat4 getSkinnedTransform();
@@ -37,14 +41,24 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying vec3 vary_position;
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_position;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_pointlight_col;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
uniform float near_clip;
+uniform vec4 color;
+
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{
//get light vector
@@ -77,56 +91,55 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
vec4 pos;
vec3 norm;
mat4 trans = getSkinnedTransform();
- pos.x = dot(trans[0], gl_Vertex);
- pos.y = dot(trans[1], gl_Vertex);
- pos.z = dot(trans[2], gl_Vertex);
+ vec4 pos_in = vec4(position.xyz, 1.0);
+ pos.x = dot(trans[0], pos_in);
+ pos.y = dot(trans[1], pos_in);
+ pos.z = dot(trans[2], pos_in);
pos.w = 1.0;
- norm.x = dot(trans[0].xyz, gl_Normal);
- norm.y = dot(trans[1].xyz, gl_Normal);
- norm.z = dot(trans[2].xyz, gl_Normal);
+ norm.x = dot(trans[0].xyz, normal);
+ norm.y = dot(trans[1].xyz, normal);
+ norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm);
- vec4 frag_pos = gl_ProjectionMatrix * pos;
+ vec4 frag_pos = projection_matrix * pos;
gl_Position = frag_pos;
vary_position = pos.xyz;
calcAtmospherics(pos.xyz);
- //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col = vec4(0.0, 0.0, 0.0, 1.0);
// Collect normal lights
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
- vary_pointlight_col = col.rgb*gl_Color.rgb;
+ vary_pointlight_col = col.rgb*color.rgb;
col.rgb = vec3(0,0,0);
// Add windlight lights
col.rgb = atmosAmbient(vec3(0.));
- vary_ambient = col.rgb*gl_Color.rgb;
- vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+ vary_ambient = col.rgb*color.rgb;
+ vary_directional = color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), 0.0));
- col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+ col.rgb = col.rgb * color.rgb;
- gl_FrontColor = col;
+ vertex_color = col;
- gl_FogFragCoord = pos.z;
+
vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
index d0f3397932..01ffb862f7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
@@ -22,18 +22,27 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
-varying vec3 vary_normal;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+ vary_normal = normalize(normal_matrix * normal);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
index 3f30402583..9a3b2e3e8a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
@@ -22,16 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
uniform sampler2D diffuseMap;
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
void main()
{
- vec4 diff = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 diff = texture2D(diffuseMap, vary_texcoord0.xy);
if (diff.a < 0.2)
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
index c9a349f026..558a88009a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
@@ -23,15 +23,16 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
uniform sampler2D diffuseMap;
-varying vec4 post_pos;
+VARYING vec4 post_pos;
void main()
{
- //gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a);
gl_FragColor = vec4(1,1,1,1);
gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
index 3d2ad397df..23feb09d72 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
@@ -23,38 +23,37 @@
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
mat4 getSkinnedTransform();
-attribute vec4 weight;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
-varying vec4 post_pos;
+VARYING vec4 post_pos;
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
-
vec4 pos;
vec3 norm;
+ vec4 pos_in = vec4(position.xyz, 1.0);
mat4 trans = getSkinnedTransform();
- pos.x = dot(trans[0], gl_Vertex);
- pos.y = dot(trans[1], gl_Vertex);
- pos.z = dot(trans[2], gl_Vertex);
+ pos.x = dot(trans[0], pos_in);
+ pos.y = dot(trans[1], pos_in);
+ pos.z = dot(trans[2], pos_in);
pos.w = 1.0;
- norm.x = dot(trans[0].xyz, gl_Normal);
- norm.y = dot(trans[1].xyz, gl_Normal);
- norm.z = dot(trans[2].xyz, gl_Normal);
+ norm.x = dot(trans[0].xyz, normal);
+ norm.y = dot(trans[1].xyz, normal);
+ norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm);
- pos = gl_ProjectionMatrix * pos;
+ pos = projection_matrix * pos;
post_pos = pos;
gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w);
-
- gl_FrontColor = gl_Color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
index 37fcef81f3..1bd8fee7c9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
@@ -23,38 +23,41 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
mat4 getSkinnedTransform();
-attribute vec4 weight;
+ATTRIBUTE vec4 weight;
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
vec4 pos;
vec3 norm;
+ vec4 pos_in = vec4(position.xyz, 1.0);
mat4 trans = getSkinnedTransform();
- pos.x = dot(trans[0], gl_Vertex);
- pos.y = dot(trans[1], gl_Vertex);
- pos.z = dot(trans[2], gl_Vertex);
+ pos.x = dot(trans[0], pos_in);
+ pos.y = dot(trans[1], pos_in);
+ pos.z = dot(trans[2], pos_in);
pos.w = 1.0;
- norm.x = dot(trans[0].xyz, gl_Normal);
- norm.y = dot(trans[1].xyz, gl_Normal);
- norm.z = dot(trans[2].xyz, gl_Normal);
+ norm.x = dot(trans[0].xyz, normal);
+ norm.y = dot(trans[1].xyz, normal);
+ norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm);
vary_normal = norm;
- gl_Position = gl_ProjectionMatrix * pos;
- //gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-
- gl_FrontColor = gl_Color;
+ gl_Position = projection_matrix * pos;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
index 3609cc054b..60d4dae99f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
@@ -22,11 +22,13 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform sampler2DRect lightMap;
@@ -37,11 +39,16 @@ uniform vec2 delta;
uniform vec3 kern[4];
uniform float kern_scale;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
uniform mat4 inv_proj;
uniform vec2 screen_res;
+vec3 getKern(int i)
+{
+ return kern[i];
+}
+
vec4 getPosition(vec2 pos_screen)
{
float depth = texture2DRect(depthMap, pos_screen.xy).r;
@@ -66,35 +73,38 @@ void main()
vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy);
dlt /= max(-pos.z*dist_factor, 1.0);
- vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
+ vec2 defined_weight = getKern(0).xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
vec4 col = defined_weight.xyxx * ccol;
// relax tolerance according to distance to avoid speckling artifacts, as angles and distances are a lot more abrupt within a small screen area at larger distances
float pointplanedist_tolerance_pow2 = pos.z*pos.z*0.00005;
// perturb sampling origin slightly in screen-space to hide edge-ghosting artifacts where smoothing radius is quite large
- tc += ( (mod(tc.x+tc.y,2) - 0.5) * kern[1].z * dlt * 0.5 );
+ float tc_mod = 0.5*(tc.x + tc.y); // mod(tc.x+tc.y,2)
+ tc_mod -= floor(tc_mod);
+ tc_mod *= 2.0;
+ tc += ( (tc_mod - 0.5) * getKern(1).z * dlt * 0.5 );
for (int i = 1; i < 4; i++)
{
- vec2 samptc = tc + kern[i].z*dlt;
+ vec2 samptc = tc + getKern(i).z*dlt;
vec3 samppos = getPosition(samptc).xyz;
float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
if (d*d <= pointplanedist_tolerance_pow2)
{
- col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
- defined_weight += kern[i].xy;
+ col += texture2DRect(lightMap, samptc)*getKern(i).xyxx;
+ defined_weight += getKern(i).xy;
}
}
for (int i = 1; i < 4; i++)
{
- vec2 samptc = tc - kern[i].z*dlt;
+ vec2 samptc = tc - getKern(i).z*dlt;
vec3 samppos = getPosition(samptc).xyz;
float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
if (d*d <= pointplanedist_tolerance_pow2)
{
- col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
- defined_weight += kern[i].xy;
+ col += texture2DRect(lightMap, samptc)*getKern(i).xyxx;
+ defined_weight += getKern(i).xy;
}
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl
deleted file mode 100644
index c858eb7a3a..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * @file blurLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-
-uniform float dist_factor;
-uniform float blur_size;
-uniform vec2 delta;
-uniform vec3 kern[4];
-uniform float kern_scale;
-
-varying vec2 vary_fragcoord;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-vec3 texture2DMS3(sampler2DMS tex, ivec2 tc)
-{
- vec3 ret = vec3(0,0,0);
- for (int i = 0; i < samples; i++)
- {
- ret += texelFetch(tex, tc, i).rgb;
- }
-
- return ret/samples;
-}
-
-float texture2DMS1(sampler2DMS tex, ivec2 tc)
-{
- float ret = 0;
- for (int i = 0; i < samples; i++)
- {
- ret += texelFetch(tex, tc, i).r;
- }
-
- return ret/samples;
-}
-
-vec4 getPosition(ivec2 pos_screen)
-{
- float depth = texture2DMS1(depthMap, pos_screen.xy);
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- vec2 tc = vary_fragcoord.xy;
- ivec2 itc = ivec2(tc);
-
- vec3 norm = texture2DMS3(normalMap, itc).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- vec3 pos = getPosition(itc).xyz;
- vec4 ccol = texture2DRect(lightMap, tc).rgba;
-
- vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy);
- dlt /= max(-pos.z*dist_factor, 1.0);
-
- vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
- vec4 col = defined_weight.xyxx * ccol;
-
- // relax tolerance according to distance to avoid speckling artifacts, as angles and distances are a lot more abrupt within a small screen area at larger distances
- float pointplanedist_tolerance_pow2 = pos.z*pos.z*0.00005;
-
- // perturb sampling origin slightly in screen-space to hide edge-ghosting artifacts where smoothing radius is quite large
- tc += ( (mod(tc.x+tc.y,2) - 0.5) * kern[1].z * dlt * 0.5 );
-
- for (int i = 1; i < 4; i++)
- {
- vec2 samptc = tc + kern[i].z*dlt;
- vec3 samppos = getPosition(ivec2(samptc)).xyz;
- float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
- if (d*d <= pointplanedist_tolerance_pow2)
- {
- col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
- defined_weight += kern[i].xy;
- }
- }
- for (int i = 1; i < 4; i++)
- {
- vec2 samptc = vec2(tc - kern[i].z*dlt);
- vec3 samppos = getPosition(ivec2(samptc)).xyz;
- float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
- if (d*d <= pointplanedist_tolerance_pow2)
- {
- col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
- defined_weight += kern[i].xy;
- }
- }
-
- col /= defined_weight.xyxx;
- col.y *= col.y;
-
- gl_FragColor = col;
-}
-
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
index e904b7ded0..212f7e56ad 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
@@ -22,16 +22,18 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
-varying vec2 vary_fragcoord;
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_fragcoord;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
index 429a891f07..6cc5f23aca 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
@@ -23,27 +23,32 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
uniform sampler2D diffuseMap;
uniform sampler2D bumpMap;
-varying vec3 vary_mat0;
-varying vec3 vary_mat1;
-varying vec3 vary_mat2;
+VARYING vec3 vary_mat0;
+VARYING vec3 vary_mat1;
+VARYING vec3 vary_mat2;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- vec3 col = gl_Color.rgb * texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
- vec3 norm = texture2D(bumpMap, gl_TexCoord[0].xy).rgb * 2.0 - 1.0;
+ vec3 col = vertex_color.rgb * texture2D(diffuseMap, vary_texcoord0.xy).rgb;
+ vec3 norm = texture2D(bumpMap, vary_texcoord0.xy).rgb * 2.0 - 1.0;
vec3 tnorm = vec3(dot(norm,vary_mat0),
dot(norm,vary_mat1),
dot(norm,vary_mat2));
gl_FragData[0] = vec4(col, 0.0);
- gl_FragData[1] = gl_Color.aaaa; // spec
- //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
+ gl_FragData[1] = vertex_color.aaaa; // spec
+ //gl_FragData[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
vec3 nvn = normalize(tnorm);
gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
index 7d934e7ff8..6c205074b4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
@@ -22,33 +22,43 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord2;
-varying vec3 vary_mat0;
-varying vec3 vary_mat1;
-varying vec3 vary_mat2;
+VARYING vec3 vary_mat0;
+VARYING vec3 vary_mat1;
+VARYING vec3 vary_mat2;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
mat4 getObjectSkinnedTransform();
void main()
{
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
+ mat = modelview_matrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- vec3 n = normalize((mat * vec4(gl_Normal.xyz+gl_Vertex.xyz, 1.0)).xyz-pos.xyz);
- vec3 b = normalize((mat * vec4(gl_MultiTexCoord2.xyz+gl_Vertex.xyz, 1.0)).xyz-pos.xyz);
+ vec3 n = normalize((mat * vec4(normal.xyz+position.xyz, 1.0)).xyz-pos.xyz);
+ vec3 b = normalize((mat * vec4(vec4(texcoord2,0,1).xyz+position.xyz, 1.0)).xyz-pos.xyz);
vec3 t = cross(b, n);
vary_mat0 = vec3(t.x, b.x, n.x);
vary_mat1 = vec3(t.y, b.y, n.y);
vary_mat2 = vec3(t.z, b.z, n.z);
- gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
- gl_FrontColor = gl_Color;
+ gl_Position = projection_matrix*vec4(pos, 1.0);
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
index 92fd41554d..c8d38bb8f7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
@@ -22,26 +22,36 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
-varying vec3 vary_mat0;
-varying vec3 vary_mat1;
-varying vec3 vary_mat2;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 binormal;
+
+VARYING vec3 vary_mat0;
+VARYING vec3 vary_mat1;
+VARYING vec3 vary_mat2;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
//transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vec3 n = normalize(gl_NormalMatrix * gl_Normal);
- vec3 b = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz);
+ vec3 n = normalize(normal_matrix * normal);
+ vec3 b = normalize(normal_matrix * binormal);
vec3 t = cross(b, n);
vary_mat0 = vec3(t.x, b.x, n.x);
vary_mat1 = vec3(t.y, b.y, n.y);
vary_mat2 = vec3(t.z, b.z, n.z);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
index f4310dae95..db272cf601 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
@@ -24,20 +24,28 @@
*/
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
/////////////////////////////////////////////////////////////////////////
// The fragment shader for the sky
/////////////////////////////////////////////////////////////////////////
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
uniform sampler2D cloud_noise_texture;
uniform vec4 cloud_pos_density1;
uniform vec4 cloud_pos_density2;
uniform vec4 gamma;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
+
/// Soft clips the light with a gamma correction
vec3 scaleSoftClip(vec3 light) {
//soft clip effect:
@@ -50,14 +58,14 @@ vec3 scaleSoftClip(vec3 light) {
void main()
{
// Set variables
- vec2 uv1 = gl_TexCoord[0].xy;
- vec2 uv2 = gl_TexCoord[1].xy;
+ vec2 uv1 = vary_texcoord0.xy;
+ vec2 uv2 = vary_texcoord1.xy;
vec4 cloudColorSun = vary_CloudColorSun;
vec4 cloudColorAmbient = vary_CloudColorAmbient;
float cloudDensity = vary_CloudDensity;
- vec2 uv3 = gl_TexCoord[2].xy;
- vec2 uv4 = gl_TexCoord[3].xy;
+ vec2 uv3 = vary_texcoord2.xy;
+ vec2 uv4 = vary_texcoord3.xy;
// Offset texture coords
uv1 += cloud_pos_density1.xy; //large texture, visible density
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
index c175a834c2..64e094e3c5 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
@@ -22,17 +22,25 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
//////////////////////////////////////////////////////////////////////////
// The vertex shader for creating the atmospheric sky
///////////////////////////////////////////////////////////////////////////////
// Output parameters
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
// Inputs
uniform vec3 camPosLocal;
@@ -59,12 +67,12 @@ void main()
{
// World / view / projection
- gl_Position = ftransform();
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
// Get relative position
- vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
+ vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
// Set altitude
if (P.y > 0.)
@@ -160,17 +168,17 @@ void main()
// Texture coords
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_TexCoord[0].xy -= 0.5;
- gl_TexCoord[0].xy /= cloud_scale.x;
- gl_TexCoord[0].xy += 0.5;
+ vary_texcoord0 = texcoord0;
+ vary_texcoord0.xy -= 0.5;
+ vary_texcoord0.xy /= cloud_scale.x;
+ vary_texcoord0.xy += 0.5;
- gl_TexCoord[1] = gl_TexCoord[0];
- gl_TexCoord[1].x += lightnorm.x * 0.0125;
- gl_TexCoord[1].y += lightnorm.z * 0.0125;
+ vary_texcoord1 = vary_texcoord0;
+ vary_texcoord1.x += lightnorm.x * 0.0125;
+ vary_texcoord1.y += lightnorm.z * 0.0125;
- gl_TexCoord[2] = gl_TexCoord[0] * 16.;
- gl_TexCoord[3] = gl_TexCoord[1] * 16.;
+ vary_texcoord2 = vary_texcoord0 * 16.;
+ vary_texcoord3 = vary_texcoord1 * 16.;
// Combine these to minimize register use
vary_CloudColorAmbient += oHazeColorBelowCloud;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
new file mode 100644
index 0000000000..88fe3c3dee
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
@@ -0,0 +1,87 @@
+/**
+ * @file cofF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect diffuseRect;
+uniform sampler2DRect depthMap;
+uniform sampler2D bloomMap;
+
+uniform float depth_cutoff;
+uniform float norm_cutoff;
+uniform float focal_distance;
+uniform float blur_constant;
+uniform float tan_pixel_angle;
+uniform float magnification;
+uniform float max_cof;
+
+uniform mat4 inv_proj;
+uniform vec2 screen_res;
+
+VARYING vec2 vary_fragcoord;
+
+float getDepth(vec2 pos_screen)
+{
+ float z = texture2DRect(depthMap, pos_screen.xy).r;
+ z = z*2.0-1.0;
+ vec4 ndc = vec4(0.0, 0.0, z, 1.0);
+ vec4 p = inv_proj*ndc;
+ return p.z/p.w;
+}
+
+float calc_cof(float depth)
+{
+ float sc = abs(depth-focal_distance)/-depth*blur_constant;
+
+ sc /= magnification;
+
+ // tan_pixel_angle = pixel_length/-depth;
+ float pixel_length = tan_pixel_angle*-focal_distance;
+
+ sc = sc/pixel_length;
+ sc *= 1.414;
+
+ return sc;
+}
+
+void main()
+{
+ vec2 tc = vary_fragcoord.xy;
+
+ float depth = getDepth(tc);
+
+ vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
+
+ float sc = calc_cof(depth);
+ sc = min(abs(sc), max_cof);
+
+ vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
+ gl_FragColor.rgb = diff.rgb + bloom.rgb;
+ gl_FragColor.a = sc/max_cof;
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
index 933e50fed1..e9989a4e48 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
@@ -1,5 +1,5 @@
/**
- * @file diffuseF.glsl
+ * @file diffuseAlphaMaskF.glsl
*
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -22,20 +22,24 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
uniform float minimum_alpha;
-uniform float maximum_alpha;
uniform sampler2D diffuseMap;
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- vec4 col = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color;
+ vec4 col = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
- if (col.a < minimum_alpha || col.a > maximum_alpha)
+ if (col.a < minimum_alpha)
{
discard;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
index f3ad6f92de..fdf8d72b38 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
@@ -22,17 +22,23 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-varying vec3 vary_normal;
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+VARYING vec3 vary_normal;
uniform float minimum_alpha;
-uniform float maximum_alpha;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- vec4 col = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
+ vec4 col = diffuseLookup(vary_texcoord0.xy) * vertex_color;
- if (col.a < minimum_alpha || col.a > maximum_alpha)
+ if (col.a < minimum_alpha)
{
discard;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
new file mode 100644
index 0000000000..bb20e2ca47
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
@@ -0,0 +1,52 @@
+/**
+ * @file diffuseAlphaMaskNoColorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
+
+ if (col.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ gl_FragData[0] = vec4(col.rgb, 0.0);
+ gl_FragData[1] = vec4(0,0,0,0); // spec
+ vec3 nvn = normalize(vary_normal);
+ gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
index 9c9a8b56c5..7bde49eb86 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
@@ -23,18 +23,22 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
uniform sampler2D diffuseMap;
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- vec3 col = gl_Color.rgb * texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
+ vec3 col = vertex_color.rgb * texture2D(diffuseMap, vary_texcoord0.xy).rgb;
gl_FragData[0] = vec4(col, 0.0);
- gl_FragData[1] = gl_Color.aaaa; // spec
- //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
+ gl_FragData[1] = vertex_color.aaaa; // spec
+ //gl_FragData[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
vec3 nvn = normalize(vary_normal);
gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
index 4d996a099d..75b45111e0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
@@ -22,16 +22,22 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-varying vec3 vary_normal;
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- vec3 col = gl_Color.rgb * diffuseLookup(gl_TexCoord[0].xy).rgb;
+ vec3 col = vertex_color.rgb * diffuseLookup(vary_texcoord0.xy).rgb;
gl_FragData[0] = vec4(col, 0.0);
- gl_FragData[1] = gl_Color.aaaa; // spec
- //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
+ gl_FragData[1] = vertex_color.aaaa; // spec
+ //gl_FragData[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
vec3 nvn = normalize(vary_normal);
gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
new file mode 100644
index 0000000000..9461e3e32e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
@@ -0,0 +1,45 @@
+/**
+ * @file diffuseNoColorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ //transform vertex
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ vary_normal = normalize(normal_matrix * normal);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
index 1470d7c9ca..a74290bfcd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
@@ -22,29 +22,38 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
mat4 getObjectSkinnedTransform();
void main()
{
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- vec4 norm = gl_Vertex;
- norm.xyz += gl_Normal.xyz;
+ vec4 norm = vec4(position.xyz, 1.0);
+ norm.xyz += normal.xyz;
norm.xyz = (mat*norm).xyz;
norm.xyz = normalize(norm.xyz-pos.xyz);
vary_normal = norm.xyz;
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
- gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
+ gl_Position = projection_matrix*vec4(pos, 1.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
index 7c5a4d35b3..76d29b1df7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
@@ -22,20 +22,31 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
-varying vec3 vary_normal;
-varying float vary_texture_index;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void passTextureIndex();
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * vec4(gl_Vertex.xyz, 1.0);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_texture_index = gl_Vertex.w;
- vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+ passTextureIndex();
+ vary_normal = normalize(normal_matrix * normal);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
new file mode 100644
index 0000000000..21453aefaa
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
@@ -0,0 +1,67 @@
+/**
+ * @file dofCombineF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect diffuseRect;
+uniform sampler2DRect lightMap;
+
+uniform mat4 inv_proj;
+uniform vec2 screen_res;
+
+uniform float max_cof;
+uniform float res_scale;
+
+VARYING vec2 vary_fragcoord;
+
+void main()
+{
+ vec2 tc = vary_fragcoord.xy;
+
+ vec4 dof = texture2DRect(diffuseRect, vary_fragcoord.xy*res_scale);
+
+ vec4 diff = texture2DRect(lightMap, vary_fragcoord.xy);
+
+ float a = min(diff.a * max_cof*res_scale*res_scale, 1.0);
+
+ if (a > 0.25 && a < 0.75)
+ { //help out the transition a bit
+ float sc = a/res_scale;
+
+ vec4 col;
+ col = texture2DRect(lightMap, vary_fragcoord.xy+vec2(sc,sc));
+ col += texture2DRect(lightMap, vary_fragcoord.xy+vec2(-sc,sc));
+ col += texture2DRect(lightMap, vary_fragcoord.xy+vec2(sc,-sc));
+ col += texture2DRect(lightMap, vary_fragcoord.xy+vec2(-sc,-sc));
+
+ diff = mix(diff, col*0.25, a);
+ }
+
+ gl_FragColor = mix(diff, dof, a);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
new file mode 100644
index 0000000000..92f78125d8
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
@@ -0,0 +1,50 @@
+/**
+ * @file emissiveF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ float shadow = 1.0;
+
+ vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
new file mode 100644
index 0000000000..115b04797f
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
@@ -0,0 +1,63 @@
+/**
+ * @file emissiveV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec4 emissive;
+ATTRIBUTE vec2 texcoord0;
+
+void calcAtmospherics(vec3 inPositionEye);
+
+vec3 atmosAmbient(vec3 light);
+vec3 atmosAffectDirectionalLight(float lightIntensity);
+vec3 scaleDownLight(vec3 light);
+vec3 scaleUpLight(vec3 light);
+
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void main()
+{
+ //transform vertex
+ vec4 vert = vec4(position.xyz, 1.0);
+ vec4 pos = (modelview_matrix * vert);
+ passTextureIndex();
+
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ calcAtmospherics(pos.xyz);
+
+ vertex_color = emissive;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 6c506676af..84ae2f9f10 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -23,9 +23,14 @@
* $/LicenseInfo$
*/
+#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-#extension GL_ARB_texture_rectangle : enable
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
vec3 fullbrightAtmosTransport(vec3 light);
vec3 fullbrightScaleSoftClip(vec3 light);
@@ -35,7 +40,7 @@ void main()
{
float shadow = 1.0;
- vec4 color = diffuseLookup(gl_TexCoord[0].xy)*gl_Color;
+ vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color;
color.rgb = fullbrightAtmosTransport(color.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
index a4ff0b80e2..2e6982d101 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
@@ -22,8 +22,16 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
void calcAtmospherics(vec3 inPositionEye);
@@ -32,23 +40,25 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying float vary_texture_index;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
void main()
{
//transform vertex
- vec4 vert = vec4(gl_Vertex.xyz, 1.0);
- vary_texture_index = gl_Vertex.w;
+ vec4 vert = vec4(position.xyz, 1.0);
+ vec4 pos = (modelview_matrix * vert);
+ passTextureIndex();
- gl_Position = gl_ModelViewProjectionMatrix*vert;
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vec4 pos = (gl_ModelViewMatrix * vert);
-
calcAtmospherics(pos.xyz);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
- gl_FogFragCoord = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
new file mode 100644
index 0000000000..5af9406452
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
@@ -0,0 +1,2118 @@
+/**
+ * @file fxaaF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+#define FXAA_PC 1
+//#define FXAA_GLSL_130 1
+#define FXAA_QUALITY__PRESET 12
+
+/*============================================================================
+
+
+ NVIDIA FXAA 3.11 by TIMOTHY LOTTES
+
+
+------------------------------------------------------------------------------
+COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
+------------------------------------------------------------------------------
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
+*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
+OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
+CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
+LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
+OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
+THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+------------------------------------------------------------------------------
+ INTEGRATION CHECKLIST
+------------------------------------------------------------------------------
+(1.)
+In the shader source, setup defines for the desired configuration.
+When providing multiple shaders (for different presets),
+simply setup the defines differently in multiple files.
+Example,
+
+ #define FXAA_PC 1
+ #define FXAA_HLSL_5 1
+ #define FXAA_QUALITY__PRESET 12
+
+Or,
+
+ #define FXAA_360 1
+
+Or,
+
+ #define FXAA_PS3 1
+
+Etc.
+
+(2.)
+Then include this file,
+
+ #include "Fxaa3_11.h"
+
+(3.)
+Then call the FXAA pixel shader from within your desired shader.
+Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
+As for FXAA 3.11 all inputs for all shaders are the same
+to enable easy porting between platforms.
+
+ return FxaaPixelShader(...);
+
+(4.)
+Insure pass prior to FXAA outputs RGBL (see next section).
+Or use,
+
+ #define FXAA_GREEN_AS_LUMA 1
+
+(5.)
+Setup engine to provide the following constants
+which are used in the FxaaPixelShader() inputs,
+
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+
+Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
+
+(6.)
+Have FXAA vertex shader run as a full screen triangle,
+and output "pos" and "fxaaConsolePosPos"
+such that inputs in the pixel shader provide,
+
+ // {xy} = center of pixel
+ FxaaFloat2 pos,
+
+ // {xy__} = upper left of pixel
+ // {__zw} = lower right of pixel
+ FxaaFloat4 fxaaConsolePosPos,
+
+(7.)
+Insure the texture sampler(s) used by FXAA are set to bilinear filtering.
+
+
+------------------------------------------------------------------------------
+ INTEGRATION - RGBL AND COLORSPACE
+------------------------------------------------------------------------------
+FXAA3 requires RGBL as input unless the following is set,
+
+ #define FXAA_GREEN_AS_LUMA 1
+
+In which case the engine uses green in place of luma,
+and requires RGB input is in a non-linear colorspace.
+
+RGB should be LDR (low dynamic range).
+Specifically do FXAA after tonemapping.
+
+RGB data as returned by a texture fetch can be non-linear,
+or linear when FXAA_GREEN_AS_LUMA is not set.
+Note an "sRGB format" texture counts as linear,
+because the result of a texture fetch is linear data.
+Regular "RGBA8" textures in the sRGB colorspace are non-linear.
+
+If FXAA_GREEN_AS_LUMA is not set,
+luma must be stored in the alpha channel prior to running FXAA.
+This luma should be in a perceptual space (could be gamma 2.0).
+Example pass before FXAA where output is gamma 2.0 encoded,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ color.rgb = sqrt(color.rgb); // gamma 2.0 color output
+ return color;
+
+To use FXAA,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ color.rgb = sqrt(color.rgb); // gamma 2.0 color output
+ color.a = dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114)); // compute luma
+ return color;
+
+Another example where output is linear encoded,
+say for instance writing to an sRGB formated render target,
+where the render target does the conversion back to sRGB after blending,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ return color;
+
+To use FXAA,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ color.a = sqrt(dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114))); // compute luma
+ return color;
+
+Getting luma correct is required for the algorithm to work correctly.
+
+
+------------------------------------------------------------------------------
+ BEING LINEARLY CORRECT?
+------------------------------------------------------------------------------
+Applying FXAA to a framebuffer with linear RGB color will look worse.
+This is very counter intuitive, but happends to be true in this case.
+The reason is because dithering artifacts will be more visiable
+in a linear colorspace.
+
+
+------------------------------------------------------------------------------
+ COMPLEX INTEGRATION
+------------------------------------------------------------------------------
+Q. What if the engine is blending into RGB before wanting to run FXAA?
+
+A. In the last opaque pass prior to FXAA,
+ have the pass write out luma into alpha.
+ Then blend into RGB only.
+ FXAA should be able to run ok
+ assuming the blending pass did not any add aliasing.
+ This should be the common case for particles and common blending passes.
+
+A. Or use FXAA_GREEN_AS_LUMA.
+
+============================================================================*/
+
+/*============================================================================
+
+ INTEGRATION KNOBS
+
+============================================================================*/
+//
+// FXAA_PS3 and FXAA_360 choose the console algorithm (FXAA3 CONSOLE).
+// FXAA_360_OPT is a prototype for the new optimized 360 version.
+//
+// 1 = Use API.
+// 0 = Don't use API.
+//
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_PS3
+ #define FXAA_PS3 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_360
+ #define FXAA_360 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_360_OPT
+ #define FXAA_360_OPT 0
+#endif
+/*==========================================================================*/
+#ifndef FXAA_PC
+ //
+ // FXAA Quality
+ // The high quality PC algorithm.
+ //
+ #define FXAA_PC 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_PC_CONSOLE
+ //
+ // The console algorithm for PC is included
+ // for developers targeting really low spec machines.
+ // Likely better to just run FXAA_PC, and use a really low preset.
+ //
+ #define FXAA_PC_CONSOLE 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GLSL_120
+ #define FXAA_GLSL_120 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GLSL_130
+ #define FXAA_GLSL_130 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_3
+ #define FXAA_HLSL_3 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_4
+ #define FXAA_HLSL_4 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_5
+ #define FXAA_HLSL_5 0
+#endif
+/*==========================================================================*/
+#ifndef FXAA_GREEN_AS_LUMA
+ //
+ // For those using non-linear color,
+ // and either not able to get luma in alpha, or not wanting to,
+ // this enables FXAA to run using green as a proxy for luma.
+ // So with this enabled, no need to pack luma in alpha.
+ //
+ // This will turn off AA on anything which lacks some amount of green.
+ // Pure red and blue or combination of only R and B, will get no AA.
+ //
+ // Might want to lower the settings for both,
+ // fxaaConsoleEdgeThresholdMin
+ // fxaaQualityEdgeThresholdMin
+ // In order to insure AA does not get turned off on colors
+ // which contain a minor amount of green.
+ //
+ // 1 = On.
+ // 0 = Off.
+ //
+ #define FXAA_GREEN_AS_LUMA 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_EARLY_EXIT
+ //
+ // Controls algorithm's early exit path.
+ // On PS3 turning this ON adds 2 cycles to the shader.
+ // On 360 turning this OFF adds 10ths of a millisecond to the shader.
+ // Turning this off on console will result in a more blurry image.
+ // So this defaults to on.
+ //
+ // 1 = On.
+ // 0 = Off.
+ //
+ #define FXAA_EARLY_EXIT 1
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_DISCARD
+ //
+ // Only valid for PC OpenGL currently.
+ // Probably will not work when FXAA_GREEN_AS_LUMA = 1.
+ //
+ // 1 = Use discard on pixels which don't need AA.
+ // For APIs which enable concurrent TEX+ROP from same surface.
+ // 0 = Return unchanged color on pixels which don't need AA.
+ //
+ #define FXAA_DISCARD 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_FAST_PIXEL_OFFSET
+ //
+ // Used for GLSL 120 only.
+ //
+ // 1 = GL API supports fast pixel offsets
+ // 0 = do not use fast pixel offsets
+ //
+ #ifdef GL_EXT_gpu_shader4
+ #define FXAA_FAST_PIXEL_OFFSET 1
+ #endif
+ #ifdef GL_NV_gpu_shader5
+ #define FXAA_FAST_PIXEL_OFFSET 1
+ #endif
+ #ifdef GL_ARB_gpu_shader5
+ #define FXAA_FAST_PIXEL_OFFSET 1
+ #endif
+ #ifndef FXAA_FAST_PIXEL_OFFSET
+ #define FXAA_FAST_PIXEL_OFFSET 0
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GATHER4_ALPHA
+ //
+ // 1 = API supports gather4 on alpha channel.
+ // 0 = API does not support gather4 on alpha channel.
+ //
+ #if (FXAA_HLSL_5 == 1)
+ #define FXAA_GATHER4_ALPHA 1
+ #endif
+ #ifdef GL_ARB_gpu_shader5
+ #define FXAA_GATHER4_ALPHA 1
+ #endif
+ #ifdef GL_NV_gpu_shader5
+ #define FXAA_GATHER4_ALPHA 1
+ #endif
+ #ifndef FXAA_GATHER4_ALPHA
+ #define FXAA_GATHER4_ALPHA 0
+ #endif
+#endif
+
+/*============================================================================
+ FXAA CONSOLE PS3 - TUNING KNOBS
+============================================================================*/
+#ifndef FXAA_CONSOLE__PS3_EDGE_SHARPNESS
+ //
+ // Consoles the sharpness of edges on PS3 only.
+ // Non-PS3 tuning is done with shader input.
+ //
+ // Due to the PS3 being ALU bound,
+ // there are only two safe values here: 4 and 8.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ //
+ // 8.0 is sharper
+ // 4.0 is softer
+ // 2.0 is really soft (good for vector graphics inputs)
+ //
+ #if 1
+ #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 8.0
+ #endif
+ #if 0
+ #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 4.0
+ #endif
+ #if 0
+ #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 2.0
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_CONSOLE__PS3_EDGE_THRESHOLD
+ //
+ // Only effects PS3.
+ // Non-PS3 tuning is done with shader input.
+ //
+ // The minimum amount of local contrast required to apply algorithm.
+ // The console setting has a different mapping than the quality setting.
+ //
+ // This only applies when FXAA_EARLY_EXIT is 1.
+ //
+ // Due to the PS3 being ALU bound,
+ // there are only two safe values here: 0.25 and 0.125.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ //
+ // 0.125 leaves less aliasing, but is softer
+ // 0.25 leaves more aliasing, and is sharper
+ //
+ #if 1
+ #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.125
+ #else
+ #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.25
+ #endif
+#endif
+
+/*============================================================================
+ FXAA QUALITY - TUNING KNOBS
+------------------------------------------------------------------------------
+NOTE the other tuning knobs are now in the shader function inputs!
+============================================================================*/
+#ifndef FXAA_QUALITY__PRESET
+ //
+ // Choose the quality preset.
+ // This needs to be compiled into the shader as it effects code.
+ // Best option to include multiple presets is to
+ // in each shader define the preset, then include this file.
+ //
+ // OPTIONS
+ // -----------------------------------------------------------------------
+ // 10 to 15 - default medium dither (10=fastest, 15=highest quality)
+ // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
+ // 39 - no dither, very expensive
+ //
+ // NOTES
+ // -----------------------------------------------------------------------
+ // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
+ // 13 = about same speed as FXAA 3.9 and better than 12
+ // 23 = closest to FXAA 3.9 visually and performance wise
+ // _ = the lowest digit is directly related to performance
+ // _ = the highest digit is directly related to style
+ //
+ #define FXAA_QUALITY__PRESET 12
+#endif
+
+
+/*============================================================================
+
+ FXAA QUALITY - PRESETS
+
+============================================================================*/
+
+/*============================================================================
+ FXAA QUALITY - MEDIUM DITHER PRESETS
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 10)
+ #define FXAA_QUALITY__PS 3
+ #define FXAA_QUALITY__P0 1.5
+ #define FXAA_QUALITY__P1 3.0
+ #define FXAA_QUALITY__P2 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 11)
+ #define FXAA_QUALITY__PS 4
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 3.0
+ #define FXAA_QUALITY__P3 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 12)
+ #define FXAA_QUALITY__PS 5
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 4.0
+ #define FXAA_QUALITY__P4 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 13)
+ #define FXAA_QUALITY__PS 6
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 4.0
+ #define FXAA_QUALITY__P5 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 14)
+ #define FXAA_QUALITY__PS 7
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 4.0
+ #define FXAA_QUALITY__P6 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 15)
+ #define FXAA_QUALITY__PS 8
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 4.0
+ #define FXAA_QUALITY__P7 12.0
+#endif
+
+/*============================================================================
+ FXAA QUALITY - LOW DITHER PRESETS
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 20)
+ #define FXAA_QUALITY__PS 3
+ #define FXAA_QUALITY__P0 1.5
+ #define FXAA_QUALITY__P1 2.0
+ #define FXAA_QUALITY__P2 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 21)
+ #define FXAA_QUALITY__PS 4
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 22)
+ #define FXAA_QUALITY__PS 5
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 23)
+ #define FXAA_QUALITY__PS 6
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 24)
+ #define FXAA_QUALITY__PS 7
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 3.0
+ #define FXAA_QUALITY__P6 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 25)
+ #define FXAA_QUALITY__PS 8
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 4.0
+ #define FXAA_QUALITY__P7 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 26)
+ #define FXAA_QUALITY__PS 9
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 4.0
+ #define FXAA_QUALITY__P8 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 27)
+ #define FXAA_QUALITY__PS 10
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 4.0
+ #define FXAA_QUALITY__P9 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 28)
+ #define FXAA_QUALITY__PS 11
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 2.0
+ #define FXAA_QUALITY__P9 4.0
+ #define FXAA_QUALITY__P10 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 29)
+ #define FXAA_QUALITY__PS 12
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 2.0
+ #define FXAA_QUALITY__P9 2.0
+ #define FXAA_QUALITY__P10 4.0
+ #define FXAA_QUALITY__P11 8.0
+#endif
+
+/*============================================================================
+ FXAA QUALITY - EXTREME QUALITY
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 39)
+ #define FXAA_QUALITY__PS 12
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.0
+ #define FXAA_QUALITY__P2 1.0
+ #define FXAA_QUALITY__P3 1.0
+ #define FXAA_QUALITY__P4 1.0
+ #define FXAA_QUALITY__P5 1.5
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 2.0
+ #define FXAA_QUALITY__P9 2.0
+ #define FXAA_QUALITY__P10 4.0
+ #define FXAA_QUALITY__P11 8.0
+#endif
+
+
+
+/*============================================================================
+
+ API PORTING
+
+============================================================================*/
+#if (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)
+ #define FxaaBool bool
+ #define FxaaDiscard discard
+ #define FxaaFloat float
+ #define FxaaFloat2 vec2
+ #define FxaaFloat3 vec3
+ #define FxaaFloat4 vec4
+ #define FxaaHalf float
+ #define FxaaHalf2 vec2
+ #define FxaaHalf3 vec3
+ #define FxaaHalf4 vec4
+ #define FxaaInt2 ivec2
+ #define FxaaSat(x) clamp(x, 0.0, 1.0)
+ #define FxaaTex sampler2D
+#else
+ #define FxaaBool bool
+ #define FxaaDiscard clip(-1)
+ #define FxaaFloat float
+ #define FxaaFloat2 float2
+ #define FxaaFloat3 float3
+ #define FxaaFloat4 float4
+ #define FxaaHalf half
+ #define FxaaHalf2 half2
+ #define FxaaHalf3 half3
+ #define FxaaHalf4 half4
+ #define FxaaSat(x) saturate(x)
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_GLSL_120 == 1)
+ // Requires,
+ // #version 120
+ // And at least,
+ // #extension GL_EXT_gpu_shader4 : enable
+ // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)
+ #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
+ #if (FXAA_FAST_PIXEL_OFFSET == 1)
+ #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
+ #else
+ #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
+ #endif
+ #if (FXAA_GATHER4_ALPHA == 1)
+ // use #extension GL_ARB_gpu_shader5 : enable
+ #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
+ #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
+ #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
+ #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_GLSL_130 == 1)
+ // Requires "#version 130" or better
+ #define FxaaTexTop(t, p) textureLod(t, p, 0.0)
+ #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
+ #if (FXAA_GATHER4_ALPHA == 1)
+ // use #extension GL_ARB_gpu_shader5 : enable
+ #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
+ #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
+ #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
+ #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_3 == 1) || (FXAA_360 == 1) || (FXAA_PS3 == 1)
+ #define FxaaInt2 float2
+ #define FxaaTex sampler2D
+ #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))
+ #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_4 == 1)
+ #define FxaaInt2 int2
+ struct FxaaTex { SamplerState smpl; Texture2D tex; };
+ #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
+ #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_5 == 1)
+ #define FxaaInt2 int2
+ struct FxaaTex { SamplerState smpl; Texture2D tex; };
+ #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
+ #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
+ #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)
+ #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)
+ #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)
+ #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)
+#endif
+
+
+/*============================================================================
+ GREEN AS LUMA OPTION SUPPORT FUNCTION
+============================================================================*/
+#if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }
+#else
+ FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
+#endif
+
+
+
+
+/*============================================================================
+
+ FXAA3 QUALITY - PC
+
+============================================================================*/
+#if (FXAA_PC == 1)
+/*--------------------------------------------------------------------------*/
+FxaaFloat4 FxaaPixelShader(
+ //
+ // Use noperspective interpolation here (turn off perspective interpolation).
+ // {xy} = center of pixel
+ FxaaFloat2 pos,
+ //
+ // Used only for FXAA Console, and not used on the 360 version.
+ // Use noperspective interpolation here (turn off perspective interpolation).
+ // {xy__} = upper left of pixel
+ // {__zw} = lower right of pixel
+ FxaaFloat4 fxaaConsolePosPos,
+ //
+ // Input color texture.
+ // {rgb_} = color in linear or perceptual color space
+ // if (FXAA_GREEN_AS_LUMA == 0)
+ // {___a} = luma in perceptual color space (not linear)
+ FxaaTex tex,
+ //
+ // Only used on the optimized 360 version of FXAA Console.
+ // For everything but 360, just use the same input here as for "tex".
+ // For 360, same texture, just alias with a 2nd sampler.
+ // This sampler needs to have an exponent bias of -1.
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ //
+ // Only used on the optimized 360 version of FXAA Console.
+ // For everything but 360, just use the same input here as for "tex".
+ // For 360, same texture, just alias with a 3nd sampler.
+ // This sampler needs to have an exponent bias of -2.
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ //
+ // Only used on FXAA Quality.
+ // This must be from a constant/uniform.
+ // {x_} = 1.0/screenWidthInPixels
+ // {_y} = 1.0/screenHeightInPixels
+ FxaaFloat2 fxaaQualityRcpFrame,
+ //
+ // Only used on FXAA Console.
+ // This must be from a constant/uniform.
+ // This effects sub-pixel AA quality and inversely sharpness.
+ // Where N ranges between,
+ // N = 0.50 (default)
+ // N = 0.33 (sharper)
+ // {x___} = -N/screenWidthInPixels
+ // {_y__} = -N/screenHeightInPixels
+ // {__z_} = N/screenWidthInPixels
+ // {___w} = N/screenHeightInPixels
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ //
+ // Only used on FXAA Console.
+ // Not used on 360, but used on PS3 and PC.
+ // This must be from a constant/uniform.
+ // {x___} = -2.0/screenWidthInPixels
+ // {_y__} = -2.0/screenHeightInPixels
+ // {__z_} = 2.0/screenWidthInPixels
+ // {___w} = 2.0/screenHeightInPixels
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ //
+ // Only used on FXAA Console.
+ // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.
+ // This must be from a constant/uniform.
+ // {x___} = 8.0/screenWidthInPixels
+ // {_y__} = 8.0/screenHeightInPixels
+ // {__z_} = -4.0/screenWidthInPixels
+ // {___w} = -4.0/screenHeightInPixels
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ //
+ // Only used on FXAA Quality.
+ // This used to be the FXAA_QUALITY__SUBPIX define.
+ // It is here now to allow easier tuning.
+ // Choose the amount of sub-pixel aliasing removal.
+ // This can effect sharpness.
+ // 1.00 - upper limit (softer)
+ // 0.75 - default amount of filtering
+ // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)
+ // 0.25 - almost off
+ // 0.00 - completely off
+ FxaaFloat fxaaQualitySubpix,
+ //
+ // Only used on FXAA Quality.
+ // This used to be the FXAA_QUALITY__EDGE_THRESHOLD define.
+ // It is here now to allow easier tuning.
+ // The minimum amount of local contrast required to apply algorithm.
+ // 0.333 - too little (faster)
+ // 0.250 - low quality
+ // 0.166 - default
+ // 0.125 - high quality
+ // 0.063 - overkill (slower)
+ FxaaFloat fxaaQualityEdgeThreshold,
+ //
+ // Only used on FXAA Quality.
+ // This used to be the FXAA_QUALITY__EDGE_THRESHOLD_MIN define.
+ // It is here now to allow easier tuning.
+ // Trims the algorithm from processing darks.
+ // 0.0833 - upper limit (default, the start of visible unfiltered edges)
+ // 0.0625 - high quality (faster)
+ // 0.0312 - visible limit (slower)
+ // Special notes when using FXAA_GREEN_AS_LUMA,
+ // Likely want to set this to zero.
+ // As colors that are mostly not-green
+ // will appear very dark in the green channel!
+ // Tune by looking at mostly non-green content,
+ // then start at zero and increase until aliasing is a problem.
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ //
+ // Only used on FXAA Console.
+ // This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
+ // It is here now to allow easier tuning.
+ // This does not effect PS3, as this needs to be compiled in.
+ // Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
+ // Due to the PS3 being ALU bound,
+ // there are only three safe values here: 2 and 4 and 8.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ // For all other platforms can be a non-power of two.
+ // 8.0 is sharper (default!!!)
+ // 4.0 is softer
+ // 2.0 is really soft (good only for vector graphics inputs)
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ //
+ // Only used on FXAA Console.
+ // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
+ // It is here now to allow easier tuning.
+ // This does not effect PS3, as this needs to be compiled in.
+ // Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
+ // Due to the PS3 being ALU bound,
+ // there are only two safe values here: 1/4 and 1/8.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ // The console setting has a different mapping than the quality setting.
+ // Other platforms can use other values.
+ // 0.125 leaves less aliasing, but is softer (default!!!)
+ // 0.25 leaves more aliasing, and is sharper
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ //
+ // Only used on FXAA Console.
+ // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
+ // It is here now to allow easier tuning.
+ // Trims the algorithm from processing darks.
+ // The console setting has a different mapping than the quality setting.
+ // This only applies when FXAA_EARLY_EXIT is 1.
+ // This does not apply to PS3,
+ // PS3 was simplified to avoid more shader instructions.
+ // 0.06 - faster but more aliasing in darks
+ // 0.05 - default
+ // 0.04 - slower and less aliasing in darks
+ // Special notes when using FXAA_GREEN_AS_LUMA,
+ // Likely want to set this to zero.
+ // As colors that are mostly not-green
+ // will appear very dark in the green channel!
+ // Tune by looking at mostly non-green content,
+ // then start at zero and increase until aliasing is a problem.
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ //
+ // Extra constants for 360 FXAA Console only.
+ // Use zeros or anything else for other platforms.
+ // These must be in physical constant registers and NOT immedates.
+ // Immedates will result in compiler un-optimizing.
+ // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 posM;
+ posM.x = pos.x;
+ posM.y = pos.y;
+ #if (FXAA_GATHER4_ALPHA == 1)
+ #if (FXAA_DISCARD == 0)
+ FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ #define lumaM rgbyM.w
+ #else
+ #define lumaM rgbyM.y
+ #endif
+ #endif
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);
+ FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));
+ #else
+ FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);
+ FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
+ #endif
+ #if (FXAA_DISCARD == 1)
+ #define lumaM luma4A.w
+ #endif
+ #define lumaE luma4A.z
+ #define lumaS luma4A.x
+ #define lumaSE luma4A.y
+ #define lumaNW luma4B.w
+ #define lumaN luma4B.z
+ #define lumaW luma4B.x
+ #else
+ FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ #define lumaM rgbyM.w
+ #else
+ #define lumaM rgbyM.y
+ #endif
+ FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
+ #endif
+/*--------------------------------------------------------------------------*/
+ FxaaFloat maxSM = max(lumaS, lumaM);
+ FxaaFloat minSM = min(lumaS, lumaM);
+ FxaaFloat maxESM = max(lumaE, maxSM);
+ FxaaFloat minESM = min(lumaE, minSM);
+ FxaaFloat maxWN = max(lumaN, lumaW);
+ FxaaFloat minWN = min(lumaN, lumaW);
+ FxaaFloat rangeMax = max(maxWN, maxESM);
+ FxaaFloat rangeMin = min(minWN, minESM);
+ FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
+ FxaaFloat range = rangeMax - rangeMin;
+ FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
+ FxaaBool earlyExit = range < rangeMaxClamped;
+/*--------------------------------------------------------------------------*/
+ if(earlyExit)
+ #if (FXAA_DISCARD == 1)
+ FxaaDiscard;
+ #else
+ return rgbyM;
+ #endif
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_GATHER4_ALPHA == 0)
+ FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
+ #else
+ FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
+ #endif
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNS = lumaN + lumaS;
+ FxaaFloat lumaWE = lumaW + lumaE;
+ FxaaFloat subpixRcpRange = 1.0/range;
+ FxaaFloat subpixNSWE = lumaNS + lumaWE;
+ FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
+ FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNESE = lumaNE + lumaSE;
+ FxaaFloat lumaNWNE = lumaNW + lumaNE;
+ FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
+ FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNWSW = lumaNW + lumaSW;
+ FxaaFloat lumaSWSE = lumaSW + lumaSE;
+ FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
+ FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
+ FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
+ FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
+ FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
+ FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
+ FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
+ FxaaBool horzSpan = edgeHorz >= edgeVert;
+ FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
+/*--------------------------------------------------------------------------*/
+ if(!horzSpan) lumaN = lumaW;
+ if(!horzSpan) lumaS = lumaE;
+ if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
+ FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat gradientN = lumaN - lumaM;
+ FxaaFloat gradientS = lumaS - lumaM;
+ FxaaFloat lumaNN = lumaN + lumaM;
+ FxaaFloat lumaSS = lumaS + lumaM;
+ FxaaBool pairN = abs(gradientN) >= abs(gradientS);
+ FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
+ if(pairN) lengthSign = -lengthSign;
+ FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 posB;
+ posB.x = posM.x;
+ posB.y = posM.y;
+ FxaaFloat2 offNP;
+ offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
+ offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
+ if(!horzSpan) posB.x += lengthSign * 0.5;
+ if( horzSpan) posB.y += lengthSign * 0.5;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 posN;
+ posN.x = posB.x - offNP.x * FXAA_QUALITY__P0;
+ posN.y = posB.y - offNP.y * FXAA_QUALITY__P0;
+ FxaaFloat2 posP;
+ posP.x = posB.x + offNP.x * FXAA_QUALITY__P0;
+ posP.y = posB.y + offNP.y * FXAA_QUALITY__P0;
+ FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
+ FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
+ FxaaFloat subpixE = subpixC * subpixC;
+ FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
+/*--------------------------------------------------------------------------*/
+ if(!pairN) lumaNN = lumaSS;
+ FxaaFloat gradientScaled = gradient * 1.0/4.0;
+ FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
+ FxaaFloat subpixF = subpixD * subpixE;
+ FxaaBool lumaMLTZero = lumaMM < 0.0;
+/*--------------------------------------------------------------------------*/
+ lumaEndN -= lumaNN * 0.5;
+ lumaEndP -= lumaNN * 0.5;
+ FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
+ FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P1;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P1;
+ FxaaBool doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P1;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P1;
+/*--------------------------------------------------------------------------*/
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P2;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P2;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P2;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P2;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 3)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P3;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P3;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P3;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P3;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 4)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P4;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P4;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P4;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P4;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 5)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P5;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P5;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P5;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P5;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 6)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P6;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P6;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P6;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P6;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 7)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P7;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P7;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P7;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P7;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 8)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P8;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P8;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P8;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P8;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 9)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P9;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P9;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P9;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P9;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 10)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P10;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P10;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P10;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P10;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 11)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P11;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P11;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P11;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P11;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 12)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P12;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P12;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P12;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P12;
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+/*--------------------------------------------------------------------------*/
+ FxaaFloat dstN = posM.x - posN.x;
+ FxaaFloat dstP = posP.x - posM.x;
+ if(!horzSpan) dstN = posM.y - posN.y;
+ if(!horzSpan) dstP = posP.y - posM.y;
+/*--------------------------------------------------------------------------*/
+ FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
+ FxaaFloat spanLength = (dstP + dstN);
+ FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
+ FxaaFloat spanLengthRcp = 1.0/spanLength;
+/*--------------------------------------------------------------------------*/
+ FxaaBool directionN = dstN < dstP;
+ FxaaFloat dst = min(dstN, dstP);
+ FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
+ FxaaFloat subpixG = subpixF * subpixF;
+ FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
+ FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
+ FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
+ if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
+ if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
+ #if (FXAA_DISCARD == 1)
+ return FxaaTexTop(tex, posM);
+ #else
+ return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
+ #endif
+}
+/*==========================================================================*/
+#endif
+
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - PC VERSION
+
+------------------------------------------------------------------------------
+Instead of using this on PC, I'd suggest just using FXAA Quality with
+ #define FXAA_QUALITY__PRESET 10
+Or
+ #define FXAA_QUALITY__PRESET 20
+Either are higher qualilty and almost as fast as this on modern PC GPUs.
+============================================================================*/
+#if (FXAA_PC_CONSOLE == 1)
+/*--------------------------------------------------------------------------*/
+FxaaFloat4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
+ FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
+ FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
+ FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
+/*--------------------------------------------------------------------------*/
+ FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaFloat lumaM = rgbyM.w;
+ #else
+ FxaaFloat lumaM = rgbyM.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
+ lumaNe += 1.0/384.0;
+ FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
+ FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
+ FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMinM = min(lumaMin, lumaM);
+ FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
+ FxaaFloat lumaMaxM = max(lumaMax, lumaM);
+ FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
+ FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
+ FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
+ if(lumaMaxSubMinM < lumaMaxScaledClamped) return rgbyM;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 dir;
+ dir.x = dirSwMinusNe + dirSeMinusNw;
+ dir.y = dirSwMinusNe - dirSeMinusNw;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 dir1 = normalize(dir.xy);
+ FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
+ FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
+ FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2 * fxaaConsoleRcpFrameOpt2.zw);
+ FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2 * fxaaConsoleRcpFrameOpt2.zw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
+ FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaBool twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);
+ #else
+ FxaaBool twoTap = (rgbyB.y < lumaMin) || (rgbyB.y > lumaMax);
+ #endif
+ if(twoTap) rgbyB.xyz = rgbyA.xyz * 0.5;
+ return rgbyB; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - 360 PIXEL SHADER
+
+------------------------------------------------------------------------------
+This optimized version thanks to suggestions from Andy Luedke.
+Should be fully tex bound in all cases.
+As of the FXAA 3.11 release, I have still not tested this code,
+however I fixed a bug which was in both FXAA 3.9 and FXAA 3.10.
+And note this is replacing the old unoptimized version.
+If it does not work, please let me know so I can fix it.
+============================================================================*/
+#if (FXAA_360 == 1)
+/*--------------------------------------------------------------------------*/
+[reduceTempRegUsage(4)]
+float4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+ float4 lumaNwNeSwSe;
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ asm {
+ tfetch2D lumaNwNeSwSe.w___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe._w__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.__w_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.___w, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
+ };
+ #else
+ asm {
+ tfetch2D lumaNwNeSwSe.y___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe._y__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.__y_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.___y, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
+ };
+ #endif
+/*--------------------------------------------------------------------------*/
+ lumaNwNeSwSe.y += 1.0/384.0;
+ float2 lumaMinTemp = min(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
+ float2 lumaMaxTemp = max(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
+ float lumaMin = min(lumaMinTemp.x, lumaMinTemp.y);
+ float lumaMax = max(lumaMaxTemp.x, lumaMaxTemp.y);
+/*--------------------------------------------------------------------------*/
+ float4 rgbyM = tex2Dlod(tex, float4(pos.xy, 0.0, 0.0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ float lumaMinM = min(lumaMin, rgbyM.w);
+ float lumaMaxM = max(lumaMax, rgbyM.w);
+ #else
+ float lumaMinM = min(lumaMin, rgbyM.y);
+ float lumaMaxM = max(lumaMax, rgbyM.y);
+ #endif
+ if((lumaMaxM - lumaMinM) < max(fxaaConsoleEdgeThresholdMin, lumaMax * fxaaConsoleEdgeThreshold)) return rgbyM;
+/*--------------------------------------------------------------------------*/
+ float2 dir;
+ dir.x = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.yyxx);
+ dir.y = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.xyxy);
+ dir = normalize(dir);
+/*--------------------------------------------------------------------------*/
+ float4 dir1 = dir.xyxy * fxaaConsoleRcpFrameOpt.xyzw;
+/*--------------------------------------------------------------------------*/
+ float4 dir2;
+ float dirAbsMinTimesC = min(abs(dir.x), abs(dir.y)) * fxaaConsoleEdgeSharpness;
+ dir2 = saturate(fxaaConsole360ConstDir.zzww * dir.xyxy / dirAbsMinTimesC + 0.5);
+ dir2 = dir2 * fxaaConsole360RcpFrameOpt2.xyxy + fxaaConsole360RcpFrameOpt2.zwzw;
+/*--------------------------------------------------------------------------*/
+ float4 rgbyN1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.xy, 0.0, 0.0));
+ float4 rgbyP1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.zw, 0.0, 0.0));
+ float4 rgbyN2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.xy, 0.0, 0.0));
+ float4 rgbyP2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.zw, 0.0, 0.0));
+/*--------------------------------------------------------------------------*/
+ float4 rgbyA = rgbyN1 + rgbyP1;
+ float4 rgbyB = rgbyN2 + rgbyP2 * 0.5 + rgbyA;
+/*--------------------------------------------------------------------------*/
+ float4 rgbyR = ((rgbyB.w - lumaMax) > 0.0) ? rgbyA : rgbyB;
+ rgbyR = ((rgbyB.w - lumaMin) > 0.0) ? rgbyR : rgbyA;
+ return rgbyR; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (NO EARLY EXIT)
+
+==============================================================================
+The code below does not exactly match the assembly.
+I have a feeling that 12 cycles is possible, but was not able to get there.
+Might have to increase register count to get full performance.
+Note this shader does not use perspective interpolation.
+
+Use the following cgc options,
+
+ --fenable-bx2 --fastmath --fastprecision --nofloatbindings
+
+------------------------------------------------------------------------------
+ NVSHADERPERF OUTPUT
+------------------------------------------------------------------------------
+For reference and to aid in debug, output of NVShaderPerf should match this,
+
+Shader to schedule:
+ 0: texpkb h0.w(TRUE), v5.zyxx, #0
+ 2: addh h2.z(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
+ 4: texpkb h0.w(TRUE), v5.xwxx, #0
+ 6: addh h0.z(TRUE), -h2, h0.w
+ 7: texpkb h1.w(TRUE), v5, #0
+ 9: addh h0.x(TRUE), h0.z, -h1.w
+ 10: addh h3.w(TRUE), h0.z, h1
+ 11: texpkb h2.w(TRUE), v5.zwzz, #0
+ 13: addh h0.z(TRUE), h3.w, -h2.w
+ 14: addh h0.x(TRUE), h2.w, h0
+ 15: nrmh h1.xz(TRUE), h0_n
+ 16: minh_m8 h0.x(TRUE), |h1|, |h1.z|
+ 17: maxh h4.w(TRUE), h0, h1
+ 18: divx h2.xy(TRUE), h1_n.xzzw, h0_n
+ 19: movr r1.zw(TRUE), v4.xxxy
+ 20: madr r2.xz(TRUE), -h1, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zzww, r1.zzww
+ 22: minh h5.w(TRUE), h0, h1
+ 23: texpkb h0(TRUE), r2.xzxx, #0
+ 25: madr r0.zw(TRUE), h1.xzxz, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w), r1
+ 27: maxh h4.x(TRUE), h2.z, h2.w
+ 28: texpkb h1(TRUE), r0.zwzz, #0
+ 30: addh_d2 h1(TRUE), h0, h1
+ 31: madr r0.xy(TRUE), -h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 33: texpkb h0(TRUE), r0, #0
+ 35: minh h4.z(TRUE), h2, h2.w
+ 36: fenct TRUE
+ 37: madr r1.xy(TRUE), h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 39: texpkb h2(TRUE), r1, #0
+ 41: addh_d2 h0(TRUE), h0, h2
+ 42: maxh h2.w(TRUE), h4, h4.x
+ 43: minh h2.x(TRUE), h5.w, h4.z
+ 44: addh_d2 h0(TRUE), h0, h1
+ 45: slth h2.x(TRUE), h0.w, h2
+ 46: sgth h2.w(TRUE), h0, h2
+ 47: movh h0(TRUE), h0
+ 48: addx.c0 rc(TRUE), h2, h2.w
+ 49: movh h0(c0.NE.x), h1
+
+IPU0 ------ Simplified schedule: --------
+Pass | Unit | uOp | PC: Op
+-----+--------+------+-------------------------
+ 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | SCB1 | add | 2: ADDh h2.z, h0.--w-, const.--x-;
+ | | |
+ 2 | SCT0/1 | mov | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | TEX | txl | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | SCB1 | add | 6: ADDh h0.z,-h2, h0.--w-;
+ | | |
+ 3 | SCT0/1 | mov | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
+ | TEX | txl | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
+ | SCB0 | add | 9: ADDh h0.x, h0.z---,-h1.w---;
+ | SCB1 | add | 10: ADDh h3.w, h0.---z, h1;
+ | | |
+ 4 | SCT0/1 | mov | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | TEX | txl | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | SCB0 | add | 14: ADDh h0.x, h2.w---, h0;
+ | SCB1 | add | 13: ADDh h0.z, h3.--w-,-h2.--w-;
+ | | |
+ 5 | SCT1 | mov | 15: NRMh h1.xz, h0;
+ | SRB | nrm | 15: NRMh h1.xz, h0;
+ | SCB0 | min | 16: MINh*8 h0.x, |h1|, |h1.z---|;
+ | SCB1 | max | 17: MAXh h4.w, h0, h1;
+ | | |
+ 6 | SCT0 | div | 18: DIVx h2.xy, h1.xz--, h0;
+ | SCT1 | mov | 19: MOVr r1.zw, g[TEX0].--xy;
+ | SCB0 | mad | 20: MADr r2.xz,-h1, const.z-w-, r1.z-w-;
+ | SCB1 | min | 22: MINh h5.w, h0, h1;
+ | | |
+ 7 | SCT0/1 | mov | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
+ | TEX | txl | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
+ | SCB0 | max | 27: MAXh h4.x, h2.z---, h2.w---;
+ | SCB1 | mad | 25: MADr r0.zw, h1.--xz, const, r1;
+ | | |
+ 8 | SCT0/1 | mov | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
+ | TEX | txl | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
+ | SCB0/1 | add | 30: ADDh/2 h1, h0, h1;
+ | | |
+ 9 | SCT0 | mad | 31: MADr r0.xy,-h2, const.xy--, r1.zw--;
+ | SCT1 | mov | 33: TXLr h0, r0, const.zzzz, TEX0;
+ | TEX | txl | 33: TXLr h0, r0, const.zzzz, TEX0;
+ | SCB1 | min | 35: MINh h4.z, h2, h2.--w-;
+ | | |
+ 10 | SCT0 | mad | 37: MADr r1.xy, h2, const.xy--, r1.zw--;
+ | SCT1 | mov | 39: TXLr h2, r1, const.zzzz, TEX0;
+ | TEX | txl | 39: TXLr h2, r1, const.zzzz, TEX0;
+ | SCB0/1 | add | 41: ADDh/2 h0, h0, h2;
+ | | |
+ 11 | SCT0 | min | 43: MINh h2.x, h5.w---, h4.z---;
+ | SCT1 | max | 42: MAXh h2.w, h4, h4.---x;
+ | SCB0/1 | add | 44: ADDh/2 h0, h0, h1;
+ | | |
+ 12 | SCT0 | set | 45: SLTh h2.x, h0.w---, h2;
+ | SCT1 | set | 46: SGTh h2.w, h0, h2;
+ | SCB0/1 | mul | 47: MOVh h0, h0;
+ | | |
+ 13 | SCT0 | mad | 48: ADDxc0_s rc, h2, h2.w---;
+ | SCB0/1 | mul | 49: MOVh h0(NE0.xxxx), h1;
+
+Pass SCT TEX SCB
+ 1: 0% 100% 25%
+ 2: 0% 100% 25%
+ 3: 0% 100% 50%
+ 4: 0% 100% 50%
+ 5: 0% 0% 50%
+ 6: 100% 0% 75%
+ 7: 0% 100% 75%
+ 8: 0% 100% 100%
+ 9: 0% 100% 25%
+ 10: 0% 100% 100%
+ 11: 50% 0% 100%
+ 12: 50% 0% 100%
+ 13: 25% 0% 100%
+
+MEAN: 17% 61% 67%
+
+Pass SCT0 SCT1 TEX SCB0 SCB1
+ 1: 0% 0% 100% 0% 100%
+ 2: 0% 0% 100% 0% 100%
+ 3: 0% 0% 100% 100% 100%
+ 4: 0% 0% 100% 100% 100%
+ 5: 0% 0% 0% 100% 100%
+ 6: 100% 100% 0% 100% 100%
+ 7: 0% 0% 100% 100% 100%
+ 8: 0% 0% 100% 100% 100%
+ 9: 0% 0% 100% 0% 100%
+ 10: 0% 0% 100% 100% 100%
+ 11: 100% 100% 0% 100% 100%
+ 12: 100% 100% 0% 100% 100%
+ 13: 100% 0% 0% 100% 100%
+
+MEAN: 30% 23% 61% 76% 100%
+Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
+Results 13 cycles, 3 r regs, 923,076,923 pixels/s
+============================================================================*/
+#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 0)
+/*--------------------------------------------------------------------------*/
+#pragma regcount 7
+#pragma disablepc all
+#pragma option O3
+#pragma option OutColorPrec=fp16
+#pragma texformat default RGBA8
+/*==========================================================================*/
+half4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+// (1)
+ half4 dir;
+ half4 lumaNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ lumaNe.w += half(1.0/512.0);
+ dir.x = -lumaNe.w;
+ dir.z = -lumaNe.w;
+ #else
+ lumaNe.y += half(1.0/512.0);
+ dir.x = -lumaNe.y;
+ dir.z = -lumaNe.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (2)
+ half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x += lumaSw.w;
+ dir.z += lumaSw.w;
+ #else
+ dir.x += lumaSw.y;
+ dir.z += lumaSw.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (3)
+ half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x -= lumaNw.w;
+ dir.z += lumaNw.w;
+ #else
+ dir.x -= lumaNw.y;
+ dir.z += lumaNw.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (4)
+ half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x += lumaSe.w;
+ dir.z -= lumaSe.w;
+ #else
+ dir.x += lumaSe.y;
+ dir.z -= lumaSe.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (5)
+ half4 dir1_pos;
+ dir1_pos.xy = normalize(dir.xyz).xz;
+ half dirAbsMinTimesC = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
+/*--------------------------------------------------------------------------*/
+// (6)
+ half4 dir2_pos;
+ dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimesC, half(-2.0), half(2.0));
+ dir1_pos.zw = pos.xy;
+ dir2_pos.zw = pos.xy;
+ half4 temp1N;
+ temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+/*--------------------------------------------------------------------------*/
+// (7)
+ temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
+ half4 rgby1;
+ rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+/*--------------------------------------------------------------------------*/
+// (8)
+ rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
+ rgby1 = (temp1N + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (9)
+ half4 temp2N;
+ temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
+/*--------------------------------------------------------------------------*/
+// (10)
+ half4 rgby2;
+ rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
+ rgby2 = (temp2N + rgby2) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (11)
+ // compilier moves these scalar ops up to other cycles
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMin = min(min(lumaNw.w, lumaSw.w), min(lumaNe.w, lumaSe.w));
+ half lumaMax = max(max(lumaNw.w, lumaSw.w), max(lumaNe.w, lumaSe.w));
+ #else
+ half lumaMin = min(min(lumaNw.y, lumaSw.y), min(lumaNe.y, lumaSe.y));
+ half lumaMax = max(max(lumaNw.y, lumaSw.y), max(lumaNe.y, lumaSe.y));
+ #endif
+ rgby2 = (rgby2 + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (12)
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ bool twoTapLt = rgby2.w < lumaMin;
+ bool twoTapGt = rgby2.w > lumaMax;
+ #else
+ bool twoTapLt = rgby2.y < lumaMin;
+ bool twoTapGt = rgby2.y > lumaMax;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (13)
+ if(twoTapLt || twoTapGt) rgby2 = rgby1;
+/*--------------------------------------------------------------------------*/
+ return rgby2; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (WITH EARLY EXIT)
+
+==============================================================================
+The code mostly matches the assembly.
+I have a feeling that 14 cycles is possible, but was not able to get there.
+Might have to increase register count to get full performance.
+Note this shader does not use perspective interpolation.
+
+Use the following cgc options,
+
+ --fenable-bx2 --fastmath --fastprecision --nofloatbindings
+
+Use of FXAA_GREEN_AS_LUMA currently adds a cycle (16 clks).
+Will look at fixing this for FXAA 3.12.
+------------------------------------------------------------------------------
+ NVSHADERPERF OUTPUT
+------------------------------------------------------------------------------
+For reference and to aid in debug, output of NVShaderPerf should match this,
+
+Shader to schedule:
+ 0: texpkb h0.w(TRUE), v5.zyxx, #0
+ 2: addh h2.y(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
+ 4: texpkb h1.w(TRUE), v5.xwxx, #0
+ 6: addh h0.x(TRUE), h1.w, -h2.y
+ 7: texpkb h2.w(TRUE), v5.zwzz, #0
+ 9: minh h4.w(TRUE), h2.y, h2
+ 10: maxh h5.x(TRUE), h2.y, h2.w
+ 11: texpkb h0.w(TRUE), v5, #0
+ 13: addh h3.w(TRUE), -h0, h0.x
+ 14: addh h0.x(TRUE), h0.w, h0
+ 15: addh h0.z(TRUE), -h2.w, h0.x
+ 16: addh h0.x(TRUE), h2.w, h3.w
+ 17: minh h5.y(TRUE), h0.w, h1.w
+ 18: nrmh h2.xz(TRUE), h0_n
+ 19: minh_m8 h2.w(TRUE), |h2.x|, |h2.z|
+ 20: divx h4.xy(TRUE), h2_n.xzzw, h2_n.w
+ 21: movr r1.zw(TRUE), v4.xxxy
+ 22: maxh h2.w(TRUE), h0, h1
+ 23: fenct TRUE
+ 24: madr r0.xy(TRUE), -h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
+ 26: texpkb h0(TRUE), r0, #0
+ 28: maxh h5.x(TRUE), h2.w, h5
+ 29: minh h5.w(TRUE), h5.y, h4
+ 30: madr r1.xy(TRUE), h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
+ 32: texpkb h2(TRUE), r1, #0
+ 34: addh_d2 h2(TRUE), h0, h2
+ 35: texpkb h1(TRUE), v4, #0
+ 37: maxh h5.y(TRUE), h5.x, h1.w
+ 38: minh h4.w(TRUE), h1, h5
+ 39: madr r0.xy(TRUE), -h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 41: texpkb h0(TRUE), r0, #0
+ 43: addh_m8 h5.z(TRUE), h5.y, -h4.w
+ 44: madr r2.xy(TRUE), h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 46: texpkb h3(TRUE), r2, #0
+ 48: addh_d2 h0(TRUE), h0, h3
+ 49: addh_d2 h3(TRUE), h0, h2
+ 50: movh h0(TRUE), h3
+ 51: slth h3.x(TRUE), h3.w, h5.w
+ 52: sgth h3.w(TRUE), h3, h5.x
+ 53: addx.c0 rc(TRUE), h3.x, h3
+ 54: slth.c0 rc(TRUE), h5.z, h5
+ 55: movh h0(c0.NE.w), h2
+ 56: movh h0(c0.NE.x), h1
+
+IPU0 ------ Simplified schedule: --------
+Pass | Unit | uOp | PC: Op
+-----+--------+------+-------------------------
+ 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | SCB0 | add | 2: ADDh h2.y, h0.-w--, const.-x--;
+ | | |
+ 2 | SCT0/1 | mov | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | TEX | txl | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | SCB0 | add | 6: ADDh h0.x, h1.w---,-h2.y---;
+ | | |
+ 3 | SCT0/1 | mov | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | TEX | txl | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | SCB0 | max | 10: MAXh h5.x, h2.y---, h2.w---;
+ | SCB1 | min | 9: MINh h4.w, h2.---y, h2;
+ | | |
+ 4 | SCT0/1 | mov | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
+ | TEX | txl | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
+ | SCB0 | add | 14: ADDh h0.x, h0.w---, h0;
+ | SCB1 | add | 13: ADDh h3.w,-h0, h0.---x;
+ | | |
+ 5 | SCT0 | mad | 16: ADDh h0.x, h2.w---, h3.w---;
+ | SCT1 | mad | 15: ADDh h0.z,-h2.--w-, h0.--x-;
+ | SCB0 | min | 17: MINh h5.y, h0.-w--, h1.-w--;
+ | | |
+ 6 | SCT1 | mov | 18: NRMh h2.xz, h0;
+ | SRB | nrm | 18: NRMh h2.xz, h0;
+ | SCB1 | min | 19: MINh*8 h2.w, |h2.---x|, |h2.---z|;
+ | | |
+ 7 | SCT0 | div | 20: DIVx h4.xy, h2.xz--, h2.ww--;
+ | SCT1 | mov | 21: MOVr r1.zw, g[TEX0].--xy;
+ | SCB1 | max | 22: MAXh h2.w, h0, h1;
+ | | |
+ 8 | SCT0 | mad | 24: MADr r0.xy,-h2.xz--, const.zw--, r1.zw--;
+ | SCT1 | mov | 26: TXLr h0, r0, const.xxxx, TEX0;
+ | TEX | txl | 26: TXLr h0, r0, const.xxxx, TEX0;
+ | SCB0 | max | 28: MAXh h5.x, h2.w---, h5;
+ | SCB1 | min | 29: MINh h5.w, h5.---y, h4;
+ | | |
+ 9 | SCT0 | mad | 30: MADr r1.xy, h2.xz--, const.zw--, r1.zw--;
+ | SCT1 | mov | 32: TXLr h2, r1, const.xxxx, TEX0;
+ | TEX | txl | 32: TXLr h2, r1, const.xxxx, TEX0;
+ | SCB0/1 | add | 34: ADDh/2 h2, h0, h2;
+ | | |
+ 10 | SCT0/1 | mov | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
+ | TEX | txl | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
+ | SCB0 | max | 37: MAXh h5.y, h5.-x--, h1.-w--;
+ | SCB1 | min | 38: MINh h4.w, h1, h5;
+ | | |
+ 11 | SCT0 | mad | 39: MADr r0.xy,-h4, const.xy--, r1.zw--;
+ | SCT1 | mov | 41: TXLr h0, r0, const.zzzz, TEX0;
+ | TEX | txl | 41: TXLr h0, r0, const.zzzz, TEX0;
+ | SCB0 | mad | 44: MADr r2.xy, h4, const.xy--, r1.zw--;
+ | SCB1 | add | 43: ADDh*8 h5.z, h5.--y-,-h4.--w-;
+ | | |
+ 12 | SCT0/1 | mov | 46: TXLr h3, r2, const.xxxx, TEX0;
+ | TEX | txl | 46: TXLr h3, r2, const.xxxx, TEX0;
+ | SCB0/1 | add | 48: ADDh/2 h0, h0, h3;
+ | | |
+ 13 | SCT0/1 | mad | 49: ADDh/2 h3, h0, h2;
+ | SCB0/1 | mul | 50: MOVh h0, h3;
+ | | |
+ 14 | SCT0 | set | 51: SLTh h3.x, h3.w---, h5.w---;
+ | SCT1 | set | 52: SGTh h3.w, h3, h5.---x;
+ | SCB0 | set | 54: SLThc0 rc, h5.z---, h5;
+ | SCB1 | add | 53: ADDxc0_s rc, h3.---x, h3;
+ | | |
+ 15 | SCT0/1 | mul | 55: MOVh h0(NE0.wwww), h2;
+ | SCB0/1 | mul | 56: MOVh h0(NE0.xxxx), h1;
+
+Pass SCT TEX SCB
+ 1: 0% 100% 25%
+ 2: 0% 100% 25%
+ 3: 0% 100% 50%
+ 4: 0% 100% 50%
+ 5: 50% 0% 25%
+ 6: 0% 0% 25%
+ 7: 100% 0% 25%
+ 8: 0% 100% 50%
+ 9: 0% 100% 100%
+ 10: 0% 100% 50%
+ 11: 0% 100% 75%
+ 12: 0% 100% 100%
+ 13: 100% 0% 100%
+ 14: 50% 0% 50%
+ 15: 100% 0% 100%
+
+MEAN: 26% 60% 56%
+
+Pass SCT0 SCT1 TEX SCB0 SCB1
+ 1: 0% 0% 100% 100% 0%
+ 2: 0% 0% 100% 100% 0%
+ 3: 0% 0% 100% 100% 100%
+ 4: 0% 0% 100% 100% 100%
+ 5: 100% 100% 0% 100% 0%
+ 6: 0% 0% 0% 0% 100%
+ 7: 100% 100% 0% 0% 100%
+ 8: 0% 0% 100% 100% 100%
+ 9: 0% 0% 100% 100% 100%
+ 10: 0% 0% 100% 100% 100%
+ 11: 0% 0% 100% 100% 100%
+ 12: 0% 0% 100% 100% 100%
+ 13: 100% 100% 0% 100% 100%
+ 14: 100% 100% 0% 100% 100%
+ 15: 100% 100% 0% 100% 100%
+
+MEAN: 33% 33% 60% 86% 80%
+Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
+Results 15 cycles, 3 r regs, 800,000,000 pixels/s
+============================================================================*/
+#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 1)
+/*--------------------------------------------------------------------------*/
+#pragma regcount 7
+#pragma disablepc all
+#pragma option O2
+#pragma option OutColorPrec=fp16
+#pragma texformat default RGBA8
+/*==========================================================================*/
+half4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+// (1)
+ half4 rgbyNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaNe = rgbyNe.w + half(1.0/512.0);
+ #else
+ half lumaNe = rgbyNe.y + half(1.0/512.0);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (2)
+ half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaSwNegNe = lumaSw.w - lumaNe;
+ #else
+ half lumaSwNegNe = lumaSw.y - lumaNe;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (3)
+ half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMaxNwSw = max(lumaNw.w, lumaSw.w);
+ half lumaMinNwSw = min(lumaNw.w, lumaSw.w);
+ #else
+ half lumaMaxNwSw = max(lumaNw.y, lumaSw.y);
+ half lumaMinNwSw = min(lumaNw.y, lumaSw.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (4)
+ half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half dirZ = lumaNw.w + lumaSwNegNe;
+ half dirX = -lumaNw.w + lumaSwNegNe;
+ #else
+ half dirZ = lumaNw.y + lumaSwNegNe;
+ half dirX = -lumaNw.y + lumaSwNegNe;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (5)
+ half3 dir;
+ dir.y = 0.0;
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x = lumaSe.w + dirX;
+ dir.z = -lumaSe.w + dirZ;
+ half lumaMinNeSe = min(lumaNe, lumaSe.w);
+ #else
+ dir.x = lumaSe.y + dirX;
+ dir.z = -lumaSe.y + dirZ;
+ half lumaMinNeSe = min(lumaNe, lumaSe.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (6)
+ half4 dir1_pos;
+ dir1_pos.xy = normalize(dir).xz;
+ half dirAbsMinTimes8 = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
+/*--------------------------------------------------------------------------*/
+// (7)
+ half4 dir2_pos;
+ dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimes8, half(-2.0), half(2.0));
+ dir1_pos.zw = pos.xy;
+ dir2_pos.zw = pos.xy;
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMaxNeSe = max(lumaNe, lumaSe.w);
+ #else
+ half lumaMaxNeSe = max(lumaNe, lumaSe.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (8)
+ half4 temp1N;
+ temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+ temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
+ half lumaMax = max(lumaMaxNwSw, lumaMaxNeSe);
+ half lumaMin = min(lumaMinNwSw, lumaMinNeSe);
+/*--------------------------------------------------------------------------*/
+// (9)
+ half4 rgby1;
+ rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+ rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
+ rgby1 = (temp1N + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (10)
+ half4 rgbyM = h4tex2Dlod(tex, half4(pos.xy, 0.0, 0.0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMaxM = max(lumaMax, rgbyM.w);
+ half lumaMinM = min(lumaMin, rgbyM.w);
+ #else
+ half lumaMaxM = max(lumaMax, rgbyM.y);
+ half lumaMinM = min(lumaMin, rgbyM.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (11)
+ half4 temp2N;
+ temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
+ half4 rgby2;
+ rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ half lumaRangeM = (lumaMaxM - lumaMinM) / FXAA_CONSOLE__PS3_EDGE_THRESHOLD;
+/*--------------------------------------------------------------------------*/
+// (12)
+ rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
+ rgby2 = (temp2N + rgby2) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (13)
+ rgby2 = (rgby2 + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (14)
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ bool twoTapLt = rgby2.w < lumaMin;
+ bool twoTapGt = rgby2.w > lumaMax;
+ #else
+ bool twoTapLt = rgby2.y < lumaMin;
+ bool twoTapGt = rgby2.y > lumaMax;
+ #endif
+ bool earlyExit = lumaRangeM < lumaMax;
+ bool twoTap = twoTapLt || twoTapGt;
+/*--------------------------------------------------------------------------*/
+// (15)
+ if(twoTap) rgby2 = rgby1;
+ if(earlyExit) rgby2 = rgbyM;
+/*--------------------------------------------------------------------------*/
+ return rgby2; }
+/*==========================================================================*/
+#endif
+
+uniform sampler2D diffuseMap;
+
+uniform vec2 rcp_screen_res;
+uniform vec4 rcp_frame_opt;
+uniform vec4 rcp_frame_opt2;
+uniform vec2 screen_res;
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_tc;
+
+void main()
+{
+ vec4 diff = FxaaPixelShader(vary_tc, //pos
+ vec4(vary_fragcoord.xy, 0, 0), //fxaaConsolePosPos
+ diffuseMap, //tex
+ diffuseMap,
+ diffuseMap,
+ rcp_screen_res, //fxaaQualityRcpFrame
+ vec4(0,0,0,0), //fxaaConsoleRcpFrameOpt
+ rcp_frame_opt, //fxaaConsoleRcpFrameOpt2
+ rcp_frame_opt2, //fxaaConsole360RcpFrameOpt2
+ 0.75, //fxaaQualitySubpix
+ 0.07, //fxaaQualityEdgeThreshold
+ 0.03, //fxaaQualityEdgeThresholdMin
+ 8.0, //fxaaConsoleEdgeSharpness
+ 0.125, //fxaaConsoleEdgeThreshold
+ 0.05, //fxaaConsoleEdgeThresholdMin
+ vec4(0,0,0,0)); //fxaaConsole360ConstDir
+
+
+
+ //diff = texture2D(diffuseMap, vary_tc);
+
+ gl_FragColor = diff;
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
index bfb7760af8..29ca80ae92 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform sampler2D noiseMap;
@@ -38,7 +40,7 @@ uniform sampler2D depthGIMap;
uniform sampler2D lightFunc;
// Inputs
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
uniform vec2 screen_res;
@@ -182,5 +184,5 @@ void main()
vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- gl_FragData[0].xyz = giAmbient(pos, norm);
+ gl_FragColor.xyz = giAmbient(pos, norm);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl
index 190e32b6a3..e5d3bb8ea6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl
@@ -22,21 +22,27 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
-varying vec2 vary_fragcoord;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_fragcoord;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
+
vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
- vec4 tex = gl_MultiTexCoord0;
+ vec4 tex = vec4(texcoord0,0,1);
tex.w = 1.0;
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
index 7152e13946..a44173a2a4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
@@ -22,25 +22,30 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
uniform float minimum_alpha;
-uniform float maximum_alpha;
uniform sampler2D diffuseMap;
uniform sampler2D normalMap;
uniform sampler2D specularMap;
+VARYING vec2 vary_texcoord0;
+
void main()
{
- vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
- if (col.a < minimum_alpha || col.a > maximum_alpha)
+ if (col.a < minimum_alpha)
{
discard;
}
gl_FragData[0] = vec4(col.rgb, col.a * 0.005);
- gl_FragData[1] = texture2D(specularMap, gl_TexCoord[0].xy);
- gl_FragData[2] = vec4(texture2D(normalMap, gl_TexCoord[0].xy).xyz, 0.0);
+ gl_FragData[1] = texture2D(specularMap, vary_texcoord0.xy);
+ gl_FragData[2] = vec4(texture2D(normalMap, vary_texcoord0.xy).xyz, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
index 0cf8c68173..42266e9378 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
@@ -22,14 +22,18 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
void main()
{
//transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-
- gl_FrontColor = gl_Color;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
index 4ba26fb0c6..e014a14ad8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
@@ -22,12 +22,14 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
-
+
uniform sampler2DRect diffuseMap;
-varying vec2 vary_fragcoord;
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec2 vary_fragcoord;
void main()
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
index 9f22175f84..f2dc60aa5d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
@@ -23,19 +23,23 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
-
-
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
+VARYING vec4 vertex_color;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
+
vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 42212a978e..179c721a2f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect depthMap;
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
@@ -45,7 +47,7 @@ uniform int light_count;
uniform vec4 light[MAX_LIGHT_COUNT];
uniform vec4 light_col[MAX_LIGHT_COUNT];
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
uniform vec2 screen_res;
uniform float far_z;
@@ -124,7 +126,7 @@ void main()
if (sa > 0.0)
{
- sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc,vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
sa *= noise;
col += da*sa*light_col[i].rgb*spec.rgb;
}
@@ -141,6 +143,4 @@ void main()
gl_FragColor.rgb = out_col;
gl_FragColor.a = 0.0;
-
- //gl_FragColor = vec4(0.1, 0.025, 0.025/4.0, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl
deleted file mode 100644
index 863bac19cf..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * @file multiPointLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-
-
-uniform vec3 env_mat[3];
-uniform float sun_wash;
-
-uniform int light_count;
-
-#define MAX_LIGHT_COUNT 16
-uniform vec4 light[MAX_LIGHT_COUNT];
-uniform vec4 light_col[MAX_LIGHT_COUNT];
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform float far_z;
-
-uniform mat4 inv_proj;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
- ivec2 itc = ivec2(frag);
-
- int wght = 0;
- vec3 fcol = vec3(0,0,0);
-
- for (int s = 0; s < samples; ++s)
- {
- vec3 pos = getPosition(itc, s).xyz;
- if (pos.z >= far_z)
- {
- vec3 norm = texelFetch(normalMap, itc, s).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- norm = normalize(norm);
- vec4 spec = texelFetch(specularRect, itc, s);
- vec3 diff = texelFetch(diffuseRect, itc, s).rgb;
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- vec3 out_col = vec3(0,0,0);
- vec3 npos = normalize(-pos);
-
- // As of OSX 10.6.7 ATI Apple's crash when using a variable size loop
- for (int i = 0; i < MAX_LIGHT_COUNT; ++i)
- {
- bool light_contrib = (i < light_count);
-
- vec3 lv = light[i].xyz-pos;
- float dist2 = dot(lv,lv);
- dist2 /= light[i].w;
- if (dist2 > 1.0)
- {
- light_contrib = false;
- }
-
- float da = dot(norm, lv);
- if (da < 0.0)
- {
- light_contrib = false;
- }
-
- if (light_contrib)
- {
- lv = normalize(lv);
- da = dot(norm, lv);
-
- float fa = light_col[i].a+1.0;
- float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
- dist_atten *= noise;
-
- float lit = da * dist_atten;
-
- vec3 col = light_col[i].rgb*lit*diff;
- //vec3 col = vec3(dist2, light_col[i].a, lit);
-
- if (spec.a > 0.0)
- {
- //vec3 ref = dot(pos+lv, norm);
-
- float sa = dot(normalize(lv+npos),norm);
-
- if (sa > 0.0)
- {
- sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
- sa *= noise;
- col += da*sa*light_col[i].rgb*spec.rgb;
- }
- }
-
- out_col += col;
- }
- }
-
- fcol += out_col;
- ++wght;
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/samples;
- gl_FragColor.a = 0.0;
-
-
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
index 1362a48daf..eefefa640d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
@@ -23,16 +23,17 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
void main()
{
//transform vertex
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
vary_fragcoord = pos;
gl_Position = pos;
- gl_FrontColor = gl_Color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 85b0ce5beb..2196d14895 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -23,7 +23,9 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
//class 1 -- no shadows
@@ -35,7 +37,6 @@ uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform samplerCube environmentMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
@@ -55,9 +56,12 @@ uniform float sun_wash;
uniform int proj_shadow_idx;
uniform float shadow_fade;
-varying vec4 vary_light;
+uniform vec3 center;
+uniform vec3 color;
+uniform float falloff;
+uniform float size;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
uniform vec2 screen_res;
uniform mat4 inv_proj;
@@ -110,7 +114,7 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
vec4 getPosition(vec2 pos_screen)
{
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
+ float depth = texture2DRect(depthMap, pos_screen.xy).r;
vec2 sc = pos_screen.xy*2.0;
sc /= screen_res;
sc -= vec2(1.0,1.0);
@@ -129,9 +133,9 @@ void main()
frag.xy *= screen_res;
vec3 pos = getPosition(frag.xy).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
+ vec3 lv = center.xyz-pos.xyz;
float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
+ dist2 /= size;
if (dist2 > 1.0)
{
discard;
@@ -150,7 +154,7 @@ void main()
proj_tc.xyz /= proj_tc.w;
- float fa = gl_Color.a+1.0;
+ float fa = falloff+1.0;
float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
if (dist_atten <= 0.0)
{
@@ -182,7 +186,7 @@ void main()
vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+ vec3 lcol = color.rgb * plcol.rgb * plcol.a;
lit = da * dist_atten * noise;
@@ -199,7 +203,7 @@ void main()
amb_da = min(amb_da, 1.0-lit);
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+ col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
}
@@ -232,7 +236,7 @@ void main()
stc.y > 0.0)
{
vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
+ col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb;
}
}
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl
deleted file mode 100644
index 10285817c2..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl
+++ /dev/null
@@ -1,250 +0,0 @@
-/**
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-//class 1 -- no shadows
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod; //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- int wght = 0;
-
- vec3 fcol = vec3(0,0,0);
-
- vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
-
- ivec2 itc = ivec2(frag.xy);
-
- for (int i = 0; i < samples; ++i)
- {
- vec3 pos = getPosition(itc, i).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz*2.0-1.0;
-
- norm = normalize(norm);
- float l_dist = -dot(lv, proj_n);
-
- vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
- if (proj_tc.z >= 0.0)
- {
- proj_tc.xyz /= proj_tc.w;
-
- float fa = gl_Color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten > 0.0)
- {
- lv = proj_origin-pos.xyz;
- lv = normalize(lv);
- float da = dot(norm, lv);
-
- vec3 col = vec3(0,0,0);
-
- vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- if (proj_tc.z > 0.0 &&
- proj_tc.x < 1.0 &&
- proj_tc.y < 1.0 &&
- proj_tc.x > 0.0 &&
- proj_tc.y > 0.0)
- {
- float lit = 0.0;
- float amb_da = proj_ambiance;
-
- if (da > 0.0)
- {
- float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
- float lod = diff * proj_lod;
-
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-
- lit = da * dist_atten * noise;
-
- col = lcol*lit*diff_tex;
- amb_da += (da*0.5)*proj_ambiance;
- }
-
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
- amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
-
- amb_da = min(amb_da, 1.0-lit);
-
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
- }
-
-
- vec4 spec = texelFetch(specularRect, itc, i);
- if (spec.a > 0.0)
- {
- vec3 ref = reflect(normalize(pos), norm);
-
- //project from point pos in direction ref to plane proj_p, proj_n
- vec3 pdelta = proj_p-pos;
- float ds = dot(ref, proj_n);
-
- if (ds < 0.0)
- {
- vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
- if (stc.z > 0.0)
- {
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
- if (stc.x < 1.0 &&
- stc.y < 1.0 &&
- stc.x > 0.0 &&
- stc.y > 0.0)
- {
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
- }
- }
- }
- }
-
- fcol += col;
- ++wght;
- }
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/samples;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
new file mode 100644
index 0000000000..879942d8fa
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file normgenF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2D alphaMap;
+
+VARYING vec2 vary_texcoord0;
+
+uniform float stepX;
+uniform float stepY;
+uniform float norm_scale;
+
+void main()
+{
+ float alpha = texture2D(alphaMap, vary_texcoord0).a;
+
+ vec3 right = vec3(norm_scale, 0, (texture2D(alphaMap, vary_texcoord0+vec2(stepX, 0)).a-alpha)*255);
+ vec3 left = vec3(-norm_scale, 0, (texture2D(alphaMap, vary_texcoord0-vec2(stepX, 0)).a-alpha)*255);
+ vec3 up = vec3(0, -norm_scale, (texture2D(alphaMap, vary_texcoord0-vec2(0, stepY)).a-alpha)*255);
+ vec3 down = vec3(0, norm_scale, (texture2D(alphaMap, vary_texcoord0+vec2(0, stepY)).a-alpha)*255);
+
+ vec3 norm = cross(right, down) + cross(down, left) + cross(left,up) + cross(up, right);
+
+ norm = normalize(norm);
+ norm *= 0.5;
+ norm += 0.5;
+
+ gl_FragColor = vec4(norm, alpha);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl
new file mode 100644
index 0000000000..9bceae05b7
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl
@@ -0,0 +1,36 @@
+/**
+ * @file normgenV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ gl_Position = vec4(position.x*2.0-1.0, position.y*2.0-1.0, -1.0, 1.0);
+ vary_texcoord0 = texcoord0;
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 0771f9b91a..b673d00d6e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect normalMap;
@@ -38,9 +40,12 @@ uniform sampler2DRect depthMap;
uniform vec3 env_mat[3];
uniform float sun_wash;
-varying vec4 vary_light;
+uniform vec3 center;
+uniform vec3 color;
+uniform float falloff;
+uniform float size;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
uniform vec2 screen_res;
uniform mat4 inv_proj;
@@ -67,9 +72,9 @@ void main()
frag.xy *= screen_res;
vec3 pos = getPosition(frag.xy).xyz;
- vec3 lv = vary_light.xyz-pos;
+ vec3 lv = center.xyz-pos;
float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
+ dist2 /= size;
if (dist2 > 1.0)
{
discard;
@@ -90,11 +95,11 @@ void main()
float noise = texture2D(noiseMap, frag.xy/128.0).b;
vec3 col = texture2DRect(diffuseRect, frag.xy).rgb;
- float fa = gl_Color.a+1.0;
+ float fa = falloff+1.0;
float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
float lit = da * dist_atten * noise;
- col = gl_Color.rgb*lit*col;
+ col = color.rgb*lit*col;
vec4 spec = texture2DRect(specularRect, frag.xy);
if (spec.a > 0.0)
@@ -102,9 +107,9 @@ void main()
float sa = dot(normalize(lv-normalize(pos)),norm);
if (sa > 0.0)
{
- sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
sa *= noise;
- col += da*sa*gl_Color.rgb*spec.rgb;
+ col += da*sa*color.rgb*spec.rgb;
}
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl
deleted file mode 100644
index cdce58c84e..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- * @file pointLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-
-
-uniform vec3 env_mat[3];
-uniform float sun_wash;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-uniform vec4 viewport;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = (vec2(pos_screen.xy)-viewport.xy)*2.0;
- sc /= viewport.zw;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- vec4 frag = vary_fragcoord;
- frag.xyz /= frag.w;
- frag.xyz = frag.xyz*0.5+0.5;
- frag.xy *= screen_res;
-
- ivec2 itc = ivec2(frag.xy);
-
- int wght = 0;
- vec3 fcol = vec3(0,0,0);
-
- for (int s = 0; s < samples; ++s)
- {
- vec3 pos = getPosition(itc, s).xyz;
- vec3 lv = vary_light.xyz-pos;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, s).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- float da = dot(norm, lv);
- if (da >= 0.0)
- {
- norm = normalize(norm);
- lv = normalize(lv);
- da = dot(norm, lv);
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
-
- vec3 col = texelFetch(diffuseRect, itc, s).rgb;
- float fa = gl_Color.a+1.0;
- float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
- float lit = da * dist_atten * noise;
-
- col = gl_Color.rgb*lit*col;
-
- vec4 spec = texelFetch(specularRect, itc, s);
- if (spec.a > 0.0)
- {
- float sa = dot(normalize(lv-normalize(pos)),norm);
- if (sa > 0.0)
- {
- sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
- sa *= noise;
- col += da*sa*gl_Color.rgb*spec.rgb;
- }
- }
-
- fcol += col;
- ++wght;
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/samples;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
index db1b9d3feb..cb14e6d4e8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
@@ -23,23 +23,17 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
-varying vec4 vary_light;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
void main()
{
//transform vertex
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
vary_fragcoord = pos;
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
-
- vary_light = gl_MultiTexCoord0;
-
gl_Position = pos;
-
- gl_FrontColor = gl_Color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index 29f5f899ba..4603d99c5e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -22,82 +22,32 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect edgeMap;
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2D bloomMap;
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-uniform float focal_distance;
-uniform float blur_constant;
-uniform float tan_pixel_angle;
-uniform float magnification;
+uniform sampler2DRect diffuseRect;
uniform mat4 inv_proj;
uniform vec2 screen_res;
+uniform float max_cof;
+uniform float res_scale;
-varying vec2 vary_fragcoord;
-
-float getDepth(vec2 pos_screen)
-{
- float z = texture2DRect(depthMap, pos_screen.xy).r;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-float calc_cof(float depth)
-{
- float sc = abs(depth-focal_distance)/-depth*blur_constant;
-
- sc /= magnification;
-
- // tan_pixel_angle = pixel_length/-depth;
- float pixel_length = tan_pixel_angle*-focal_distance;
-
- sc = sc/pixel_length;
- sc *= 1.414;
-
- return sc;
-}
+VARYING vec2 vary_fragcoord;
-void dofSampleNear(inout vec4 diff, inout float w, float cur_sc, vec2 tc)
+void dofSample(inout vec4 diff, inout float w, float min_sc, vec2 tc)
{
- float d = getDepth(tc);
-
- float sc = calc_cof(d);
-
- float wg = 0.25;
-
vec4 s = texture2DRect(diffuseRect, tc);
- // de-weight dull areas to make highlights 'pop'
- wg += s.r+s.g+s.b;
-
- diff += wg*s;
-
- w += wg;
-}
-void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, vec2 tc)
-{
- float d = getDepth(tc);
-
- float sc = calc_cof(d);
-
- if (sc > min_sc //sampled pixel is more "out of focus" than current sample radius
- || d < cur_depth) //sampled pixel is further away than current pixel
+ float sc = s.a*max_cof;
+
+ if (sc > min_sc) //sampled pixel is more "out of focus" than current sample radius
{
float wg = 0.25;
- vec4 s = texture2DRect(diffuseRect, tc);
// de-weight dull areas to make highlights 'pop'
wg += s.r+s.g+s.b;
@@ -107,30 +57,20 @@ void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ve
}
}
-
void main()
{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
vec2 tc = vary_fragcoord.xy;
- float depth = getDepth(tc);
-
vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
{
float w = 1.0;
- float sc = calc_cof(depth);
- sc = min(abs(sc), 10.0);
-
- float fd = depth*0.5f;
-
+ float sc = diff.a*max_cof;
+
float PI = 3.14159265358979323846264;
// sample quite uniformly spaced points within a circle, for a circular 'bokeh'
- //if (depth < focal_distance)
{
while (sc > 0.5)
{
@@ -141,7 +81,7 @@ void main()
float samp_x = sc*sin(ang);
float samp_y = sc*cos(ang);
// you could test sample coords against an interesting non-circular aperture shape here, if desired.
- dofSample(diff, w, sc, depth, vary_fragcoord.xy + vec2(samp_x,samp_y));
+ dofSample(diff, w, sc, vary_fragcoord.xy + vec2(samp_x,samp_y));
}
sc -= 1.0;
}
@@ -150,6 +90,5 @@ void main()
diff /= w;
}
- vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
- gl_FragColor = diff + bloom;
+ gl_FragColor = diff;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl
deleted file mode 100644
index 792102a64d..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * @file postDeferredF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS edgeMap;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D bloomMap;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-uniform float focal_distance;
-uniform float blur_constant;
-uniform float tan_pixel_angle;
-uniform float magnification;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-varying vec2 vary_fragcoord;
-
-vec4 texture2DMS(sampler2DMS tex, ivec2 tc)
-{
- vec4 ret = vec4(0,0,0,0);
- for (int i = 0; i < samples; ++i)
- {
- ret += texelFetch(tex, tc, i);
- }
-
- return ret/samples;
-}
-
-float getDepth(ivec2 pos_screen)
-{
- float z = texture2DMS(depthMap, pos_screen.xy).r;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-float calc_cof(float depth)
-{
- float sc = abs(depth-focal_distance)/-depth*blur_constant;
-
- sc /= magnification;
-
- // tan_pixel_angle = pixel_length/-depth;
- float pixel_length = tan_pixel_angle*-focal_distance;
-
- sc = sc/pixel_length;
- sc *= 1.414;
-
- return sc;
-}
-
-void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ivec2 tc)
-{
- float d = getDepth(tc);
-
- float sc = calc_cof(d);
-
- if (sc > min_sc //sampled pixel is more "out of focus" than current sample radius
- || d < cur_depth) //sampled pixel is further away than current pixel
- {
- float wg = 0.25;
-
- vec4 s = texture2DMS(diffuseRect, tc);
- // de-weight dull areas to make highlights 'pop'
- wg += s.r+s.g+s.b;
-
- diff += wg*s;
-
- w += wg;
- }
-}
-
-
-void main()
-{
- ivec2 itc = ivec2(vary_fragcoord.xy);
-
- vec3 norm = texture2DMS(normalMap, itc).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- float depth = getDepth(itc);
-
- vec4 diff = texture2DMS(diffuseRect, itc);
-
- {
- float w = 1.0;
-
- float sc = calc_cof(depth);
- sc = min(abs(sc), 10.0);
-
- float fd = depth*0.5f;
-
- float PI = 3.14159265358979323846264;
-
- int isc = int(sc);
-
- // sample quite uniformly spaced points within a circle, for a circular 'bokeh'
- //if (depth < focal_distance)
- {
- for (int x = -isc; x <= isc; x+=2)
- {
- for (int y = -isc; y <= isc; y+=2)
- {
- ivec2 cur_samp = ivec2(x,y);
- float cur_sc = length(vec2(cur_samp));
- if (cur_sc < sc)
- {
- dofSample(diff, w, cur_sc, depth, itc+cur_samp);
- }
- }
- }
- }
-
- diff /= w;
- }
-
- vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
- gl_FragColor = diff + bloom;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index 34e30a3070..c275434777 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -1,5 +1,5 @@
/**
- * @file postDeferredF.glsl
+ * @file postDeferredNoDoFF.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -23,15 +23,17 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseRect;
uniform sampler2D bloomMap;
uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
void main()
{
@@ -40,3 +42,4 @@ void main()
vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
gl_FragColor = diff + bloom;
}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl
deleted file mode 100644
index 41849858e7..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file postDeferredF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2D bloomMap;
-
-uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
-
-vec4 texture2DMS(sampler2DMS tex, ivec2 tc)
-{
- vec4 ret = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; ++i)
- {
- ret += texelFetch(tex,tc,i);
- }
-
- return ret/samples;
-}
-
-void main()
-{
- vec4 diff = texture2DMS(diffuseRect, ivec2(vary_fragcoord.xy));
-
- vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
- gl_FragColor = diff + bloom;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
index cb83dda795..8edf5b2723 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
@@ -22,16 +22,23 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_tc;
+
+uniform vec2 tc_scale;
-varying vec2 vary_fragcoord;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
+ vary_tc = (pos.xy*0.5+0.5)*tc_scale;
vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
index 99257daca4..84d65d5b3b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
@@ -22,9 +22,11 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
+ #ifdef DEFINE_GL_FRAGCOLOR
+ out vec4 gl_FragColor;
+ #endif
+
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform sampler2DRect giLightMap;
@@ -38,7 +40,7 @@ uniform int kern_length;
uniform float kern_scale;
uniform vec3 blur_quad;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
uniform mat4 inv_proj;
uniform vec2 screen_res;
@@ -94,7 +96,5 @@ void main()
col = col*col*blur_quad.x + col*blur_quad.y + blur_quad.z;
- gl_FragData[0].xyz = col;
-
- //gl_FragColor = ccol;
+ gl_FragColor.rgb = col;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl
index 6231ee68b7..0d5c8e7287 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl
@@ -22,16 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
+
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
index 615317febf..c1fb7b55d4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
@@ -22,19 +22,24 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform float minimum_alpha;
-uniform float maximum_alpha;
uniform sampler2D diffuseMap;
-varying vec4 post_pos;
+VARYING vec4 post_pos;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- float alpha = texture2D(diffuseMap, gl_TexCoord[0].xy).a * gl_Color.a;
+ float alpha = diffuseLookup(vary_texcoord0.xy).a * vertex_color.a;
- if (alpha < minimum_alpha || alpha > maximum_alpha)
+ if (alpha < minimum_alpha)
{
discard;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
index 4be18a9c5e..7d3b06c56e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
@@ -22,20 +22,30 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
-varying vec4 post_pos;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 post_pos;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void passTextureIndex();
void main()
{
//transform vertex
- vec4 pos = gl_ModelViewProjectionMatrix*gl_Vertex;
-
+ vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
post_pos = pos;
gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_FrontColor = gl_Color;
+ passTextureIndex();
+
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
index 541f08d5fe..bf75ca262e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
@@ -23,9 +23,11 @@
* $/LicenseInfo$
*/
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-
-varying vec4 post_pos;
+VARYING vec4 post_pos;
void main()
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
index fc3ff45614..8b46e81f90 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
@@ -22,15 +22,17 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
-varying vec4 post_pos;
+ATTRIBUTE vec3 position;
+
+VARYING vec4 post_pos;
void main()
{
//transform vertex
- vec4 pos = gl_ModelViewProjectionMatrix*gl_Vertex;
+ vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
post_pos = pos;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
index 59c0a994cd..96ad0aa93a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
@@ -23,13 +23,15 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
/////////////////////////////////////////////////////////////////////////
// The fragment shader for the sky
/////////////////////////////////////////////////////////////////////////
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
uniform sampler2D cloud_noise_texture;
uniform vec4 gamma;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
index 3a44bb6d26..721de18e0b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
@@ -22,15 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
// SKY ////////////////////////////////////////////////////////////////////////
// The vertex shader for creating the atmospheric sky
///////////////////////////////////////////////////////////////////////////////
// Output parameters
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
+VARYING vec2 vary_texcoord0;
// Inputs
uniform vec3 camPosLocal;
@@ -57,12 +61,12 @@ void main()
{
// World / view / projection
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = texcoord0;
// Get relative position
- vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
- //vec3 P = gl_Vertex.xyz + vec3(0,50,0);
+ vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
+ //vec3 P = position.xyz + vec3(0,50,0);
// Set altitude
if (P.y > 0.)
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 855d89ebe6..51110ae4df 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -23,17 +23,18 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect positionMap;
uniform sampler2DRect normalMap;
uniform sampler2DRect lightMap;
uniform sampler2DRect depthMap;
-uniform sampler2D noiseMap;
uniform samplerCube environmentMap;
uniform sampler2D lightFunc;
@@ -58,13 +59,11 @@ uniform vec4 distance_multiplier;
uniform vec4 max_y;
uniform vec4 glow;
uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-//uniform mat4 shadow_matrix[3];
-//uniform vec4 shadow_clip;
+uniform mat3 env_mat;
uniform mat3 ssao_effect_mat;
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+uniform vec3 sun_dir;
+VARYING vec2 vary_fragcoord;
vec3 vary_PositionEye;
@@ -146,10 +145,6 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
vec3 P = inPositionEye;
setPositionEye(P);
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
vec3 tmpLightnorm = lightnorm.xyz;
vec3 Pn = normalize(P);
@@ -281,9 +276,8 @@ void main()
vec3 pos = getPosition_d(tc, depth).xyz;
vec3 norm = texture2DRect(normalMap, tc).xyz;
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-
- float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
+
+ float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
vec4 diffuse = texture2DRect(diffuseRect, tc);
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
@@ -304,13 +298,18 @@ void main()
// the old infinite-sky shiny reflection
//
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
+ float sa = dot(refnormpersp, sun_dir.xyz);
+ vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).r;
// add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb;
bloom = dot(spec_contrib, spec_contrib);
col += spec_contrib;
+
+ //add environmentmap
+ vec3 env_vec = env_mat * refnormpersp;
+ col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb,
+ max(spec.a-diffuse.a*2.0, 0.0));
}
col = atmosLighting(col);
@@ -324,5 +323,6 @@ void main()
}
gl_FragColor.rgb = col;
+
gl_FragColor.a = bloom;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
deleted file mode 100644
index f118b0da2a..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
- * @file softenLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2DMS depthMap;
-uniform sampler2D noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D lightFunc;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-//uniform mat4 shadow_matrix[3];
-//uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
- return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
- return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
- return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
- return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
- vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
- vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
- vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
- vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
- vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
- vec3 P = inPositionEye;
- setPositionEye(P);
-
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
- vec3 tmpLightnorm = lightnorm.xyz;
-
- vec3 Pn = normalize(P);
- float Plen = length(P);
-
- vec4 temp1 = vec4(0);
- vec3 temp2 = vec3(0);
- vec4 blue_weight;
- vec4 haze_weight;
- vec4 sunlight = sunlight_color;
- vec4 light_atten;
-
- //sunlight attenuation effect (hue and brightness) due to atmosphere
- //this is used later for sunlight modulation at various altitudes
- light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
- //I had thought blue_density and haze_density should have equal weighting,
- //but attenuation due to haze_density tends to seem too strong
-
- temp1 = blue_density + vec4(haze_density.r);
- blue_weight = blue_density / temp1;
- haze_weight = vec4(haze_density.r) / temp1;
-
- //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
- temp2.y = max(0.0, tmpLightnorm.y);
- temp2.y = 1. / temp2.y;
- sunlight *= exp( - light_atten * temp2.y);
-
- // main atmospheric scattering line integral
- temp2.z = Plen * density_multiplier.x;
-
- // Transparency (-> temp1)
- // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
- // compiler gets confused.
- temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
- //final atmosphere attenuation factor
- setAtmosAttenuation(temp1.rgb);
-
- //compute haze glow
- //(can use temp2.x as temp because we haven't used it yet)
- temp2.x = dot(Pn, tmpLightnorm.xyz);
- temp2.x = 1. - temp2.x;
- //temp2.x is 0 at the sun and increases away from sun
- temp2.x = max(temp2.x, .03); //was glow.y
- //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
- temp2.x *= glow.x;
- //higher glow.x gives dimmer glow (because next step is 1 / "angle")
- temp2.x = pow(temp2.x, glow.z);
- //glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
- //add "minimum anti-solar illumination"
- temp2.x += .25;
-
- //increase ambient when there are more clouds
- vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
-
- /* decrease value and saturation (that in HSV, not HSL) for occluded areas
- * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
- * // The following line of code performs the equivalent of:
- * float ambAlpha = tmpAmbient.a;
- * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
- * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
- * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
- */
- tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
- //haze color
- setAdditiveColor(
- vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
- + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
- + tmpAmbient)));
-
- //brightness of surface both sunlight and ambient
- setSunlitColor(vec3(sunlight * .5));
- setAmblitColor(vec3(tmpAmbient * .25));
- setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor();
- return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor() * 2.0;
- return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
- return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
- return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
- return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
- return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
- return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
- //soft clip effect:
- light = 1. - clamp(light, vec3(0.), vec3(1.));
- light = 1. - pow(light, gamma.xxx);
-
- return light;
-}
-
-vec4 texture2DMS(sampler2DMS tex, ivec2 tc)
-{
- vec4 ret = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; ++i)
- {
- ret += texelFetch(tex,tc,i);
- }
-
- return ret/samples;
-}
-
-void main()
-{
- vec2 tc = vary_fragcoord.xy;
- ivec2 itc = ivec2(tc);
-
- vec4 fcol = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; ++i)
- {
- float depth = texelFetch(depthMap, itc, i).r;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
-
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-
- float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-
- vec4 diffuse = texelFetch(diffuseRect, itc, i);
- vec3 col;
- float bloom = 0.0;
-
- if (diffuse.a < 0.9)
- {
- vec4 spec = texelFetch(specularRect, itc, i);
-
- calcAtmospherics(pos.xyz, 1.0);
-
- col = atmosAmbient(vec3(0));
- col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a));
-
- col *= diffuse.rgb;
-
- if (spec.a > 0.0) // specular reflection
- {
- // the old infinite-sky shiny reflection
- //
- vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
- // add the two types of shiny together
- vec3 spec_contrib = dumbshiny * spec.rgb;
- bloom = dot(spec_contrib, spec_contrib);
- col += spec_contrib;
- }
-
- col = atmosLighting(col);
- col = scaleSoftClip(col);
- col = mix(col, diffuse.rgb, diffuse.a);
- }
- else
- {
- col = diffuse.rgb;
- }
-
- fcol += vec4(col, bloom);
- }
-
- gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
index fed238510a..c6031fc45a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
@@ -23,22 +23,18 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
uniform vec2 screen_res;
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
void main()
{
//transform vertex
- gl_Position = ftransform();
-
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
-
- vary_light = gl_MultiTexCoord0;
+ vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 7363bd6715..cc0f4e5b6b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -23,17 +23,18 @@
* $/LicenseInfo$
*/
-
-
+
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
-uniform samplerCube environmentMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
@@ -50,9 +51,12 @@ uniform float far_clip;
uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
uniform float sun_wash;
-varying vec4 vary_light;
+uniform vec3 center;
+uniform vec3 color;
+uniform float falloff;
+uniform float size;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
uniform vec2 screen_res;
uniform mat4 inv_proj;
@@ -78,9 +82,9 @@ void main()
frag.xy *= screen_res;
vec3 pos = getPosition(frag.xy).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
+ vec3 lv = center.xyz-pos.xyz;
float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
+ dist2 /= size;
if (dist2 > 1.0)
{
discard;
@@ -100,7 +104,7 @@ void main()
proj_tc.xyz /= proj_tc.w;
- float fa = gl_Color.a+1.0;
+ float fa = falloff+1.0;
float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
lv = proj_origin-pos.xyz;
@@ -126,7 +130,7 @@ void main()
vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+ vec3 lcol = color.rgb * plcol.rgb * plcol.a;
lit = da * dist_atten * noise;
@@ -145,7 +149,7 @@ void main()
amb_da = min(amb_da, 1.0-lit);
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+ col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
}
@@ -174,7 +178,7 @@ void main()
stc.y > 0.0)
{
vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
+ col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb;
}
}
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl
deleted file mode 100644
index 0c0171881f..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-//class 1 -- no shadows
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod; //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- vec4 frag = vary_fragcoord;
- frag.xyz /= frag.w;
- frag.xyz = frag.xyz*0.5+0.5;
- frag.xy *= screen_res;
- ivec2 itc = ivec2(frag.xy);
-
- vec3 fcol = vec3(0,0,0);
- int wght = 0;
-
- for (int i = 0; i < samples; ++i)
- {
- vec3 pos = getPosition(itc, i).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz*2.0-1.0;
-
- norm = normalize(norm);
- float l_dist = -dot(lv, proj_n);
-
- vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
- if (proj_tc.z >= 0.0)
- {
- proj_tc.xyz /= proj_tc.w;
-
- float fa = gl_Color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten > 0.0)
- {
- lv = proj_origin-pos.xyz;
- lv = normalize(lv);
- float da = dot(norm, lv);
-
- vec3 col = vec3(0,0,0);
-
- vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- if (proj_tc.z > 0.0 &&
- proj_tc.x < 1.0 &&
- proj_tc.y < 1.0 &&
- proj_tc.x > 0.0 &&
- proj_tc.y > 0.0)
- {
- float lit = 0.0;
- float amb_da = proj_ambiance;
-
- if (da > 0.0)
- {
- float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
- float lod = diff * proj_lod;
-
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-
- lit = da * dist_atten * noise;
-
- col = lcol*lit*diff_tex;
- amb_da += (da*0.5)*proj_ambiance;
- }
-
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
- amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
-
- amb_da = min(amb_da, 1.0-lit);
-
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
- }
-
-
- vec4 spec = texelFetch(specularRect, itc, i);
- if (spec.a > 0.0)
- {
- vec3 ref = reflect(normalize(pos), norm);
-
- //project from point pos in direction ref to plane proj_p, proj_n
- vec3 pdelta = proj_p-pos;
- float ds = dot(ref, proj_n);
-
- if (ds < 0.0)
- {
- vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
- if (stc.z > 0.0)
- {
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
- if (stc.x < 1.0 &&
- stc.y < 1.0 &&
- stc.x > 0.0 &&
- stc.y > 0.0)
- {
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
- }
- }
- }
- }
-
- fcol += col;
- ++wght;
- }
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/samples;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
index 4ab59d4d66..03fccd2766 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
@@ -22,14 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
uniform sampler2D diffuseMap;
void main()
{
- vec4 col = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 col = vertex_color * texture2D(diffuseMap, vary_texcoord0.xy);
gl_FragData[0] = col;
gl_FragData[1] = vec4(0,0,0,0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
index 84adf6bc41..8bc5b06379 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
@@ -22,14 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_FrontColor = gl_Color;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
index 78ea15e87a..adc7c5d005 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
@@ -23,12 +23,14 @@
* $/LicenseInfo$
*/
-
-
//class 1, no shadow, no SSAO, should never be called
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
void main()
{
gl_FragColor = vec4(0,0,0,0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl
deleted file mode 100644
index 78ea15e87a..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @file sunLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-//class 1, no shadow, no SSAO, should never be called
-
-#extension GL_ARB_texture_rectangle : enable
-
-void main()
-{
- gl_FragColor = vec4(0,0,0,0);
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
index 2f880d65dd..fc5959a33c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
@@ -23,9 +23,12 @@
*/
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
//class 1 -- no shadow, SSAO only
uniform sampler2DRect depthMap;
@@ -41,8 +44,7 @@ uniform float ssao_max_radius;
uniform float ssao_factor;
uniform float ssao_factor_inv;
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
+VARYING vec2 vary_fragcoord;
uniform mat4 inv_proj;
uniform vec2 screen_res;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl
deleted file mode 100644
index abb64334ed..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * @file sunLightSSAOF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-//class 1 -- no shadow, SSAO only
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample)
-{
- float ret = 1.0;
-
- vec2 kern[8];
- // exponentially (^2) distant occlusion samples spread around origin
- kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
- kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
- kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
- kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
- kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
- kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
- kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
- kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
- vec2 pos_screen = vary_fragcoord.xy;
- vec3 pos_world = pos.xyz;
- vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-
- float angle_hidden = 0.0;
- int points = 0;
-
- float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-
- // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations unrolling?)
- for (int i = 0; i < 8; i++)
- {
- ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect));
- vec3 samppos_world = getPosition(samppos_screen, sample).xyz;
-
- vec3 diff = pos_world - samppos_world;
- float dist2 = dot(diff, diff);
-
- // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
- // --> solid angle shrinking by the square of distance
- //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
- //(k should vary inversely with # of samples, but this is taken care of later)
-
- angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-
- // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
- points = points + int(diff.z > -1.0);
- }
-
- angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-
- ret = (1.0 - (float(points != 0) * angle_hidden));
-
- return min(ret, 1.0);
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
- ivec2 itc = ivec2(pos_screen);
-
- float col = 0;
-
- for (int i = 0; i < samples; i++)
- {
- vec4 pos = getPosition(itc, i);
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- col += calcAmbientOcclusion(pos,norm,i);
- }
-
- col /= samples;
-
- gl_FragColor[0] = 1.0;
- gl_FragColor[1] = col;
- gl_FragColor[2] = 1.0;
- gl_FragColor[3] = 1.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
index e7ab11c6ed..473d6df8fa 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
@@ -22,24 +22,20 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
- vary_light = gl_MultiTexCoord0;
-
- gl_FrontColor = gl_Color;
+ vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
index c6578ea177..5522e6c41d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
@@ -23,7 +23,9 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
uniform sampler2D detail_0;
uniform sampler2D detail_1;
@@ -31,24 +33,26 @@ uniform sampler2D detail_2;
uniform sampler2D detail_3;
uniform sampler2D alpha_ramp;
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
void main()
{
/// Note: This should duplicate the blending functionality currently used for the terrain rendering.
- vec4 color0 = texture2D(detail_0, gl_TexCoord[0].xy);
- vec4 color1 = texture2D(detail_1, gl_TexCoord[0].xy);
- vec4 color2 = texture2D(detail_2, gl_TexCoord[0].xy);
- vec4 color3 = texture2D(detail_3, gl_TexCoord[0].xy);
+ vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+ vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+ vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+ vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
- float alpha1 = texture2D(alpha_ramp, gl_TexCoord[0].zw).a;
- float alpha2 = texture2D(alpha_ramp,gl_TexCoord[1].xy).a;
- float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a;
+ float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+ float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+ float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
gl_FragData[0] = vec4(outColor.rgb, 0.0);
- gl_FragData[1] = vec4(outColor.rgb*0.2, 0.2);
+ gl_FragData[1] = vec4(0,0,0,0);
vec3 nvn = normalize(vary_normal);
gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
index fc19a73709..5effee4e4e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
@@ -22,10 +22,24 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
-varying vec3 vary_normal;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec3 vary_normal;
+
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+
+uniform vec4 object_plane_s;
+uniform vec4 object_plane_t;
vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
{
@@ -44,16 +58,16 @@ vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
- vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+ vary_normal = normalize(normal_matrix * normal);
// Transform and pass tex coords
- gl_TexCoord[0].xy = texgen_object(gl_Vertex, gl_MultiTexCoord0, gl_TextureMatrix[0], gl_ObjectPlaneS[0], gl_ObjectPlaneT[0]).xy;
+ vary_texcoord0.xy = texgen_object(vec4(position, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
- vec4 t = gl_MultiTexCoord1;
+ vec4 t = vec4(texcoord1,0,1);
- gl_TexCoord[0].zw = t.xy;
- gl_TexCoord[1].xy = t.xy-vec2(2.0, 0.0);
- gl_TexCoord[1].zw = t.xy-vec2(1.0, 0.0);
+ vary_texcoord0.zw = t.xy;
+ vary_texcoord1.xy = t.xy-vec2(2.0, 0.0);
+ vary_texcoord1.zw = t.xy-vec2(1.0, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
index 56a149523e..ea98d6884c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
@@ -22,17 +22,28 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
uniform sampler2D diffuseMap;
-varying vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
+
+uniform float minimum_alpha;
void main()
{
- vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
- gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
+ vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
+ if (col.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ gl_FragData[0] = vec4(vertex_color.rgb*col.rgb, 0.0);
gl_FragData[1] = vec4(0,0,0,0);
vec3 nvn = normalize(vary_normal);
gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
new file mode 100644
index 0000000000..20d0170535
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
@@ -0,0 +1,49 @@
+/**
+ * @file treeShadowF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+VARYING vec4 post_pos;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ float alpha = texture2D(diffuseMap, vary_texcoord0.xy).a;
+
+ if (alpha < minimum_alpha)
+ {
+ discard;
+ }
+
+ gl_FragColor = vec4(1,1,1,1);
+
+ gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl
new file mode 100644
index 0000000000..e472a75304
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl
@@ -0,0 +1,45 @@
+/**
+ * @file treeShadowV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 post_pos;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ //transform vertex
+ vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
+
+ post_pos = pos;
+
+ gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w);
+
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
index 01401028d6..3b6571a24a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
@@ -22,18 +22,26 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+uniform mat3 normal_matrix;
-varying vec3 vary_normal;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
//transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+ vary_normal = normalize(normal_matrix * normal);
- gl_FrontColor = gl_Color;
+ vertex_color = vec4(1,1,1,1);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index c3e7371c8e..4c9ea24a24 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
vec3 scaleSoftClip(vec3 inColor);
vec3 atmosTransport(vec3 inColor);
@@ -58,10 +60,10 @@ uniform vec2 screen_res;
uniform mat4 norm_mat; //region space to screen space
//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
-varying vec4 vary_position;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
+VARYING vec4 vary_position;
void main()
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
index 9d415ade85..9734acf005 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
@@ -22,7 +22,11 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
void calcAtmospherics(vec3 inPositionEye);
@@ -33,11 +37,11 @@ uniform float time;
uniform vec3 eyeVec;
uniform float waterHeight;
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
-varying vec4 vary_position;
+VARYING vec4 vary_position;
float wave(vec2 v, float t, float f, vec2 d, float s)
{
@@ -47,43 +51,42 @@ float wave(vec2 v, float t, float f, vec2 d, float s)
void main()
{
//transform vertex
- vec4 position = gl_Vertex;
- mat4 modelViewProj = gl_ModelViewProjectionMatrix;
+ vec4 pos = vec4(position.xyz, 1.0);
+ mat4 modelViewProj = modelview_projection_matrix;
vec4 oPosition;
//get view vector
vec3 oEyeVec;
- oEyeVec.xyz = position.xyz-eyeVec;
+ oEyeVec.xyz = pos.xyz-eyeVec;
float d = length(oEyeVec.xy);
float ld = min(d, 2560.0);
- position.xy = eyeVec.xy + oEyeVec.xy/d*ld;
+ pos.xy = eyeVec.xy + oEyeVec.xy/d*ld;
view.xyz = oEyeVec;
d = clamp(ld/1536.0-0.5, 0.0, 1.0);
d *= d;
- oPosition = position;
+ oPosition = vec4(position, 1.0);
oPosition.z = mix(oPosition.z, max(eyeVec.z*0.75, 0.0), d);
- vary_position = gl_ModelViewMatrix * oPosition;
+ vary_position = modelview_matrix * oPosition;
oPosition = modelViewProj * oPosition;
refCoord.xyz = oPosition.xyz + vec3(0,0,0.2);
//get wave position parameter (create sweeping horizontal waves)
- vec3 v = position.xyz;
+ vec3 v = pos.xyz;
v.x += (cos(v.x*0.08/*+time*0.01*/)+sin(v.y*0.02))*6.0;
//push position for further horizon effect.
- position.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
- position.w = 1.0;
- position = position*gl_ModelViewMatrix;
-
- calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz);
-
+ pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
+ pos.w = 1.0;
+ pos = modelview_matrix*pos;
+ calcAtmospherics(pos.xyz);
+
//pass wave parameters to pixel shader
vec2 bigWave = (v.xy) * vec2(0.04,0.04) + d1 * time * 0.055;
//get two normal map (detail map) texture coordinates
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
index e827863436..9a3d792224 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseMap;
uniform float minLuminance;
uniform float maxExtractAlpha;
@@ -34,10 +36,11 @@ uniform vec3 lumWeights;
uniform vec3 warmthWeights;
uniform float warmthAmount;
+VARYING vec2 vary_texcoord0;
+
void main()
{
- vec4 col = texture2DRect(diffuseMap, gl_TexCoord[0].xy);
-
+ vec4 col = texture2DRect(diffuseMap, vary_texcoord0.xy);
/// CALCULATING LUMINANCE (Using NTSC lum weights)
/// http://en.wikipedia.org/wiki/Luma_%28video%29
float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) );
@@ -45,4 +48,5 @@ void main()
gl_FragColor.rgb = col.rgb;
gl_FragColor.a = max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha);
+
}
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
deleted file mode 100644
index c2cc8ed567..0000000000
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file glowExtractF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseMap;
-uniform float minLuminance;
-uniform float maxExtractAlpha;
-uniform vec3 lumWeights;
-uniform vec3 warmthWeights;
-uniform float warmthAmount;
-
-void main()
-{
- ivec2 itc = ivec2(gl_TexCoord[0].xy);
- vec4 fcol = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; i++)
- {
- vec4 col = texelFetch(diffuseMap, itc, i);
-
- /// CALCULATING LUMINANCE (Using NTSC lum weights)
- /// http://en.wikipedia.org/wiki/Luma_%28video%29
- float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) );
- float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) );
-
- fcol += vec4(col.rgb, max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha));
- }
-
- gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
index 8db6d1bf24..1396dc6973 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
@@ -23,11 +23,16 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+ gl_Position = modelview_projection_matrix * vec4(position, 1.0);
- gl_TexCoord[0].xy = gl_MultiTexCoord0.xy;
+ vary_texcoord0.xy = texcoord0;
}
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
index 75cff75ea9..90bb84323c 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
@@ -23,11 +23,18 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
uniform sampler2D diffuseMap;
uniform float glowStrength;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+VARYING vec4 vary_texcoord2;
+VARYING vec4 vary_texcoord3;
+
void main()
{
@@ -38,14 +45,14 @@ void main()
kern[0] = 0.25; kern[1] = 0.5; kern[2] = 0.8; kern[3] = 1.0;
kern[4] = 1.0; kern[5] = 0.8; kern[6] = 0.5; kern[7] = 0.25;
- col += kern[0] * texture2D(diffuseMap, gl_TexCoord[0].xy);
- col += kern[1] * texture2D(diffuseMap, gl_TexCoord[1].xy);
- col += kern[2] * texture2D(diffuseMap, gl_TexCoord[2].xy);
- col += kern[3] * texture2D(diffuseMap, gl_TexCoord[3].xy);
- col += kern[4] * texture2D(diffuseMap, gl_TexCoord[0].zw);
- col += kern[5] * texture2D(diffuseMap, gl_TexCoord[1].zw);
- col += kern[6] * texture2D(diffuseMap, gl_TexCoord[2].zw);
- col += kern[7] * texture2D(diffuseMap, gl_TexCoord[3].zw);
+ col += kern[0] * texture2D(diffuseMap, vary_texcoord0.xy);
+ col += kern[1] * texture2D(diffuseMap, vary_texcoord1.xy);
+ col += kern[2] * texture2D(diffuseMap, vary_texcoord2.xy);
+ col += kern[3] * texture2D(diffuseMap, vary_texcoord3.xy);
+ col += kern[4] * texture2D(diffuseMap, vary_texcoord0.zw);
+ col += kern[5] * texture2D(diffuseMap, vary_texcoord1.zw);
+ col += kern[6] * texture2D(diffuseMap, vary_texcoord2.zw);
+ col += kern[7] * texture2D(diffuseMap, vary_texcoord3.zw);
gl_FragColor = vec4(col.rgb * glowStrength, col.a);
}
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
index a5aacc0196..cdb2281578 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
@@ -23,20 +23,28 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
uniform vec2 glowDelta;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+VARYING vec4 vary_texcoord2;
+VARYING vec4 vary_texcoord3;
+
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+ gl_Position = modelview_projection_matrix * vec4(position, 1.0);
- gl_TexCoord[0].xy = gl_MultiTexCoord0.xy + glowDelta*(-3.5);
- gl_TexCoord[1].xy = gl_MultiTexCoord0.xy + glowDelta*(-2.5);
- gl_TexCoord[2].xy = gl_MultiTexCoord0.xy + glowDelta*(-1.5);
- gl_TexCoord[3].xy = gl_MultiTexCoord0.xy + glowDelta*(-0.5);
- gl_TexCoord[0].zw = gl_MultiTexCoord0.xy + glowDelta*(0.5);
- gl_TexCoord[1].zw = gl_MultiTexCoord0.xy + glowDelta*(1.5);
- gl_TexCoord[2].zw = gl_MultiTexCoord0.xy + glowDelta*(2.5);
- gl_TexCoord[3].zw = gl_MultiTexCoord0.xy + glowDelta*(3.5);
+ vary_texcoord0.xy = texcoord0 + glowDelta*(-3.5);
+ vary_texcoord1.xy = texcoord0 + glowDelta*(-2.5);
+ vary_texcoord2.xy = texcoord0 + glowDelta*(-1.5);
+ vary_texcoord3.xy = texcoord0 + glowDelta*(-0.5);
+ vary_texcoord0.zw = texcoord0 + glowDelta*(0.5);
+ vary_texcoord1.zw = texcoord0 + glowDelta*(1.5);
+ vary_texcoord2.zw = texcoord0 + glowDelta*(2.5);
+ vary_texcoord3.zw = texcoord0 + glowDelta*(3.5);
}
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
index c61d5a2a08..18f6d91804 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file terrainF.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -23,19 +23,42 @@
* $/LicenseInfo$
*/
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
-uniform sampler2D detail0;
-uniform sampler2D detail1;
-uniform sampler2D alphaRamp;
+uniform sampler2D detail_0;
+uniform sampler2D detail_1;
+uniform sampler2D detail_2;
+uniform sampler2D detail_3;
+uniform sampler2D alpha_ramp;
-void main()
+vec3 atmosLighting(vec3 light);
+
+vec3 scaleSoftClip(vec3 color);
+
+void main()
{
- float a = texture2D(alphaRamp, gl_TexCoord[1].xy).a;
- vec3 color = mix(texture2D(detail1, gl_TexCoord[2].xy).rgb,
- texture2D(detail0, gl_TexCoord[0].xy).rgb,
- a);
+ /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
+
+ /// TODO Confirm tex coords and bind them appropriately in vert shader.
+ vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+ vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+ vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+ vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
- gl_FragColor.rgb = color;
- gl_FragColor.a = texture2D(alphaRamp, gl_TexCoord[3].xy).a;
+ float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+ float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+ float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
+ vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
+
+ /// Add WL Components
+ outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+
+ gl_FragColor = vec4(scaleSoftClip(outColor.rgb), 1.0);
}
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
index 917891c063..d09c5f9247 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file terrainV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -22,8 +22,25 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+uniform vec4 object_plane_t;
+uniform vec4 object_plane_s;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+
+void calcAtmospherics(vec3 inPositionEye);
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
@@ -44,17 +61,27 @@ vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-
- vec4 pos = gl_ModelViewMatrix * gl_Vertex;
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+
+ vec4 pos = modelview_matrix * vec4(position.xyz, 1.0);
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ /// Potentially better without it for water.
+ pos /= pos.w;
+
+ vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0));
- vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), gl_Color);
+ vertex_color = color;
+
+ // Transform and pass tex coords
+ vary_texcoord0.xy = texgen_object(vec4(position.xyz, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
- gl_FrontColor = color;
+ vec4 t = vec4(texcoord1,0,1);
- gl_TexCoord[0] = texgen_object(gl_Vertex,gl_MultiTexCoord0,gl_TextureMatrix[0],gl_ObjectPlaneS[0],gl_ObjectPlaneT[0]);
- gl_TexCoord[1] = gl_TextureMatrix[1]*gl_MultiTexCoord1;
- gl_TexCoord[2] = texgen_object(gl_Vertex,gl_MultiTexCoord2,gl_TextureMatrix[2],gl_ObjectPlaneS[2],gl_ObjectPlaneT[2]);
- gl_TexCoord[3] = gl_TextureMatrix[3]*gl_MultiTexCoord3;
+ vary_texcoord0.zw = t.xy;
+ vary_texcoord1.xy = t.xy-vec2(2.0, 0.0);
+ vary_texcoord1.zw = t.xy-vec2(1.0, 0.0);
}
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
index 711b42b95e..e5c7ced52c 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file terrainWaterF.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -22,22 +22,44 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-// this class1 shader is just a copy of terrainF
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
-uniform sampler2D detail0;
-uniform sampler2D detail1;
-uniform sampler2D alphaRamp;
+uniform sampler2D detail_0;
+uniform sampler2D detail_1;
+uniform sampler2D detail_2;
+uniform sampler2D detail_3;
+uniform sampler2D alpha_ramp;
-void main()
+vec3 atmosLighting(vec3 light);
+
+vec4 applyWaterFog(vec4 color);
+
+void main()
{
- float a = texture2D(alphaRamp, gl_TexCoord[1].xy).a;
- vec3 color = mix(texture2D(detail1, gl_TexCoord[2].xy).rgb,
- texture2D(detail0, gl_TexCoord[0].xy).rgb,
- a);
+ /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
+
+ /// TODO Confirm tex coords and bind them appropriately in vert shader.
+ vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+ vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+ vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+ vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
- gl_FragColor.rgb = color;
- gl_FragColor.a = texture2D(alphaRamp, gl_TexCoord[3].xy).a;
+ float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+ float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+ float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
+ vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
+
+ /// Add WL Components
+ outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+
+ outColor = applyWaterFog(outColor);
+ gl_FragColor = outColor;
}
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
index 72e8e739b3..1fdb90f792 100644
--- a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
@@ -23,36 +23,82 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
uniform sampler2D diffuseMap;
uniform sampler2D bumpMap;
uniform sampler2D screenTex;
+uniform sampler2D refTex;
+uniform sampler2D screenDepth;
+uniform vec4 fogCol;
+uniform vec3 lightDir;
+uniform vec3 specular;
+uniform float lightExp;
+uniform vec2 fbScale;
uniform float refScale;
+uniform float znear;
+uniform float zfar;
+uniform float kd;
+uniform vec4 waterPlane;
+uniform vec3 eyeVec;
uniform vec4 waterFogColor;
+uniform float waterFogDensity;
+uniform float waterFogKS;
+uniform vec2 screenRes;
//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
-void main()
+vec4 applyWaterFog(vec4 color, vec3 viewVec)
{
- vec4 color;
+ //normalize view vector
+ vec3 view = normalize(viewVec);
+ float es = -view.z;
+
+ //find intersection point with water plane and eye vector
- //get bigwave normal
- vec3 wavef = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0;
-
- //get detail normals
- vec3 dcol = texture2D(bumpMap, littleWave.xy).rgb*0.75;
- dcol += texture2D(bumpMap, littleWave.zw).rgb*1.25;
-
- //interpolate between big waves and little waves (big waves in deep water)
- wavef = (wavef+dcol)*0.5;
+ //get eye depth
+ float e0 = max(-waterPlane.w, 0.0);
+
+ //get object depth
+ float depth = length(viewVec);
+
+ //get "thickness" of water
+ float l = max(depth, 0.1);
- //crunch normal to range [-1,1]
- wavef -= vec3(1,1,1);
+ float kd = waterFogDensity;
+ float ks = waterFogKS;
+ vec4 kc = waterFogColor;
+
+ float F = 0.98;
+
+ float t1 = -kd * pow(F, ks * e0);
+ float t2 = kd + ks * es;
+ float t3 = pow(F, t2*l) - 1.0;
+
+ float L = min(t1/t2*t3, 1.0);
+
+ float D = pow(0.98, l*kd);
+ //return vec4(1.0, 0.0, 1.0, 1.0);
+ return color * D + kc * L;
+ //depth /= 10.0;
+ //return vec4(depth,depth,depth,0.0);
+}
+
+void main()
+{
+ vec4 color;
+
+ //get detail normals
+ vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
+ vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
+ vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
+ vec3 wavef = normalize(wave1+wave2+wave3);
//figure out distortion vector (ripply)
vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
@@ -60,6 +106,5 @@ void main()
vec4 fb = texture2D(screenTex, distort);
- gl_FragColor.rgb = mix(waterFogColor.rgb, fb.rgb, waterFogColor.a * 0.001 + 0.999);
- gl_FragColor.a = fb.a;
+ gl_FragColor = applyWaterFog(fb,view.xyz);
}
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
index 4d555b566a..444c896d38 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
@@ -23,20 +23,19 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
vec3 scaleSoftClip(vec3 inColor);
vec3 atmosTransport(vec3 inColor);
-vec3 applyWaterFog(vec4 inColor);
-uniform sampler2D diffuseMap;
uniform sampler2D bumpMap;
uniform sampler2D screenTex;
uniform sampler2D refTex;
uniform float sunAngle;
uniform float sunAngle2;
-uniform float scaledAngle;
uniform vec3 lightDir;
uniform vec3 specular;
uniform float lightExp;
@@ -47,67 +46,92 @@ uniform vec3 normScale;
uniform float fresnelScale;
uniform float fresnelOffset;
uniform float blurMultiplier;
-uniform vec4 fogCol;
+
//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
void main()
{
- vec3 viewVec = view.xyz;
vec4 color;
- float dist = length(viewVec.xy);
+ float dist = length(view.xy);
//normalize view vector
- viewVec = normalize(viewVec);
+ vec3 viewVec = normalize(view.xyz);
//get wave normals
- vec3 wavef = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0;
-
- //get detail normals
- vec3 dcol = texture2D(bumpMap, littleWave.xy).rgb*0.75;
- dcol += texture2D(bumpMap, littleWave.zw).rgb*1.25;
-
- //interpolate between big waves and little waves (big waves in deep water)
- wavef = (wavef + dcol) * 0.5;
-
- //crunch normal to range [-1,1]
- wavef -= vec3(1,1,1);
- wavef = normalize(wavef);
-
+ vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
+ vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
+ vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
//get base fresnel components
- float df = dot(viewVec,wavef) * fresnelScale + fresnelOffset;
+ vec3 df = vec3(
+ dot(viewVec, wave1),
+ dot(viewVec, (wave2 + wave3) * 0.5),
+ dot(viewVec, wave3)
+ ) * fresnelScale + fresnelOffset;
+ df *= df;
vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
float dist2 = dist;
dist = max(dist, 5.0);
+ float dmod = sqrt(dist);
+
+ vec2 dmod_scale = vec2(dmod*dmod, dmod);
+
//get reflected color
- vec2 refdistort = wavef.xy*dot(normScale, vec3(0.333));
- vec2 refvec = distort+refdistort/dist;
- vec4 refcol = texture2D(refTex, refvec);
+ vec2 refdistort1 = wave1.xy*normScale.x;
+ vec2 refvec1 = distort+refdistort1/dmod_scale;
+ vec4 refcol1 = texture2D(refTex, refvec1);
+
+ vec2 refdistort2 = wave2.xy*normScale.y;
+ vec2 refvec2 = distort+refdistort2/dmod_scale;
+ vec4 refcol2 = texture2D(refTex, refvec2);
+
+ vec2 refdistort3 = wave3.xy*normScale.z;
+ vec2 refvec3 = distort+refdistort3/dmod_scale;
+ vec4 refcol3 = texture2D(refTex, refvec3);
+
+ vec4 refcol = refcol1 + refcol2 + refcol3;
+ float df1 = df.x + df.y + df.z;
+ refcol *= df1 * 0.333;
+
+ vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
+
+ wavef.z *= max(-viewVec.z, 0.1);
+ wavef = normalize(wavef);
+
+ float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
+
+ vec2 refdistort4 = wavef.xy*0.125;
+ refdistort4.y -= abs(refdistort4.y);
+ vec2 refvec4 = distort+refdistort4/dmod;
+ float dweight = min(dist2*blurMultiplier, 1.0);
+ vec4 baseCol = texture2D(refTex, refvec4);
+ refcol = mix(baseCol*df2, refcol, dweight);
//get specular component
float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
-
+
//harden specular
- spec = pow(spec, lightExp);
+ spec = pow(spec, 128.0);
//figure out distortion vector (ripply)
- vec2 distort2 = distort+wavef.xy*refScale/max(dist*df, 1.0);
+ vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
vec4 fb = texture2D(screenTex, distort2);
//mix with reflection
- color.rgb = mix(mix(fogCol.rgb, fb.rgb, fogCol.a), refcol.rgb, df);
+ // Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
+ color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
color.rgb += spec * specular;
- //color.rgb = applyWaterFog(color);//atmosTransport(color.rgb);
+ color.rgb = atmosTransport(color.rgb);
color.rgb = scaleSoftClip(color.rgb);
color.a = spec * sunAngle2;
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
index d44690d1fb..4bdfce9260 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
@@ -25,16 +25,50 @@
+uniform vec4 lightnorm;
+uniform vec4 waterPlane;
+uniform vec4 waterFogColor;
+uniform float waterFogDensity;
+uniform float waterFogKS;
+
+vec3 getPositionEye();
+
vec4 applyWaterFog(vec4 color)
{
- // GL_EXP2 Fog
- //float fog = exp(-gl_Fog.density * gl_Fog.density * gl_FogFragCoord * gl_FogFragCoord);
- // GL_EXP Fog
- // float fog = exp(-gl_Fog.density * gl_FogFragCoord);
- // GL_LINEAR Fog
- float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale;
- fog = clamp(fog, 0.0, 1.0);
- color.rgb = mix(gl_Fog.color.rgb, color.rgb, fog);
+ //normalize view vector
+ vec3 view = normalize(getPositionEye());
+ float es = -(dot(view, waterPlane.xyz));
+
+ //find intersection point with water plane and eye vector
+
+ //get eye depth
+ float e0 = max(-waterPlane.w, 0.0);
+
+ vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);
+
+ //get object depth
+ float depth = length(getPositionEye() - int_v);
+
+ //get "thickness" of water
+ float l = max(depth, 0.1);
+
+ float kd = waterFogDensity;
+ float ks = waterFogKS;
+ vec4 kc = waterFogColor;
+
+ float F = 0.98;
+
+ float t1 = -kd * pow(F, ks * e0);
+ float t2 = kd + ks * es;
+ float t3 = pow(F, t2*l) - 1.0;
+
+ float L = min(t1/t2*t3, 1.0);
+
+ float D = pow(0.98, l*kd);
+
+ color.rgb = color.rgb * D + kc.rgb * L;
+ color.a = kc.a + color.a;
+
return color;
}
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
index 610c06fbbc..f66ba1d2d9 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
@@ -22,8 +22,11 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
void calcAtmospherics(vec3 inPositionEye);
@@ -33,9 +36,9 @@ uniform float time;
uniform vec3 eyeVec;
uniform float waterHeight;
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
float wave(vec2 v, float t, float f, vec2 d, float s)
{
@@ -45,8 +48,7 @@ float wave(vec2 v, float t, float f, vec2 d, float s)
void main()
{
//transform vertex
- vec4 position = gl_Vertex;
- mat4 modelViewProj = gl_ModelViewProjectionMatrix;
+ mat4 modelViewProj = modelview_projection_matrix;
vec4 oPosition;
@@ -57,27 +59,29 @@ void main()
float d = length(oEyeVec.xy);
float ld = min(d, 2560.0);
- position.xy = eyeVec.xy + oEyeVec.xy/d*ld;
+ vec3 lpos = position;
+ lpos.xy = eyeVec.xy + oEyeVec.xy/d*ld;
view.xyz = oEyeVec;
d = clamp(ld/1536.0-0.5, 0.0, 1.0);
d *= d;
- oPosition = position;
+ oPosition = vec4(lpos, 1.0);
oPosition.z = mix(oPosition.z, max(eyeVec.z*0.75, 0.0), d);
oPosition = modelViewProj * oPosition;
refCoord.xyz = oPosition.xyz + vec3(0,0,0.2);
//get wave position parameter (create sweeping horizontal waves)
- vec3 v = position.xyz;
+ vec3 v = lpos;
v.x += (cos(v.x*0.08/*+time*0.01*/)+sin(v.y*0.02))*6.0;
//push position for further horizon effect.
- position.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
- position.w = 1.0;
- position = position*gl_ModelViewMatrix;
+ vec4 pos;
+ pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
+ pos.w = 1.0;
+ pos = modelview_matrix*pos;
- calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz);
+ calcAtmospherics(pos.xyz);
//pass wave parameters to pixel shader
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
new file mode 100644
index 0000000000..d2f5e1987a
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
@@ -0,0 +1,46 @@
+/**
+ * @file alphamaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2D diffuseMap;
+
+uniform float minimum_alpha;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
+
+void main()
+{
+ vec4 col = vertex_color*texture2D(diffuseMap, vary_texcoord0.xy);
+ if (col.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ gl_FragColor = col;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl
new file mode 100644
index 0000000000..3580d1f27b
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl
@@ -0,0 +1,42 @@
+/**
+ * @file alphamaskV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ gl_Position = modelview_projection_matrix * vec4(position, 1);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vertex_color = diffuse_color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
index 27c63fdc8b..4b481ba834 100644
--- a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
@@ -22,14 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2D diffuseMap;
uniform float custom_alpha;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
void main()
{
- vec4 color = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = vertex_color*texture2D(diffuseMap, vary_texcoord0.xy);
color.a *= custom_alpha;
gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
index c4c896c35c..890474d6d8 100644
--- a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
@@ -22,13 +22,20 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_FrontColor = gl_Color;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = texcoord0;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
new file mode 100644
index 0000000000..6bcc97ba18
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
@@ -0,0 +1,35 @@
+/**
+ * @file debugF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform vec4 color;
+
+void main()
+{
+ gl_FragColor = color;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl
new file mode 100644
index 0000000000..f4d704577a
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl
@@ -0,0 +1,34 @@
+/**
+ * @file debugV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
+void main()
+{
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
index b8963e1dec..f67703b839 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
@@ -22,14 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
#extension GL_ARB_texture_rectangle : enable
uniform sampler2D glowMap;
uniform sampler2DRect screenMap;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+
void main()
{
- gl_FragColor = texture2D(glowMap, gl_TexCoord[0].xy) +
- texture2DRect(screenMap, gl_TexCoord[1].xy);
+ gl_FragColor = texture2D(glowMap, vary_texcoord0.xy) +
+ texture2DRect(screenMap, vary_texcoord1.xy);
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
new file mode 100644
index 0000000000..c66a6e5b48
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
@@ -0,0 +1,42 @@
+/**
+ * @file glowcombineFXAAF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect diffuseRect;
+
+uniform vec2 screen_res;
+VARYING vec2 vary_tc;
+
+void main()
+{
+ vec3 col = texture2DRect(diffuseRect, vary_tc*screen_res).rgb;
+
+ gl_FragColor = vec4(col.rgb, dot(col.rgb, vec3(0.299, 0.587, 0.144)));
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl
new file mode 100644
index 0000000000..058f3b1b82
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl
@@ -0,0 +1,39 @@
+/**
+ * @file glowcombineFXAAV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_tc;
+
+void main()
+{
+ vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ gl_Position = pos;
+
+ vary_tc = pos.xy*0.5+0.5;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
index 4c6360f71d..f7970b7f78 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
@@ -22,12 +22,20 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_MultiTexCoord1;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = texcoord0;
+ vary_texcoord1 = texcoord1;
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
index a3cb5225ba..ecbc30f05f 100644
--- a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
@@ -23,11 +23,16 @@
* $/LicenseInfo$
*/
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-
+uniform vec4 color;
uniform sampler2D diffuseMap;
+VARYING vec2 vary_texcoord0;
+
void main()
{
- gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+ gl_FragColor = color*texture2D(diffuseMap, vary_texcoord0.xy);
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
index da3bea6d06..9bf7b60eb7 100644
--- a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
@@ -22,24 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
- pos = normalize(pos);
- float d = dot(pos, normalize(gl_NormalMatrix * gl_Normal));
- d *= d;
- d = 1.0 - d;
- d *= d;
-
- d = min(d, gl_Color.a*2.0);
-
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_FrontColor.rgb = gl_Color.rgb;
- gl_FrontColor.a = max(d, gl_Color.a);
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
index 57248699cb..85f819f4c2 100644
--- a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
@@ -23,6 +23,10 @@
* $/LicenseInfo$
*/
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
void main()
{
gl_FragColor = vec4(1,1,1,1);
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
index 915e452e0f..c26fa08ddc 100644
--- a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
@@ -23,8 +23,12 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
new file mode 100644
index 0000000000..fafeb5a7b4
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
@@ -0,0 +1,37 @@
+/**
+ * @file onetexturenocolorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2D tex0;
+
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ gl_FragColor = texture2D(tex0, vary_texcoord0.xy);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl
new file mode 100644
index 0000000000..6b9986c8d7
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl
@@ -0,0 +1,38 @@
+/**
+ * @file onetexturenocolorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ gl_Position = modelview_projection_matrix * vec4(position, 1);
+ vary_texcoord0 = texcoord0;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
index b1d2b949ac..f790122749 100644
--- a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
@@ -22,12 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2D tex0;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
void main()
{
- float alpha = texture2D(tex0, gl_TexCoord[0].xy).a * gl_Color.a;
+ float alpha = texture2D(tex0, vary_texcoord0.xy).a * vertex_color.a;
- gl_FragColor = vec4(gl_Color.rgb, alpha);
+ gl_FragColor = vec4(vertex_color.rgb, alpha);
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
index fedf6ae546..c58f9dfdaf 100644
--- a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
@@ -22,13 +22,20 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
+
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_FrontColor = gl_Color;
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vertex_color = diffuse_color;
+ vary_texcoord0 = texcoord0;
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
new file mode 100644
index 0000000000..a0bb255cfa
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
@@ -0,0 +1,40 @@
+/**
+ * @file splattexturerectF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect screenMap;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ gl_FragColor = texture2DRect(screenMap, vary_texcoord0.xy) * vertex_color;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl
new file mode 100644
index 0000000000..641d670c26
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl
@@ -0,0 +1,41 @@
+/**
+ * @file splattexturerectV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = texcoord0;
+ vertex_color = diffuse_color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
index 3408cc44f8..cdb48163dd 100644
--- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
@@ -22,11 +22,18 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2D tex0;
uniform sampler2D tex1;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+
void main()
{
- gl_FragColor = texture2D(tex0, gl_TexCoord[0].xy)+texture2D(tex1, gl_TexCoord[1].xy);
+ gl_FragColor = texture2D(tex0, vary_texcoord0.xy)+texture2D(tex1, vary_texcoord1.xy);
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
index 94aa964be6..3c2f297f7f 100644
--- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
@@ -23,12 +23,19 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_MultiTexCoord1;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = texcoord0;
+ vary_texcoord1 = texcoord1;
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
index 7694056b08..36d6e06fc5 100644
--- a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
@@ -22,10 +22,17 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2D diffuseMap;
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
+
void main()
{
- gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+ gl_FragColor = vertex_color*texture2D(diffuseMap, vary_texcoord0.xy);
}
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
index b1b90d0b5e..220dafef25 100644
--- a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
@@ -22,13 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
void main()
{
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_FrontColor = gl_Color;
+ gl_Position = modelview_projection_matrix * vec4(position, 1);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
new file mode 100644
index 0000000000..10413bdeb0
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
@@ -0,0 +1,53 @@
+/**
+ * @file lightAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
new file mode 100644
index 0000000000..1164e5b0a6
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
@@ -0,0 +1,55 @@
+/**
+ * @file lightAlphaMaskNonIndexedF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
index 5cb3eb05a7..735f5b3813 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
@@ -22,14 +22,25 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-uniform sampler2D diffuseMap;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
void default_lighting()
{
- vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
new file mode 100644
index 0000000000..ba99c0ed71
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
@@ -0,0 +1,53 @@
+/**
+ * @file lightFullbrightAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
index f3ba8b73a8..c3edc0bd70 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
@@ -22,14 +22,25 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
-uniform sampler2D diffuseMap;
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
void fullbright_lighting()
{
- gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
new file mode 100644
index 0000000000..276fad4f44
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
@@ -0,0 +1,55 @@
+/**
+ * @file lightFullbrightNonIndexedAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+uniform sampler2D diffuseMap;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
new file mode 100644
index 0000000000..4e1e664e6b
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
@@ -0,0 +1,48 @@
+/**
+ * @file lightFullbrightF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+uniform sampler2D diffuseMap;
+
+void fullbright_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
index b4c8a9abce..c981e9eba2 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
@@ -22,14 +22,34 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-void fullbright_shiny_lighting()
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+void fullbright_shiny_lighting()
{
- gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = color;
}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
new file mode 100644
index 0000000000..a4893f0359
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file lightFullbrightShinyF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform samplerCube environmentMap;
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+void fullbright_shiny_lighting()
+{
+ vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
index 925d6fbcfd..c10cde98e0 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
@@ -21,14 +21,33 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-void fullbright_shiny_lighting_water()
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void fullbright_shiny_lighting_water()
{
- gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = applyWaterFog(color);
}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..e9b26087f4
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
@@ -0,0 +1,54 @@
+/**
+ * @file lightFullbrightShinyWaterF.glsl
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform samplerCube environmentMap;
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void fullbright_shiny_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
new file mode 100644
index 0000000000..754b2922d9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
@@ -0,0 +1,53 @@
+/**
+ * @file lightFullbrightWaterAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+vec4 diffuseLookup(vec2 texcoord);
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting_water()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
index 71238f7d31..2547f9e750 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
@@ -23,13 +23,24 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
-uniform sampler2D diffuseMap;
+vec4 diffuseLookup(vec2 texcoord);
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
void fullbright_lighting_water()
{
- gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
new file mode 100644
index 0000000000..f69b907dc7
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
@@ -0,0 +1,53 @@
+/**
+ * @file lightFullbrightWaterNonIndexedAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..aa3ef8cdd9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
@@ -0,0 +1,46 @@
+/**
+ * @file lightFullbrightWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void fullbright_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
new file mode 100644
index 0000000000..9f1a358b53
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
@@ -0,0 +1,48 @@
+/**
+ * @file lightF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+void default_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
index 7c9b7c218f..e9c27dbefd 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
@@ -22,16 +22,33 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-void shiny_lighting()
+vec3 scaleSoftClip(vec3 light);
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting()
{
- vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
new file mode 100644
index 0000000000..595ad74365
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
@@ -0,0 +1,55 @@
+/**
+ * @file lightShinyF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform samplerCube environmentMap;
+uniform sampler2D diffuseMap;
+
+vec3 scaleSoftClip(vec3 light);
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
index ca1af8fc79..68c727d62c 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
@@ -22,16 +22,30 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-void shiny_lighting_water()
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting_water()
{
- vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
- gl_FragColor = color;
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+ gl_FragColor = applyWaterFog(color);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..f32b9e1958
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
@@ -0,0 +1,52 @@
+/**
+ * @file lightShinyWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform sampler2D diffuseMap;
+uniform samplerCube environmentMap;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
index 4a59b8245d..24bf9b3cee 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
@@ -1,5 +1,5 @@
/**
- * @file lightV.glsl
+ * @file lightSpecularV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -25,22 +25,12 @@
-float calcDirectionalLight(vec3 n, vec3 l);
+// All lights, no specular highlights
+
+vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
-// Same as non-specular lighting in lightV.glsl
vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
{
- specularColor.rgb = vec3(0.0, 0.0, 0.0);
- vec4 col;
- col.a = color.a;
-
- col.rgb = gl_LightModel.ambient.rgb + baseCol.rgb;
-
- col.rgb += gl_LightSource[0].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[0].position.xyz);
- col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
-
- col.rgb = min(col.rgb*color.rgb, 1.0);
-
- return col;
+ return sumLightsSpecular(pos, norm, color, specularColor, baseCol);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
index 742cb38d80..8045809b82 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
@@ -25,20 +25,12 @@
-float calcDirectionalLight(vec3 n, vec3 l);
+// All lights, no specular highlights
+
+vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight);
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
{
- vec4 col;
- col.a = color.a;
-
- col.rgb = gl_LightModel.ambient.rgb + baseLight.rgb;
-
- col.rgb += gl_LightSource[0].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[0].position.xyz);
- col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
-
- col.rgb = min(col.rgb*color.rgb, 1.0);
-
- return col;
+ return sumLights(pos, norm, color, baseLight);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
new file mode 100644
index 0000000000..103dd633c9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
@@ -0,0 +1,51 @@
+/**
+ * @file lightWaterAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting_water()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
new file mode 100644
index 0000000000..bef72752da
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
@@ -0,0 +1,55 @@
+/**
+ * @file lightWaterAlphaMaskNonIndexedF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color = applyWaterFog(color);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
index da76a977b6..e9537d1e9d 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
@@ -22,14 +22,23 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-uniform sampler2D diffuseMap;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
-void default_lighting_water()
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void default_lighting_water()
{
- vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
- gl_FragColor = color;
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..8b0c25b705
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
@@ -0,0 +1,46 @@
+/**
+ * @file lightWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void default_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
index 3e0815226c..7059ff31ae 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
@@ -31,21 +31,22 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 atmosGetDiffuseSunlightColor();
vec3 scaleDownLight(vec3 light);
+uniform vec4 light_position[8];
+uniform vec3 light_diffuse[8];
+
vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
{
- vec4 col;
- col.a = color.a;
-
-
+ vec4 col = vec4(0,0,0, color.a);
+
vec3 view = normalize(pos);
/// collect all the specular values from each calcXXXLightSpecular() function
vec4 specularSum = vec4(0.0);
- col.rgb = gl_LightSource[1].diffuse.rgb * calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz, gl_LightSource[1].diffuse.rgb, 1.0);
+ col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
col.rgb = scaleDownLight(col.rgb);
col.rgb += atmosAmbient(baseCol.rgb);
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, gl_LightSource[0].position.xyz,atmosGetDiffuseSunlightColor() * baseCol.a, 1.0));
+ col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
col.rgb = min(col.rgb * color.rgb, 1.0);
specularColor.rgb = min(specularColor.rgb * specularSum.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
index c271dbcd18..41288c21c1 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
@@ -23,7 +23,8 @@
* $/LicenseInfo$
*/
-
+uniform vec4 light_position[8];
+uniform vec3 light_diffuse[8];
float calcDirectionalLight(vec3 n, vec3 l);
@@ -36,10 +37,10 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
vec4 col;
col.a = color.a;
- col.rgb = gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
+ col.rgb = light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz);
col.rgb = scaleDownLight(col.rgb);
col.rgb += atmosAmbient(baseLight.rgb);
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+ col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
col.rgb = min(col.rgb*color.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
index 11031a8829..4b85d61aca 100644
--- a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
@@ -22,14 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2D texture0;
uniform sampler2D texture1;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+
void main()
{
- float tex0 = texture2D(texture0, gl_TexCoord[0].xy).a;
- float tex1 = texture2D(texture1, gl_TexCoord[1].xy).a;
+ float tex0 = texture2D(texture0, vary_texcoord0.xy).a;
+ float tex1 = texture2D(texture1, vary_texcoord1.xy).a;
gl_FragColor = vec4(tex0+(1.0-tex1)-0.5);
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
index c50ed86315..a7738087dc 100644
--- a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
@@ -22,13 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1;
- gl_FrontColor = gl_Color;
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vary_texcoord1 = (texture_matrix0 * vec4(texcoord1,0,1)).xy;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
new file mode 100644
index 0000000000..8494ffba52
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
@@ -0,0 +1,58 @@
+/**
+ * @file emissiveSkinnedV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 emissive;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void calcAtmospherics(vec3 inPositionEye);
+mat4 getObjectSkinnedTransform();
+
+void main()
+{
+ //transform vertex
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ mat4 mat = getObjectSkinnedTransform();
+
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
+
+ calcAtmospherics(pos.xyz);
+
+ vertex_color = emissive;
+
+ gl_Position = projection_matrix*vec4(pos, 1.0);
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
new file mode 100644
index 0000000000..e984deb0c8
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file emissiveV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec4 emissive;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void calcAtmospherics(vec3 inPositionEye);
+
+
+
+
+void main()
+{
+ //transform vertex
+ passTextureIndex();
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
+ calcAtmospherics(pos.xyz);
+
+ vertex_color = emissive;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
index 0fab5e5001..a54c0caf81 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
@@ -20,7 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
+ * $/LicenseInfo$F
*/
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
new file mode 100644
index 0000000000..5d6f14230c
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
@@ -0,0 +1,53 @@
+/**
+ * @file fullbrightNoColorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+ //transform vertex
+ vec4 vert = vec4(position.xyz,1.0);
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ calcAtmospherics(pos.xyz);
+
+ vertex_color = vec4(1,1,1,1);
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
index e1a7f263f7..79b552ee1a 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
@@ -22,6 +22,19 @@
* $/LicenseInfo$
*/
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
void calcAtmospherics(vec3 inPositionEye);
@@ -31,24 +44,24 @@ void main()
{
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- vec4 norm = gl_Vertex;
- norm.xyz += gl_Normal.xyz;
+ vec4 norm = vec4(position.xyz, 1.0);
+ norm.xyz += normal.xyz;
norm.xyz = (mat*norm).xyz;
norm.xyz = normalize(norm.xyz-pos.xyz);
vec3 ref = reflect(pos.xyz, -norm.xyz);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
calcAtmospherics(pos.xyz);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
+
+ gl_Position = projection_matrix*vec4(pos, 1.0);
- gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
- gl_FogFragCoord = pos.z;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
index 36b00dfbc1..34bd8d445a 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
@@ -22,28 +22,46 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
void calcAtmospherics(vec3 inPositionEye);
uniform vec4 origin;
+
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+
void main()
{
//transform vertex
- gl_Position = ftransform();
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
- vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vec3 norm = normalize(normal_matrix * normal);
vec3 ref = reflect(pos.xyz, -norm);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
calcAtmospherics(pos.xyz);
- gl_FrontColor = gl_Color;
-
- gl_FogFragCoord = pos.z;
+ vertex_color = diffuse_color;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
index b540054c56..eff75435a9 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
@@ -22,31 +22,36 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
void calcAtmospherics(vec3 inPositionEye);
mat4 getObjectSkinnedTransform();
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
void main()
{
//transform vertex
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- vec4 norm = gl_Vertex;
- norm.xyz += gl_Normal.xyz;
- norm.xyz = (mat*norm).xyz;
- norm.xyz = normalize(norm.xyz-pos.xyz);
-
calcAtmospherics(pos.xyz);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
- gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
+ gl_Position = projection_matrix*vec4(pos, 1.0);
- gl_FogFragCoord = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
index 22f731ffde..fc20d3270e 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
@@ -22,22 +22,37 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
void calcAtmospherics(vec3 inPositionEye);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
void main()
{
//transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
-
calcAtmospherics(pos.xyz);
- gl_FrontColor = gl_Color;
+ vertex_color = diffuse_color;
- gl_FogFragCoord = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
index 92c09ce937..3c6e22b295 100644
--- a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
@@ -22,20 +22,22 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
uniform sampler2D diffuseMap;
+VARYING vec2 vary_texcoord0;
+
void main()
{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
- if (color.a < minimum_alpha || color.a > maximum_alpha)
+ if (color.a < minimum_alpha)
{
discard;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
index eea51eba45..e90dbb115a 100644
--- a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
@@ -22,13 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
+
void main()
{
//transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-
- gl_FrontColor = gl_Color;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
new file mode 100644
index 0000000000..254c1d4fc2
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
@@ -0,0 +1,33 @@
+/**
+ * @file fullbrightF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+
+
+
+void main()
+{
+ fullbright_lighting();
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
new file mode 100644
index 0000000000..a95c9e0ab9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
@@ -0,0 +1,34 @@
+/**
+ * @file indexedTextureV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+ATTRIBUTE float texture_index;
+
+VARYING float vary_texture_index;
+
+void passTextureIndex()
+{
+ vary_texture_index = texture_index;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
new file mode 100644
index 0000000000..80ea286ac0
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
@@ -0,0 +1,31 @@
+/**
+ * @file nonindexedTextureV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+void passTextureIndex()
+{
+
+}
+
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
new file mode 100644
index 0000000000..5dcfa87066
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
@@ -0,0 +1,57 @@
+/**
+ * @file previewV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+ //transform vertex
+ vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
+ vertex_color = color;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
index f5fd4ededd..591d6fc5c9 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
@@ -22,7 +22,19 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -32,23 +44,23 @@ void main()
{
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- vec4 norm = gl_Vertex;
- norm.xyz += gl_Normal.xyz;
+ vec4 norm = vec4(position.xyz, 1.0);
+ norm.xyz += normal.xyz;
norm.xyz = (mat*norm).xyz;
norm.xyz = normalize(norm.xyz-pos.xyz);
vec3 ref = reflect(pos.xyz, -norm.xyz);
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
calcAtmospherics(pos.xyz);
- vec4 color = calcLighting(pos.xyz, norm.xyz, gl_Color, vec4(0.));
- gl_FrontColor = color;
+ vec4 color = calcLighting(pos.xyz, norm.xyz, diffuse_color, vec4(0.));
+ vertex_color = color;
- gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
+ gl_Position = projection_matrix*vec4(pos, 1.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
index 13a58f0d4a..fdb3453cc5 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file shinyV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -22,8 +22,24 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -32,19 +48,18 @@ uniform vec4 origin;
void main()
{
//transform vertex
- gl_Position = ftransform();
-
- vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+
+ vec3 norm = normalize(normal_matrix * normal);
+ vec3 ref = reflect(pos.xyz, -norm);
+
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
calcAtmospherics(pos.xyz);
-
- gl_FrontColor = gl_Color;
-
- vec3 ref = reflect(pos.xyz, -norm);
-
- gl_TexCoord[0] = gl_TextureMatrix[0]*vec4(ref,1.0);
-
- gl_FogFragCoord = pos.z;
-}
+ vertex_color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.0));
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
new file mode 100644
index 0000000000..0be52a52af
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
@@ -0,0 +1,59 @@
+/**
+ * @file simpleNoColorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+uniform vec4 color;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+ //transform vertex
+ vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ vec4 col = calcLighting(pos.xyz, norm, color, vec4(0.));
+ vertex_color = col;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
new file mode 100644
index 0000000000..cb80697d15
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
@@ -0,0 +1,61 @@
+/**
+ * @file simpleNonIndexedV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+ //transform vertex
+ vec4 vert = vec4(position.xyz,1.0);
+
+ gl_Position = modelview_projection_matrix*vert;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+
+ vec4 pos = (modelview_matrix * vert);
+
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+ vertex_color = color;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
index ad171f7b43..1c6e53b187 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
@@ -22,6 +22,17 @@
* $/LicenseInfo$
*/
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
@@ -31,24 +42,24 @@ mat4 getObjectSkinnedTransform();
void main()
{
//transform vertex
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ mat = modelview_matrix * mat;
+ vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
- vec4 norm = gl_Vertex;
- norm.xyz += gl_Normal.xyz;
+ vec4 norm = vec4(position.xyz, 1.0);
+ norm.xyz += normal.xyz;
norm.xyz = (mat*norm).xyz;
norm.xyz = normalize(norm.xyz-pos.xyz);
calcAtmospherics(pos.xyz);
- vec4 color = calcLighting(pos.xyz, norm.xyz, gl_Color, vec4(0.));
- gl_FrontColor = color;
+ vec4 color = calcLighting(pos.xyz, norm.xyz, diffuse_color, vec4(0.));
+ vertex_color = color;
+
+ gl_Position = projection_matrix*vec4(pos, 1.0);
- gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
- gl_FogFragCoord = pos.z;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl
new file mode 100644
index 0000000000..d4dee78793
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl
@@ -0,0 +1,77 @@
+/**
+ * @file simpleV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+
+uniform vec4 color;
+uniform vec4 object_plane_t;
+uniform vec4 object_plane_s;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
+{
+ vec4 tcoord;
+
+ tcoord.x = dot(vpos, tp0);
+ tcoord.y = dot(vpos, tp1);
+ tcoord.z = tc.z;
+ tcoord.w = tc.w;
+
+ tcoord = mat * tcoord;
+
+ return tcoord;
+}
+
+void main()
+{
+ //transform vertex
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ vary_texcoord0.xy = texgen_object(vec4(position.xyz, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
+
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ vec4 color = calcLighting(pos.xyz, norm, color, vec4(0.));
+ vertex_color = color;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
index dc1794e132..37a20383e2 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
@@ -22,26 +22,43 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
void main()
{
//transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+
- vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vec3 norm = normalize(normal_matrix * normal);
calcAtmospherics(pos.xyz);
- vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
- gl_FrontColor = color;
+ vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+ vertex_color = color;
- gl_FogFragCoord = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
new file mode 100644
index 0000000000..fa01a27ec0
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
@@ -0,0 +1,60 @@
+/**
+ * @file treeV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void main()
+{
+ //transform vertex
+ vec4 vert = vec4(position.xyz,1.0);
+
+ gl_Position = modelview_projection_matrix*vert;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+
+ vec4 pos = (modelview_matrix * vert);
+
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
+ vertex_color = color;
+
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
index 15738e37e8..6ff860362c 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
@@ -23,21 +23,22 @@
* $/LicenseInfo$
*/
-
+uniform vec4 sunlight_color_copy;
+uniform vec4 light_ambient;
vec3 atmosAmbient(vec3 light)
{
- return gl_LightModel.ambient.rgb + light;
+ return light + light_ambient.rgb;
}
vec3 atmosAffectDirectionalLight(float lightIntensity)
{
- return gl_LightSource[0].diffuse.rgb * lightIntensity;
+ return sunlight_color_copy.rgb * lightIntensity;
}
vec3 atmosGetDiffuseSunlightColor()
{
- return gl_LightSource[0].diffuse.rgb;
+ return sunlight_color_copy.rgb;
}
vec3 scaleDownLight(vec3 light)
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
index dbacf28637..8bdae328bd 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
@@ -24,10 +24,7 @@
*/
-
-varying vec3 vary_PositionEye;
-
vec3 getPositionEye()
{
- return vary_PositionEye;
+ return vec3(0,0,0);
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
index e051ac9851..8ec9ae617c 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
@@ -25,15 +25,12 @@
-varying vec3 vary_PositionEye;
-
-
vec3 getPositionEye()
{
- return vary_PositionEye;
+ return vec3(0,0,0);
}
void setPositionEye(vec3 v)
{
- vary_PositionEye = v;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
new file mode 100644
index 0000000000..636d4af006
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
@@ -0,0 +1,33 @@
+/**
+ * @file atmosphericVarsWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+
+VARYING vec3 vary_PositionEye;
+
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
new file mode 100644
index 0000000000..8afcc20f6d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
@@ -0,0 +1,37 @@
+/**
+ * @file atmosphericVarsWaterV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+
+VARYING vec3 vary_PositionEye;
+
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
+void setPositionEye(vec3 v)
+{
+ vary_PositionEye = v;
+}
diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
index f9f376c2b7..5af9f5c902 100644
--- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
+++ b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
@@ -22,7 +22,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
@@ -31,20 +43,20 @@ void calcAtmospherics(vec3 inPositionEye);
void main()
{
//transform vertex
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-
- vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vec3 pos = (modelview_matrix * vec4(position.xyz, 1.0)).xyz;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ vec3 norm = normalize(normal_matrix * normal);
calcAtmospherics(pos.xyz);
// vec4 specular = specularColor;
vec4 specular = vec4(1.0);
- vec4 color = calcLightingSpecular(pos, norm, gl_Color, specular, vec4(0.0));
+ vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular, vec4(0.0));
- gl_FrontColor = color;
- gl_FogFragCoord = pos.z;
+ vertex_color = color;
+
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 839606cdcb..1179b212ae 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -22,11 +22,16 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
uniform sampler2DRectShadow shadowMap0;
uniform sampler2DRectShadow shadowMap1;
uniform sampler2DRectShadow shadowMap2;
@@ -41,29 +46,16 @@ uniform vec2 shadow_res;
vec3 atmosLighting(vec3 light);
vec3 scaleSoftClip(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
uniform float shadow_bias;
uniform mat4 inv_proj;
-vec4 getPosition(vec2 pos_screen)
-{
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos.xyz /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
{
stc.xyz /= stc.w;
@@ -122,9 +114,9 @@ void main()
}
}
- vec4 diff = diffuseLookup(gl_TexCoord[0].xy);
+ vec4 diff = diffuseLookup(vary_texcoord0.xy);
- vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a);
+ vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, vertex_color.a);
vec4 color = diff * col;
color.rgb = atmosLighting(color.rgb);
@@ -133,10 +125,6 @@ void main()
color.rgb += diff.rgb * vary_pointlight_col.rgb;
- //gl_FragColor = gl_Color;
gl_FragColor = color;
- //gl_FragColor.r = 0.0;
- //gl_FragColor = vec4(1,shadow,1,1);
-
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
index 84e49a5f8f..0df557f2aa 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
@@ -23,10 +23,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRectShadow shadowMap0;
uniform sampler2DRectShadow shadowMap1;
uniform sampler2DRectShadow shadowMap2;
@@ -42,11 +44,13 @@ uniform vec2 shadow_res;
vec3 atmosLighting(vec3 light);
vec3 scaleSoftClip(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
uniform float shadow_bias;
@@ -123,9 +127,9 @@ void main()
}
}
- vec4 diff = texture2D(diffuseMap,gl_TexCoord[0].xy);
+ vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);
- vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a);
+ vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, vertex_color.a);
vec4 color = diff * col;
color.rgb = atmosLighting(color.rgb);
@@ -134,10 +138,6 @@ void main()
color.rgb += diff.rgb * vary_pointlight_col.rgb;
- //gl_FragColor = gl_Color;
- gl_FragColor = color;
- //gl_FragColor.r = 0.0;
- //gl_FragColor = vec4(1,shadow,1,1);
-
+ gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
new file mode 100644
index 0000000000..331dbc7079
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
@@ -0,0 +1,142 @@
+/**
+ * @file alphaNonIndexedNoColorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRectShadow shadowMap0;
+uniform sampler2DRectShadow shadowMap1;
+uniform sampler2DRectShadow shadowMap2;
+uniform sampler2DRectShadow shadowMap3;
+uniform sampler2DRect depthMap;
+uniform sampler2D diffuseMap;
+
+uniform mat4 shadow_matrix[6];
+uniform vec4 shadow_clip;
+uniform vec2 screen_res;
+uniform vec2 shadow_res;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+
+uniform float shadow_bias;
+
+uniform mat4 inv_proj;
+
+vec4 getPosition(vec2 pos_screen)
+{
+ float depth = texture2DRect(depthMap, pos_screen.xy).a;
+ vec2 sc = pos_screen.xy*2.0;
+ sc /= screen_res;
+ sc -= vec2(1.0,1.0);
+ vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
+ vec4 pos = inv_proj * ndc;
+ pos.xyz /= pos.w;
+ pos.w = 1.0;
+ return pos;
+}
+
+float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
+{
+ stc.xyz /= stc.w;
+ stc.z += shadow_bias;
+
+ float cs = shadow2DRect(shadowMap, stc.xyz).x;
+ float shadow = cs;
+
+ shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, scl, 0.0)).x, cs);
+ shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, -scl, 0.0)).x, cs);
+ shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, scl, 0.0)).x, cs);
+ shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, -scl, 0.0)).x, cs);
+
+ return shadow/5.0;
+}
+
+
+void main()
+{
+ vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;
+ frag *= screen_res;
+
+ float shadow = 1.0;
+ vec4 pos = vec4(vary_position, 1.0);
+
+ vec4 spos = pos;
+
+ if (spos.z > -shadow_clip.w)
+ {
+ vec4 lpos;
+
+ if (spos.z < -shadow_clip.z)
+ {
+ lpos = shadow_matrix[3]*spos;
+ lpos.xy *= shadow_res;
+ shadow = pcfShadow(shadowMap3, lpos, 1.5);
+ shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
+ }
+ else if (spos.z < -shadow_clip.y)
+ {
+ lpos = shadow_matrix[2]*spos;
+ lpos.xy *= shadow_res;
+ shadow = pcfShadow(shadowMap2, lpos, 1.5);
+ }
+ else if (spos.z < -shadow_clip.x)
+ {
+ lpos = shadow_matrix[1]*spos;
+ lpos.xy *= shadow_res;
+ shadow = pcfShadow(shadowMap1, lpos, 1.5);
+ }
+ else
+ {
+ lpos = shadow_matrix[0]*spos;
+ lpos.xy *= shadow_res;
+ shadow = pcfShadow(shadowMap0, lpos, 1.5);
+ }
+ }
+
+ vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);
+
+ vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, 1.0);
+ vec4 color = diff * col;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ color.rgb += diff.rgb * vary_pointlight_col.rgb;
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
index 20121da52d..5a3955ef00 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
@@ -21,8 +21,16 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -34,16 +42,25 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
uniform float near_clip;
uniform float shadow_offset;
uniform float shadow_bias;
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{
//get light vector
@@ -76,56 +93,56 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
void main()
{
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
mat4 mat = getObjectSkinnedTransform();
- mat = gl_ModelViewMatrix * mat;
+ mat = modelview_matrix * mat;
- vec3 pos = (mat*gl_Vertex).xyz;
+ vec3 pos = (mat*vec4(position, 1.0)).xyz;
- gl_Position = gl_ProjectionMatrix * vec4(pos, 1.0);
+ gl_Position = projection_matrix * vec4(pos, 1.0);
- vec4 n = gl_Vertex;
- n.xyz += gl_Normal.xyz;
+ vec4 n = vec4(position, 1.0);
+ n.xyz += normal.xyz;
n.xyz = (mat*n).xyz;
n.xyz = normalize(n.xyz-pos.xyz);
vec3 norm = n.xyz;
- float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
- vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+ float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+ vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
calcAtmospherics(pos.xyz);
- //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ //vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+ vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
// Collect normal lights
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
- vary_pointlight_col = col.rgb*gl_Color.rgb;
+ vary_pointlight_col = col.rgb*diffuse_color.rgb;
col.rgb = vec3(0,0,0);
// Add windlight lights
col.rgb = atmosAmbient(vec3(0.));
- vary_ambient = col.rgb*gl_Color.rgb;
- vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+ vary_ambient = col.rgb*diffuse_color.rgb;
+ vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
- col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+ col.rgb = min(col.rgb*diffuse_color.rgb, 1.0);
- gl_FrontColor = col;
+ vertex_color = col;
- gl_FogFragCoord = pos.z;
- pos.xyz = (gl_ModelViewProjectionMatrix * gl_Vertex).xyz;
+
+ pos.xyz = (modelview_projection_matrix * vec4(position.xyz, 1.0)).xyz;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 307ae30098..9540ddd2e8 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -22,8 +22,17 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -35,17 +44,25 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
-varying float vary_texture_index;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
uniform float near_clip;
uniform float shadow_offset;
uniform float shadow_bias;
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{
//get light vector
@@ -79,48 +96,49 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
void main()
{
//transform vertex
- vec4 vert = vec4(gl_Vertex.xyz, 1.0);
- vary_texture_index = gl_Vertex.w;
- gl_Position = gl_ModelViewProjectionMatrix * vert;
-
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+ vec4 vert = vec4(position.xyz, 1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
- vec4 pos = (gl_ModelViewMatrix * vert);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+ vec3 norm = normalize(normal_matrix * normal);
- float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
- vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+ float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+ vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
calcAtmospherics(pos.xyz);
- //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ //vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+ vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
- // Collect normal lights
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
- vary_pointlight_col = col.rgb*gl_Color.rgb;
+ // Collect normal lights
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
+
+ vary_pointlight_col = col.rgb*diffuse_color.rgb;
col.rgb = vec3(0,0,0);
// Add windlight lights
col.rgb = atmosAmbient(vec3(0.));
- vary_ambient = col.rgb*gl_Color.rgb;
- vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+ vary_ambient = col.rgb*diffuse_color.rgb;
+ vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
- col.rgb = col.rgb*gl_Color.rgb;
+ col.rgb = col.rgb*diffuse_color.rgb;
- gl_FrontColor = col;
+ vertex_color = col;
- gl_FogFragCoord = pos.z;
- pos = gl_ModelViewProjectionMatrix * vert;
+
+ pos = modelview_projection_matrix * vert;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
index 80f386ecb0..9c7a332417 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
@@ -23,7 +23,11 @@
* $/LicenseInfo$
*/
+uniform mat4 projection_matrix;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
mat4 getSkinnedTransform();
@@ -37,16 +41,25 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-varying vec3 vary_position;
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_position;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_pointlight_col;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform vec4 color;
uniform float near_clip;
uniform float shadow_offset;
uniform float shadow_bias;
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{
//get light vector
@@ -79,56 +92,55 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
vec4 pos;
vec3 norm;
mat4 trans = getSkinnedTransform();
- pos.x = dot(trans[0], gl_Vertex);
- pos.y = dot(trans[1], gl_Vertex);
- pos.z = dot(trans[2], gl_Vertex);
+ vec4 pos_in = vec4(position.xyz, 1.0);
+ pos.x = dot(trans[0], pos_in);
+ pos.y = dot(trans[1], pos_in);
+ pos.z = dot(trans[2], pos_in);
pos.w = 1.0;
- norm.x = dot(trans[0].xyz, gl_Normal);
- norm.y = dot(trans[1].xyz, gl_Normal);
- norm.z = dot(trans[2].xyz, gl_Normal);
+ norm.x = dot(trans[0].xyz, normal);
+ norm.y = dot(trans[1].xyz, normal);
+ norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm);
- gl_Position = gl_ProjectionMatrix * pos;
+ gl_Position = projection_matrix * pos;
- float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
- vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+ float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+ vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
calcAtmospherics(pos.xyz);
- //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col = vec4(0.0, 0.0, 0.0, 1.0);
// Collect normal lights
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
- vary_pointlight_col = col.rgb*gl_Color.rgb;
+ vary_pointlight_col = col.rgb*color.rgb;
col.rgb = vec3(0,0,0);
// Add windlight lights
col.rgb = atmosAmbient(vec3(0.));
- vary_ambient = col.rgb*gl_Color.rgb;
- vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+ vary_ambient = col.rgb*color.rgb;
+ vary_directional = atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), 0.0));
- col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+ col.rgb = col.rgb*color.rgb;
- gl_FrontColor = col;
+ vertex_color = col;
- gl_FogFragCoord = pos.z;
+
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
deleted file mode 100644
index d9eafb6eba..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * @file edgeF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-
-varying vec2 vary_fragcoord;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-float getDepth(vec2 pos_screen)
-{
- float z = texture2DRect(depthMap, pos_screen.xy).r;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-void main()
-{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- float depth = getDepth(vary_fragcoord.xy);
-
- vec2 tc = vary_fragcoord.xy;
-
- float sc = 0.75;
-
- vec2 de;
- de.x = (depth-getDepth(tc+vec2(sc, sc))) + (depth-getDepth(tc+vec2(-sc, -sc)));
- de.y = (depth-getDepth(tc+vec2(-sc, sc))) + (depth-getDepth(tc+vec2(sc, -sc)));
- de /= depth;
- de *= de;
- de = step(depth_cutoff, de);
-
- vec2 ne;
- vec3 nexnorm = texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb;
- nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm
- ne.x = dot(nexnorm, norm);
- vec3 neynorm = texture2DRect(normalMap, tc+vec2(sc,sc)).rgb;
- neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm
- ne.y = dot(neynorm, norm);
-
- ne = 1.0-ne;
-
- ne = step(norm_cutoff, ne);
-
- gl_FragColor.a = dot(de,de)+dot(ne,ne);
- //gl_FragColor.a = dot(de,de);
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
deleted file mode 100644
index a84fdd5dc1..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * @file edgeF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-
-varying vec2 vary_fragcoord;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-float getDepth(ivec2 pos_screen, int sample)
-{
- float z = texelFetch(depthMap, pos_screen, sample).r;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-void main()
-{
- float e = 0;
-
- ivec2 itc = ivec2(vary_fragcoord.xy);
-
- for (int i = 0; i < samples; i++)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- float depth = getDepth(itc, i);
-
- vec2 tc = vary_fragcoord.xy;
-
- int sc = 1;
-
- vec2 de;
- de.x = (depth-getDepth(itc+ivec2(sc, sc),i)) + (depth-getDepth(itc+ivec2(-sc, -sc), i));
- de.y = (depth-getDepth(itc+ivec2(-sc, sc),i)) + (depth-getDepth(itc+ivec2(sc, -sc), i));
- de /= depth;
- de *= de;
- de = step(depth_cutoff, de);
-
- vec2 ne;
- vec3 nexnorm = texelFetch(normalMap, itc+ivec2(-sc,-sc), i).rgb;
- nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm
- ne.x = dot(nexnorm, norm);
- vec3 neynorm = texelFetch(normalMap, itc+ivec2(sc,sc), i).rgb;
- neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm
- ne.y = dot(neynorm, norm);
-
- ne = 1.0-ne;
-
- ne = step(norm_cutoff, ne);
-
- e += dot(de,de)+dot(ne,ne);
- }
-
- e /= samples;
-
- gl_FragColor.a = e;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl
deleted file mode 100644
index 9deff7bb2a..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file edgeV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 0b31cbefd1..14a683971a 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -22,11 +22,13 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
-
+
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect depthMap;
@@ -34,7 +36,6 @@ uniform sampler2DRect normalMap;
uniform samplerCube environmentMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
@@ -54,9 +55,12 @@ uniform float sun_wash;
uniform int proj_shadow_idx;
uniform float shadow_fade;
-varying vec4 vary_light;
+uniform vec3 center;
+uniform float size;
+uniform vec3 color;
+uniform float falloff;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
uniform vec2 screen_res;
uniform mat4 inv_proj;
@@ -128,9 +132,9 @@ void main()
frag.xy *= screen_res;
vec3 pos = getPosition(frag.xy).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
+ vec3 lv = center.xyz-pos.xyz;
float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
+ dist2 /= size;
if (dist2 > 1.0)
{
discard;
@@ -161,7 +165,7 @@ void main()
proj_tc.xyz /= proj_tc.w;
- float fa = gl_Color.a+1.0;
+ float fa = falloff+1.0;
float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
if (dist_atten <= 0.0)
{
@@ -193,7 +197,7 @@ void main()
vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+ vec3 lcol = color.rgb * plcol.rgb * plcol.a;
lit = da * dist_atten * noise;
@@ -210,7 +214,7 @@ void main()
amb_da = min(amb_da, 1.0-lit);
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+ col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
}
@@ -243,7 +247,7 @@ void main()
stc.y > 0.0)
{
vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
+ col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb*shadow;
}
}
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
deleted file mode 100644
index 1afa9a9fb4..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod; //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- int wght = 0;
-
- vec3 fcol = vec3(0,0,0);
-
- vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
-
- ivec2 itc = ivec2(frag.xy);
-
- float shadow = 1.0;
-
- if (proj_shadow_idx >= 0)
- {
- vec4 shd = texture2DRect(lightMap, frag);
- float sh[2];
- sh[0] = shd.b;
- sh[1] = shd.a;
- shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
- }
-
- for (int i = 0; i < samples; i++)
- {
- vec3 pos = getPosition(itc, i).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- norm = normalize(norm);
- float l_dist = -dot(lv, proj_n);
-
- vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
- if (proj_tc.z >= 0.0)
- {
- proj_tc.xyz /= proj_tc.w;
-
- float fa = gl_Color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten > 0.0)
- {
- lv = proj_origin-pos.xyz;
- lv = normalize(lv);
- float da = dot(norm, lv);
-
- vec3 col = vec3(0,0,0);
-
- vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- if (proj_tc.z > 0.0 &&
- proj_tc.x < 1.0 &&
- proj_tc.y < 1.0 &&
- proj_tc.x > 0.0 &&
- proj_tc.y > 0.0)
- {
- float lit = 0.0;
- float amb_da = proj_ambiance;
-
- if (da > 0.0)
- {
- float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
- float lod = diff * proj_lod;
-
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-
- lit = da * dist_atten * noise;
-
- col = lcol*lit*diff_tex*shadow;
- amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
- }
-
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
- amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
-
- amb_da = min(amb_da, 1.0-lit);
-
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
- }
-
-
- vec4 spec = texelFetch(specularRect, itc, i);
- if (spec.a > 0.0)
- {
- vec3 ref = reflect(normalize(pos), norm);
-
- //project from point pos in direction ref to plane proj_p, proj_n
- vec3 pdelta = proj_p-pos;
- float ds = dot(ref, proj_n);
-
- if (ds < 0.0)
- {
- vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
- if (stc.z > 0.0)
- {
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
- if (stc.x < 1.0 &&
- stc.y < 1.0 &&
- stc.x > 0.0 &&
- stc.y > 0.0)
- {
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
- }
- }
- }
- }
-
- fcol += col;
- wght++;
- }
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/samples;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index d7407332e5..97f3063a9e 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -23,16 +23,17 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect normalMap;
uniform sampler2DRect lightMap;
uniform sampler2DRect depthMap;
-uniform sampler2D noiseMap;
uniform samplerCube environmentMap;
uniform sampler2D lightFunc;
uniform vec3 gi_quad;
@@ -58,15 +59,16 @@ uniform vec4 distance_multiplier;
uniform vec4 max_y;
uniform vec4 glow;
uniform float scene_light_strength;
-uniform vec3 env_mat[3];
+uniform mat3 env_mat;
uniform vec4 shadow_clip;
uniform mat3 ssao_effect_mat;
uniform mat4 inv_proj;
uniform vec2 screen_res;
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+uniform vec3 sun_dir;
+
+VARYING vec2 vary_fragcoord;
vec3 vary_PositionEye;
@@ -145,10 +147,6 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
vec3 P = inPositionEye;
setPositionEye(P);
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
vec3 tmpLightnorm = lightnorm.xyz;
vec3 Pn = normalize(P);
@@ -280,9 +278,8 @@ void main()
vec3 pos = getPosition_d(tc, depth).xyz;
vec3 norm = texture2DRect(normalMap, tc).xyz;
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-
- float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
+
+ float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
vec4 diffuse = texture2DRect(diffuseRect, tc);
@@ -309,13 +306,18 @@ void main()
// the old infinite-sky shiny reflection
//
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+ float sa = dot(refnormpersp, sun_dir.xyz);
+ vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).r;
// add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb;
bloom = dot(spec_contrib, spec_contrib);
col += spec_contrib;
+
+ //add environmentmap
+ vec3 env_vec = env_mat * refnormpersp;
+ col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb,
+ max(spec.a-diffuse.a*2.0, 0.0));
}
col = atmosLighting(col);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
deleted file mode 100644
index 1244294451..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
+++ /dev/null
@@ -1,337 +0,0 @@
-/**
- * @file softenLightMSF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2DMS depthMap;
-uniform sampler2D noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D lightFunc;
-uniform vec3 gi_quad;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
- return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
- return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
- return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
- return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
- vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
- vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
- vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
- vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
- vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
- vec3 P = inPositionEye;
- setPositionEye(P);
-
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
- vec3 tmpLightnorm = lightnorm.xyz;
-
- vec3 Pn = normalize(P);
- float Plen = length(P);
-
- vec4 temp1 = vec4(0);
- vec3 temp2 = vec3(0);
- vec4 blue_weight;
- vec4 haze_weight;
- vec4 sunlight = sunlight_color;
- vec4 light_atten;
-
- //sunlight attenuation effect (hue and brightness) due to atmosphere
- //this is used later for sunlight modulation at various altitudes
- light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
- //I had thought blue_density and haze_density should have equal weighting,
- //but attenuation due to haze_density tends to seem too strong
-
- temp1 = blue_density + vec4(haze_density.r);
- blue_weight = blue_density / temp1;
- haze_weight = vec4(haze_density.r) / temp1;
-
- //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
- temp2.y = max(0.0, tmpLightnorm.y);
- temp2.y = 1. / temp2.y;
- sunlight *= exp( - light_atten * temp2.y);
-
- // main atmospheric scattering line integral
- temp2.z = Plen * density_multiplier.x;
-
- // Transparency (-> temp1)
- // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
- // compiler gets confused.
- temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
- //final atmosphere attenuation factor
- setAtmosAttenuation(temp1.rgb);
-
- //compute haze glow
- //(can use temp2.x as temp because we haven't used it yet)
- temp2.x = dot(Pn, tmpLightnorm.xyz);
- temp2.x = 1. - temp2.x;
- //temp2.x is 0 at the sun and increases away from sun
- temp2.x = max(temp2.x, .03); //was glow.y
- //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
- temp2.x *= glow.x;
- //higher glow.x gives dimmer glow (because next step is 1 / "angle")
- temp2.x = pow(temp2.x, glow.z);
- //glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
- //add "minimum anti-solar illumination"
- temp2.x += .25;
-
- //increase ambient when there are more clouds
- vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
-
- /* decrease value and saturation (that in HSV, not HSL) for occluded areas
- * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
- * // The following line of code performs the equivalent of:
- * float ambAlpha = tmpAmbient.a;
- * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
- * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
- * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
- */
- tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
- //haze color
- setAdditiveColor(
- vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
- + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
- + tmpAmbient)));
-
- //brightness of surface both sunlight and ambient
- setSunlitColor(vec3(sunlight * .5));
- setAmblitColor(vec3(tmpAmbient * .25));
- setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor();
- return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor() * 2.0;
- return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
- return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
- return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
- return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
- return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
- return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
- //soft clip effect:
- light = 1. - clamp(light, vec3(0.), vec3(1.));
- light = 1. - pow(light, gamma.xxx);
-
- return light;
-}
-
-void main()
-{
- vec2 tc = vary_fragcoord.xy;
- ivec2 itc = ivec2(tc);
-
- vec4 fcol = vec4(0,0,0,0);
-
- vec2 scol_ambocc = texture2DRect(lightMap, tc).rg;
- float ambocc = scol_ambocc.g;
-
- for (int i = 0; i < samples; ++i)
- {
- float depth = texelFetch(depthMap, itc.xy, i).r;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-
- vec4 diffuse = texelFetch(diffuseRect, itc, i);
- vec3 col;
- float bloom = 0.0;
- if (diffuse.a < 0.9)
- {
- vec4 spec = texelFetch(specularRect, itc, i);
-
- float amb = 0;
-
- float scol = max(scol_ambocc.r, diffuse.a);
- amb += ambocc;
-
- calcAtmospherics(pos.xyz, ambocc);
-
- col = atmosAmbient(vec3(0));
- col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
-
- col *= diffuse.rgb;
-
- if (spec.a > 0.0) // specular reflection
- {
- // the old infinite-sky shiny reflection
- //
- vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
- // add the two types of shiny together
- vec3 spec_contrib = dumbshiny * spec.rgb;
- bloom = dot(spec_contrib, spec_contrib);
- col += spec_contrib;
- }
-
- col = atmosLighting(col);
- col = scaleSoftClip(col);
-
- col = mix(col, diffuse.rgb, diffuse.a);
- }
- else
- {
- col = diffuse.rgb;
- }
-
- fcol += vec4(col, bloom);
- }
-
- gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
index fed238510a..c840d72784 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
@@ -22,23 +22,21 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
uniform vec2 screen_res;
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
+
void main()
{
//transform vertex
- gl_Position = ftransform();
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
- vary_light = gl_MultiTexCoord0;
+ vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 25270f4939..31bd0c79da 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -23,9 +23,13 @@
* $/LicenseInfo$
*/
+#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
-#extension GL_ARB_texture_rectangle : enable
+VARYING vec4 vertex_color;
uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
@@ -34,7 +38,6 @@ uniform sampler2DRect normalMap;
uniform samplerCube environmentMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
@@ -53,9 +56,9 @@ uniform float sun_wash;
uniform int proj_shadow_idx;
uniform float shadow_fade;
-varying vec4 vary_light;
+VARYING vec4 vary_light;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
uniform vec2 screen_res;
uniform mat4 inv_proj;
@@ -114,7 +117,7 @@ void main()
proj_tc.xyz /= proj_tc.w;
- float fa = gl_Color.a+1.0;
+ float fa = vertex_color.a+1.0;
float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
lv = proj_origin-pos.xyz;
@@ -140,7 +143,7 @@ void main()
vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+ vec3 lcol = vertex_color.rgb * plcol.rgb * plcol.a;
lit = da * dist_atten * noise;
@@ -163,7 +166,7 @@ void main()
amb_da = min(amb_da, 1.0-lit);
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+ col += amb_da*vertex_color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
}
@@ -192,7 +195,7 @@ void main()
stc.y > 0.0)
{
vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
+ col += dist_atten*scol.rgb*vertex_color.rgb*scol.a*spec.rgb*shadow;
}
}
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
deleted file mode 100644
index 4962e73e39..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod; //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- vec4 frag = vary_fragcoord;
- frag.xyz /= frag.w;
- frag.xyz = frag.xyz*0.5+0.5;
- frag.xy *= screen_res;
- ivec2 itc = ivec2(frag.xy);
-
- vec3 fcol = vec3(0,0,0);
- int wght = 0;
-
- float shadow = 1.0;
-
- if (proj_shadow_idx >= 0)
- {
- vec4 shd = texture2DRect(lightMap, frag.xy);
- float sh[2];
- sh[0] = shd.b;
- sh[1] = shd.a;
- shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
- }
-
- for (int i = 0; i < samples; i++)
- {
- vec3 pos = getPosition(itc, i).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- norm = normalize(norm);
- float l_dist = -dot(lv, proj_n);
-
- vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
- if (proj_tc.z >= 0.0)
- {
- proj_tc.xyz /= proj_tc.w;
-
- float fa = gl_Color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten > 0.0)
- {
- lv = proj_origin-pos.xyz;
- lv = normalize(lv);
- float da = dot(norm, lv);
-
- vec3 col = vec3(0,0,0);
-
- vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- if (proj_tc.z > 0.0 &&
- proj_tc.x < 1.0 &&
- proj_tc.y < 1.0 &&
- proj_tc.x > 0.0 &&
- proj_tc.y > 0.0)
- {
- float lit = 0.0;
- float amb_da = proj_ambiance;
-
- if (da > 0.0)
- {
- float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
- float lod = diff * proj_lod;
-
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-
- vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-
- lit = da * dist_atten * noise;
-
- col = lcol*lit*diff_tex*shadow;
- amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
- }
-
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
- amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
-
- amb_da = min(amb_da, 1.0-lit);
-
- col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
- }
-
-
- vec4 spec = texelFetch(specularRect, itc, i);
- if (spec.a > 0.0)
- {
- vec3 ref = reflect(normalize(pos), norm);
-
- //project from point pos in direction ref to plane proj_p, proj_n
- vec3 pdelta = proj_p-pos;
- float ds = dot(ref, proj_n);
-
- if (ds < 0.0)
- {
- vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
- if (stc.z > 0.0)
- {
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
- if (stc.x < 1.0 &&
- stc.y < 1.0 &&
- stc.x > 0.0 &&
- stc.y > 0.0)
- {
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
- }
- }
- }
- }
-
- fcol += col;
- wght++;
- }
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/wght;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 1809cff1e5..229c2f4b67 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -22,11 +22,13 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
//class 2, shadows, no SSAO
uniform sampler2DRect depthMap;
@@ -47,13 +49,13 @@ uniform float ssao_max_radius;
uniform float ssao_factor;
uniform float ssao_factor_inv;
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
+VARYING vec2 vary_fragcoord;
uniform mat4 inv_proj;
uniform vec2 screen_res;
uniform vec2 shadow_res;
uniform vec2 proj_shadow_res;
+uniform vec3 sun_dir;
uniform float shadow_bias;
uniform float shadow_offset;
@@ -132,10 +134,10 @@ void main()
}*/
float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+ float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
vec3 shadow_pos = pos.xyz + displace*norm;
- vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+ vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
deleted file mode 100644
index ac4fe52655..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
+++ /dev/null
@@ -1,220 +0,0 @@
-/**
- * @file sunLightMSF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-//class 2, shadows, no SSAO
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-uniform vec2 proj_shadow_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-uniform float spot_shadow_bias;
-uniform float spot_shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen.xy, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
-
- float cs = shadow2DRect(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += spot_shadow_bias*scl;
-
- float cs = shadow2D(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- vec2 off = 1.5/proj_shadow_res;
-
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
- ivec2 itc = ivec2(pos_screen);
-
- //try doing an unproject here
-
- vec4 fcol = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; i++)
- {
- vec4 pos = getPosition(itc, i);
-
- vec4 nmap4 = texelFetch(normalMap, itc, i);
- nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
- float displace = nmap4.w;
- vec3 norm = nmap4.xyz;
-
- /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL
- {
- gl_FragColor = vec4(0.0); // doesn't matter
- return;
- }*/
-
- float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
- vec3 shadow_pos = pos.xyz + displace*norm;
- vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
-
- vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
-
- if (spos.z > -shadow_clip.w)
- {
- if (dp_directional_light == 0.0)
- {
- // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
- shadow = 0.0;
- }
- else
- {
- vec4 lpos;
-
- if (spos.z < -shadow_clip.z)
- {
- lpos = shadow_matrix[3]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap3, lpos, 0.25);
- shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
- }
- else if (spos.z < -shadow_clip.y)
- {
- lpos = shadow_matrix[2]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap2, lpos, 0.5);
- }
- else if (spos.z < -shadow_clip.x)
- {
- lpos = shadow_matrix[1]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap1, lpos, 0.75);
- }
- else
- {
- lpos = shadow_matrix[0]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap0, lpos, 1.0);
- }
-
- // take the most-shadowed value out of these two:
- // * the blurred sun shadow in the light (shadow) map
- // * an unblurred dot product between the sun and this norm
- // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
- shadow = min(shadow, dp_directional_light);
-
- //lpos.xy /= lpos.w*32.0;
- //if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1)
- //{
- // shadow = 0.0;
- //}
-
- }
- }
- else
- {
- // more distant than the shadow map covers
- shadow = 1.0;
- }
-
- fcol[0] += shadow;
- fcol[1] += 1.0;
-
- spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0);
-
- //spotlight shadow 1
- vec4 lpos = shadow_matrix[4]*spos;
- fcol[2] += pcfShadow(shadowMap4, lpos, 0.8);
-
- //spotlight shadow 2
- lpos = shadow_matrix[5]*spos;
- fcol[3] += pcfShadow(shadowMap5, lpos, 0.8);
- }
-
- gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
index 681186d6b2..6b420833b9 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
@@ -22,10 +22,12 @@
* $/LicenseInfo$
*/
-
-
#extension GL_ARB_texture_rectangle : enable
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
//class 2 -- shadows and SSAO
uniform sampler2DRect depthMap;
@@ -38,6 +40,7 @@ uniform sampler2DShadow shadowMap4;
uniform sampler2DShadow shadowMap5;
uniform sampler2D noiseMap;
+
// Inputs
uniform mat4 shadow_matrix[6];
uniform vec4 shadow_clip;
@@ -46,13 +49,13 @@ uniform float ssao_max_radius;
uniform float ssao_factor;
uniform float ssao_factor_inv;
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
+VARYING vec2 vary_fragcoord;
uniform mat4 inv_proj;
uniform vec2 screen_res;
uniform vec2 shadow_res;
uniform vec2 proj_shadow_res;
+uniform vec3 sun_dir;
uniform float shadow_bias;
uniform float shadow_offset;
@@ -73,11 +76,8 @@ vec4 getPosition(vec2 pos_screen)
return pos;
}
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm)
+vec2 getKern(int i)
{
- float ret = 1.0;
-
vec2 kern[8];
// exponentially (^2) distant occlusion samples spread around origin
kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
@@ -88,22 +88,30 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm)
kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
+
+ return kern[i];
+}
+
+//calculate decreases in ambient lighting when crowded out (SSAO)
+float calcAmbientOcclusion(vec4 pos, vec3 norm)
+{
+ float ret = 1.0;
vec2 pos_screen = vary_fragcoord.xy;
vec3 pos_world = pos.xyz;
vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
float angle_hidden = 0.0;
- int points = 0;
+ float points = 0;
float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-
+
// it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
for (int i = 0; i < 8; i++)
{
- vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect);
+ vec2 samppos_screen = pos_screen + scale * reflect(getKern(i), noise_reflect);
vec3 samppos_world = getPosition(samppos_screen).xyz;
-
+
vec3 diff = pos_world - samppos_world;
float dist2 = dot(diff, diff);
@@ -111,17 +119,21 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm)
// --> solid angle shrinking by the square of distance
//radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
//(k should vary inversely with # of samples, but this is taken care of later)
-
- angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
+
+ float funky_val = (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) ? 1.0 : 0.0;
+ angle_hidden = angle_hidden + funky_val * min(1.0/dist2, ssao_factor_inv);
// 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
- points = points + int(diff.z > -1.0);
+ float diffz_val = (diff.z > -1.0) ? 1.0 : 0.0;
+ points = points + diffz_val;
}
- angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-
- ret = (1.0 - (float(points != 0) * angle_hidden));
+ angle_hidden = min(ssao_factor*angle_hidden/points, 1.0);
+ float points_val = (points > 0.0) ? 1.0 : 0.0;
+ ret = (1.0 - (points_val * angle_hidden));
+
+ ret = max(ret, 0.0);
return min(ret, 1.0);
}
@@ -158,7 +170,6 @@ float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-
return shadow/5.0;
//return shadow;
@@ -184,10 +195,10 @@ void main()
}*/
float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+ float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
vec3 shadow_pos = pos.xyz + displace*norm;
- vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+ vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
@@ -251,7 +262,7 @@ void main()
gl_FragColor[0] = shadow;
gl_FragColor[1] = calcAmbientOcclusion(pos, norm);
- spos.xyz = shadow_pos+norm*spot_shadow_offset;
+ spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0);
//spotlight shadow 1
vec4 lpos = shadow_matrix[4]*spos;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
deleted file mode 100644
index 0fd7b7525d..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
+++ /dev/null
@@ -1,258 +0,0 @@
-/**
- * @file sunLightSSAOF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-//class 2 -- shadows and SSAO
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-uniform sampler2D noiseMap;
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-uniform vec2 proj_shadow_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-uniform float spot_shadow_bias;
-uniform float spot_shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample)
-{
- float ret = 1.0;
-
- vec2 kern[8];
- // exponentially (^2) distant occlusion samples spread around origin
- kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
- kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
- kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
- kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
- kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
- kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
- kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
- kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
- vec2 pos_screen = vary_fragcoord.xy;
- vec3 pos_world = pos.xyz;
- vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-
- float angle_hidden = 0.0;
- int points = 0;
-
- float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-
- // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
- for (int i = 0; i < 8; i++)
- {
- ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect));
- vec3 samppos_world = getPosition(samppos_screen, sample).xyz;
-
- vec3 diff = pos_world - samppos_world;
- float dist2 = dot(diff, diff);
-
- // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
- // --> solid angle shrinking by the square of distance
- //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
- //(k should vary inversely with # of samples, but this is taken care of later)
-
- angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-
- // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
- points = points + int(diff.z > -1.0);
- }
-
- angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-
- ret = (1.0 - (float(points != 0) * angle_hidden));
-
- return min(ret, 1.0);
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
-
- float cs = shadow2DRect(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += spot_shadow_bias*scl;
-
- float cs = shadow2D(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- vec2 off = 1.5/proj_shadow_res;
-
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
- ivec2 itc = ivec2(pos_screen);
- vec4 fcol = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; i++)
- {
- vec4 pos = getPosition(itc, i);
-
- vec4 nmap4 = texelFetch(normalMap, itc, i);
- nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
- float displace = nmap4.w;
- vec3 norm = nmap4.xyz;
-
- float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
- vec3 shadow_pos = pos.xyz + displace*norm;
- vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
-
- vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
-
- if (spos.z > -shadow_clip.w)
- {
- if (dp_directional_light == 0.0)
- {
- // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
- shadow = 0.0;
- }
- else
- {
- vec4 lpos;
-
- if (spos.z < -shadow_clip.z)
- {
- lpos = shadow_matrix[3]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap3, lpos, 0.25);
- shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
- }
- else if (spos.z < -shadow_clip.y)
- {
- lpos = shadow_matrix[2]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap2, lpos, 0.5);
- }
- else if (spos.z < -shadow_clip.x)
- {
- lpos = shadow_matrix[1]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap1, lpos, 0.75);
- }
- else
- {
- lpos = shadow_matrix[0]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap0, lpos, 1.0);
- }
-
- // take the most-shadowed value out of these two:
- // * the blurred sun shadow in the light (shadow) map
- // * an unblurred dot product between the sun and this norm
- // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
- shadow = min(shadow, dp_directional_light);
-
- }
- }
- else
- {
- // more distant than the shadow map covers
- shadow = 1.0;
- }
-
-
- fcol[0] += shadow;
- fcol[1] += calcAmbientOcclusion(pos, norm, i);
-
- spos.xyz = shadow_pos+offset*spot_shadow_offset;
-
- //spotlight shadow 1
- vec4 lpos = shadow_matrix[4]*spos;
- fcol[2] += pcfShadow(shadowMap4, lpos, 0.8);
-
- //spotlight shadow 2
- lpos = shadow_matrix[5]*spos;
- fcol[3] += pcfShadow(shadowMap5, lpos, 0.8);
- }
-
- gl_FragColor = fcol / samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
index e7ab11c6ed..bc5eb5181d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
@@ -1,5 +1,5 @@
/**
- * @file sunLightF.glsl
+ * @file sunLightV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -22,24 +22,20 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_fragcoord;
uniform vec2 screen_res;
void main()
{
//transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
+ vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ gl_Position = pos;
- vary_light = gl_MultiTexCoord0;
-
- gl_FrontColor = gl_Color;
+ vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
}
diff --git a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl b/indra/newview/app_settings/shaders/class2/effects/blurF.glsl
deleted file mode 100644
index 35411db04b..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file blurf.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2DRect RenderTexture;
-uniform float bloomStrength;
-
-varying vec4 gl_TexCoord[gl_MaxTextureCoords];
-void main(void)
-{
- float blurWeights[7];
- blurWeights[0] = 0.05;
- blurWeights[1] = 0.1;
- blurWeights[2] = 0.2;
- blurWeights[3] = 0.3;
- blurWeights[4] = 0.2;
- blurWeights[5] = 0.1;
- blurWeights[6] = 0.05;
-
- vec3 color = vec3(0,0,0);
- for (int i = 0; i < 7; i++){
- color += vec3(texture2DRect(RenderTexture, gl_TexCoord[i].st)) * blurWeights[i];
- }
-
- color *= bloomStrength;
-
- gl_FragColor = vec4(color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl b/indra/newview/app_settings/shaders/class2/effects/blurV.glsl
deleted file mode 100644
index 3e47ed15fe..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file blurV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform vec2 texelSize;
-uniform vec2 blurDirection;
-uniform float blurWidth;
-
-void main(void)
-{
- // Transform vertex
- gl_Position = ftransform();
-
- vec2 blurDelta = texelSize * blurDirection * vec2(blurWidth, blurWidth);
- vec2 s = gl_MultiTexCoord0.st - (blurDelta * 3.0);
-
- // for (int i = 0; i < 7; i++) {
- // gl_TexCoord[i].st = s + (i * blurDelta);
- // }
-
- // MANUALLY UNROLL
- gl_TexCoord[0].st = s;
- gl_TexCoord[1].st = s + blurDelta;
- gl_TexCoord[2].st = s + (2. * blurDelta);
- gl_TexCoord[3].st = s + (3. * blurDelta);
- gl_TexCoord[4].st = s + (4. * blurDelta);
- gl_TexCoord[5].st = s + (5. * blurDelta);
- gl_TexCoord[6].st = s + (6. * blurDelta);
-
- // gl_TexCoord[0].st = s;
- // gl_TexCoord[1].st = blurDelta;
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
deleted file mode 100644
index 42ab8d40e8..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file colorFilterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2DRect RenderTexture;
-uniform float brightness;
-uniform float contrast;
-uniform vec3 contrastBase;
-uniform float saturation;
-uniform vec3 lumWeights;
-
-const float gamma = 2.0;
-
-void main(void)
-{
- vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-
- /// Modulate brightness
- color *= brightness;
-
- /// Modulate contrast
- color = mix(contrastBase, color, contrast);
-
- /// Modulate saturation
- color = mix(vec3(dot(color, lumWeights)), color, saturation);
-
- gl_FragColor = vec4(color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl b/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
deleted file mode 100644
index 25806cd914..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file drawQuadV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-void main(void)
-{
- //transform vertex
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_MultiTexCoord1;
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
deleted file mode 100644
index 9187c8ec31..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file extractF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2DRect RenderTexture;
-uniform float extractLow;
-uniform float extractHigh;
-uniform vec3 lumWeights;
-
-void main(void)
-{
- /// Get scene color
- vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-
- /// Extract luminance and scale up by night vision brightness
- float lum = smoothstep(extractLow, extractHigh, dot(color, lumWeights));
-
- gl_FragColor = vec4(vec3(lum), 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
deleted file mode 100644
index 76b675a9bd..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * @file nightVisionF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2DRect RenderTexture;
-uniform sampler2D NoiseTexture;
-uniform float brightMult;
-uniform float noiseStrength;
-
-float luminance(vec3 color)
-{
- /// CALCULATING LUMINANCE (Using NTSC lum weights)
- /// http://en.wikipedia.org/wiki/Luma_%28video%29
- return dot(color, vec3(0.299, 0.587, 0.114));
-}
-
-void main(void)
-{
- /// Get scene color
- vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-
- /// Extract luminance and scale up by night vision brightness
- float lum = luminance(color) * brightMult;
-
- /// Convert into night vision color space
- /// Newer NVG colors (crisper and more saturated)
- vec3 outColor = (lum * vec3(0.91, 1.21, 0.9)) + vec3(-0.07, 0.1, -0.12);
-
- /// Add noise
- float noiseValue = texture2D(NoiseTexture, gl_TexCoord[1].st).r;
- noiseValue = (noiseValue - 0.5) * noiseStrength;
-
- /// Older NVG colors (more muted)
- // vec3 outColor = (lum * vec3(0.82, 0.75, 0.83)) + vec3(0.05, 0.32, -0.11);
-
- outColor += noiseValue;
-
- gl_FragColor = vec4(outColor, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
deleted file mode 100644
index abf1be6645..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file simpleF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2DRect RenderTexture;
-
-void main(void)
-{
- vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
- gl_FragColor = vec4(1.0 - color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
deleted file mode 100644
index df08fce0da..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * @file terrainF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D detail_0;
-uniform sampler2D detail_1;
-uniform sampler2D detail_2;
-uniform sampler2D detail_3;
-uniform sampler2D alpha_ramp;
-
-vec3 atmosLighting(vec3 light);
-
-vec3 scaleSoftClip(vec3 color);
-
-void main()
-{
- /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
-
- /// TODO Confirm tex coords and bind them appropriately in vert shader.
- vec4 color0 = texture2D(detail_0, gl_TexCoord[0].xy);
- vec4 color1 = texture2D(detail_1, gl_TexCoord[0].xy);
- vec4 color2 = texture2D(detail_2, gl_TexCoord[0].xy);
- vec4 color3 = texture2D(detail_3, gl_TexCoord[0].xy);
-
- float alpha1 = texture2D(alpha_ramp, gl_TexCoord[0].zw).a;
- float alpha2 = texture2D(alpha_ramp,gl_TexCoord[1].xy).a;
- float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a;
- vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
-
- /// Add WL Components
- outColor.rgb = atmosLighting(outColor.rgb * gl_Color.rgb);
-
- gl_FragColor = vec4(scaleSoftClip(outColor.rgb), 1.0);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
deleted file mode 100644
index 36d0c99b63..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @file terrainV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-
-vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
-{
- vec4 tcoord;
-
- tcoord.x = dot(vpos, tp0);
- tcoord.y = dot(vpos, tp1);
- tcoord.z = tc.z;
- tcoord.w = tc.w;
-
- tcoord = mat * tcoord;
-
- return tcoord;
-}
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
-
- vec4 pos = gl_ModelViewMatrix * gl_Vertex;
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
-
- /// Potentially better without it for water.
- pos /= pos.w;
-
- calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz);
-
- vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0));
-
- gl_FrontColor = color;
-
- // Transform and pass tex coords
- gl_TexCoord[0].xy = texgen_object(gl_Vertex, gl_MultiTexCoord0, gl_TextureMatrix[0], gl_ObjectPlaneS[0], gl_ObjectPlaneT[0]).xy;
-
- vec4 t = gl_MultiTexCoord1;
-
- gl_TexCoord[0].zw = t.xy;
- gl_TexCoord[1].xy = t.xy-vec2(2.0, 0.0);
- gl_TexCoord[1].zw = t.xy-vec2(1.0, 0.0);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
deleted file mode 100644
index 90468b45a2..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * @file terrainWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D detail_0;
-uniform sampler2D detail_1;
-uniform sampler2D detail_2;
-uniform sampler2D detail_3;
-uniform sampler2D alpha_ramp;
-
-vec3 atmosLighting(vec3 light);
-
-vec4 applyWaterFog(vec4 color);
-
-void main()
-{
- /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
-
- /// TODO Confirm tex coords and bind them appropriately in vert shader.
- vec4 color0 = texture2D(detail_0, gl_TexCoord[0].xy);
- vec4 color1 = texture2D(detail_1, gl_TexCoord[0].xy);
- vec4 color2 = texture2D(detail_2, gl_TexCoord[0].xy);
- vec4 color3 = texture2D(detail_3, gl_TexCoord[0].xy);
-
- float alpha1 = texture2D(alpha_ramp, gl_TexCoord[0].zw).a;
- float alpha2 = texture2D(alpha_ramp,gl_TexCoord[1].xy).a;
- float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a;
- vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
-
- /// Add WL Components
- outColor.rgb = atmosLighting(outColor.rgb * gl_Color.rgb);
-
- outColor = applyWaterFog(outColor);
- gl_FragColor = outColor;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
deleted file mode 100644
index f947aa4be1..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * @file underWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D diffuseMap;
-uniform sampler2D bumpMap;
-uniform sampler2D screenTex;
-uniform sampler2D refTex;
-uniform sampler2D screenDepth;
-
-uniform vec4 fogCol;
-uniform vec3 lightDir;
-uniform vec3 specular;
-uniform float lightExp;
-uniform vec2 fbScale;
-uniform float refScale;
-uniform float znear;
-uniform float zfar;
-uniform float kd;
-uniform vec4 waterPlane;
-uniform vec3 eyeVec;
-uniform vec4 waterFogColor;
-uniform float waterFogDensity;
-uniform float waterFogKS;
-uniform vec2 screenRes;
-
-//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
-
-vec4 applyWaterFog(vec4 color, vec3 viewVec)
-{
- //normalize view vector
- vec3 view = normalize(viewVec);
- float es = -view.z;
-
- //find intersection point with water plane and eye vector
-
- //get eye depth
- float e0 = max(-waterPlane.w, 0.0);
-
- //get object depth
- float depth = length(viewVec);
-
- //get "thickness" of water
- float l = max(depth, 0.1);
-
- float kd = waterFogDensity;
- float ks = waterFogKS;
- vec4 kc = waterFogColor;
-
- float F = 0.98;
-
- float t1 = -kd * pow(F, ks * e0);
- float t2 = kd + ks * es;
- float t3 = pow(F, t2*l) - 1.0;
-
- float L = min(t1/t2*t3, 1.0);
-
- float D = pow(0.98, l*kd);
- //return vec4(1.0, 0.0, 1.0, 1.0);
- return color * D + kc * L;
- //depth /= 10.0;
- //return vec4(depth,depth,depth,0.0);
-}
-
-void main()
-{
- vec4 color;
-
- //get detail normals
- vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
- vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
- vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
- vec3 wavef = normalize(wave1+wave2+wave3);
-
- //figure out distortion vector (ripply)
- vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
- distort = distort+wavef.xy*refScale;
-
- vec4 fb = texture2D(screenTex, distort);
-
- gl_FragColor = applyWaterFog(fb,view.xyz);
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
deleted file mode 100644
index dc543b2231..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * @file waterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec3 scaleSoftClip(vec3 inColor);
-vec3 atmosTransport(vec3 inColor);
-
-uniform sampler2D bumpMap;
-uniform sampler2D screenTex;
-uniform sampler2D refTex;
-
-uniform float sunAngle;
-uniform float sunAngle2;
-uniform vec3 lightDir;
-uniform vec3 specular;
-uniform float lightExp;
-uniform float refScale;
-uniform float kd;
-uniform vec2 screenRes;
-uniform vec3 normScale;
-uniform float fresnelScale;
-uniform float fresnelOffset;
-uniform float blurMultiplier;
-
-
-//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
-
-void main()
-{
- vec4 color;
-
- float dist = length(view.xy);
-
- //normalize view vector
- vec3 viewVec = normalize(view.xyz);
-
- //get wave normals
- vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
- vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
- vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
- //get base fresnel components
-
- vec3 df = vec3(
- dot(viewVec, wave1),
- dot(viewVec, (wave2 + wave3) * 0.5),
- dot(viewVec, wave3)
- ) * fresnelScale + fresnelOffset;
- df *= df;
-
- vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
-
- float dist2 = dist;
- dist = max(dist, 5.0);
-
- float dmod = sqrt(dist);
-
- vec2 dmod_scale = vec2(dmod*dmod, dmod);
-
- //get reflected color
- vec2 refdistort1 = wave1.xy*normScale.x;
- vec2 refvec1 = distort+refdistort1/dmod_scale;
- vec4 refcol1 = texture2D(refTex, refvec1);
-
- vec2 refdistort2 = wave2.xy*normScale.y;
- vec2 refvec2 = distort+refdistort2/dmod_scale;
- vec4 refcol2 = texture2D(refTex, refvec2);
-
- vec2 refdistort3 = wave3.xy*normScale.z;
- vec2 refvec3 = distort+refdistort3/dmod_scale;
- vec4 refcol3 = texture2D(refTex, refvec3);
-
- vec4 refcol = refcol1 + refcol2 + refcol3;
- float df1 = df.x + df.y + df.z;
- refcol *= df1 * 0.333;
-
- vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
-
- wavef.z *= max(-viewVec.z, 0.1);
- wavef = normalize(wavef);
-
- float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
-
- vec2 refdistort4 = wavef.xy*0.125;
- refdistort4.y -= abs(refdistort4.y);
- vec2 refvec4 = distort+refdistort4/dmod;
- float dweight = min(dist2*blurMultiplier, 1.0);
- vec4 baseCol = texture2D(refTex, refvec4);
- refcol = mix(baseCol*df2, refcol, dweight);
-
- //get specular component
- float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
-
- //harden specular
- spec = pow(spec, 128.0);
-
- //figure out distortion vector (ripply)
- vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
-
- vec4 fb = texture2D(screenTex, distort2);
-
- //mix with reflection
- // Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
- color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
- color.rgb += spec * specular;
-
- color.rgb = atmosTransport(color.rgb);
- color.rgb = scaleSoftClip(color.rgb);
- color.a = spec * sunAngle2;
-
- gl_FragColor = color;
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
deleted file mode 100644
index 4bdfce9260..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @file waterFogF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform vec4 lightnorm;
-uniform vec4 waterPlane;
-uniform vec4 waterFogColor;
-uniform float waterFogDensity;
-uniform float waterFogKS;
-
-vec3 getPositionEye();
-
-vec4 applyWaterFog(vec4 color)
-{
- //normalize view vector
- vec3 view = normalize(getPositionEye());
- float es = -(dot(view, waterPlane.xyz));
-
- //find intersection point with water plane and eye vector
-
- //get eye depth
- float e0 = max(-waterPlane.w, 0.0);
-
- vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);
-
- //get object depth
- float depth = length(getPositionEye() - int_v);
-
- //get "thickness" of water
- float l = max(depth, 0.1);
-
- float kd = waterFogDensity;
- float ks = waterFogKS;
- vec4 kc = waterFogColor;
-
- float F = 0.98;
-
- float t1 = -kd * pow(F, ks * e0);
- float t2 = kd + ks * es;
- float t3 = pow(F, t2*l) - 1.0;
-
- float L = min(t1/t2*t3, 1.0);
-
- float D = pow(0.98, l*kd);
-
- color.rgb = color.rgb * D + kc.rgb * L;
- color.a = kc.a + color.a;
-
- return color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
deleted file mode 100644
index 4c05329065..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file lightAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
deleted file mode 100644
index 0de909353e..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file lightAlphaMaskNonIndexedF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
deleted file mode 100644
index d12d88f1c5..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @file lightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
deleted file mode 100644
index 8c7713c08d..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file lightFullbrightAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_lighting()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
deleted file mode 100644
index f03b1fdc74..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @file lightFullbrightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_lighting()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
deleted file mode 100644
index 89468b9665..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file lightFullbrightNonIndexedAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-uniform sampler2D diffuseMap;
-
-void fullbright_lighting()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
deleted file mode 100644
index a909ff608a..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * @file lightFullbrightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-uniform sampler2D diffuseMap;
-
-void fullbright_lighting()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
deleted file mode 100644
index d2bc912edb..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file lightFullbrightShinyF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_shiny_lighting()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- color.a = max(color.a, gl_Color.a);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
deleted file mode 100644
index af73168c13..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @file lightFullbrightShinyF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform samplerCube environmentMap;
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_shiny_lighting()
-{
- vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- color.a = max(color.a, gl_Color.a);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
deleted file mode 100644
index e9dab85095..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file lightFullbrightShinyWaterF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_shiny_lighting_water()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
- color.rgb = fullbrightScaleSoftClip(color.rgb);
- color.a = max(color.a, gl_Color.a);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
deleted file mode 100644
index e0a7986705..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file lightFullbrightShinyWaterF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-
-uniform samplerCube environmentMap;
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_shiny_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
- color.rgb = fullbrightScaleSoftClip(color.rgb);
- color.a = max(color.a, gl_Color.a);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
deleted file mode 100644
index e5998b77a9..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file lightFullbrightWaterAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec4 diffuseLookup(vec2 texcoord);
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
deleted file mode 100644
index 20ff3712af..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @file lightFullbrightWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec4 diffuseLookup(vec2 texcoord);
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
deleted file mode 100644
index 3fdd110f7d..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file lightFullbrightWaterNonIndexedAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
- vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
deleted file mode 100644
index 01b89019b1..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @file lightFullbrightWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
- vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
deleted file mode 100644
index d419c2d116..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * @file lightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
deleted file mode 100644
index ba4cd949d6..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file lightShinyF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 scaleSoftClip(vec3 light);
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
- color.a = max(color.a, gl_Color.a);
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
deleted file mode 100644
index 3b30ebf6f1..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @file lightShinyF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-
-uniform samplerCube environmentMap;
-uniform sampler2D diffuseMap;
-
-vec3 scaleSoftClip(vec3 light);
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
- color.a = max(color.a, gl_Color.a);
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
deleted file mode 100644
index c451e68763..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file lightShinyWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting_water()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = atmosLighting(color.rgb);
- color.a = max(color.a, gl_Color.a);
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
deleted file mode 100644
index eeb997fb5f..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file lightShinyWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-
-uniform sampler2D diffuseMap;
-uniform samplerCube environmentMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy);
- color.rgb *= gl_Color.rgb;
-
- vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
- color.rgb = atmosLighting(color.rgb);
- color.a = max(color.a, gl_Color.a);
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
deleted file mode 100644
index 24bf9b3cee..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @file lightSpecularV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-// All lights, no specular highlights
-
-vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
-
-vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
-{
- return sumLightsSpecular(pos, norm, color, specularColor, baseCol);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
deleted file mode 100644
index 8045809b82..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @file lightV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-// All lights, no specular highlights
-
-vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight);
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
-{
- return sumLights(pos, norm, color, baseLight);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
deleted file mode 100644
index 072dcaa6b6..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @file lightWaterAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
deleted file mode 100644
index 2df34da4b4..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file lightWaterAlphaMaskNonIndexedF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- color = applyWaterFog(color);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
deleted file mode 100644
index ae7be4d231..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file lightWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
- vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = atmosLighting(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
deleted file mode 100644
index 5a86dad827..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @file lightWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
-
- color.rgb = atmosLighting(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
index d0a12479db..3acf9fe883 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
@@ -33,6 +33,10 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 atmosGetDiffuseSunlightColor();
vec3 scaleDownLight(vec3 light);
+uniform vec4 light_position[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
{
vec4 col = vec4(0.0, 0.0, 0.0, color.a);
@@ -43,15 +47,14 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
vec4 specularSum = vec4(0.0);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz, gl_LightSource[1].diffuse.rgb, 1.0);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[2].position.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].diffuse.rgb);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[3].position.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation, gl_LightSource[3].diffuse.rgb);
- //col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[4].position.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].diffuse.rgb);
+ col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[2].xyz, light_attenuation[2].x, light_attenuation[2].y, light_diffuse[2].rgb);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[3].xyz, light_attenuation[3].x, light_attenuation[3].y, light_diffuse[3].rgb);
col.rgb = scaleDownLight(col.rgb);
// Add windlight lights
col.rgb += atmosAmbient(baseCol.rgb);
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, gl_LightSource[0].position.xyz, atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
+ col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
col.rgb = min(col.rgb*color.rgb, 1.0);
specularColor.rgb = min(specularColor.rgb*specularSum.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
index ad045a3058..c9987ef3b9 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
@@ -23,8 +23,6 @@
* $/LicenseInfo$
*/
-
-
float calcDirectionalLight(vec3 n, vec3 l);
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
@@ -32,21 +30,26 @@ vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
{
vec4 col = vec4(0.0, 0.0, 0.0, color.a);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
+ col.rgb += light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz);
+
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z);
- col.rgb += gl_LightSource[2].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- //col.rgb += gl_LightSource[4].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
col.rgb = scaleDownLight(col.rgb);
// Add windlight lights
col.rgb += atmosAmbient(baseLight.rgb);
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+ col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
col.rgb = min(col.rgb*color.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
deleted file mode 100644
index 819b28e4fd..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file fullbrightShinyV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-uniform vec4 origin;
-
-varying float vary_texture_index;
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(gl_Vertex.xyz,1.0);
- vary_texture_index = gl_Vertex.w;
- gl_Position = gl_ModelViewProjectionMatrix*vert;
-
- vec4 pos = (gl_ModelViewMatrix * vert);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
- vec3 ref = reflect(pos.xyz, -norm);
-
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
-
- calcAtmospherics(pos.xyz);
-
- gl_FrontColor = gl_Color;
-
- gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
deleted file mode 100644
index abf6e37b7c..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file fullbrightV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-varying float vary_texture_index;
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(gl_Vertex.xyz,1.0);
- vary_texture_index = gl_Vertex.w;
- gl_Position = gl_ModelViewProjectionMatrix*vert;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-
- vec4 pos = (gl_ModelViewMatrix * vert);
-
- calcAtmospherics(pos.xyz);
-
- gl_FrontColor = gl_Color;
-
- gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
deleted file mode 100644
index 44c711701b..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file shinyV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-
-void calcAtmospherics(vec3 inPositionEye);
-
-varying float vary_texture_index;
-
-uniform vec4 origin;
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(gl_Vertex.xyz,1.0);
- vary_texture_index = gl_Vertex.w;
- gl_Position = gl_ModelViewProjectionMatrix*vert;
-
- vec4 pos = (gl_ModelViewMatrix * vert);
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
- vec3 ref = reflect(pos.xyz, -norm);
-
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
- gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
-
- calcAtmospherics(pos.xyz);
-
- gl_FrontColor = calcLighting(pos.xyz, norm, gl_Color, vec4(0.0));
-
- gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
deleted file mode 100644
index b0114763c1..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file simpleV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-void calcAtmospherics(vec3 inPositionEye);
-
-varying float vary_texture_index;
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(gl_Vertex.xyz,1.0);
- vary_texture_index = gl_Vertex.w;
- gl_Position = gl_ModelViewProjectionMatrix*vert;
- gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-
- vec4 pos = (gl_ModelViewMatrix * vert);
-
- vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
-
- calcAtmospherics(pos.xyz);
-
- vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
- gl_FrontColor = color;
-
- gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
index be990c1757..6a83be1426 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
@@ -25,7 +25,7 @@
-// varying param funcs
+// VARYING param funcs
void setSunlitColor(vec3 v);
void setAmblitColor(vec3 v);
void setAdditiveColor(vec3 v);
@@ -34,8 +34,8 @@ void setPositionEye(vec3 v);
vec3 getAdditiveColor();
-//varying vec4 vary_CloudUVs;
-//varying float vary_CloudDensity;
+//VARYING vec4 vary_CloudUVs;
+//VARYING float vary_CloudDensity;
// Inputs
uniform vec4 morphFactor;
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
index a98c04b259..765b0927c3 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
@@ -24,25 +24,17 @@
*/
+VARYING vec3 vary_SunlitColor;
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
-varying vec3 vary_PositionEye;
-
-varying vec3 vary_SunlitColor;
-varying vec3 vary_AmblitColor;
-varying vec3 vary_AdditiveColor;
-varying vec3 vary_AtmosAttenuation;
-
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
vec3 getSunlitColor()
{
- return vary_SunlitColor;
+ return vec3(0,0,0);
}
vec3 getAmblitColor()
{
- return vary_AmblitColor;
+ return vec3(0,0,0);
}
vec3 getAdditiveColor()
{
@@ -50,5 +42,5 @@ vec3 getAdditiveColor()
}
vec3 getAtmosAttenuation()
{
- return vary_AtmosAttenuation;
+ return vec3(vary_AtmosAttenuation);
}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
index 7c3cb88b3c..99dbee15ee 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
@@ -24,57 +24,61 @@
*/
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
-varying vec3 vary_PositionEye;
+vec3 additive_color;
+vec3 atmos_attenuation;
+vec3 sunlit_color;
+vec3 amblit_color;
+vec3 position_eye;
-varying vec3 vary_SunlitColor;
-varying vec3 vary_AmblitColor;
-varying vec3 vary_AdditiveColor;
-varying vec3 vary_AtmosAttenuation;
-
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
vec3 getSunlitColor()
{
- return vary_SunlitColor;
+ return sunlit_color;
}
vec3 getAmblitColor()
{
- return vary_AmblitColor;
+ return amblit_color;
}
+
vec3 getAdditiveColor()
{
- return vary_AdditiveColor;
+ return additive_color;
}
vec3 getAtmosAttenuation()
{
- return vary_AtmosAttenuation;
+ return atmos_attenuation;
}
+vec3 getPositionEye()
+{
+ return position_eye;
+}
void setPositionEye(vec3 v)
{
- vary_PositionEye = v;
+ position_eye = v;
}
void setSunlitColor(vec3 v)
{
- vary_SunlitColor = v;
+ sunlit_color = v;
}
void setAmblitColor(vec3 v)
{
- vary_AmblitColor = v;
+ amblit_color = v;
}
void setAdditiveColor(vec3 v)
{
+ additive_color = v;
vary_AdditiveColor = v;
}
void setAtmosAttenuation(vec3 v)
{
+ atmos_attenuation = v;
vary_AtmosAttenuation = v;
}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
new file mode 100644
index 0000000000..163ef26444
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
@@ -0,0 +1,50 @@
+/**
+ * @file atmosphericVarsWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+VARYING vec3 vary_PositionEye;
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
+
+vec3 getSunlitColor()
+{
+ return vec3(0,0,0);
+}
+vec3 getAmblitColor()
+{
+ return vec3(0,0,0);
+}
+vec3 getAdditiveColor()
+{
+ return vary_AdditiveColor;
+}
+vec3 getAtmosAttenuation()
+{
+ return vary_AtmosAttenuation;
+}
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
new file mode 100644
index 0000000000..553f6752e6
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
@@ -0,0 +1,81 @@
+/**
+ * @file atmosphericVarsWaterV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+VARYING vec3 vary_PositionEye;
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
+
+vec3 atmos_attenuation;
+vec3 sunlit_color;
+vec3 amblit_color;
+
+vec3 getSunlitColor()
+{
+ return sunlit_color;
+}
+vec3 getAmblitColor()
+{
+ return amblit_color;
+}
+
+vec3 getAdditiveColor()
+{
+ return vary_AdditiveColor;
+}
+vec3 getAtmosAttenuation()
+{
+ return atmos_attenuation;
+}
+
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
+void setPositionEye(vec3 v)
+{
+ vary_PositionEye = v;
+}
+
+void setSunlitColor(vec3 v)
+{
+ sunlit_color = v;
+}
+
+void setAmblitColor(vec3 v)
+{
+ amblit_color = v;
+}
+
+void setAdditiveColor(vec3 v)
+{
+ vary_AdditiveColor = v;
+}
+
+void setAtmosAttenuation(vec3 v)
+{
+ atmos_attenuation = v;
+ vary_AtmosAttenuation = v;
+}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
index b90cec119b..4ab06c6e21 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
@@ -23,15 +23,21 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
/////////////////////////////////////////////////////////////////////////
// The fragment shader for the sky
/////////////////////////////////////////////////////////////////////////
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
uniform sampler2D cloud_noise_texture;
uniform vec4 cloud_pos_density1;
@@ -50,14 +56,14 @@ vec3 scaleSoftClip(vec3 light) {
void main()
{
// Set variables
- vec2 uv1 = gl_TexCoord[0].xy;
- vec2 uv2 = gl_TexCoord[1].xy;
+ vec2 uv1 = vary_texcoord0.xy;
+ vec2 uv2 = vary_texcoord1.xy;
vec4 cloudColorSun = vary_CloudColorSun;
vec4 cloudColorAmbient = vary_CloudColorAmbient;
float cloudDensity = vary_CloudDensity;
- vec2 uv3 = gl_TexCoord[2].xy;
- vec2 uv4 = gl_TexCoord[3].xy;
+ vec2 uv3 = vary_texcoord2.xy;
+ vec2 uv4 = vary_texcoord3.xy;
// Offset texture coords
uv1 += cloud_pos_density1.xy; //large texture, visible density
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
index c175a834c2..c5bb52169c 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
@@ -22,17 +22,24 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
//////////////////////////////////////////////////////////////////////////
// The vertex shader for creating the atmospheric sky
///////////////////////////////////////////////////////////////////////////////
// Output parameters
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
// Inputs
uniform vec3 camPosLocal;
@@ -59,12 +66,12 @@ void main()
{
// World / view / projection
- gl_Position = ftransform();
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
// Get relative position
- vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
+ vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
// Set altitude
if (P.y > 0.)
@@ -160,17 +167,17 @@ void main()
// Texture coords
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_TexCoord[0].xy -= 0.5;
- gl_TexCoord[0].xy /= cloud_scale.x;
- gl_TexCoord[0].xy += 0.5;
+ vary_texcoord0 = texcoord0;
+ vary_texcoord0.xy -= 0.5;
+ vary_texcoord0.xy /= cloud_scale.x;
+ vary_texcoord0.xy += 0.5;
- gl_TexCoord[1] = gl_TexCoord[0];
- gl_TexCoord[1].x += lightnorm.x * 0.0125;
- gl_TexCoord[1].y += lightnorm.z * 0.0125;
+ vary_texcoord1 = vary_texcoord0;
+ vary_texcoord1.x += lightnorm.x * 0.0125;
+ vary_texcoord1.y += lightnorm.z * 0.0125;
- gl_TexCoord[2] = gl_TexCoord[0] * 16.;
- gl_TexCoord[3] = gl_TexCoord[1] * 16.;
+ vary_texcoord2 = vary_texcoord0 * 16.;
+ vary_texcoord3 = vary_texcoord1 * 16.;
// Combine these to minimize register use
vary_CloudColorAmbient += oHazeColorBelowCloud;
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
index ac569e8257..c9d96b2cf4 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
@@ -23,13 +23,15 @@
* $/LicenseInfo$
*/
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
/////////////////////////////////////////////////////////////////////////
// The fragment shader for the sky
/////////////////////////////////////////////////////////////////////////
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
uniform sampler2D cloud_noise_texture;
uniform vec4 gamma;
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
index 3a44bb6d26..46773cf89f 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
@@ -23,14 +23,16 @@
* $/LicenseInfo$
*/
+uniform mat4 modelview_projection_matrix;
+ATTRIBUTE vec3 position;
// SKY ////////////////////////////////////////////////////////////////////////
// The vertex shader for creating the atmospheric sky
///////////////////////////////////////////////////////////////////////////////
// Output parameters
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
// Inputs
uniform vec3 camPosLocal;
@@ -57,12 +59,11 @@ void main()
{
// World / view / projection
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
// Get relative position
- vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
- //vec3 P = gl_Vertex.xyz + vec3(0,50,0);
+ vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
+ //vec3 P = position.xyz + vec3(0,50,0);
// Set altitude
if (P.y > 0.)
diff --git a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
index 151602dbc0..721054b5ad 100644
--- a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
@@ -22,39 +22,47 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec4 clothing;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
mat4 getSkinnedTransform();
void calcAtmospherics(vec3 inPositionEye);
-attribute vec4 clothing; //4
+uniform vec4 color;
-attribute vec4 gWindDir; //7
-attribute vec4 gSinWaveParams; //3
-attribute vec4 gGravity; //5
+uniform vec4 gWindDir;
+uniform vec4 gSinWaveParams;
+uniform vec4 gGravity;
const vec4 gMinMaxConstants = vec4(1.0, 0.166666, 0.0083143, .00018542); // #minimax-generated coefficients
const vec4 gPiConstants = vec4(0.159154943, 6.28318530, 3.141592653, 1.5707963); // # {1/2PI, 2PI, PI, PI/2}
void main()
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
+ vary_texcoord0 = texcoord0;
vec4 pos;
mat4 trans = getSkinnedTransform();
vec3 norm;
- norm.x = dot(trans[0].xyz, gl_Normal);
- norm.y = dot(trans[1].xyz, gl_Normal);
- norm.z = dot(trans[2].xyz, gl_Normal);
+ norm.x = dot(trans[0].xyz, normal);
+ norm.y = dot(trans[1].xyz, normal);
+ norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm);
//wind
vec4 windEffect;
windEffect = vec4(dot(norm, gWindDir.xyz));
- pos.x = dot(trans[2].xyz, gl_Vertex.xyz);
+ pos.x = dot(trans[2].xyz, position.xyz);
windEffect.xyz = pos.x * vec3(0.015, 0.015, 0.015)
+ windEffect.xyz;
windEffect.w = windEffect.w * 2.0 + 1.0; // move wind offset value to [-1, 3]
@@ -101,7 +109,7 @@ void main()
sinWave.xyz = max(sinWave.xyz, vec3(-1.0, -1.0, -1.0)); // clamp to underlying body shape
offsetPos = clothing * sinWave.x; // multiply wind effect times clothing displacement
temp2 = gWindDir*sinWave.z + vec4(norm,0); // calculate normal offset due to wind oscillation
- offsetPos = vec4(1.0,1.0,1.0,0.0)*offsetPos+gl_Vertex; // add to offset vertex position, and zero out effect from w
+ offsetPos = vec4(1.0,1.0,1.0,0.0)*offsetPos+vec4(position.xyz, 1.0); // add to offset vertex position, and zero out effect from w
norm += temp2.xyz*2.0; // add sin wave effect on normals (exaggerated)
//add "backlighting" effect
@@ -119,12 +127,8 @@ void main()
calcAtmospherics(pos.xyz);
- vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.0));
- gl_FrontColor = color;
+ vec4 col = calcLighting(pos.xyz, norm, color, vec4(0.0));
+ vertex_color = col;
- gl_Position = gl_ProjectionMatrix * pos;
-
-
- gl_TexCoord[2] = vec4(pos.xyz, 1.0);
-
+ gl_Position = projection_matrix * pos;
}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
deleted file mode 100644
index 616ea5fe9e..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * @file giDownsampleF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2DRect giLightMap;
-
-uniform vec2 kern[32];
-uniform float dist_factor;
-uniform float blur_size;
-uniform vec2 delta;
-uniform int kern_length;
-uniform float kern_scale;
-uniform vec3 blur_quad;
-
-varying vec2 vary_fragcoord;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-vec4 getPosition(vec2 pos_screen)
-{
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-float getDepth(vec2 pos_screen)
-{
- float z = texture2DRect(depthMap, pos_screen.xy).a;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-void main()
-{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- float depth = getDepth(vary_fragcoord.xy);
-
- vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
- vec2 dlt = kern_scale * delta/(vec2(1.0,1.0)+norm.xy*norm.xy);
- dlt /= clamp(-depth*blur_quad.x, 1.0, 3.0);
- float defined_weight = kern[0].x;
- vec3 col = ccol*kern[0].x;
-
- for (int i = 0; i < kern_length; i++)
- {
- vec2 tc = vary_fragcoord.xy + kern[i].y*dlt;
- vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz;
- sampNorm = vec3((sampNorm.xy-0.5)*2.0,sampNorm.z); // unpack norm
-
- float d = dot(norm.xyz, sampNorm);
-
- if (d > 0.5)
- {
- float sampdepth = getDepth(tc.xy);
- sampdepth -= depth;
- if (sampdepth*sampdepth < blur_quad.z)
- {
- col += texture2DRect(giLightMap, tc).rgb*kern[i].x;
- defined_weight += kern[i].x;
- }
- }
- }
-
- col /= defined_weight;
-
- //col = ccol;
-
- col = col*blur_quad.y;
-
- gl_FragData[0].xyz = col;
-
- //gl_FragColor = ccol;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl
deleted file mode 100644
index 6231ee68b7..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file postgiV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
deleted file mode 100644
index 95913a502c..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * @file giF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2DRect specularRect;
-
-uniform sampler2D noiseMap;
-
-uniform sampler2D diffuseGIMap;
-uniform sampler2D specularGIMap;
-uniform sampler2D normalGIMap;
-uniform sampler2D depthGIMap;
-
-uniform sampler2D lightFunc;
-
-// Inputs
-varying vec2 vary_fragcoord;
-
-uniform vec2 screen_res;
-
-uniform vec4 sunlight_color;
-
-uniform mat4 inv_proj;
-uniform mat4 gi_mat; //gPipeline.mGIMatrix - eye space to sun space
-uniform mat4 gi_mat_proj; //gPipeline.mGIMatrixProj - eye space to projected sun space
-uniform mat4 gi_norm_mat; //gPipeline.mGINormalMatrix - eye space normal to sun space normal matrix
-uniform mat4 gi_inv_proj; //gPipeline.mGIInvProj - projected sun space to sun space
-uniform float gi_sample_width;
-uniform float gi_noise;
-uniform float gi_attenuation;
-uniform float gi_range;
-
-vec4 getPosition(vec2 pos_screen)
-{
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-vec4 getGIPosition(vec2 gi_tc)
-{
- float depth = texture2D(depthGIMap, gi_tc).a;
- vec2 sc = gi_tc*2.0;
- sc -= vec2(1.0, 1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = gi_inv_proj*ndc;
- pos.xyz /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-vec3 giAmbient(vec3 pos, vec3 norm)
-{
- vec4 gi_c = gi_mat_proj * vec4(pos, 1.0);
- gi_c.xyz /= gi_c.w;
-
- vec4 gi_pos = gi_mat*vec4(pos,1.0);
- vec3 gi_norm = (gi_norm_mat*vec4(norm,1.0)).xyz;
- gi_norm = normalize(gi_norm);
-
- vec4 c_spec = texture2DRect(specularRect, vary_fragcoord.xy);
- vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).rgb;
- gi_pos.xyz += nz.x*gi_noise*gi_norm.xyz;
- vec2 tcx = gi_norm.xy;
- vec2 tcy = gi_norm.yx;
-
- vec4 eye_pos = gi_mat*vec4(0,0,0,1.0);
-
- vec3 eye_dir = normalize(gi_pos.xyz-eye_pos.xyz);
- vec3 eye_ref = reflect(eye_dir, gi_norm);
-
- float da = 0.0; //texture2DRect(lightMap, vary_fragcoord.xy).r*0.5;
- vec3 fdiff = vec3(da);
- float fda = da;
-
- vec3 rcol = vec3(0,0,0);
-
- float fsa = 0.0;
-
-
- for (int i = -1; i <= 1; i += 2 )
- {
- for (int j = -1; j <= 1; j+= 2)
- {
- vec2 tc = vec2(i, j)*0.75+gi_norm.xy*nz.z;
- tc += nz.xy*2.0;
- tc *= gi_sample_width*0.25;
- tc += gi_c.xy;
-
- vec3 lnorm = -(texture2D(normalGIMap, tc.xy).xyz*2.0-1.0);
- vec3 lpos = getGIPosition(tc.xy).xyz;
-
- vec3 at = lpos-gi_pos.xyz;
- float dist = length(at);
- float dist_atten = clamp(1.0/(gi_attenuation*dist), 0.0, 1.0);
-
-
- if (dist_atten > 0.01)
- { //possible contribution of indirect light to this surface
- vec3 ldir = at;
-
- float ld = -dot(ldir, lnorm);
-
- if (ld < 0.0)
- {
- float ang_atten = dot(ldir, gi_norm);
-
- if (ang_atten > 0.0)
- {
- vec4 spec = texture2D(specularGIMap, tc.xy);
- at = normalize(at);
- vec3 diff;
-
- float da = 0.0;
-
- //contribution from indirect source to visible pixel
- vec3 ha = at;
- ha.z -= 1.0;
- ha = normalize(ha);
- if (spec.a > 0.0)
- {
- float sa = dot(ha,lnorm);
- da = texture2D(lightFunc, vec2(sa, spec.a)).a;
- }
- else
- {
- da = -lnorm.z;
- }
-
- diff = texture2D(diffuseGIMap, tc.xy).rgb+spec.rgb*spec.a*2.0;
-
- if (da > 0.0)
- { //contribution from visible pixel to eye
- vec3 ha = normalize(at-eye_dir);
- if (c_spec.a > 0.0)
- {
- float sa = dot(ha, gi_norm);
- da = dist_atten*texture2D(lightFunc, vec2(sa, c_spec.a)).a;
- }
- else
- {
- da = dist_atten*dot(gi_norm, normalize(ldir));
- }
- fda += da;
- fdiff += da*(c_spec.rgb*c_spec.a*2.0+vec3(1,1,1))*diff.rgb;
- }
- }
- }
- }
- }
- }
-
- fdiff *= sunlight_color.rgb;
-
- vec3 ret = fda*fdiff;
-
- return clamp(ret,vec3(0.0), vec3(1.0));
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
- vec4 pos = getPosition(pos_screen);
-
- float rad = gi_range*0.5;
-
- vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- float dist = max(length(pos.xyz)-rad, 0.0);
-
- float da = clamp(1.0-dist/rad, 0.0, 1.0);
-
- vec3 ambient = da > 0.0 ? giAmbient(pos.xyz, norm) : vec3(0);
-
-
- gl_FragData[0].xyz = mix(vec3(0), ambient, da);
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
deleted file mode 100644
index 7c55fcc286..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @file giFinalF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2D bloomMap;
-uniform sampler2DRect edgeMap;
-
-uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
-
-
-void main()
-{
- vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
- vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
-
- gl_FragColor = bloom + diff;
- //gl_FragColor.rgb = vec3(texture2DRect(edgeMap, vary_fragcoord.xy).a);
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl
deleted file mode 100644
index a6a206502c..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file giFinalV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giV.glsl
deleted file mode 100644
index 190e32b6a3..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file giV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
-
- gl_FrontColor = gl_Color;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
deleted file mode 100644
index 13517a26ba..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file luminanceF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect lightMap;
-uniform sampler2DRect diffuseRect;
-
-varying vec2 vary_fragcoord;
-void main()
-{
- float i = texture2DRect(lightMap, vary_fragcoord.xy).r;
- gl_FragColor.rgb = vec3(i);
- gl_FragColor.a = 1.0;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl
deleted file mode 100644
index 2d99ef5481..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * @file giV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;
-
- gl_FrontColor = gl_Color;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
deleted file mode 100644
index 0364da6258..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * @file postDeferredF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect specularRect;
-
-uniform sampler2DRect localLightMap;
-uniform sampler2DRect sunLightMap;
-uniform sampler2DRect giLightMap;
-uniform sampler2DRect edgeMap;
-
-uniform sampler2D luminanceMap;
-
-uniform sampler2DRect lightMap;
-
-uniform sampler2D lightFunc;
-uniform sampler2D noiseMap;
-
-uniform float sun_lum_scale;
-uniform float sun_lum_offset;
-uniform float lum_scale;
-uniform float lum_lod;
-uniform vec4 ambient;
-uniform float gi_brightness;
-uniform float gi_luminance;
-
-uniform vec4 sunlight_color;
-
-uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
-
-void main()
-{
- vec2 tc = vary_fragcoord.xy;
- vec4 lcol = texture2DLod(luminanceMap, vec2(0.5, 0.5), lum_lod);
-
- vec3 gi_col = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
- vec4 sun_col = texture2DRect(sunLightMap, vary_fragcoord.xy);
- vec3 local_col = texture2DRect(localLightMap, vary_fragcoord.xy).rgb;
-
- float scol = texture2DRect(lightMap, vary_fragcoord.xy).r;
-
- vec3 diff = texture2DRect(diffuseRect, vary_fragcoord.xy).rgb;
- vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
-
- gi_col = gi_col*(diff.rgb+spec.rgb*spec.a);
-
- float lum = 1.0-clamp(pow(lcol.r, gi_brightness)+sun_lum_offset, 0.0, 1.0);
-
- lum *= sun_lum_scale;
-
- sun_col *= 1.0+(lum*lum_scale*scol);
-
- vec4 col;
- col.rgb = gi_col+sun_col.rgb+local_col;
-
- col.a = sun_col.a;
-
- vec3 bcol = vec3(0,0,0);
- float tweight = 0.0;
- for (int i = 0; i < 16; i++)
- {
- float weight = (float(i)+1.0)/2.0;
- bcol += texture2DLod(luminanceMap, vary_fragcoord.xy/screen_res, weight).rgb*weight*weight*weight;
- tweight += weight*weight;
- }
-
- bcol /= tweight;
- bcol *= gi_luminance;
- col.rgb += bcol*lum;
-
- gl_FragColor = col;
- //gl_FragColor.rgb = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl
deleted file mode 100644
index cb83dda795..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file postDeferredV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
deleted file mode 100644
index 009b5cc743..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * @file postgiF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2DRect giLightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D giMip;
-uniform sampler2DRect edgeMap;
-
-
-uniform vec2 delta;
-uniform float kern_scale;
-uniform float gi_edge_weight;
-uniform float gi_blur_brightness;
-
-varying vec2 vary_fragcoord;
-
-void main()
-{
- vec2 dlt = kern_scale*delta;
- float defined_weight = 0.0;
- vec3 col = vec3(0.0);
-
- float e = 1.0;
-
- for (int i = 1; i < 8; i++)
- {
- vec2 tc = vary_fragcoord.xy + float(i) * dlt;
-
- e = max(e, 0.0);
- float wght = e;
-
- col += texture2DRect(giLightMap, tc).rgb*wght;
- defined_weight += wght;
-
- e *= e;
- e -=(texture2DRect(edgeMap, tc.xy-dlt*0.25).a+
- texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight;
- }
-
- e = 1.0;
-
- for (int i = 1; i < 8; i++)
- {
- vec2 tc = vary_fragcoord.xy - float(i) * dlt;
-
- e = max(e,0.0);
- float wght = e;
-
- col += texture2DRect(giLightMap, tc).rgb*wght;
- defined_weight += wght;
-
- e *= e;
- e -= (texture2DRect(edgeMap, tc.xy-dlt*0.25).a+
- texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight;
-
- }
-
- col /= max(defined_weight, 0.01);
-
- gl_FragColor.rgb = col * gi_blur_brightness;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl
deleted file mode 100644
index 6231ee68b7..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file postgiV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
deleted file mode 100644
index 1c02adea89..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ /dev/null
@@ -1,335 +0,0 @@
-/**
- * @file softenLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect specularRect;
-uniform sampler2DRect normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D lightFunc;
-uniform vec3 gi_quad;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-uniform sampler2DRect depthMap;
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-uniform float gi_ambiance;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-vec4 getPosition(vec2 pos_screen)
-{ //get position in screen space (world units) given window coordinate and depth map
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- return getPosition_d(pos_screen, depth);
-}
-
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
- return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
- return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
- return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
- return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
- vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
- vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
- vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
- vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
- vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
- vec3 P = inPositionEye;
- setPositionEye(P);
-
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
- vec3 tmpLightnorm = lightnorm.xyz;
-
- vec3 Pn = normalize(P);
- float Plen = length(P);
-
- vec4 temp1 = vec4(0);
- vec3 temp2 = vec3(0);
- vec4 blue_weight;
- vec4 haze_weight;
- vec4 sunlight = sunlight_color;
- vec4 light_atten;
-
- //sunlight attenuation effect (hue and brightness) due to atmosphere
- //this is used later for sunlight modulation at various altitudes
- light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
- //I had thought blue_density and haze_density should have equal weighting,
- //but attenuation due to haze_density tends to seem too strong
-
- temp1 = blue_density + vec4(haze_density.r);
- blue_weight = blue_density / temp1;
- haze_weight = vec4(haze_density.r) / temp1;
-
- //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
- temp2.y = max(0.0, tmpLightnorm.y);
- temp2.y = 1. / temp2.y;
- sunlight *= exp( - light_atten * temp2.y);
-
- // main atmospheric scattering line integral
- temp2.z = Plen * density_multiplier.x;
-
- // Transparency (-> temp1)
- // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
- // compiler gets confused.
- temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
- //final atmosphere attenuation factor
- setAtmosAttenuation(temp1.rgb);
-
- //compute haze glow
- //(can use temp2.x as temp because we haven't used it yet)
- temp2.x = dot(Pn, tmpLightnorm.xyz);
- temp2.x = 1. - temp2.x;
- //temp2.x is 0 at the sun and increases away from sun
- temp2.x = max(temp2.x, .03); //was glow.y
- //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
- temp2.x *= glow.x;
- //higher glow.x gives dimmer glow (because next step is 1 / "angle")
- temp2.x = pow(temp2.x, glow.z);
- //glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
- //add "minimum anti-solar illumination"
- temp2.x += .25;
-
- //increase ambient when there are more clouds
- vec4 tmpAmbient = ambient*gi_ambiance + (vec4(1.) - ambient*gi_ambiance) * cloud_shadow.x * 0.5;
-
- /* decrease value and saturation (that in HSV, not HSL) for occluded areas
- * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
- * // The following line of code performs the equivalent of:
- * float ambAlpha = tmpAmbient.a;
- * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
- * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
- * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
- */
- tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
- //haze color
- setAdditiveColor(
- vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
- + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
- + tmpAmbient)));
-
- //brightness of surface both sunlight and ambient
- setSunlitColor(vec3(sunlight * .5));
- setAmblitColor(vec3(tmpAmbient * .25));
- setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor();
- return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor() * 2.0;
- return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
- return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
- return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
- return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
- return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
- return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
- //soft clip effect:
- light = 1. - clamp(light, vec3(0.), vec3(1.));
- light = 1. - pow(light, gamma.xxx);
-
- return light;
-}
-
-void main()
-{
- vec2 tc = vary_fragcoord.xy;
- float depth = texture2DRect(depthMap, tc.xy).a;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texture2DRect(normalMap, tc).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-
- float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-
- vec4 diffuse = texture2DRect(diffuseRect, tc);
- vec3 col;
- float bloom = 0.0;
-
- if (diffuse.a < 0.9)
- {
- vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
-
- da = texture2D(lightFunc, vec2(da, 0.0)).a;
-
- vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
- float scol = max(scol_ambocc.r, diffuse.a);
- float ambocc = scol_ambocc.g;
-
- calcAtmospherics(pos.xyz, ambocc);
-
- col = atmosAmbient(vec3(0));
- col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
-
- col *= diffuse.rgb;
-
- if (spec.a > 0.0) // specular reflection
- {
- // the old infinite-sky shiny reflection
- //
- vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
- // add the two types of shiny together
- vec3 spec_contrib = dumbshiny * spec.rgb;
- bloom = dot(spec_contrib, spec_contrib);
- col += spec_contrib;
- }
-
- col = atmosLighting(col);
- col = scaleSoftClip(col);
-
- col = mix(col, diffuse.rgb, diffuse.a);
- }
- else
- {
- col = diffuse.rgb;
- }
-
- gl_FragColor.rgb = col;
- gl_FragColor.a = bloom;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl
deleted file mode 100644
index fed238510a..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @file softenLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform vec2 screen_res;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-void main()
-{
- //transform vertex
- gl_Position = ftransform();
-
- vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
- vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-
- vec4 tex = gl_MultiTexCoord0;
- tex.w = 1.0;
-
- vary_light = gl_MultiTexCoord0;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
deleted file mode 100644
index 56a149523e..0000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file treeF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-
-uniform sampler2D diffuseMap;
-
-varying vec3 vary_normal;
-
-void main()
-{
- vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
- gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
- gl_FragData[1] = vec4(0,0,0,0);
- vec3 nvn = normalize(vary_normal);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
-}
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
index 79bd017efc..e043ac873e 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
@@ -23,8 +23,6 @@
* $/LicenseInfo$
*/
-
-
float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da);
vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol);
@@ -33,6 +31,10 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 atmosGetDiffuseSunlightColor();
vec3 scaleDownLight(vec3 light);
+uniform vec4 light_position[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
{
vec4 col = vec4(0.0, 0.0, 0.0, color.a);
@@ -43,18 +45,18 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
vec4 specularSum = vec4(0.0);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz,gl_LightSource[1].diffuse.rgb, 1.0);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[2].position.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation,gl_LightSource[2].diffuse.rgb);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[3].position.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation,gl_LightSource[3].diffuse.rgb);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[4].position.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation,gl_LightSource[4].diffuse.rgb);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[5].position.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation,gl_LightSource[5].diffuse.rgb);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[6].position.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation,gl_LightSource[6].diffuse.rgb);
- col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[7].position.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation,gl_LightSource[7].diffuse.rgb);
+ col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[2].xyz, light_attenuation[2].x, light_attenuation[2].y, light_diffuse[2].rgb);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[3].xyz, light_attenuation[3].x, light_attenuation[3].y, light_diffuse[3].rgb);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[4].xyz, light_attenuation[4].x, light_attenuation[4].y, light_diffuse[4].rgb);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[5].xyz, light_attenuation[5].x, light_attenuation[5].y, light_diffuse[5].rgb);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[6].xyz, light_attenuation[6].x, light_attenuation[6].y, light_diffuse[6].rgb);
+ col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[7].xyz, light_attenuation[7].x, light_attenuation[7].y, light_diffuse[7].rgb);
col.rgb = scaleDownLight(col.rgb);
// Add windlight lights
col.rgb += atmosAmbient(baseCol.rgb);
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, gl_LightSource[0].position.xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
+ col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
col.rgb = min(col.rgb*color.rgb, 1.0);
specularColor.rgb = min(specularColor.rgb*specularSum.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
index dcdc72ac02..dadff40933 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
@@ -24,7 +24,6 @@
*/
-
float calcDirectionalLight(vec3 n, vec3 l);
float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
@@ -33,22 +32,29 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8];
+uniform vec3 light_diffuse[8];
+
vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
{
vec4 col = vec4(0.0, 0.0, 0.0, color.a);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
- col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
+
+ // Collect normal lights
+ col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z);
+ col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z);
+ col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].z);
+ col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].z);
+ col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].z);
+ col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].z);
+ col.rgb += light_diffuse[1].rgb*calcDirectionalLight(norm, light_position[1].xyz);
col.rgb = scaleDownLight(col.rgb);
// Add windlight lights
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+ col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
col.rgb += atmosAmbient(baseLight.rgb);
col.rgb = min(col.rgb*color.rgb, 1.0);
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
new file mode 100644
index 0000000000..29c019719d
--- /dev/null
+++ b/indra/newview/app_settings/toolbars.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbars>
+ <bottom_toolbar
+ button_display_mode="icons_with_text">
+ <command name="chat"/>
+ <command name="speak"/>
+ <command name="destinations"/>
+ <command name="people"/>
+ <command name="profile"/>
+ <command name="move"/>
+ <command name="view"/>
+ <command name="howto"/>
+ </bottom_toolbar>
+ <left_toolbar
+ button_display_mode="icons_only">
+ <command name="avatar"/>
+ <command name="appearance"/>
+ <command name="inventory"/>
+ <command name="search"/>
+ <command name="places"/>
+ <command name="voice"/>
+ <command name="minimap"/>
+ <command name="snapshot"/>
+ </left_toolbar>
+</toolbars>
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 5d6b10c047..99dbfcae51 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -393,7 +393,26 @@
max_attachment_offset="2.0"
visible_in_first_person="true" />
-
+ <attachment_point
+ id="39"
+ group="6"
+ pie_slice="1"
+ name="Neck"
+ joint="mNeck"
+ position="0 0 0"
+ rotation="0 0 0"
+ visible_in_first_person="true" />
+
+ <attachment_point
+ id="40"
+ group="6"
+ pie_slice="2"
+ name="Avatar Center"
+ joint="mRoot"
+ position="0 0 0"
+ rotation="0 0 0"
+ visible_in_first_person="true" />
+
<param
id="32"
group="1"
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index e12c2f7853..0f33d40ac3 100755..100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,8 @@
version 32
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
@@ -65,6 +69,8 @@ RenderShadowDetail 1 2
WatchdogDisabled 1 1
RenderUseStreamVBO 1 1
RenderFSAASamples 1 16
+RenderMaxTextureIndex 1 16
+
//
// Low Graphics Settings
@@ -155,7 +161,7 @@ WLSkyDetail 1 48
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-RenderFSAASamples 1 4
+RenderFSAASamples 1 2
//
// Ultra graphics (REALLY PURTY!)
@@ -184,7 +190,7 @@ WLSkyDetail 1 128
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
-RenderFSAASamples 1 8
+RenderFSAASamples 1 2
//
@@ -292,6 +298,7 @@ RenderVBOEnable 1 0
list OpenGLPre30
RenderDeferred 0 0
+RenderMaxTextureIndex 1 1
list Intel
RenderAnisotropic 1 0
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 6e962f3c56..8142311a55 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -1,4 +1,8 @@
version 27
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
@@ -63,6 +67,7 @@ RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
RenderFSAASamples 1 16
+RenderMaxTextureIndex 1 16
//
// Low Graphics Settings
@@ -153,7 +158,7 @@ WLSkyDetail 1 48
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
-RenderFSAASamples 1 4
+RenderFSAASamples 1 2
//
// Ultra graphics (REALLY PURTY!)
@@ -183,7 +188,7 @@ WLSkyDetail 1 128
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
-RenderFSAASamples 1 8
+RenderFSAASamples 1 2
//
// Class Unknown Hardware (unknown)
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 2690e8ec70..942c043081 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,8 @@
-version 30
+version 32
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
@@ -47,10 +51,10 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
-RenderVBOEnable 1 0
-RenderVBOMappingDisable 1 0
+RenderVBOEnable 1 1
+RenderVBOMappingDisable 1 1
RenderVolumeLODFactor 1 2.0
-UseStartScreen 1 1
+UseStartScreen 1 1
UseOcclusion 1 1
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
@@ -63,8 +67,9 @@ RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderShadowDetail 1 2
WatchdogDisabled 1 1
-RenderUseStreamVBO 1 0
+RenderUseStreamVBO 1 1
RenderFSAASamples 1 16
+RenderMaxTextureIndex 1 16
//
// Low Graphics Settings
@@ -155,7 +160,7 @@ WLSkyDetail 1 48
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderShadowDetail 1 2
-RenderFSAASamples 1 4
+RenderFSAASamples 1 2
//
// Ultra graphics (REALLY PURTY!)
@@ -185,7 +190,7 @@ WLSkyDetail 1 128
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderShadowDetail 1 2
-RenderFSAASamples 1 8
+RenderFSAASamples 1 2
//
// Class Unknown Hardware (unknown)
@@ -286,7 +291,7 @@ list TexUnit8orLess
RenderDeferredSSAO 0 0
list ATI
-RenderDeferredSSAO 0 0
+RenderDeferredSSAO 1 0
list Intel
RenderAnisotropic 1 0
diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt
index 7df75687f2..e7cae1abdc 100644
--- a/indra/newview/featuretable_solaris.txt
+++ b/indra/newview/featuretable_solaris.txt
@@ -1,4 +1,8 @@
version 15
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable.txt with a few differences
// Should be combined into one table
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
index a0245f5369..278d601860 100644
--- a/indra/newview/featuretable_xp.txt
+++ b/indra/newview/featuretable_xp.txt
@@ -1,4 +1,8 @@
version 31
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
@@ -65,6 +69,7 @@ RenderShadowDetail 1 0
WatchdogDisabled 1 1
RenderUseStreamVBO 1 1
RenderFSAASamples 1 16
+RenderMaxTextureIndex 1 16
//
// Low Graphics Settings
@@ -155,7 +160,7 @@ WLSkyDetail 1 48
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderShadowDetail 1 2
-RenderFSAASamples 1 4
+RenderFSAASamples 1 2
//
// Ultra graphics (REALLY PURTY!)
@@ -185,7 +190,7 @@ WLSkyDetail 1 128
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderShadowDetail 1 2
-RenderFSAASamples 1 8
+RenderFSAASamples 1 2
//
// Class Unknown Hardware (unknown)
@@ -290,6 +295,7 @@ RenderVBOEnable 1 0
list OpenGLPre30
RenderDeferred 0 0
+RenderMaxTextureIndex 1 1
list Intel
RenderAnisotropic 1 0
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index b7d951e018..198e702459 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -112,8 +112,8 @@ ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD *545v.* 2 1
ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD *550v.* 2 1
ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD *560v.* 2 1
ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD *565v.* 2 1
-ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 1 1
-ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 1 1
+ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 2 1
+ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 2 1
ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD *26.* 3 1
ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD *27.* 3 1
ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD *31.* 0 1
@@ -140,23 +140,23 @@ ATI Mobility Radeon HD 6600M .*ATI.*Mobility.*HD *66.* 3 1
ATI Mobility Radeon HD 6700M .*ATI.*Mobility.*HD *67.* 3 1
ATI Mobility Radeon HD 6800M .*ATI.*Mobility.*HD *68.* 3 1
ATI Mobility Radeon HD 6900M .*ATI.*Mobility.*HD *69.* 3 1
-ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 0 1
-ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 1 1
+ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 2 1
+ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 2 1
ATI Radeon HD 2600 .*ATI.*Radeon HD *26.. 2 1
ATI Radeon HD 2900 .*ATI.*Radeon HD *29.. 3 1
ATI Radeon HD 3000 .*ATI.*Radeon HD *30.. 0 1
ATI Radeon HD 3100 .*ATI.*Radeon HD *31.. 1 1
ATI Radeon HD 3200 .*ATI.*Radeon HD *32.. 1 1
-ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 1 1
-ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1
-ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 1 1
+ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 2 1
+ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 2 1
+ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 2 1
ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1
ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1
ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1
ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1
ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1
-ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 1 1
-ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 1 1
+ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 2 1
+ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 2 1
ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 3 1
ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1
ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1
@@ -401,11 +401,11 @@ NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 2 1
NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1
NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1
NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1
-NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 1 1
-NVIDIA GeForce 8400M .*NVIDIA .*GeForce 8400M.* 1 1
-NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 1 1
+NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 2 1
+NVIDIA GeForce 8400M .*NVIDIA .*GeForce 8400M.* 2 1
+NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1
NVIDIA GeForce 8500 .*NVIDIA .*GeForce 85.* 3 1
-NVIDIA GeForce 8600M .*NVIDIA .*GeForce 8600M.* 1 1
+NVIDIA GeForce 8600M .*NVIDIA .*GeForce 8600M.* 2 1
NVIDIA GeForce 8600 .*NVIDIA .*GeForce 86.* 3 1
NVIDIA GeForce 8700M .*NVIDIA .*GeForce 8700M.* 3 1
NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1
@@ -415,10 +415,10 @@ NVIDIA GeForce 9100M .*NVIDIA .*GeForce 9100M.* 0 1
NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1
NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1
NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1
-NVIDIA GeForce 9300M .*NVIDIA .*GeForce 9300M.* 1 1
-NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 1 1
-NVIDIA GeForce 9400M .*NVIDIA .*GeForce 9400M.* 1 1
-NVIDIA GeForce 9400 .*NVIDIA .*GeForce 94.* 1 1
+NVIDIA GeForce 9300M .*NVIDIA .*GeForce 9300M.* 2 1
+NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 2 1
+NVIDIA GeForce 9400M .*NVIDIA .*GeForce 9400M.* 2 1
+NVIDIA GeForce 9400 .*NVIDIA .*GeForce 94.* 2 1
NVIDIA GeForce 9500M .*NVIDIA .*GeForce 9500M.* 2 1
NVIDIA GeForce 9500 .*NVIDIA .*GeForce 95.* 2 1
NVIDIA GeForce 9600M .*NVIDIA .*GeForce 9600M.* 3 1
diff --git a/indra/newview/installers/darwin/dmg-cleanup.applescript b/indra/newview/installers/darwin/dmg-cleanup.applescript
index f3d39aec21..8a71b392f9 100644
--- a/indra/newview/installers/darwin/dmg-cleanup.applescript
+++ b/indra/newview/installers/darwin/dmg-cleanup.applescript
@@ -19,7 +19,7 @@ tell application "Finder"
set current view of foo to icon view
set toolbar visible of foo to false
set statusbar visible of foo to false
- set the bounds of foo to {100, 100, 600, 399}
+ set the bounds of foo to {100, 100, 600, 449}
-- set the position of front window to {100, 100}
-- get {name, position} of every item of front window
diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh
index c6b92589db..618e34820c 100644
--- a/indra/newview/installers/darwin/fix_application_icon_position.sh
+++ b/indra/newview/installers/darwin/fix_application_icon_position.sh
@@ -1,6 +1,6 @@
# just run this script each time after you change the installer's name to fix the icon misalignment
#!/bin/bash
-cp -r ./../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg
+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
diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store
index 8f6c25c2f4..747ca961d8 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/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
index a874ce1245..8a6114f0d5 100644
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -1,6 +1,22 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; secondlife setup.nsi
-;; Copyright 2004-2010, Linden Research, Inc.
+;; Copyright 2004-2011, Linden Research, Inc.
+;;
+;; This library is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU Lesser General Public
+;; License as published by the Free Software Foundation;
+;; version 2.1 of the License only.
+;;
+;; This library is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; Lesser General Public License for more details.
+;;
+;; You should have received a copy of the GNU Lesser General Public
+;; License along with this library; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;;
+;; Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
;;
;; NSIS Unicode 2.38.1 or higher required
;; http://www.scratchpaper.com/
@@ -36,10 +52,10 @@ RequestExecutionLevel admin ; on Vista we must be admin because we write to Prog
!include "%%SOURCE%%\installers\windows\lang_fr.nsi"
!include "%%SOURCE%%\installers\windows\lang_ja.nsi"
!include "%%SOURCE%%\installers\windows\lang_it.nsi"
-!include "%%SOURCE%%\installers\windows\lang_ko.nsi"
-!include "%%SOURCE%%\installers\windows\lang_nl.nsi"
!include "%%SOURCE%%\installers\windows\lang_pl.nsi"
!include "%%SOURCE%%\installers\windows\lang_pt-br.nsi"
+!include "%%SOURCE%%\installers\windows\lang_ru.nsi"
+!include "%%SOURCE%%\installers\windows\lang_tr.nsi"
!include "%%SOURCE%%\installers\windows\lang_zh.nsi"
# *TODO: Move these into the language files themselves
@@ -50,11 +66,11 @@ LangString LanguageCode ${LANG_SPANISH} "es"
LangString LanguageCode ${LANG_FRENCH} "fr"
LangString LanguageCode ${LANG_JAPANESE} "ja"
LangString LanguageCode ${LANG_ITALIAN} "it"
-LangString LanguageCode ${LANG_KOREAN} "ko"
-LangString LanguageCode ${LANG_DUTCH} "nl"
LangString LanguageCode ${LANG_POLISH} "pl"
LangString LanguageCode ${LANG_PORTUGUESEBR} "pt"
-LangString LanguageCode ${LANG_SIMPCHINESE} "zh"
+LangString LanguageCode ${LANG_RUSSIAN} "ru"
+LangString LanguageCode ${LANG_TURKISH} "tr"
+LangString LanguageCode ${LANG_TRADCHINESE} "zh"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Tweak for different servers/builds (this placeholder is replaced by viewer_manifest.py)
@@ -99,6 +115,7 @@ Var COMMANDLINE ; command line passed to this installer, set in .onInit
Var SHORTCUT_LANG_PARAM ; "--set InstallLanguage de", passes language to viewer
Var SKIP_DIALOGS ; set from command line in .onInit. autoinstall
; GUI and the defaults.
+Var DO_UNINSTALL_V2 ; If non-null, path to a previous Viewer 2 installation that will be uninstalled.
;;; Function definitions should go before file includes, because calls to
;;; DLLs like LangDLL trigger an implicit file include, so if that call is at
@@ -293,19 +310,171 @@ Function CheckNetworkConnection
Return
FunctionEnd
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Delete files in Documents and Settings\<user>\SecondLife\cache
-; Delete files in Documents and Settings\All Users\SecondLife\cache
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;Function RemoveCacheFiles
+; Function CheckWillUninstallV2
;
-;; Delete files in Documents and Settings\<user>\SecondLife
+; If we are being called through auto-update, we need to uninstall any
+; existing V2 installation. Otherwise, we wind up with
+; SecondLifeViewer2 and SecondLifeViewer installations existing side
+; by side no indication which to use.
+; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Function CheckWillUninstallV2
+
+ StrCpy $DO_UNINSTALL_V2 ""
+
+ StrCmp $SKIP_DIALOGS "true" 0 CHECKV2_DONE
+ StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" CHECKV2_DONE ; don't uninstall our own install dir.
+ IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" CHECKV2_FOUND CHECKV2_DONE
+
+CHECKV2_FOUND:
+ StrCpy $DO_UNINSTALL_V2 "true"
+
+CHECKV2_DONE:
+
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Save user files to temp location
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Function PreserveUserFiles
+
+Push $0
+Push $1
+Push $2
+
+ RMDir /r "$TEMP\SecondLifeSettingsBackup"
+ CreateDirectory "$TEMP\SecondLifeSettingsBackup"
+ StrCpy $0 0 ; Index number used to iterate via EnumRegKey
+
+ LOOP:
+ EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
+ StrCmp $1 "" DONE ; no more users
+
+ ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
+ StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
+
+ ; Required since ProfileImagePath is of type REG_EXPAND_SZ
+ ExpandEnvStrings $2 $2
+
+ CreateDirectory "$TEMP\SecondLifeSettingsBackup\$0"
+ CopyFiles /SILENT "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\$0"
+
+ CONTINUE:
+ IntOp $0 $0 + 1
+ Goto LOOP
+ DONE:
+
+Pop $2
+Pop $1
+Pop $0
+
+; Copy files in Documents and Settings\All Users\SecondLife
+Push $0
+ ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
+ StrCmp $0 "" +2
+ CreateDirectory "$TEMP\SecondLifeSettingsBackup\AllUsers\"
+ CopyFiles /SILENT "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\AllUsers\"
+Pop $0
+
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Restore user files from temp location
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Function RestoreUserFiles
+
+Push $0
+Push $1
+Push $2
+
+ StrCpy $0 0 ; Index number used to iterate via EnumRegKey
+
+ LOOP:
+ EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
+ StrCmp $1 "" DONE ; no more users
+
+ ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
+ StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
+
+ ; Required since ProfileImagePath is of type REG_EXPAND_SZ
+ ExpandEnvStrings $2 $2
+
+ CreateDirectory "$2\Application Data\SecondLife\"
+ CopyFiles /SILENT "$TEMP\SecondLifeSettingsBackup\$0\*" "$2\Application Data\SecondLife\"
+
+ CONTINUE:
+ IntOp $0 $0 + 1
+ Goto LOOP
+ DONE:
+
+Pop $2
+Pop $1
+Pop $0
+
+; Copy files in Documents and Settings\All Users\SecondLife
+Push $0
+ ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
+ StrCmp $0 "" +2
+ CreateDirectory "$2\Application Data\SecondLife\"
+ CopyFiles /SILENT "$TEMP\SecondLifeSettingsBackup\AllUsers\*" "$2\Application Data\SecondLife\"
+Pop $0
+
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Remove temp dirs
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Function RemoveTempUserFiles
+
+Push $0
+Push $1
+Push $2
+
+ StrCpy $0 0 ; Index number used to iterate via EnumRegKey
+
+ LOOP:
+ EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
+ StrCmp $1 "" DONE ; no more users
+
+ ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
+ StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
+
+ ; Required since ProfileImagePath is of type REG_EXPAND_SZ
+ ExpandEnvStrings $2 $2
+
+ RMDir /r "$TEMP\SecondLifeSettingsBackup\$0\*"
+
+ CONTINUE:
+ IntOp $0 $0 + 1
+ Goto LOOP
+ DONE:
+
+Pop $2
+Pop $1
+Pop $0
+
+; Copy files in Documents and Settings\All Users\SecondLife
+Push $0
+ ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
+ StrCmp $0 "" +2
+ RMDir /r "$TEMP\SecondLifeSettingsBackup\AllUsers\*"
+Pop $0
+
+FunctionEnd
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Clobber user files - TEST ONLY
+; This is here for testing, generally not desirable to call it.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;Function ClobberUserFilesTESTONLY
+
;Push $0
;Push $1
;Push $2
-; DetailPrint $(RemoveCacheFilesDP)
;
-; StrCpy $0 0 ; Index number used to iterate via EnumRegKey
+; StrCpy $0 0 ; Index number used to iterate via EnumRegKey
;
; LOOP:
; EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
@@ -317,29 +486,24 @@ FunctionEnd
; ; Required since ProfileImagePath is of type REG_EXPAND_SZ
; ExpandEnvStrings $2 $2
;
-; ; When explicitly uninstalling, everything goes away
-; RMDir /r "$2\Application Data\SecondLife\cache"
+; RMDir /r "$2\Application Data\SecondLife\"
;
; CONTINUE:
; IntOp $0 $0 + 1
; Goto LOOP
; DONE:
+;
;Pop $2
;Pop $1
;Pop $0
;
-;; Delete files in Documents and Settings\All Users\SecondLife
+;; Copy files in Documents and Settings\All Users\SecondLife
;Push $0
-; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
-; StrCmp $0 "" +2
-; RMDir /r "$0\SecondLife\cache"
+; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
+; StrCmp $0 "" +2
+; RMDir /r "$2\Application Data\SecondLife\"
;Pop $0
;
-;; Delete filse in C:\Windows\Application Data\SecondLife
-;; If the user is running on a pre-NT system, Application Data lives here instead of
-;; in Documents and Settings.
-;RMDir /r "$WINDIR\Application Data\SecondLife\cache"
-;
;FunctionEnd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -412,17 +576,15 @@ Push $2
; Required since ProfileImagePath is of type REG_EXPAND_SZ
ExpandEnvStrings $2 $2
- ; If uninstalling a normal install remove everything
- ; Otherwise (preview/dmz etc) just remove cache
- StrCmp $INSTFLAGS "" RM_ALL RM_CACHE
- RM_ALL:
- RMDir /r "$2\Application Data\SecondLife"
- RM_CACHE:
- # Local Settings directory is the cache, there is no "cache" subdir
- RMDir /r "$2\Local Settings\Application Data\SecondLife"
- # Vista version of the same
- RMDir /r "$2\AppData\Local\SecondLife"
- Delete "$2\Application Data\SecondLife\user_settings\settings_windlight.xml"
+ ; Remove all cache and settings files but leave any other .txt files to preserve the chat logs
+; RMDir /r "$2\Application Data\SecondLife\logs"
+ RMDir /r "$2\Application Data\SecondLife\browser_profile"
+ RMDir /r "$2\Application Data\SecondLife\user_settings"
+ Delete "$2\Application Data\SecondLife\*.xml"
+ Delete "$2\Application Data\SecondLife\*.bmp"
+ Delete "$2\Application Data\SecondLife\search_history.txt"
+ Delete "$2\Application Data\SecondLife\plugin_cookies.txt"
+ Delete "$2\Application Data\SecondLife\typed_locations.txt"
CONTINUE:
IntOp $0 $0 + 1
@@ -440,7 +602,7 @@ Push $0
RMDir /r "$0\SecondLife"
Pop $0
-; Delete filse in C:\Windows\Application Data\SecondLife
+; Delete files in C:\Windows\Application Data\SecondLife
; If the user is running on a pre-NT system, Application Data lives here instead of
; in Documents and Settings.
RMDir /r "$WINDIR\Application Data\SecondLife"
@@ -768,12 +930,16 @@ Call CheckIfAdministrator ; Make sure the user can install/uninstall
Call CheckIfAlreadyCurrent ; Make sure that we haven't already installed this version
Call CloseSecondLife ; Make sure we're not running
Call CheckNetworkConnection ; ping secondlife.com
+Call CheckWillUninstallV2 ; See if a V2 install exists and will be removed.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+StrCmp $DO_UNINSTALL_V2 "" PRESERVE_DONE
+ Call PreserveUserFiles
+PRESERVE_DONE:
+
;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers.
;Call RemoveCacheFiles ; Installing over removes potentially corrupted
; VFS and cache files.
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Need to clean out shader files from previous installs to fix DEV-5663
Call RemoveOldShaders
@@ -854,6 +1020,16 @@ WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" ""
; write out uninstaller
WriteUninstaller "$INSTDIR\uninst.exe"
+; Uninstall existing "Second Life Viewer 2" install if needed.
+StrCmp $DO_UNINSTALL_V2 "" REMOVE_SLV2_DONE
+ ExecWait '"$PROGRAMFILES\SecondLifeViewer2\uninst.exe" /S _?=$PROGRAMFILES\SecondLifeViewer2'
+ Delete "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" ; with _? option above, uninst.exe will be left behind.
+ RMDir "$PROGRAMFILES\SecondLifeViewer2" ; will remove only if empty.
+
+ Call RestoreUserFiles
+ Call RemoveTempUserFiles
+REMOVE_SLV2_DONE:
+
; end of default section
SectionEnd
diff --git a/indra/newview/installers/windows/lang_ko.nsi b/indra/newview/installers/windows/lang_ko.nsi
deleted file mode 100644
index 5162b7ddad..0000000000
--- a/indra/newview/installers/windows/lang_ko.nsi
+++ /dev/null
Binary files differ
diff --git a/indra/newview/installers/windows/lang_nl.nsi b/indra/newview/installers/windows/lang_nl.nsi
deleted file mode 100644
index 8884b1e858..0000000000
--- a/indra/newview/installers/windows/lang_nl.nsi
+++ /dev/null
Binary files differ
diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi
new file mode 100644
index 0000000000..de7affe08a
--- /dev/null
+++ b/indra/newview/installers/windows/lang_ru.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi
new file mode 100644
index 0000000000..5e7e3d797b
--- /dev/null
+++ b/indra/newview/installers/windows/lang_tr.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi
index d17e860df9..ecf1185fbb 100644
--- a/indra/newview/installers/windows/lang_zh.nsi
+++ b/indra/newview/installers/windows/lang_zh.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/language_menu.nsi b/indra/newview/installers/windows/language_menu.nsi
index fef8d40c69..08ad42532f 100644
--- a/indra/newview/installers/windows/language_menu.nsi
+++ b/indra/newview/installers/windows/language_menu.nsi
Binary files differ
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 296ae8f10b..54ad3cd187 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -36,10 +36,10 @@
#include "llagentwearables.h"
#include "llagentui.h"
#include "llanimationstates.h"
-#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llcapabilitylistener.h"
#include "llchannelmanager.h"
+#include "llchicletbar.h"
#include "llconsole.h"
#include "llenvmanager.h"
#include "llfirstuse.h"
@@ -68,9 +68,11 @@
#include "llstatusbar.h"
#include "llteleportflags.h"
#include "lltool.h"
+#include "lltoolbarview.h"
#include "lltoolpie.h"
#include "lltoolmgr.h"
#include "lltrans.h"
+#include "lluictrl.h"
#include "llurlentry.h"
#include "llviewercontrol.h"
#include "llviewerdisplay.h"
@@ -152,6 +154,68 @@ bool handleSlowMotionAnimation(const LLSD& newvalue)
return true;
}
+// static
+void LLAgent::parcelChangedCallback()
+{
+ bool can_edit = LLToolMgr::getInstance()->canEdit();
+
+ gAgent.mCanEditParcel = can_edit;
+}
+
+// static
+bool LLAgent::isActionAllowed(const LLSD& sdname)
+{
+ bool retval = false;
+
+ const std::string& param = sdname.asString();
+
+ if (param == "build")
+ {
+ retval = gAgent.canEditParcel();
+ }
+ else if (param == "speak")
+ {
+ if ( gAgent.isVoiceConnected() &&
+ LLViewerParcelMgr::getInstance()->allowAgentVoice() &&
+ ! LLVoiceClient::getInstance()->inTuningMode() )
+ {
+ retval = true;
+ }
+ else
+ {
+ retval = false;
+ }
+ }
+
+ return retval;
+}
+
+// static
+void LLAgent::pressMicrophone(const LLSD& name)
+{
+ LLFirstUse::speak(false);
+
+ LLVoiceClient::getInstance()->inputUserControlState(true);
+}
+
+// static
+void LLAgent::releaseMicrophone(const LLSD& name)
+{
+ LLVoiceClient::getInstance()->inputUserControlState(false);
+}
+
+// static
+void LLAgent::toggleMicrophone(const LLSD& name)
+{
+ LLVoiceClient::getInstance()->toggleUserPTTState();
+}
+
+// static
+bool LLAgent::isMicrophoneOn(const LLSD& sdname)
+{
+ return LLVoiceClient::getInstance()->getUserPTTState();
+}
+
// ************************************************************
// Enabled this definition to compile a 'hacked' viewer that
// locally believes the end user has godlike powers.
@@ -183,6 +247,7 @@ LLAgent::LLAgent() :
mbTeleportKeepsLookAt(false),
mAgentAccess(new LLAgentAccess(gSavedSettings)),
+ mCanEditParcel(false),
mTeleportSourceSLURL(new LLSLURL),
mTeleportState( TELEPORT_NONE ),
mRegionp(NULL),
@@ -231,6 +296,8 @@ LLAgent::LLAgent() :
mCurrentFidget(0),
mFirstLogin(FALSE),
mGenderChosen(FALSE),
+
+ mVoiceConnected(false),
mAppearanceSerialNum(0),
@@ -267,7 +334,9 @@ void LLAgent::init()
gSavedSettings.getControl("PreferredMaturity")->getValidateSignal()->connect(boost::bind(&LLAgent::validateMaturity, this, _2));
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLAgent::handleMaturity, this, _2));
-
+
+ LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback));
+
mInitialized = TRUE;
}
@@ -1032,20 +1101,11 @@ F32 LLAgent::clampPitchToLimits(F32 angle)
LLVector3 skyward = getReferenceUpVector();
- F32 look_down_limit;
- F32 look_up_limit = 10.f * DEG_TO_RAD;
+ const F32 look_down_limit = 179.f * DEG_TO_RAD;;
+ const F32 look_up_limit = 1.f * DEG_TO_RAD;
F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward );
- if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
- {
- look_down_limit = 130.f * DEG_TO_RAD;
- }
- else
- {
- look_down_limit = 170.f * DEG_TO_RAD;
- }
-
// clamp pitch to limits
if ((angle >= 0.f) && (angle_from_skyward + angle > look_down_limit))
{
@@ -1797,11 +1857,12 @@ void LLAgent::endAnimationUpdateUI()
// clean up UI from mode we're leaving
if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK )
{
+ gToolBarView->setToolBarsVisible(true);
// show mouse cursor
gViewerWindow->showCursor();
// show menus
gMenuBarView->setVisible(TRUE);
- LLNavigationBar::getInstance()->setVisible(TRUE);
+ LLNavigationBar::getInstance()->setVisible(TRUE && gSavedSettings.getBOOL("ShowNavbarNavigationPanel"));
gStatusBar->setVisibleForMouselook(true);
if (gSavedSettings.getBOOL("ShowMiniLocationPanel"))
@@ -1809,7 +1870,7 @@ void LLAgent::endAnimationUpdateUI()
LLPanelTopInfoBar::getInstance()->setVisible(TRUE);
}
- LLBottomTray::getInstance()->onMouselookModeOut();
+ LLChicletBar::getInstance()->setVisible(TRUE);
LLPanelStandStopFlying::getInstance()->setVisible(TRUE);
@@ -1906,14 +1967,19 @@ void LLAgent::endAnimationUpdateUI()
//---------------------------------------------------------------------
if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
{
- // hide menus
+ // clean up UI
+ // first show anything hidden by UI toggle
+ gViewerWindow->setUIVisibility(TRUE);
+
+ // then hide stuff we want hidden for mouselook
+ gToolBarView->setToolBarsVisible(false);
gMenuBarView->setVisible(FALSE);
LLNavigationBar::getInstance()->setVisible(FALSE);
gStatusBar->setVisibleForMouselook(false);
LLPanelTopInfoBar::getInstance()->setVisible(FALSE);
- LLBottomTray::getInstance()->onMouselookModeIn();
+ LLChicletBar::getInstance()->setVisible(FALSE);
LLPanelStandStopFlying::getInstance()->setVisible(FALSE);
@@ -3361,7 +3427,14 @@ bool LLAgent::teleportCore(bool is_local)
LLFloaterReg::hideInstance("region_info");
// minimize the Search floater (STORM-1474)
- LLFloaterReg::getInstance("search")->setMinimized(TRUE);
+ {
+ LLFloater* instance = LLFloaterReg::getInstance("search");
+
+ if (instance && instance->getVisible())
+ {
+ instance->setMinimized(TRUE);
+ }
+ }
LLViewerParcelMgr::getInstance()->deselectLand();
LLViewerMediaFocus::getInstance()->clearFocus();
@@ -3922,14 +3995,14 @@ void LLAgent::renderAutoPilotTarget()
F32 height_meters;
LLVector3d target_global;
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
// not textured
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
// lovely green
- glColor4f(0.f, 1.f, 1.f, 1.f);
+ gGL.color4f(0.f, 1.f, 1.f, 1.f);
target_global = mAutoPilotTargetGlobal;
@@ -3937,9 +4010,9 @@ void LLAgent::renderAutoPilotTarget()
height_meters = 1.f;
- glScalef(height_meters, height_meters, height_meters);
+ gGL.scalef(height_meters, height_meters, height_meters);
- gSphere.render(1500.f);
+ gSphere.render();
gGL.popMatrix();
}
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 5e23ced424..740770bbdf 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -282,7 +282,23 @@ public:
static void toggleFlying();
static bool enableFlying();
BOOL canFly(); // Does this parcel allow you to fly?
-
+
+ //--------------------------------------------------------------------
+ // Voice
+ //--------------------------------------------------------------------
+public:
+ bool isVoiceConnected() const { return mVoiceConnected; }
+ void setVoiceConnected(const bool b) { mVoiceConnected = b; }
+
+ static void pressMicrophone(const LLSD& name);
+ static void releaseMicrophone(const LLSD& name);
+ static void toggleMicrophone(const LLSD& name);
+ static bool isMicrophoneOn(const LLSD& sdname);
+ static bool isActionAllowed(const LLSD& sdname);
+
+private:
+ bool mVoiceConnected;
+
//--------------------------------------------------------------------
// Chat
//--------------------------------------------------------------------
@@ -575,6 +591,14 @@ private:
** **
*******************************************************************************/
+ // Build
+public:
+ bool canEditParcel() const { return mCanEditParcel; }
+private:
+ bool mCanEditParcel;
+
+ static void parcelChangedCallback();
+
/********************************************************************************
** **
** ACCESS
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index f195c985c0..751b73e1eb 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2040,11 +2040,12 @@ void LLAgentCamera::resetCamera()
//-----------------------------------------------------------------------------
void LLAgentCamera::changeCameraToMouselook(BOOL animate)
{
- if (!gSavedSettings.getBOOL("EnableMouselook") || LLViewerJoystick::getInstance()->getOverrideCamera())
+ if (!gSavedSettings.getBOOL("EnableMouselook")
+ || LLViewerJoystick::getInstance()->getOverrideCamera())
{
return;
}
-
+
// visibility changes at end of animation
gViewerWindow->getWindow()->resetBusyCount();
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 729eb92e94..13b62cb019 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -33,6 +33,7 @@
#include "llagentwearablesfetch.h"
#include "llappearancemgr.h"
#include "llcallbacklist.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
@@ -42,7 +43,6 @@
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltooldraganddrop.h"
#include "llviewerregion.h"
@@ -2012,7 +2012,7 @@ void LLAgentWearables::editWearable(const LLUUID& item_id)
}
const BOOL disable_camera_switch = LLWearableType::getDisableCameraSwitch(wearable->getType());
- LLPanel* panel = LLSideTray::getInstance()->getPanel("sidepanel_appearance");
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel("appearance");
LLSidepanelAppearance::editWearable(wearable, panel, disable_camera_switch);
}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 0666d22f10..663257042e 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -34,6 +34,7 @@
#include "llattachmentsmgr.h"
#include "llcommandhandler.h"
#include "lleventtimer.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
@@ -43,7 +44,6 @@
#include "lloutfitslist.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerobjectlist.h"
#include "llvoavatar.h"
#include "llvoavatarself.h"
@@ -116,7 +116,7 @@ public:
return true;
}
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
return true;
}
};
@@ -1505,7 +1505,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)
{
LLSidepanelAppearance* panel_appearance =
- dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ dynamic_cast<LLSidepanelAppearance *>(LLFloaterSidePanelContainer::getPanel("appearance"));
if (panel_appearance)
{
panel_appearance->refreshCurrentOutfitName(name);
@@ -1943,7 +1943,7 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit editor should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);
@@ -2551,10 +2551,11 @@ public:
// add may be processed after login process is finished
if (mShowPanel)
{
- LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
+
}
LLOutfitsList *outfits_list =
- dynamic_cast<LLOutfitsList*>(LLSideTray::getInstance()->getPanel("outfitslist_tab"));
+ dynamic_cast<LLOutfitsList*>(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
if (outfits_list)
{
outfits_list->setSelectedOutfitByUUID(mFolderID);
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0e57abd472..b45f9c55fb 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -81,7 +81,6 @@
#include "llviewermenufile.h"
#include "llvoicechannel.h"
#include "llvoavatarself.h"
-#include "llsidetray.h"
#include "llurlmatch.h"
#include "lltextutil.h"
#include "lllogininstance.h"
@@ -90,6 +89,7 @@
#include "llweb.h"
#include "llsecondlifeurls.h"
#include "llupdaterservice.h"
+#include "llcallfloater.h"
// Linden library includes
#include "llavatarnamecache.h"
@@ -110,6 +110,8 @@
// Third party library includes
#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+
#if LL_WINDOWS
@@ -520,6 +522,8 @@ static void settings_to_globals()
LLSurface::setTextureSize(gSavedSettings.getU32("RegionTextureSize"));
+ LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLCoreProfile");
+
LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic");
LLVOVolume::sLODFactor = gSavedSettings.getF32("RenderVolumeLODFactor");
LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f;
@@ -554,42 +558,6 @@ static void settings_modify()
gDebugGL = gSavedSettings.getBOOL("RenderDebugGL") || gDebugSession;
gDebugPipeline = gSavedSettings.getBOOL("RenderDebugPipeline");
gAuditTexture = gSavedSettings.getBOOL("AuditTexture");
-#if LL_VECTORIZE
- if (gSysCPU.hasAltivec())
- {
- gSavedSettings.setBOOL("VectorizeEnable", TRUE );
- gSavedSettings.setU32("VectorizeProcessor", 0 );
- }
- else
- if (gSysCPU.hasSSE2())
- {
- gSavedSettings.setBOOL("VectorizeEnable", TRUE );
- gSavedSettings.setU32("VectorizeProcessor", 2 );
- }
- else
- if (gSysCPU.hasSSE())
- {
- gSavedSettings.setBOOL("VectorizeEnable", TRUE );
- gSavedSettings.setU32("VectorizeProcessor", 1 );
- }
- else
- {
- // Don't bother testing or running if CPU doesn't support it. JC
- gSavedSettings.setBOOL("VectorizePerfTest", FALSE );
- gSavedSettings.setBOOL("VectorizeEnable", FALSE );
- gSavedSettings.setU32("VectorizeProcessor", 0 );
- gSavedSettings.setBOOL("VectorizeSkin", FALSE);
- }
-#else
- // This build target doesn't support SSE, don't test/run.
- gSavedSettings.setBOOL("VectorizePerfTest", FALSE );
- gSavedSettings.setBOOL("VectorizeEnable", FALSE );
- gSavedSettings.setU32("VectorizeProcessor", 0 );
- gSavedSettings.setBOOL("VectorizeSkin", FALSE);
-
- // disable fullscreen mode, unsupported
- gSavedSettings.setBOOL("WindowFullScreen", FALSE);
-#endif
}
class LLFastTimerLogThread : public LLThread
@@ -771,7 +739,7 @@ bool LLAppViewer::init()
LLViewerAssetStatsFF::init();
}
- initThreads();
+ initThreads();
LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ;
// Initialize settings early so that the defaults for ignorable dialogs are
@@ -845,9 +813,9 @@ bool LLAppViewer::init()
LLWeb::initClass(); // do this after LLUI
// Provide the text fields with callbacks for opening Urls
- LLUrlAction::setOpenURLCallback(&LLWeb::loadURL);
- LLUrlAction::setOpenURLInternalCallback(&LLWeb::loadURLInternal);
- LLUrlAction::setOpenURLExternalCallback(&LLWeb::loadURLExternal);
+ LLUrlAction::setOpenURLCallback(boost::bind(&LLWeb::loadURL, _1, LLStringUtil::null, LLStringUtil::null));
+ LLUrlAction::setOpenURLInternalCallback(boost::bind(&LLWeb::loadURLInternal, _1, LLStringUtil::null, LLStringUtil::null));
+ LLUrlAction::setOpenURLExternalCallback(boost::bind(&LLWeb::loadURLExternal, _1, true, LLStringUtil::null));
LLUrlAction::setExecuteSLURLCallback(&LLURLDispatcher::dispatchFromTextEditor);
// Let code in llui access the viewer help floater
@@ -873,8 +841,6 @@ bool LLAppViewer::init()
LLAgent::parseTeleportMessages("teleport_strings.xml");
- LLViewerJointMesh::updateVectorize();
-
// load MIME type -> media impl mappings
std::string mime_types_name;
#if LL_DARWIN
@@ -1124,7 +1090,7 @@ void LLAppViewer::checkMemory()
{
const static F32 MEMORY_CHECK_INTERVAL = 1.0f ; //second
//const static F32 MAX_QUIT_WAIT_TIME = 30.0f ; //seconds
- //static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
+ //static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
if(!gGLManager.mDebugGPU)
{
@@ -1137,8 +1103,8 @@ void LLAppViewer::checkMemory()
}
mMemCheckTimer.reset() ;
- //update the availability of memory
- LLMemory::updateMemoryInfo() ;
+ //update the availability of memory
+ LLMemory::updateMemoryInfo() ;
bool is_low = LLMemory::isMemoryPoolLow() ;
@@ -1183,6 +1149,7 @@ bool LLAppViewer::mainLoop()
LLVoiceChannel::initClass();
LLVoiceClient::getInstance()->init(gServicePump);
+ LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);
LLTimer frameTimer,idleTimer;
LLTimer debugTime;
LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
@@ -1217,7 +1184,7 @@ bool LLAppViewer::mainLoop()
if (gViewerWindow)
{
LLFastTimer t2(FTM_MESSAGES);
- gViewerWindow->mWindow->processMiscNativeEvents();
+ gViewerWindow->getWindow()->processMiscNativeEvents();
}
pingMainloopTimeout("Main:GatherInput");
@@ -1230,7 +1197,7 @@ bool LLAppViewer::mainLoop()
llwarns << " Someone took over my signal/exception handler (post messagehandling)!" << llendl;
}
- gViewerWindow->mWindow->gatherInput();
+ gViewerWindow->getWindow()->gatherInput();
}
#if 1 && !LL_RELEASE_FOR_DOWNLOAD
@@ -1259,9 +1226,9 @@ bool LLAppViewer::mainLoop()
// Scan keyboard for movement keys. Command keys and typing
// are handled by windows callbacks. Don't do this until we're
// done initializing. JC
- if ((gHeadlessClient || gViewerWindow->mWindow->getVisible())
+ if ((gHeadlessClient || gViewerWindow->getWindow()->getVisible())
&& gViewerWindow->getActive()
- && !gViewerWindow->mWindow->getMinimized()
+ && !gViewerWindow->getWindow()->getMinimized()
&& LLStartUp::getStartupState() == STATE_STARTED
&& (gHeadlessClient || !gViewerWindow->getShowProgress())
&& !gFocusMgr.focusLocked())
@@ -1340,7 +1307,7 @@ bool LLAppViewer::mainLoop()
}
// yield cooperatively when not running as foreground window
- if ( (gViewerWindow && !gViewerWindow->mWindow->getVisible())
+ if ( (gViewerWindow && !gViewerWindow->getWindow()->getVisible())
|| !gFocusMgr.getAppHasFocus())
{
// Sleep if we're not rendering, or the window is minimized.
@@ -1414,6 +1381,11 @@ bool LLAppViewer::mainLoop()
}
}
gMeshRepo.update() ;
+
+ if(!LLCurl::getCurlThread()->update(1))
+ {
+ LLCurl::getCurlThread()->pause() ; //nothing in the curl thread.
+ }
if(!total_work_pending) //pause texture fetching threads if nothing to process.
{
@@ -1809,6 +1781,7 @@ bool LLAppViewer::cleanup()
pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
pending += LLVFSThread::updateClass(0);
pending += LLLFSThread::updateClass(0);
+ pending += LLCurl::getCurlThread()->update(1) ;
F64 idle_time = idleTimer.getElapsedTimeF64();
if(!pending)
{
@@ -1820,6 +1793,7 @@ bool LLAppViewer::cleanup()
break;
}
}
+ LLCurl::getCurlThread()->pause() ;
// Delete workers first
// shotdown all worker threads before deleting them in case of co-dependencies
@@ -1967,6 +1941,8 @@ bool LLAppViewer::initThreads()
static const bool enable_threads = true;
#endif
+ LLImage::initClass();
+
LLVFSThread::initClass(enable_threads && false);
LLLFSThread::initClass(enable_threads && false);
@@ -1976,8 +1952,7 @@ bool LLAppViewer::initThreads()
LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(),
sImageDecodeThread,
enable_threads && true,
- app_metrics_qa_mode);
- LLImage::initClass();
+ app_metrics_qa_mode);
if (LLFastTimer::sLog || LLFastTimer::sMetricLog)
{
@@ -2042,42 +2017,37 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
llerrs << "Invalid settings location list" << llendl;
}
- for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(const SettingsGroup& group, mSettingsLocationList->groups)
{
// skip settings groups that aren't the one we requested
- if (it->name() != location_key) continue;
+ if (group.name() != location_key) continue;
- ELLPath path_index = (ELLPath)it->path_index();
+ ELLPath path_index = (ELLPath)group.path_index();
if(path_index <= LL_PATH_NONE || path_index >= LL_PATH_LAST)
{
llerrs << "Out of range path index in app_settings/settings_files.xml" << llendl;
return false;
}
- LLInitParam::ParamIterator<SettingsFile>::const_iterator file_it, end_file_it;
- for (file_it = it->files.begin(), end_file_it = it->files.end();
- file_it != end_file_it;
- ++file_it)
+ BOOST_FOREACH(const SettingsFile& file, group.files)
{
- llinfos << "Attempting to load settings for the group " << file_it->name()
+ llinfos << "Attempting to load settings for the group " << file.name()
<< " - from location " << location_key << llendl;
- LLControlGroup* settings_group = LLControlGroup::getInstance(file_it->name);
+ LLControlGroup* settings_group = LLControlGroup::getInstance(file.name);
if(!settings_group)
{
- llwarns << "No matching settings group for name " << file_it->name() << llendl;
+ llwarns << "No matching settings group for name " << file.name() << llendl;
continue;
}
std::string full_settings_path;
- if (file_it->file_name_setting.isProvided()
- && gSavedSettings.controlExists(file_it->file_name_setting))
+ if (file.file_name_setting.isProvided()
+ && gSavedSettings.controlExists(file.file_name_setting))
{
// try to find filename stored in file_name_setting control
- full_settings_path = gSavedSettings.getString(file_it->file_name_setting);
+ full_settings_path = gSavedSettings.getString(file.file_name_setting);
if (full_settings_path.empty())
{
continue;
@@ -2091,16 +2061,16 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
else
{
// by default, use specified file name
- full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, file_it->file_name());
+ full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, file.file_name());
}
- if(settings_group->loadFromFile(full_settings_path, set_defaults, file_it->persistent))
+ if(settings_group->loadFromFile(full_settings_path, set_defaults, file.persistent))
{ // success!
llinfos << "Loaded settings file " << full_settings_path << llendl;
}
else
{ // failed to load
- if(file_it->required)
+ if(file.required)
{
llerrs << "Error: Cannot load required settings file from: " << full_settings_path << llendl;
return false;
@@ -2123,20 +2093,15 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
std::string LLAppViewer::getSettingsFilename(const std::string& location_key,
const std::string& file)
{
- for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(const SettingsGroup& group, mSettingsLocationList->groups)
{
- if (it->name() == location_key)
+ if (group.name() == location_key)
{
- LLInitParam::ParamIterator<SettingsFile>::const_iterator file_it, end_file_it;
- for (file_it = it->files.begin(), end_file_it = it->files.end();
- file_it != end_file_it;
- ++file_it)
+ BOOST_FOREACH(const SettingsFile& settings_file, group.files)
{
- if (file_it->name() == file)
+ if (settings_file.name() == file)
{
- return file_it->file_name;
+ return settings_file.file_name;
}
}
}
@@ -2832,48 +2797,15 @@ void LLAppViewer::initUpdater()
void LLAppViewer::checkForCrash(void)
{
-
#if LL_SEND_CRASH_REPORTS
if (gLastExecEvent == LAST_EXEC_FROZE)
{
- llinfos << "Last execution froze, requesting to send crash report." << llendl;
- //
- // Pop up a freeze or crash warning dialog
- //
- S32 choice;
- const S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
- if(cb == CRASH_BEHAVIOR_ASK)
- {
- std::ostringstream msg;
- msg << LLTrans::getString("MBFrozenCrashed");
- std::string alert = LLTrans::getString("APP_NAME") + " " + LLTrans::getString("MBAlert");
- choice = OSMessageBox(msg.str(),
- alert,
- OSMB_YESNO);
- }
- else if(cb == CRASH_BEHAVIOR_NEVER_SEND)
- {
- choice = OSBTN_NO;
- }
- else
- {
- choice = OSBTN_YES;
- }
-
- if (OSBTN_YES == choice)
- {
- llinfos << "Sending crash report." << llendl;
+ llinfos << "Last execution froze, sending a crash report." << llendl;
- bool report_freeze = true;
- handleCrashReporting(report_freeze);
- }
- else
- {
- llinfos << "Not sending crash report." << llendl;
- }
+ bool report_freeze = true;
+ handleCrashReporting(report_freeze);
}
#endif // LL_SEND_CRASH_REPORTS
-
}
//
@@ -2899,11 +2831,21 @@ bool LLAppViewer::initWindow()
// always start windowed
BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
- gViewerWindow = new LLViewerWindow(gWindowTitle,
- VIEWER_WINDOW_CLASSNAME,
- gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"),
- gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"),
- gSavedSettings.getBOOL("WindowFullScreen"), ignorePixelDepth);
+
+ LLViewerWindow::Params window_params;
+ window_params
+ .title(gWindowTitle)
+ .name(VIEWER_WINDOW_CLASSNAME)
+ .x(gSavedSettings.getS32("WindowX"))
+ .y(gSavedSettings.getS32("WindowY"))
+ .width(gSavedSettings.getU32("WindowWidth"))
+ .height(gSavedSettings.getU32("WindowHeight"))
+ .min_width(gSavedSettings.getU32("MinWindowWidth"))
+ .min_height(gSavedSettings.getU32("MinWindowHeight"))
+ .fullscreen(gSavedSettings.getBOOL("FullScreen"))
+ .ignore_pixel_depth(ignorePixelDepth);
+
+ gViewerWindow = new LLViewerWindow(window_params);
LL_INFOS("AppInit") << "gViewerwindow created." << LL_ENDL;
@@ -2930,7 +2872,7 @@ bool LLAppViewer::initWindow()
if (gSavedSettings.getBOOL("WindowMaximized"))
{
- gViewerWindow->mWindow->maximize();
+ gViewerWindow->getWindow()->maximize();
}
//
@@ -2973,7 +2915,7 @@ bool LLAppViewer::initWindow()
if (gSavedSettings.getBOOL("WindowMaximized"))
{
- gViewerWindow->mWindow->maximize();
+ gViewerWindow->getWindow()->maximize();
}
LLUI::sWindow = gViewerWindow->getWindow();
@@ -2985,7 +2927,7 @@ bool LLAppViewer::initWindow()
gViewerWindow->initBase();
// show viewer window
- //gViewerWindow->mWindow->show();
+ //gViewerWindow->getWindow()->show();
LL_INFOS("AppInit") << "Window initialization done." << LL_ENDL;
return true;
@@ -3019,12 +2961,12 @@ void LLAppViewer::cleanupSavedSettings()
// as we don't track it in callbacks
if(NULL != gViewerWindow)
{
- BOOL maximized = gViewerWindow->mWindow->getMaximized();
+ BOOL maximized = gViewerWindow->getWindow()->getMaximized();
if (!maximized)
{
LLCoordScreen window_pos;
- if (gViewerWindow->mWindow->getPosition(&window_pos))
+ if (gViewerWindow->getWindow()->getPosition(&window_pos))
{
gSavedSettings.setS32("WindowX", window_pos.mX);
gSavedSettings.setS32("WindowY", window_pos.mY);
@@ -3124,6 +3066,8 @@ void LLAppViewer::handleViewerCrash()
llinfos << "Last render pool type: " << LLPipeline::sCurRenderPoolType << llendl ;
+ LLMemory::logMemoryInfo(true) ;
+
//print out recorded call stacks if there are any.
LLError::LLCallStacks::print();
@@ -3466,8 +3410,6 @@ void LLAppViewer::requestQuit()
gFloaterView->closeAllChildren(true);
}
- LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
-
send_stats();
gLogoutTimer.reset();
@@ -3486,20 +3428,6 @@ static bool finish_quit(const LLSD& notification, const LLSD& response)
}
static LLNotificationFunctorRegistration finish_quit_reg("ConfirmQuit", finish_quit);
-static bool switch_standard_skin_and_quit(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-
- if (option == 0)
- {
- gSavedSettings.setString("SessionSettingsFile", "");
- LLAppViewer::instance()->requestQuit();
- }
- return false;
-}
-
-static LLNotificationFunctorRegistration standard_skin_quit_reg("SwitchToStandardSkinAndQuit", switch_standard_skin_and_quit);
-
void LLAppViewer::userQuit()
{
if (gDisconnected || gViewerWindow->getProgressView()->getVisible())
@@ -4326,7 +4254,7 @@ void LLAppViewer::idle()
///////////////////////////////////////
// Agent and camera movement
//
- LLCoordGL current_mouse = gViewerWindow->getCurrentMouse();
+ LLCoordGL current_mouse = gViewerWindow->getCurrentMouse();
{
// After agent and camera moved, figure out if we need to
@@ -4528,10 +4456,6 @@ void LLAppViewer::idleShutdown()
return;
}
- if (LLSideTray::getInstance()->notifyChildren(LLSD().with("request","wait_quit")))
- {
- return;
- }
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index f94c843ad9..647ace7ee3 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -403,11 +403,9 @@ bool LLAppViewerWin32::initHardwareTest()
//
if (FALSE == gSavedSettings.getBOOL("NoHardwareProbe"))
{
- BOOL vram_only = !gSavedSettings.getBOOL("ProbeHardwareOnStartup");
-
// per DEV-11631 - disable hardware probing for everything
// but vram.
- vram_only = TRUE;
+ BOOL vram_only = TRUE;
LLSplashScreen::update(LLTrans::getString("StartupDetectingHardware"));
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 966f5b941e..65bfc990d1 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -78,6 +78,8 @@ void on_new_single_inventory_upload_complete(
const LLSD& server_response,
S32 upload_price)
{
+ bool success = false;
+
if ( upload_price > 0 )
{
// this upload costed us L$, update our balance
@@ -152,6 +154,7 @@ void on_new_single_inventory_upload_complete(
gInventory.updateItem(item);
gInventory.notifyObservers();
+ success = true;
// Show the preview panel for textures and sounds to let
// user know that the image (or snapshot) arrived intact.
@@ -175,6 +178,13 @@ void on_new_single_inventory_upload_complete(
// remove the "Uploading..." message
LLUploadDialog::modalUploadFinished();
+
+ // Let the Snapshot floater know we have finished uploading a snapshot to inventory.
+ LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
+ if (asset_type == LLAssetType::AT_TEXTURE && floater_snapshot)
+ {
+ floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", success).with("msg", "inventory")));
+ }
}
LLAssetUploadResponder::LLAssetUploadResponder(const LLSD &post_data,
@@ -285,6 +295,11 @@ void LLAssetUploadResponder::uploadFailure(const LLSD& content)
{
// remove the "Uploading..." message
LLUploadDialog::modalUploadFinished();
+ LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
+ if (floater_snapshot)
+ {
+ floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", false).with("msg", "inventory")));
+ }
std::string reason = content["state"];
// deal with L$ errors
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4cdfcea64e..8ca621538f 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -47,6 +47,7 @@
#include "llfloatergroups.h"
#include "llfloaterreg.h"
#include "llfloaterpay.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterwebcontent.h"
#include "llfloaterworldmap.h"
#include "llfolderview.h"
@@ -60,7 +61,6 @@
#include "llpaneloutfitedit.h"
#include "llpanelprofile.h"
#include "llrecentpeople.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewercontrol.h"
#include "llviewerobjectlist.h"
@@ -302,6 +302,12 @@ void LLAvatarActions::startConference(const uuid_vec_t& ids)
make_ui_sound("UISndStartIM");
}
+static const char* get_profile_floater_name(const LLUUID& avatar_id)
+{
+ // Use different floater XML for our profile to be able to save its rect.
+ return avatar_id == gAgentID ? "my_profile" : "profile";
+}
+
static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarName& av_name)
{
std::string username = av_name.mUsername;
@@ -314,14 +320,10 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa
std::string url = getProfileURL(username);
// PROFILES: open in webkit window
- const bool show_chrome = false;
- static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
- LLFloaterWebContent::create(LLFloaterWebContent::Params().
- url(url).
- id(agent_id.asString()).
- show_chrome(show_chrome).
- window_class("profile").
- preferred_media_size(profile_rect));
+ LLFloaterWebContent::Params p;
+ p.url(url).
+ id(agent_id.asString());
+ LLFloaterReg::showInstance(get_profile_floater_name(agent_id), p);
}
// static
@@ -338,17 +340,24 @@ bool LLAvatarActions::profileVisible(const LLUUID& id)
{
LLSD sd;
sd["id"] = id;
- LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
+ LLFloater* browser = getProfileFloater(id);
return browser && browser->isShown();
}
+//static
+LLFloater* LLAvatarActions::getProfileFloater(const LLUUID& id)
+{
+ LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*>
+ (LLFloaterReg::findInstance(get_profile_floater_name(id), LLSD().with("id", id)));
+ return browser;
+}
//static
void LLAvatarActions::hideProfile(const LLUUID& id)
{
LLSD sd;
sd["id"] = id;
- LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
+ LLFloater* browser = getProfileFloater(id);
if (browser)
{
browser->closeFloater();
@@ -438,8 +447,7 @@ void LLAvatarActions::csr(const LLUUID& id, std::string name)
void LLAvatarActions::share(const LLUUID& id)
{
LLSD key;
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
-
+ LLFloaterSidePanelContainer::showPanel("inventory", key);
LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,id);
@@ -462,7 +470,7 @@ namespace action_give_inventory
*/
static LLInventoryPanel* get_outfit_editor_inventory_panel()
{
- LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+ LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
if (NULL == panel_outfit_edit) return NULL;
LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view");
@@ -696,9 +704,11 @@ std::set<LLUUID> LLAvatarActions::getInventorySelectedUUIDs()
if (inventory_selected_uuids.empty())
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
- inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+ }
}
return inventory_selected_uuids;
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index fbfd815f41..748b7cb3d1 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -35,7 +35,7 @@
#include <vector>
class LLInventoryPanel;
-
+class LLFloater;
/**
* Friend-related actions (add, remove, offer teleport, etc)
@@ -96,6 +96,7 @@ public:
static void showProfile(const LLUUID& id);
static void hideProfile(const LLUUID& id);
static bool profileVisible(const LLUUID& id);
+ static LLFloater* getProfileFloater(const LLUUID& id);
/**
* Show avatar on world map.
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
deleted file mode 100644
index c8cfe5b51e..0000000000
--- a/indra/newview/llbottomtray.cpp
+++ /dev/null
@@ -1,1991 +0,0 @@
-/**
- * @file llbottomtray.cpp
- * @brief LLBottomTray class implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h" // must be first include
-
-#define LLBOTTOMTRAY_CPP
-#include "llbottomtray.h"
-
-// library includes
-#include "llfloaterreg.h"
-#include "llflyoutbutton.h"
-#include "lllayoutstack.h"
-#include "llnotifications.h"
-#include "llnotificationsutil.h"
-#include "lltexteditor.h"
-
-// newview includes
-#include "llagent.h"
-#include "llagentcamera.h"
-#include "llavataractions.h"
-#include "llchiclet.h"
-#include "llfloatercamera.h"
-#include "llhints.h"
-#include "llimfloater.h" // for LLIMFloater
-#include "llnearbychatbar.h"
-#include "llnearbychatbarlistener.h"
-#include "llsidetray.h"
-#include "llspeakbutton.h"
-#include "llsplitbutton.h"
-#include "llsyswellwindow.h"
-#include "lltoolmgr.h"
-#include "llviewerparcelmgr.h"
-
-#include "llviewerwindow.h"
-#include "llsdserialize.h"
-#include "llfirstuse.h"
-
-// Distance from mouse down on which drag'n'drop should be started.
-#define DRAG_START_DISTANCE 3
-
-static const std::string SORTING_DATA_FILE_NAME = "bottomtray_buttons_order.xml";
-
-LLDefaultChildRegistry::Register<LLBottomtrayButton> bottomtray_button("bottomtray_button");
-
-// LLBottomtrayButton methods
-
-// virtual
-BOOL LLBottomtrayButton::handleHover(S32 x, S32 y, MASK mask)
-{
- if (mCanDrag)
- {
- // pass hover to bottomtray
- S32 screenX, screenY;
- localPointToScreen(x, y, &screenX, &screenY);
- LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
-
- return TRUE;
- }
- else
- {
- return LLButton::handleHover(x, y, mask);
- }
-}
-//virtual
-BOOL LLBottomtrayButton::handleMouseUp(S32 x, S32 y, MASK mask)
-{
- if (mCanDrag)
- {
- S32 screenX, screenY;
- localPointToScreen(x, y, &screenX, &screenY);
- // pass mouse up to bottomtray
- LLBottomTray::getInstance()->onDraggableButtonMouseUp(this, screenX, screenY);
- }
- return LLButton::handleMouseUp(x, y, mask);
-}
-//virtual
-BOOL LLBottomtrayButton::handleMouseDown(S32 x, S32 y, MASK mask)
-{
- if (mCanDrag)
- {
- S32 screenX, screenY;
- localPointToScreen(x, y, &screenX, &screenY);
- // pass mouse up to bottomtray
- LLBottomTray::getInstance()->onDraggableButtonMouseDown(this, screenX, screenY);
- }
- return LLButton::handleMouseDown(x, y, mask);
-}
-
-static void update_build_button_enable_state()
-{
- bool can_edit = LLToolMgr::getInstance()->canEdit();
-
- LLBottomTray::getInstance()->getChildView("build_btn")->setEnabled(can_edit);
-}
-
-// Build time optimization, generate extern template once in .cpp file
-template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
-
-namespace
-{
- const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
-
- S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel)
- {
- S32 minimal_width = 0;
- llassert(stack);
- if ( stack && panel && panel->getVisible() )
- {
- stack->getPanelMinSize(panel->getName(), &minimal_width);
- }
- return minimal_width;
- }
-
- S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel)
- {
- S32 max_width = 0;
- llassert(stack);
- if ( stack && panel && panel->getVisible() )
- {
- stack->getPanelMaxSize(panel->getName(), &max_width);
- }
- return max_width;
- }
-
- S32 get_curr_width(LLUICtrl* ctrl)
- {
- S32 cur_width = 0;
- if ( ctrl && ctrl->getVisible() )
- {
- cur_width = ctrl->getRect().getWidth();
- }
- return cur_width;
- }
-}
-
-class LLBottomTrayLite
- : public LLPanel
-{
-public:
- LLBottomTrayLite()
- : mNearbyChatBar(NULL),
- mChatBarContainer(NULL),
- mGesturePanel(NULL)
- {
- mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
- buildFromFile("panel_bottomtray_lite.xml");
- }
-
- BOOL postBuild()
- {
- mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar");
- mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
- mGesturePanel = getChild<LLPanel>("gesture_panel");
-
- // Hide "show_nearby_chat" button
- if (mNearbyChatBar)
- {
- LLLineEditor* chat_box = mNearbyChatBar->getChatBox();
- LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat");
- S32 delta_width = show_btn->getRect().getWidth();
- show_btn->setVisible(FALSE);
- chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight());
- }
- return TRUE;
- }
-
- void onFocusLost()
- {
- if (gAgentCamera.cameraMouselook())
- {
- LLBottomTray::getInstance()->setVisible(FALSE);
- }
- }
-
- LLNearbyChatBar* mNearbyChatBar;
- LLLayoutPanel* mChatBarContainer;
- LLPanel* mGesturePanel;
-};
-
-LLBottomTray::LLBottomTray(const LLSD&)
-: mDesiredNearbyChatWidth(0),
- mChicletPanel(NULL),
- mSpeakPanel(NULL),
- mSpeakBtn(NULL),
- mNearbyChatBar(NULL),
- mChatBarContainer(NULL),
- mNearbyCharResizeHandlePanel(NULL),
- mToolbarStack(NULL),
- mMovementButton(NULL),
- mResizeState(RS_NORESIZE),
- mBottomTrayContextMenu(NULL),
- mCamButton(NULL),
- mBottomTrayLite(NULL),
- mIsInLiteMode(false),
- mDragStarted(false),
- mDraggedItem(NULL),
- mLandingTab(NULL),
- mCheckForDrag(false)
-{
- // Firstly add our self to IMSession observers, so we catch session events
- // before chiclets do that.
- LLIMMgr::getInstance()->addSessionObserver(this);
-
- mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
-
- buildFromFile("panel_bottomtray.xml");
-
- LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
-
- //this is to fix a crash that occurs because LLBottomTray is a singleton
- //and thus is deleted at the end of the viewers lifetime, but to be cleanly
- //destroyed LLBottomTray requires some subsystems that are long gone
- //LLUI::getRootView()->addChild(this);
-
- {
- mBottomTrayLite = new LLBottomTrayLite();
- mBottomTrayLite->setFollowsAll();
- mBottomTrayLite->setVisible(FALSE);
- }
-
- mImageDragIndication = LLUI::getUIImage(getString("DragIndicationImageName"));
- mDesiredNearbyChatWidth = mNearbyChatBar ? mNearbyChatBar->getRect().getWidth() : 0;
-}
-
-LLBottomTray::~LLBottomTray()
-{
- if (!LLSingleton<LLIMMgr>::destroyed())
- {
- LLIMMgr::getInstance()->removeSessionObserver(this);
- }
-
- if (mNearbyChatBar)
- {
- // store custom width of chatbar panel.
- S32 custom_width = mChatBarContainer->getRect().getWidth();
- gSavedSettings.setS32("ChatBarCustomWidth", custom_width);
- }
-
- // emulate previous floater behavior to be hidden on startup.
- // override effect of save_visibility=true.
- // this attribute is necessary to button.initial_callback=Button.SetFloaterToggle works properly:
- // i.g when floater changes its visibility - button changes its toggle state.
- getChild<LLUICtrl>("build_btn")->setControlValue(false);
- getChild<LLUICtrl>("search_btn")->setControlValue(false);
- getChild<LLUICtrl>("world_map_btn")->setControlValue(false);
-}
-
-// *TODO Vadim: why void* ?
-void* LLBottomTray::createNearbyChatBar(void* userdata)
-{
- return new LLNearbyChatBar();
-}
-
-LLNearbyChatBar* LLBottomTray::getNearbyChatBar()
-{
- return mIsInLiteMode ? mBottomTrayLite->mNearbyChatBar : mNearbyChatBar;
-}
-
-LLIMChiclet* LLBottomTray::createIMChiclet(const LLUUID& session_id)
-{
- LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
-
- switch (im_chiclet_type)
- {
- case LLIMChiclet::TYPE_IM:
- return getChicletPanel()->createChiclet<LLIMP2PChiclet>(session_id);
- case LLIMChiclet::TYPE_GROUP:
- return getChicletPanel()->createChiclet<LLIMGroupChiclet>(session_id);
- case LLIMChiclet::TYPE_AD_HOC:
- return getChicletPanel()->createChiclet<LLAdHocChiclet>(session_id);
- case LLIMChiclet::TYPE_UNKNOWN:
- break;
- }
-
- return NULL;
-}
-
-//virtual
-void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
-{
- if (!getChicletPanel()) return;
-
- LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
- if (!session) return;
-
- // no need to spawn chiclets for participants in P2P calls called through Avaline
- if (session->isP2P() && session->isOtherParticipantAvaline()) return;
-
- if (getChicletPanel()->findChiclet<LLChiclet>(session_id)) return;
-
- LLIMChiclet* chiclet = createIMChiclet(session_id);
- if(chiclet)
- {
- chiclet->setIMSessionName(name);
- chiclet->setOtherParticipantId(other_participant_id);
-
- LLIMFloater::onIMChicletCreated(session_id);
-
- }
- else
- {
- llerrs << "Could not create chiclet" << llendl;
- }
-}
-
-//virtual
-void LLBottomTray::sessionRemoved(const LLUUID& session_id)
-{
- if(getChicletPanel())
- {
- // IM floater should be closed when session removed and associated chiclet closed
- LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>(
- "impanel", session_id);
- if (iMfloater != NULL)
- {
- iMfloater->closeFloater();
- }
-
- getChicletPanel()->removeChiclet(session_id);
- }
-}
-
-void LLBottomTray::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
-{
- //this is only needed in case of outgoing ad-hoc/group chat sessions
- LLChicletPanel* chiclet_panel = getChicletPanel();
- if (chiclet_panel)
- {
- //it should be ad-hoc im chiclet or group im chiclet
- LLChiclet* chiclet = chiclet_panel->findChiclet<LLChiclet>(old_session_id);
- if (chiclet) chiclet->setSessionId(new_session_id);
- }
-}
-
-S32 LLBottomTray::getTotalUnreadIMCount()
-{
- return getChicletPanel()->getTotalUnreadIMCount();
-}
-
-// virtual
-void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
- // Time it takes to connect to voice channel might be pretty long,
- // so don't expect user login or STATUS_VOICE_ENABLED to be followed by STATUS_JOINED.
- BOOL enable = FALSE;
-
- switch (status)
- {
- // Do not add STATUS_VOICE_ENABLED because voice chat is
- // inactive until STATUS_JOINED
- case STATUS_JOINED:
- enable = TRUE;
- break;
- default:
- enable = FALSE;
- break;
- }
-
- // We have to enable/disable right and left parts of speak button separately (EXT-4648)
- getChild<LLButton>("speak_btn")->setEnabled(enable);
-
- // skipped to avoid button blinking
- if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
- {
- bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
- getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
- gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(voice_status);
- if (voice_status)
- {
- LLFirstUse::speak(true);
- }
- }
-}
-
-void LLBottomTray::onMouselookModeOut()
-{
- mIsInLiteMode = false;
- mBottomTrayLite->setVisible(FALSE);
- mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText());
- setVisible(TRUE);
-}
-
-void LLBottomTray::onMouselookModeIn()
-{
- setVisible(FALSE);
-
- // Attach the lite bottom tray
- if (getParent() && mBottomTrayLite->getParent() != getParent())
- getParent()->addChild(mBottomTrayLite);
-
- mBottomTrayLite->setShape(getLocalRect());
- mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText());
- mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton"));
-
- mIsInLiteMode = true;
-}
-
-//virtual
-// setVisible used instead of onVisibilityChange, since LLAgent calls it on entering/leaving mouselook mode.
-// If bottom tray is already visible in mouselook mode, then onVisibilityChange will not be called from setVisible(true),
-void LLBottomTray::setVisible(BOOL visible)
-{
- if (mIsInLiteMode)
- {
- mBottomTrayLite->setVisible(visible);
- }
- else
- {
- LLPanel::setVisible(visible);
- }
-}
-
-S32 LLBottomTray::notifyParent(const LLSD& info)
-{
- if(info.has("well_empty")) // implementation of EXT-3397
- {
- const std::string chiclet_name = info["well_name"];
-
- // only "im_well" or "notification_well" names are expected.
- // They are set in panel_bottomtray.xml in <chiclet_im_well> & <chiclet_notification>
- llassert("im_well" == chiclet_name || "notification_well" == chiclet_name);
-
- BOOL should_be_visible = !info["well_empty"];
- showWellButton("im_well" == chiclet_name ? RS_IM_WELL : RS_NOTIFICATION_WELL, should_be_visible);
- return 1;
- }
-
- if (info.has("action") && info["action"] == "resize")
- {
- const std::string& name = info["view_name"];
-
- // expected only resize of nearby chatbar
- if (mChatBarContainer->getName() != name) return LLPanel::notifyParent(info);
-
- const S32 new_width = info["new_width"];
-
- processChatbarCustomization(new_width);
-
- return 2;
- }
- return LLPanel::notifyParent(info);
-}
-
-void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask)
-{
- // We should show BottomTrayContextMenu in last turn
- if (mBottomTrayContextMenu && !LLMenuGL::sMenuContainer->getVisibleMenu())
- {
- //there are no other context menu (IM chiclet etc ), so we can show BottomTrayContextMenu
-
- updateContextMenu(x, y, mask);
- mBottomTrayContextMenu->buildDrawLabels();
- mBottomTrayContextMenu->updateParent(LLMenuGL::sMenuContainer);
- LLMenuGL::showPopup(this, mBottomTrayContextMenu, x, y);
-
- }
-}
-
-void LLBottomTray::updateContextMenu(S32 x, S32 y, MASK mask)
-{
- LLUICtrl* edit_box = mNearbyChatBar->getChild<LLUICtrl>("chat_box");
-
- S32 local_x = x - mChatBarContainer->getRect().mLeft - edit_box->getRect().mLeft;
- S32 local_y = y - mChatBarContainer->getRect().mBottom - edit_box->getRect().mBottom;
-
- bool in_edit_box = edit_box->pointInView(local_x, local_y);
-
- mBottomTrayContextMenu->setItemVisible("Separator", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Cut", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Copy", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Paste", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Delete", in_edit_box);
- mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Select_All", in_edit_box);
-}
-
-void LLBottomTray::showSpeakButton(bool visible)
-{
- // Show/hide the button
- setTrayButtonVisible(RS_BUTTON_SPEAK, visible);
-
- // and adjust other panels according to the occupied/freed space.
- const S32 panel_width = mSpeakPanel->getRect().getWidth();
- if (visible)
- {
- processWidthDecreased(-panel_width);
- }
- else
- {
- processWidthIncreased(panel_width);
- }
-}
-
-void LLBottomTray::toggleMovementControls()
-{
- if (mMovementButton)
- mMovementButton->onCommit();
-}
-
-void LLBottomTray::toggleCameraControls()
-{
- if (mCamButton)
- mCamButton->onCommit();
-}
-
-BOOL LLBottomTray::postBuild()
-{
- LLHints::registerHintTarget("bottom_tray", LLView::getHandle());
- LLHints::registerHintTarget("dest_guide_btn", getChild<LLUICtrl>("destination_btn")->getHandle());
- LLHints::registerHintTarget("avatar_picker_btn", getChild<LLUICtrl>("avatar_btn")->getHandle());
-
- LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("NearbyChatBar.Action", boost::bind(&LLBottomTray::onContextMenuItemClicked, this, _2));
- LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("NearbyChatBar.EnableMenuItem", boost::bind(&LLBottomTray::onContextMenuItemEnabled, this, _2));
-
- mBottomTrayContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_bottomtray.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- gMenuHolder->addChild(mBottomTrayContextMenu);
-
- mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar");
- LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle());
-
- mListener.reset(new LLNearbyChatBarListener(*mNearbyChatBar));
-
- mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
- mNearbyCharResizeHandlePanel = getChild<LLPanel>("chat_bar_resize_handle_panel");
-
- mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
- mMovementButton = getChild<LLButton>("movement_btn");
- LLHints::registerHintTarget("move_btn", mMovementButton->getHandle());
- mCamButton = getChild<LLButton>("camera_btn");
- setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
-
- mSpeakPanel = getChild<LLPanel>("speak_panel");
- mSpeakBtn = findChild<LLSpeakButton>("talk");
- if (mSpeakBtn)
- {
- LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
-
- // Localization tool doesn't understand custom buttons like <talk_button>
- mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
- mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
- }
- else
- {
- LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn"));
- LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("flyout_btn"));
- }
-
-
- // Both parts of speak button should be initially disabled because
- // it takes some time between logging in to world and connecting to voice channel.
- getChild<LLButton>("speak_btn")->setEnabled(false);
- getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
- gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(false);
-
- // Registering Chat Bar to receive Voice client status change notifications.
- LLVoiceClient::getInstance()->addObserver(this);
-
- mNearbyChatBar->getChatBox()->setContextMenu(NULL);
-
- mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
-
- initResizeStateContainers();
-
- setButtonsControlsAndListeners();
-
- initButtonsVisibility();
-
- // update wells visibility:
- showWellButton(RS_IM_WELL, !LLIMWellWindow::getInstance()->isWindowEmpty());
- showWellButton(RS_NOTIFICATION_WELL, !LLNotificationWellWindow::getInstance()->isWindowEmpty());
-
- loadButtonsOrder();
-
- LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&update_build_button_enable_state));
-
- return TRUE;
-}
-
-//Drag-n-drop
-
-void LLBottomTray::onDraggableButtonMouseDown(LLUICtrl* ctrl, S32 x, S32 y)
-{
- if (ctrl == NULL) return;
- LLView* parent_view = ctrl->getParent();
- if(parent_view != NULL)
- {
- // we actually drag'n'drop panel (not button) in code, so have to find a parent
- // of button which called this method on mouse down.
- LLPanel* parent = dynamic_cast<LLPanel*>(parent_view);
- // It may happen that we clicked not usual button, but button inside widget(speak, gesture)
- // so we'll need to get a level higher to reach layout panel as a parent.
- if(parent == NULL) parent = dynamic_cast<LLPanel*>(parent_view->getParent());
- if (parent && parent->getVisible())
- {
- mDraggedItem = parent;
- mCheckForDrag = true;
- mStartX = x;
- mStartY = y;
- }
- }
-}
-
-LLPanel* LLBottomTray::findChildPanelByLocalCoords(S32 x, S32 y)
-{
- LLPanel* ctrl = 0;
- S32 screenX, screenY;
- const child_list_t* list = mToolbarStack->getChildList();
-
- localPointToScreen(x, y, &screenX, &screenY);
-
- // look for a child panel which contains the point (screenX, screenY) in it's rectangle
- for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i)
- {
- LLRect rect;
- localRectToScreen((*i)->getRect(), &rect);
-
- if (rect.pointInRect(screenX, screenY))
- {
- ctrl = dynamic_cast<LLPanel*>(*i);
- break;
- }
- }
-
- return ctrl;
-}
-
-void LLBottomTray::onDraggableButtonHover(S32 x, S32 y)
-{
- // if mouse down on draggable item was done, check whether we should start DnD
- if (mCheckForDrag)
- {
- // Start drag'n'drop if mouse cursor was dragged away frome mouse down location enough
- if(sqrt((float)((mStartX-x)*(mStartX-x)+(mStartY-y)*(mStartY-y))) > DRAG_START_DISTANCE)
- {
- mDragStarted = true;
- mCheckForDrag = false;
- }
- }
- if (mDragStarted)
- {
- // Check whether the cursor is over draggable area, find which panel it is and set is as
- // landing tab for drag'n'drop
- if(isCursorOverDraggableArea(x, y))
- {
- LLPanel* panel = findChildPanelByLocalCoords(x,y);
- if (panel && panel != mDraggedItem) mLandingTab = panel;
- gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROWDRAG);
- }
- else
- {
- gViewerWindow->getWindow()->setCursor(UI_CURSOR_NO);
- }
- }
- else
- {
- // Reset cursor in case you move your mouse from the drag handle to a button.
- getWindow()->setCursor(UI_CURSOR_ARROW);
-
- }
-}
-
-bool LLBottomTray::isCursorOverDraggableArea(S32 x, S32 y)
-{
- // Draggable area lasts from the nearby chat input resize handle
- // to the chiclet area (exlusively).
- bool result = getRect().pointInRect(x, y);
- result = result && mNearbyCharResizeHandlePanel->calcScreenRect().mRight < x;
- result = result && mChicletPanel->calcScreenRect().mRight > x;
- return result;
-}
-
-void LLBottomTray::updateButtonsOrdersAfterDnD()
-{
- // *TODO: change implementation of this method to support simplify it
- // (and according to future possible changes in the way button order is saved between sessions).
- state_object_map_t::const_iterator it = mStateProcessedObjectMap.begin();
- state_object_map_t::const_iterator it_end = mStateProcessedObjectMap.end();
- EResizeState dragged_state = RS_NORESIZE;
- EResizeState landing_state = RS_NORESIZE;
- bool landing_state_found = false;
- // Find states for dragged item and landing tab
- for (; it != it_end; ++it)
- {
- if (it->second == mDraggedItem)
- {
- dragged_state = it->first;
- }
- else if (it->second == mLandingTab)
- {
- landing_state = it->first;
- landing_state_found = true;
- }
- }
-
- if (dragged_state == RS_NORESIZE)
- {
- llwarns << "Cannot determine what button is being dragged" << llendl;
- llassert(dragged_state != RS_NORESIZE);
- return;
- }
-
- lldebugs << "Will place " << resizeStateToString(dragged_state)
- << " before " << resizeStateToString(landing_state) << llendl;
-
- // Update order of buttons according to drag'n'drop
- mButtonsOrder.erase(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), dragged_state));
- if (!landing_state_found && mLandingTab == getChild<LLPanel>(PANEL_CHICLET_NAME))
- {
- mButtonsOrder.push_back(dragged_state);
- }
- else
- {
- if (!landing_state_found) landing_state = RS_BUTTON_SPEAK; // just a random fallback
- mButtonsOrder.insert(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), landing_state), dragged_state);
- }
-
- // Synchronize button process order with their order
- resize_state_vec_t::const_iterator it1 = mButtonsOrder.begin();
- const resize_state_vec_t::const_iterator it_end1 = mButtonsOrder.end();
- resize_state_vec_t::iterator it2 = mButtonsProcessOrder.begin();
- for (; it1 != it_end1; ++it1)
- {
- // Skip Speak because it is not in mButtonsProcessOrder(it's the reason why mButtonsOrder was introduced).
- // If any other draggable items will be added to bottomtray later, they should also be skipped here.
- if (*it1 != RS_BUTTON_SPEAK)
- {
- *it2 = *it1;
- ++it2;
- }
- }
-
- saveButtonsOrder();
-}
-
-void LLBottomTray::saveButtonsOrder()
-{
- if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
-
- std::string user_dir = gDirUtilp->getLindenUserDir();
- if (user_dir.empty()) return;
-
- std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
- LLSD settings_llsd;
- int i = 0;
- const resize_state_vec_t::const_iterator it_end = mButtonsOrder.end();
- // we use numbers as keys for map which is saved in file and contains resize states as its values
- for (resize_state_vec_t::const_iterator it = mButtonsOrder.begin(); it != it_end; ++it, i++)
- {
- std::string str = llformat("%d", i);
- settings_llsd[str] = *it;
- }
- llofstream file;
- file.open(filename);
- LLSDSerialize::toPrettyXML(settings_llsd, file);
-}
-
-void LLBottomTray::loadButtonsOrder()
-{
- if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
-
- // load per-resident sorting information
- std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
-
- LLSD settings_llsd;
- llifstream file;
- file.open(filename);
- if (!file.is_open()) return;
-
- LLSDSerialize::fromXML(settings_llsd, file);
-
-
- mButtonsOrder.clear();
- mButtonsProcessOrder.clear();
- int i = 0;
- // getting button order from file
- for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
- iter != settings_llsd.endMap(); ++iter, ++i)
- {
- std::string str = llformat("%d", i);
- EResizeState state = (EResizeState)settings_llsd[str].asInteger();
- mButtonsOrder.push_back(state);
- // RS_BUTTON_SPEAK is skipped, because it shouldn't be in mButtonsProcessOrder (it does not hide or shrink).
- if (state != RS_BUTTON_SPEAK)
- {
- mButtonsProcessOrder.push_back(state);
- }
- }
-
- // There are other panels in layout stack order of which is not saved. Also, panels order of which is saved,
- // are already in layout stack but in wrong order. The most convenient way to place them is moving them
- // to front one by one (because in this case we don't have to pass the panel before which we want to insert our
- // panel to movePanel()). So panels are moved in order from the end of mButtonsOrder vector(reverse iterator is used).
- const resize_state_vec_t::const_reverse_iterator it_end = mButtonsOrder.rend();
- // placing panels in layout stack according to button order which we loaded in previous for
- for (resize_state_vec_t::const_reverse_iterator it = mButtonsOrder.rbegin(); it != it_end; ++it, ++i)
- {
- LLPanel* panel_to_move = getButtonPanel(*it);
- mToolbarStack->movePanel(panel_to_move, NULL, true); // prepend
- }
- // Nearbychat is not stored in order settings file, but it must be the first of the panels, so moving it
- // (along with its drag handle) manually here.
- mToolbarStack->movePanel(getChild<LLLayoutPanel>("chat_bar_resize_handle_panel"), NULL, true);
- mToolbarStack->movePanel(mChatBarContainer, NULL, true);
-}
-
-void LLBottomTray::onDraggableButtonMouseUp(LLUICtrl* ctrl, S32 x, S32 y)
-{
- //if mouse up happened over area where drop is possible, change order of buttons
- if (mLandingTab != NULL && mDraggedItem != NULL && mDragStarted)
- {
- if(isCursorOverDraggableArea(x, y))
- {
- // change order of panels in layout stack
- mToolbarStack->movePanel(mDraggedItem, (LLPanel*)mLandingTab);
- // change order of buttons in order vectors
- updateButtonsOrdersAfterDnD();
- }
- }
- gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
- mDragStarted = false;
- mDraggedItem = NULL;
- mLandingTab = NULL;
- mCheckForDrag = false;
-}
-
-void LLBottomTray::draw()
-{
- LLPanel::draw();
- if (mLandingTab)
- {
- static S32 w = mImageDragIndication->getWidth();
- static S32 h = mImageDragIndication->getHeight();
- LLRect rect = mLandingTab->calcScreenRect();
- mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h);
- }
- getChild<LLButton>("show_profile_btn")->setToggleState(LLAvatarActions::profileVisible(gAgent.getID()));
-
- LLPanel* panel = LLSideTray::getInstance()->getPanel("panel_people");
- if (panel && panel->isInVisibleChain())
- {
- getChild<LLButton>("show_people_button")->setToggleState(true);
- }
- else
- {
- getChild<LLButton>("show_people_button")->setToggleState(false);
- }
-
- LLFloater* help_browser = (LLFloaterReg::findInstance("help_browser"));
- bool help_floater_visible = (help_browser && help_browser->isInVisibleChain());
-
- getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
-
- bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
- bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
- getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
- getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
-
-}
-
-bool LLBottomTray::onContextMenuItemEnabled(const LLSD& userdata)
-{
- std::string item = userdata.asString();
- LLLineEditor* edit_box = mNearbyChatBar->findChild<LLLineEditor>("chat_box");
-
- if (item == "can_cut")
- {
- return edit_box->canCut();
- }
- else if (item == "can_copy")
- {
- return edit_box->canCopy();
- }
- else if (item == "can_paste")
- {
- return edit_box->canPaste();
- }
- else if (item == "can_delete")
- {
- return edit_box->canDoDelete();
- }
- else if (item == "can_select_all")
- {
- return edit_box->canSelectAll() && (edit_box->getLength()>0);
- }
- return true;
-}
-
-
-void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
-{
- std::string item = userdata.asString();
- LLLineEditor* edit_box = mNearbyChatBar->findChild<LLLineEditor>("chat_box");
-
- if (item == "cut")
- {
- edit_box->cut();
- }
- else if (item == "copy")
- {
- edit_box->copy();
- }
- else if (item == "paste")
- {
- edit_box->paste();
- edit_box->setFocus(TRUE);
- }
- else if (item == "delete")
- {
- edit_box->doDelete();
- }
- else if (item == "select_all")
- {
- edit_box->selectAll();
- }
-}
-
-void LLBottomTray::log(LLView* panel, const std::string& descr)
-{
- if (NULL == panel) return;
- LLView* layout = panel->getParent();
- LL_DEBUGS("Bottom Tray Rects") << descr << ": "
- << "panel: " << panel->getName()
- << ", rect: " << panel->getRect()
-
-
- << " layout: " << layout->getName()
- << ", rect: " << layout->getRect()
- << LL_ENDL;
-}
-
-void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- static S32 debug_calling_number = 0;
- lldebugs << "**************************************** " << ++debug_calling_number << llendl;
-
- S32 current_width = getRect().getWidth();
- S32 delta_width = width - current_width;
- lldebugs << "Reshaping: "
- << ", width: " << width
- << ", cur width: " << current_width
- << ", delta_width: " << delta_width
- << ", called_from_parent: " << called_from_parent
- << llendl;
-
- if (mNearbyChatBar) log(mNearbyChatBar, "before");
- if (mChicletPanel) log(mChicletPanel, "before");
-
- // Difference between bottom tray width required to fit its children and the actual width. (see EXT-991)
- // Positive value means that bottom tray is not wide enough.
- // Negative value means that there is free space.
- static S32 extra_shrink_width = 0;
- bool should_be_reshaped = true;
-
- if (mChicletPanel && mToolbarStack && mNearbyChatBar)
- {
- // Firstly, update layout stack to ensure we deal with correct panel sizes.
- {
- BOOL saved_anim = mToolbarStack->getAnimate();
- // Set chiclet panel to be autoresized by default.
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
- // Disable animation to prevent layout updating in several frames.
- mToolbarStack->setAnimate(FALSE);
- // Force the updating of layout to reset panels collapse factor.
- mToolbarStack->updateLayout();
- // Restore animate state.
- mToolbarStack->setAnimate(saved_anim);
- }
-
- // bottom tray is narrowed
- if (delta_width < 0)
- {
- if (extra_shrink_width > 0) // not enough space
- {
- extra_shrink_width += llabs(delta_width);
- should_be_reshaped = false;
- }
- else
- {
- extra_shrink_width = processWidthDecreased(delta_width);
-
- // increase new width to extra_shrink_width value to not reshape less than bottom tray minimum
- width += extra_shrink_width;
- }
- }
- // bottom tray is widened
- else
- {
- if (extra_shrink_width > delta_width)
- {
- // Still not enough space.
- // Only subtract the delta from the required delta and don't reshape.
- extra_shrink_width -= delta_width;
- should_be_reshaped = false;
- }
- else
- {
- if (extra_shrink_width > 0)
- {
- // If we have some extra shrink width let's reduce delta_width & width
- delta_width -= extra_shrink_width;
- width -= extra_shrink_width;
- extra_shrink_width = 0;
- }
- processWidthIncreased(delta_width);
- }
- }
- }
-
- if (should_be_reshaped)
- {
- lldebugs << "Reshape all children with width: " << width << llendl;
- LLPanel::reshape(width, height, called_from_parent);
- }
-
- if (mNearbyChatBar) log(mNearbyChatBar, "after");
- if (mChicletPanel) log(mChicletPanel, "after");
-
-
- // Restore width of the chatbar on first reshape.
- // we can not to do this from postBuild because reshape is called from parent view on startup
- // creation after it and reset width according to resize logic.
- static bool needs_restore_custom_state = true;
- if (mChatBarContainer && needs_restore_custom_state)
- {
- // restore custom width of chatbar panel.
- S32 new_width = gSavedSettings.getS32("ChatBarCustomWidth");
- if (new_width > 0)
- {
- mDesiredNearbyChatWidth = new_width;
- processChatbarCustomization(new_width);
- lldebugs << "Setting nearby chat bar width to " << new_width << " px" << llendl;
- mChatBarContainer->reshape(new_width, mChatBarContainer->getRect().getHeight());
- }
- needs_restore_custom_state = false;
- }
-
-}
-
-S32 LLBottomTray::processWidthDecreased(S32 delta_width)
-{
- bool still_should_be_processed = true;
-
- const S32 chiclet_panel_shrink_headroom = getChicletPanelShrinkHeadroom();
-
- // There are four steps of processing width decrease. If in one of them required width was reached,
- // further are not needed.
- // 1. Decreasing width of chiclet panel.
- if (chiclet_panel_shrink_headroom > 0)
- {
- // we have some space to decrease chiclet panel
- S32 shrink_by = llmin(-delta_width, chiclet_panel_shrink_headroom);
-
- lldebugs << "delta_width: " << delta_width
- << ", panel_delta_min: " << chiclet_panel_shrink_headroom
- << ", shrink_by: " << shrink_by
- << llendl;
-
- // is chiclet panel wide enough to process resizing?
- delta_width += chiclet_panel_shrink_headroom;
-
- still_should_be_processed = delta_width < 0;
-
- lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
- mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
- log(mChicletPanel, "after processing panel decreasing via chiclet panel");
-
- lldebugs << "RS_CHICLET_PANEL"
- << ", delta_width: " << delta_width
- << llendl;
- }
-
- S32 buttons_freed_width = 0;
- // 2. Decreasing width of buttons.
- if (still_should_be_processed)
- {
- processShrinkButtons(delta_width, buttons_freed_width);
- still_should_be_processed = delta_width < 0;
- }
-
- // 3. Decreasing width of nearby chat.
- const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mChatBarContainer);
- const S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth();
- if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)
- {
- // we have some space to decrease chatbar panel
- S32 chatbar_shrink_headroom = chatbar_panel_width - chatbar_panel_min_width;
-
- S32 shrink_by = llmin(-delta_width, chatbar_shrink_headroom);
-
- // is chatbar panel wide enough to process resizing?
- delta_width += chatbar_shrink_headroom;
-
- still_should_be_processed = delta_width < 0;
-
- // chatbar should only be shrunk here, not stretched
- if (shrink_by > 0)
- {
- lldebugs << "Shrinking nearby chat bar by " << shrink_by << " px " << llendl;
- mChatBarContainer->reshape(mNearbyChatBar->getRect().getWidth() - shrink_by, mChatBarContainer->getRect().getHeight());
- }
-
- log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel");
-
- lldebugs << "RS_CHATBAR_INPUT"
- << ", shrink_by: " << shrink_by
- << ", delta_width: " << delta_width
- << llendl;
- }
-
- S32 extra_shrink_width = 0;
- // 4. Hiding buttons if needed.
- if (still_should_be_processed)
- {
- processHideButtons(delta_width, buttons_freed_width);
-
- if (delta_width < 0)
- {
- extra_shrink_width = -delta_width;
- llwarns << "There is no enough width to reshape all children: "
- << extra_shrink_width << llendl;
- }
-
- if (buttons_freed_width > 0)
- {
- S32 nearby_needed_width = mDesiredNearbyChatWidth - mNearbyChatBar->getRect().getWidth();
- if (nearby_needed_width > 0)
- {
- S32 compensative_width = nearby_needed_width > buttons_freed_width ? buttons_freed_width : nearby_needed_width;
- log(mNearbyChatBar, "before applying compensative width");
- lldebugs << "Extending nearby chat bar by " << compensative_width << " px" << llendl;
- mChatBarContainer->reshape(mChatBarContainer->getRect().getWidth() + compensative_width, mChatBarContainer->getRect().getHeight() );
- log(mNearbyChatBar, "after applying compensative width");
- lldebugs << buttons_freed_width << llendl;
- }
- }
- }
-
- return extra_shrink_width;
-}
-
-void LLBottomTray::processWidthIncreased(S32 delta_width)
-{
- if (delta_width <= 0) return;
-
- // how much room we have to show hidden buttons
- S32 available_width = delta_width + getChicletPanelShrinkHeadroom();
-
- lldebugs << "Distributing (" << getChicletPanelShrinkHeadroom()
- << " + " << delta_width << ") = " << available_width << " px" << llendl;
-
- // 1. Try showing buttons that have been auto-hidden.
- S32 processed_width = processShowButtons(available_width);
- lldebugs << "processed_width = " << processed_width << ", delta_width = " << delta_width << llendl;
-
- lldebugs << "Available_width after showing buttons: " << available_width << llendl;
-
- // If the newly shown buttons have consumed more than delta_width pixels,
- // shrink the chiclet panel.
- if (processed_width > delta_width)
- {
- // 1. use delta width of resizing
- S32 shrink_by = processed_width - delta_width;
-
- // 2. use width available via decreasing of chiclet panel
- if (shrink_by > 0)
- {
- lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
- mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
- log(mChicletPanel, "after applying compensative width for chiclets: ");
- lldebugs << shrink_by << llendl;
- }
-
- // shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
- delta_width -= processed_width;
- }
-
- // 2. Expand the nearby chat bar if needed.
- S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth();
- lldebugs << "delta_width = " << delta_width
- << ", chatbar_panel_width = " << chatbar_panel_width
- << ", mDesiredNearbyChatWidth = " << mDesiredNearbyChatWidth << llendl;
- if (delta_width > 0 && chatbar_panel_width < mDesiredNearbyChatWidth)
- {
- S32 extend_by_max = mDesiredNearbyChatWidth - chatbar_panel_width;
- S32 extend_by = llmin(delta_width, extend_by_max);
- lldebugs << "Unprocessed delta width: " << delta_width
- << " px, chatbar can be extended by " << extend_by_max
- << " px, extending it by " << extend_by << " px"
- << llendl;
-
- delta_width -= extend_by_max;
- lldebugs << "Extending nearby chat bar by " << extend_by << " px " << llendl;
- mChatBarContainer->reshape(chatbar_panel_width + extend_by, mChatBarContainer->getRect().getHeight());
- log(mNearbyChatBar, "applied unprocessed delta width");
- }
-
- // 3. Expand buttons that have been auto-shrunk,
- // if we haven't yet consumed all the available headroom.
- if (delta_width > 0)
- {
- S32 available_width = delta_width + getChicletPanelShrinkHeadroom();
- processExtendButtons(available_width);
- }
-}
-
-S32 LLBottomTray::processShowButtons(S32& available_width)
-{
- lldebugs << "Distributing " << available_width << " px" << llendl;
- S32 original_available_width = available_width;
-
- // process buttons from left to right
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- for (; it != it_end; ++it)
- {
- // is there available space?
- if (available_width <= 0) break;
-
- // try to show next button
- processShowButton(*it, available_width);
- }
-
- return original_available_width - available_width;
-}
-
-bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32& available_width)
-{
- // Check if the button was previously auto-hidden (due to lack of space).
- if (!isAutoHidden(shown_object_type))
- {
- return false;
- }
-
- // Ok. Try showing the button.
- return showButton(shown_object_type, available_width);
-}
-
-void LLBottomTray::processHideButtons(S32& required_width, S32& buttons_freed_width)
-{
- // process buttons from right to left
- resize_state_vec_t::const_reverse_iterator it = mButtonsProcessOrder.rbegin();
- const resize_state_vec_t::const_reverse_iterator it_end = mButtonsProcessOrder.rend();
-
- for (; it != it_end; ++it)
- {
- // is it still necessary to hide a button?
- if (required_width >= 0) break;
-
- // try to hide next button
- processHideButton(*it, required_width, buttons_freed_width);
- }
-}
-
-void LLBottomTray::processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width)
-{
- lldebugs << "Trying to hide object type: " << processed_object_type << llendl;
- LLPanel* panel = getButtonPanel(processed_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- if (panel->getVisible())
- {
- required_width += panel->getRect().getWidth();
-
- if (required_width > 0)
- {
- buttons_freed_width += required_width;
- }
-
- setTrayButtonVisible(processed_object_type, false);
-
- setAutoHidden(processed_object_type, true);
-
- lldebugs << "processing object type: " << processed_object_type
- << ", buttons_freed_width: " << buttons_freed_width
- << llendl;
- }
-}
-
-void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_width)
-{
- // process buttons from right to left
- resize_state_vec_t::const_reverse_iterator it = mButtonsProcessOrder.rbegin();
- const resize_state_vec_t::const_reverse_iterator it_end = mButtonsProcessOrder.rend();
-
- // iterate through buttons in the mButtonsProcessOrder first
- for (; it != it_end; ++it)
- {
- // is it still necessary to hide a button?
- if (required_width >= 0) break;
-
- // try to shrink next button
- processShrinkButton(*it, required_width);
- }
-
- // then shrink Speak button
- if (required_width < 0)
- {
- S32 panel_min_width = 0;
- std::string panel_name = mSpeakPanel->getName();
- bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
- if (!success)
- {
- lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
- }
- else
- {
- S32 panel_width = mSpeakPanel->getRect().getWidth();
- S32 possible_shrink_width = panel_width - panel_min_width;
-
- if (possible_shrink_width > 0)
- {
- if (mSpeakBtn)
- {
- mSpeakBtn->setLabelVisible(false);
- }
-
- mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
-
- required_width += possible_shrink_width;
-
- if (required_width > 0)
- {
- buttons_freed_width += required_width;
- }
-
- lldebugs << "Shrunk Speak button panel: " << panel_name
- << ", shrunk width: " << possible_shrink_width
- << ", rest width to process: " << required_width
- << llendl;
- }
- }
- }
-}
-
-void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32& required_width)
-{
- LLPanel* panel = getButtonPanel(processed_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- if (panel->getVisible())
- {
- S32 panel_width = panel->getRect().getWidth();
- S32 panel_min_width = 0;
- std::string panel_name = panel->getName();
- bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
- S32 possible_shrink_width = panel_width - panel_min_width;
-
- if (!success)
- {
- lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
- }
- // we have some space to free by shrinking the button
- else if (possible_shrink_width > 0)
- {
- // let calculate real width to shrink
-
- // 1. apply all possible width
- required_width += possible_shrink_width;
-
- // 2. it it is too much...
- if (required_width > 0)
- {
- // reduce applied shrunk width to the excessive value.
- possible_shrink_width -= required_width;
- required_width = 0;
- }
- panel->reshape(panel_width - possible_shrink_width, panel->getRect().getHeight());
-
- lldebugs << "Shrunk panel: " << panel_name
- << ", shrunk width: " << possible_shrink_width
- << ", rest width to process: " << required_width
- << llendl;
- }
- }
-}
-
-
-void LLBottomTray::processExtendButtons(S32& available_width)
-{
- // do not allow extending any buttons if we have some buttons hidden via resize
- if (isAutoHidden(RS_BUTTONS_CAN_BE_HIDDEN)) return;
-
- lldebugs << "Distributing " << available_width << " px" << llendl;
-
- // First try extending the Speak button.
- if (available_width > 0)
- {
- if (!processExtendSpeakButton(available_width))
- {
- // The Speak button needs extension but lacks some space.
- // Don't extend other buttons in this case: the Speak button
- // should consume the available headroom first.
- return;
- }
- }
-
- // Then process the other buttons from left to right.
- if (available_width > 0)
- {
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- // iterate through buttons in the mButtonsProcessOrder first
- for (; it != it_end; ++it)
- {
- // is there available space?
- if (available_width <= 0) break;
-
- // try to extend next button
- processExtendButton(*it, available_width);
- }
- }
-}
-
-bool LLBottomTray::processExtendSpeakButton(S32& available_width)
-{
- if (available_width <= 0)
- {
- llassert(available_width > 0);
- return true;
- }
-
- const S32 panel_max_width = mObjectDefaultWidthMap[RS_BUTTON_SPEAK];
- const S32 panel_width = mSpeakPanel->getRect().getWidth();
- const S32 required_headroom = panel_max_width - panel_width;
-
- if (panel_width < panel_max_width) // if the button isn't extended already
- {
- if (available_width < required_headroom) // not enough space
- {
- lldebugs << "Need (" << required_headroom << " - " << available_width << ") = "
- << (required_headroom - available_width) << " more px"
- << " to extend the Speak button"<< llendl;
-
- return false; // Don't extend other buttons until we extend Speak.
- }
-
- // Reshape the Speak button to its maximum width.
- if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);
- mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
-
- available_width -= required_headroom;
- llassert(available_width >= 0);
-
- lldebugs << "Extending Speak button panel: " << mSpeakPanel->getName()
- << ", extended width: " << required_headroom
- << ", rest width to process: " << available_width
- << llendl;
- }
-
- return true;
-}
-
-void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32& available_width)
-{
- llassert(available_width >= 0);
-
- LLPanel* panel = getButtonPanel(processed_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- if (!panel->getVisible()) return;
-
- // Widen the button up to its maximum width, but by not more than <available_width> px.
- S32 panel_max_width = mObjectDefaultWidthMap[processed_object_type];
- S32 panel_width = panel->getRect().getWidth();
- S32 required_headroom = panel_max_width - panel_width;
-
- S32 extend_by = llmin(available_width, required_headroom);
- if (extend_by > 0)
- {
- panel->reshape(panel_width + extend_by, panel->getRect().getHeight());
-
- // Decrease amount of headroom available for other panels.
- available_width -= extend_by;
-
- lldebugs << "Extending " << panel->getName()
- << " by " << extend_by
- << " px; remaining available width: " << available_width
- << llendl;
- }
-}
-
-bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const
-{
- // Check that all buttons (that can be hidden on resize)
- // to the left of the given one are already shown.
-
- // process buttons in direct order (from left to right)
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- MASK buttons_before_mask = RS_NORESIZE;
- for (; it != it_end; ++it)
- {
- const EResizeState button_type = *it;
- if (button_type == processed_object_type) break;
-
- buttons_before_mask |= button_type;
- }
-
- return !isAutoHidden(buttons_before_mask);
-}
-
-void LLBottomTray::initResizeStateContainers()
-{
- // init map with objects should be processed for each type
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPEAK, getChild<LLPanel>("speak_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLPanel>("gesture_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLPanel>("movement_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLPanel>("cam_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_DESTINATIONS, getChild<LLPanel>("destinations_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_AVATARS, getChild<LLPanel>("avatar_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, getChild<LLPanel>("snapshot_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_BUILD, getChild<LLPanel>("build_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SEARCH, getChild<LLPanel>("search_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_WORLD_MAP, getChild<LLPanel>("world_map_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MINI_MAP, getChild<LLPanel>("mini_map_btn_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_1, getChild<LLPanel>("splitter_panel_1")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PEOPLE, getChild<LLPanel>("people_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PROFILE, getChild<LLPanel>("profile_panel")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_2, getChild<LLPanel>("splitter_panel_2")));
- mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));
-
- // init an order of processed buttons
- mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS);
- mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);
- mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);
- mButtonsProcessOrder.push_back(RS_BUTTON_BUILD);
- mButtonsProcessOrder.push_back(RS_BUTTON_SEARCH);
- mButtonsProcessOrder.push_back(RS_BUTTON_WORLD_MAP);
- mButtonsProcessOrder.push_back(RS_BUTTON_MINI_MAP);
- mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_1);
- mButtonsProcessOrder.push_back(RS_BUTTON_PEOPLE);
- mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE);
- mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2);
- mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO);
- mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
- mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
- mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
-
- mButtonsOrder.push_back(RS_BUTTON_SPEAK);
- mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end());
-
- // init default widths
-
- // process buttons that can be hidden on resize...
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- for (; it != it_end; ++it)
- {
- const EResizeState button_type = *it;
- // is there an appropriate object?
- LLPanel* button_panel = getButtonPanel(button_type);
- if (!button_panel) continue;
-
- // set default width for it.
- mObjectDefaultWidthMap[button_type] = button_panel->getRect().getWidth();
- }
-
- // ... and add Speak button because it also can be shrunk.
- mObjectDefaultWidthMap[RS_BUTTON_SPEAK] = mSpeakPanel->getRect().getWidth();
-}
-
-// this method must be called before restoring of the chat entry field on startup
-// because it resets chatbar's width according to resize logic.
-void LLBottomTray::initButtonsVisibility()
-{
- setVisibleAndFitWidths(RS_BUTTON_SPEAK, gSavedSettings.getBOOL("EnableVoiceChat") || !mSpeakBtn );
- setVisibleAndFitWidths(RS_BUTTON_GESTURES, gSavedSettings.getBOOL("ShowGestureButton"));
- setVisibleAndFitWidths(RS_BUTTON_MOVEMENT, gSavedSettings.getBOOL("ShowMoveButton"));
- setVisibleAndFitWidths(RS_BUTTON_CAMERA, gSavedSettings.getBOOL("ShowCameraButton"));
- setVisibleAndFitWidths(RS_BUTTON_SNAPSHOT, gSavedSettings.getBOOL("ShowSnapshotButton"));
- setVisibleAndFitWidths(RS_BUTTON_BUILD, gSavedSettings.getBOOL("ShowBuildButton"));
- setVisibleAndFitWidths(RS_BUTTON_SEARCH, gSavedSettings.getBOOL("ShowSearchButton"));
- setVisibleAndFitWidths(RS_BUTTON_WORLD_MAP, gSavedSettings.getBOOL("ShowWorldMapButton"));
- setVisibleAndFitWidths(RS_BUTTON_MINI_MAP, gSavedSettings.getBOOL("ShowMiniMapButton"));
- lldebugs << "mResizeState = " << resizeStateMaskToString(mResizeState) << llendl;
-}
-
-void LLBottomTray::setButtonsControlsAndListeners()
-{
- // always show the speak panel if using the basic skin
- if (mSpeakBtn)
- {
- gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SPEAK, _2));
- }
-
- gSavedSettings.getControl("ShowGestureButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_GESTURES, _2));
- gSavedSettings.getControl("ShowMoveButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MOVEMENT, _2));
- gSavedSettings.getControl("ShowCameraButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_CAMERA, _2));
- gSavedSettings.getControl("ShowSnapshotButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SNAPSHOT, _2));
- gSavedSettings.getControl("ShowBuildButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_BUILD, _2));
- gSavedSettings.getControl("ShowSearchButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SEARCH, _2));
- gSavedSettings.getControl("ShowWorldMapButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_WORLD_MAP, _2));
- gSavedSettings.getControl("ShowMiniMapButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MINI_MAP, _2));
-
-
- LLButton* build_btn = getChild<LLButton>("build_btn");
- // set control name for Build button. It is not enough to link it with Button.SetFloaterToggle in xml
- std::string vis_control_name = LLFloaterReg::declareVisibilityControl("build");
- // Set the button control value (toggle state) to the floater visibility control (Sets the value as well)
- build_btn->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
-}
-
-bool LLBottomTray::toggleShowButton(LLBottomTray::EResizeState button_type, const LLSD& new_visibility)
-{
- if (LLBottomTray::instanceExists())
- {
- LLBottomTray::getInstance()->setTrayButtonVisibleIfPossible(button_type, new_visibility.asBoolean());
- }
- return true;
-}
-
-bool LLBottomTray::showButton(EResizeState button_type, S32& available_width)
-{
- LLPanel* panel = getButtonPanel(button_type);
- if (NULL == panel)
- {
- return false;
- }
-
- if (panel->getVisible())
- {
- return false;
- }
-
- // Check if none of the buttons to the left of the given one was auto-hidden.
- // (we auto-show the buttons left to right).
- if (!canButtonBeShown(button_type))
- {
- return false;
- }
-
- // Make sure we have enough room to show this button.
- const S32 required_width = panel->getRect().getWidth();
- if (available_width < required_width)
- {
- lldebugs << "Need " << (required_width - available_width) << " more px to show " << resizeStateToString(button_type) << llendl;
- return false;
- }
-
- // All good. Show the button.
- setTrayButtonVisible(button_type, true);
-
- // Let the caller know that there is now less available space.
- available_width -= required_width;
-
- lldebugs << "Showing button " << resizeStateToString(button_type)
- << ", remaining available width: " << available_width
- << llendl;
- setAutoHidden(button_type, false);
-
- return true;
-}
-
-void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
-{
- LLPanel* panel = getButtonPanel(shown_object_type);
- if (NULL == panel)
- {
- return;
- }
-
- panel->setVisible(visible);
-}
-
-void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification)
-{
- if (!setVisibleAndFitWidths(shown_object_type, visible) && visible && raise_notification)
- {
- LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown",
- LLSD(),
- LLSD(),
- LLNotificationFunctorRegistry::instance().DONOTHING);
- }
-}
-
-bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible)
-{
- // The Speak button is treated specially: if voice is enabled,
- // the button should be displayed no matter how much space we've got.
- if (object_type == RS_BUTTON_SPEAK)
- {
- showSpeakButton(visible);
- return true;
- }
-
- LLPanel* cur_panel = getButtonPanel(object_type);
- if (NULL == cur_panel)
- {
- return false;
- }
-
- bool is_set = true;
-
- if (visible)
- {
- // Assume that only chiclet panel can be auto-resized
- const S32 available_width = getChicletPanelShrinkHeadroom();
-
- S32 preferred_width = mObjectDefaultWidthMap[object_type];
- S32 current_width = cur_panel->getRect().getWidth();
- S32 result_width = 0;
- bool decrease_width = false;
-
- if (preferred_width > 0 && available_width >= preferred_width)
- {
- result_width = preferred_width;
- }
- else if (available_width >= current_width)
- {
- result_width = current_width;
- }
- else
- {
- // Calculate the possible shrunk width as difference between current and minimal widths
- const S32 chatbar_shrunk_width =
- mChatBarContainer->getRect().getWidth() - get_panel_min_width(mToolbarStack, mChatBarContainer);
-
- S32 sum_of_min_widths = get_panel_min_width(mToolbarStack, mSpeakPanel);
- S32 sum_of_curr_widths = get_curr_width(mSpeakPanel);
-
- resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
- const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
- for (; it != it_end; ++it)
- {
- LLPanel* cur_panel = getButtonPanel(*it);
- sum_of_min_widths += get_panel_min_width(mToolbarStack, cur_panel);
- sum_of_curr_widths += get_curr_width(cur_panel);
- }
-
- const S32 possible_shrunk_width =
- chatbar_shrunk_width + (sum_of_curr_widths - sum_of_min_widths);
-
- // Minimal width of current panel
- S32 minimal_width = 0;
- mToolbarStack->getPanelMinSize(cur_panel->getName(), &minimal_width);
-
- if ( (available_width + possible_shrunk_width) >= minimal_width)
- {
- // There is enough space for minimal width, but set the result_width
- // to preferred_width so buttons widths decreasing will be done in predefined order
- result_width = (preferred_width > 0) ? preferred_width : current_width;
- decrease_width = true;
- }
- else
- {
- lldebugs << "Need " << (minimal_width - available_width - possible_shrunk_width)
- << " more px to show " << resizeStateToString(object_type) << llendl;
-
- // Make the button uppear when we have more available space.
- setAutoHidden(object_type, true);
- return false;
- }
- }
-
- if (result_width != current_width)
- {
- cur_panel->reshape(result_width, cur_panel->getRect().getHeight());
- current_width = result_width;
- }
-
- is_set = showButton(object_type, current_width);
-
- // Shrink buttons if needed
- if (is_set && decrease_width)
- {
- processWidthDecreased( -result_width);
- }
- }
- else
- {
- const S32 delta_width = get_curr_width(cur_panel);
-
- setTrayButtonVisible(object_type, false);
-
- // Mark button NOT to show while future bottom tray extending
- lldebugs << "Removing " << resizeStateToString(object_type) << " from mResizeState" << llendl;
- setAutoHidden(object_type, false);
-
- // Extend other buttons if need
- if (delta_width)
- {
- processWidthIncreased(delta_width);
- }
- }
- return is_set;
-}
-
-LLPanel* LLBottomTray::getButtonPanel(EResizeState button_type)
-{
- // Don't use the operator[] because it inserts a NULL value if the key is not found.
- if (mStateProcessedObjectMap.count(button_type) == 0)
- {
- llwarns << "Cannot find a panel for " << resizeStateToString(button_type) << llendl;
- llassert(mStateProcessedObjectMap.count(button_type) == 1);
- return NULL;
- }
-
- return mStateProcessedObjectMap[button_type];
-}
-
-void LLBottomTray::showWellButton(EResizeState object_type, bool visible)
-{
- llassert( ((RS_NOTIFICATION_WELL | RS_IM_WELL) & object_type) == object_type );
-
- const std::string panel_name = RS_IM_WELL == object_type ? "im_well_panel" : "notification_well_panel";
-
- LLView * panel = getChild<LLView>(panel_name);
-
- // if necessary visibility is set nothing to do here
- if (panel->getVisible() == (BOOL)visible) return;
-
- S32 panel_width = panel->getRect().getWidth();
- panel->setVisible(visible);
-
- if (visible)
- {
- // method assumes that input param is a negative value
- processWidthDecreased(-panel_width);
- }
- else
- {
- processWidthIncreased(panel_width);
- }
-}
-
-void LLBottomTray::processChatbarCustomization(S32 new_width)
-{
- if (NULL == mNearbyChatBar) return;
-
- const S32 delta_width = mChatBarContainer->getRect().getWidth() - new_width;
-
- if (delta_width == 0) return;
-
- {
- static unsigned dbg_cnt = 0;
- lldebugs << llformat("*** (%03d) ************************************* %d", delta_width, ++dbg_cnt) << llendl;
- }
-
- mDesiredNearbyChatWidth = new_width;
-
- const S32 available_chiclet_shrink_width = getChicletPanelShrinkHeadroom();
- llassert(available_chiclet_shrink_width >= 0);
-
- if (delta_width > 0) // panel gets narrowly
- {
- S32 total_possible_width = delta_width + available_chiclet_shrink_width;
- processShowButtons(total_possible_width);
- processExtendButtons(total_possible_width);
- }
- // here (delta_width < 0) // panel gets wider
- else //if (-delta_width > available_chiclet_shrink_width)
- {
- S32 required_width = delta_width + available_chiclet_shrink_width;
- S32 buttons_freed_width = 0;
- processShrinkButtons(required_width, buttons_freed_width);
- processHideButtons(required_width, buttons_freed_width);
- }
-}
-
-S32 LLBottomTray::getChicletPanelShrinkHeadroom() const
-{
- static const S32 min_width = mChicletPanel->getMinWidth();
- const S32 cur_width = mChicletPanel->getParent()->getRect().getWidth();
-
- S32 shrink_headroom = cur_width - min_width;
- llassert(shrink_headroom >= 0); // the panel cannot get narrower than the minimum
- return shrink_headroom;
-}
-
-// static
-std::string LLBottomTray::resizeStateToString(EResizeState state)
-{
- const char *rs_string = "UNKNOWN_BUTTON";
-
- switch (state)
- {
- case RS_NORESIZE: rs_string = "RS_NORESIZE"; break;
- case RS_CHICLET_PANEL: rs_string = "RS_CHICLET_PANEL"; break;
- case RS_CHATBAR_INPUT: rs_string = "RS_CHATBAR_INPUT"; break;
- case RS_BUTTON_SNAPSHOT: rs_string = "RS_BUTTON_SNAPSHOT"; break;
- case RS_BUTTON_CAMERA: rs_string = "RS_BUTTON_CAMERA"; break;
- case RS_BUTTON_MOVEMENT: rs_string = "RS_BUTTON_MOVEMENT"; break;
- case RS_BUTTON_GESTURES: rs_string = "RS_BUTTON_GESTURES"; break;
- case RS_BUTTON_SPEAK: rs_string = "RS_BUTTON_SPEAK"; break;
- case RS_IM_WELL: rs_string = "RS_IM_WELL"; break;
- case RS_NOTIFICATION_WELL: rs_string = "RS_NOTIFICATION_WELL"; break;
- case RS_BUTTON_BUILD: rs_string = "RS_BUTTON_BUILD"; break;
- case RS_BUTTON_SEARCH: rs_string = "RS_BUTTON_SEARCH"; break;
- case RS_BUTTON_WORLD_MAP: rs_string = "RS_BUTTON_WORLD_MAP"; break;
- case RS_BUTTON_MINI_MAP: rs_string = "RS_BUTTON_MINI_MAP"; break;
- case RS_BUTTON_DESTINATIONS: rs_string = "RS_BUTTON_DESTINATIONS"; break;
- case RS_BUTTON_AVATARS: rs_string = "RS_BUTTON_AVATARS"; break;
- case RS_BUTTON_PEOPLE: rs_string = "RS_BUTTON_PEOPLE"; break;
- case RS_BUTTON_PROFILE: rs_string = "RS_BUTTON_PROFILE"; break;
- case RS_BUTTON_HOWTO: rs_string = "RS_BUTTON_HOWTO"; break;
- case RS_BUTTON_SPLITTER_1: rs_string = "RS_BUTTON_SPLITTER_1"; break;
- case RS_BUTTON_SPLITTER_2: rs_string = "RS_BUTTON_SPLITTER_2"; break;
- case RS_BUTTONS_CAN_BE_HIDDEN: rs_string = "RS_BUTTONS_CAN_BE_HIDDEN"; break;
- // No default to track additions.
- }
-
- return rs_string;
-}
-
-// static
-std::string LLBottomTray::resizeStateMaskToString(MASK mask)
-{
- std::string res;
-
- bool add_delimiter = false;
- for (U32 i = 0; i < 16; i++)
- {
- EResizeState state = (EResizeState) (1 << i);
- if (mask & state)
- {
- if (!add_delimiter)
- {
- add_delimiter = true;
- }
- else
- {
- res += ", ";
- }
-
- res += resizeStateToString(state);
- }
- }
-
- if (res.empty())
- {
- res = resizeStateToString(RS_NORESIZE);
- }
-
- res += llformat(" (0x%X)", mask);
- return res;
-}
-
-bool LLBottomTray::isAutoHidden(MASK button_types) const
-{
- return (mResizeState & button_types) != 0;
-}
-
-void LLBottomTray::setAutoHidden(MASK button_types, bool hide)
-{
- if (hide)
- {
- mResizeState |= button_types;
- }
- else
- {
- mResizeState &= ~button_types;
- }
-}
-
-//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
deleted file mode 100644
index e26b0792e9..0000000000
--- a/indra/newview/llbottomtray.h
+++ /dev/null
@@ -1,564 +0,0 @@
-/**
-* @file llbottomtray.h
-* @brief LLBottomTray class header file
-*
-* $LicenseInfo:firstyear=2009&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#ifndef LL_LLBOTTOMPANEL_H
-#define LL_LLBOTTOMPANEL_H
-
-#include "llpanel.h"
-#include "llimview.h"
-#include "llbutton.h"
-
-class LLChicletPanel;
-class LLLayoutStack;
-class LLSpeakButton;
-class LLNearbyChatBar;
-class LLIMChiclet;
-class LLBottomTrayLite;
-class LLLayoutPanel;
-class LLMenuGL;
-class LLNearbyChatBarListener;
-
-// Build time optimization, generate once in .cpp file
-#ifndef LLBOTTOMTRAY_CPP
-extern template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
-#endif
-
-/**
- * Class for buttons that should have drag'n'drop ability in bottomtray.
- * These buttons pass mouse events handling to bottomtray.
- */
-class LLBottomtrayButton : public LLButton
-{
-public:
- struct Params : public LLInitParam::Block<Params, LLButton::Params>
- {
- Optional<bool> can_drag;
- Params()
- : can_drag("can_drag", true){}
- };
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
- /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
-protected:
- LLBottomtrayButton(const Params& p)
- : LLButton(p),
- mCanDrag(p.can_drag)
- {
-
- }
- friend class LLUICtrlFactory;
-
- bool mCanDrag;
-};
-
-class LLBottomTray
- : public LLSingleton<LLBottomTray>
- , public LLPanel
- , public LLIMSessionObserver
- , public LLVoiceClientStatusObserver
-{
- LOG_CLASS(LLBottomTray);
- friend class LLSingleton<LLBottomTray>;
- friend class LLBottomTrayLite;
-public:
- ~LLBottomTray();
-
- BOOL postBuild();
-
- LLChicletPanel* getChicletPanel() {return mChicletPanel;}
- LLNearbyChatBar* getNearbyChatBar();
-
- void onCommitGesture(LLUICtrl* ctrl);
-
- // LLIMSessionObserver observe triggers
- virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);
- virtual void sessionRemoved(const LLUUID& session_id);
- void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
-
- S32 getTotalUnreadIMCount();
-
- virtual void reshape(S32 width, S32 height, BOOL called_from_parent);
-
- virtual void setVisible(BOOL visible);
-
- /*virtual*/ S32 notifyParent(const LLSD& info);
-
- // Implements LLVoiceClientStatusObserver::onChange() to enable the speak
- // button when voice is available
- /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
- void showBottomTrayContextMenu(S32 x, S32 y, MASK mask);
-
- void showSpeakButton(bool visible);
-
- void toggleMovementControls();
- void toggleCameraControls();
-
- void onMouselookModeIn();
- void onMouselookModeOut();
-
- /**
- * Creates IM Chiclet based on session type (IM chat or Group chat)
- */
- LLIMChiclet* createIMChiclet(const LLUUID& session_id);
-
- // Below are methods that were introduced or overriden in bottomtray to handle drag'n'drop
-
- virtual void draw();
-
- /**
- * These three methods handle drag'n'drop, they may be called directly from child buttons.
- * handleHover and other virtual handle* couldn't be used here, because we should call LLPanel::handle*,
- * but x and y here are often outside of bottomtray.
- */
- void onDraggableButtonHover(S32 x, S32 y);
- void onDraggableButtonMouseDown(LLUICtrl* button, S32 x, S32 y);
- void onDraggableButtonMouseUp(LLUICtrl* button, S32 x, S32 y);
-
-
-private:
- typedef enum e_resize_state
- {
- RS_NORESIZE = 0x0000,
- RS_CHICLET_PANEL = 0x0001,
- RS_CHATBAR_INPUT = 0x0002,
- RS_BUTTON_SNAPSHOT = 0x0004,
- RS_BUTTON_CAMERA = 0x0008,
- RS_BUTTON_MOVEMENT = 0x0010,
- RS_BUTTON_GESTURES = 0x0020,
- RS_BUTTON_SPEAK = 0x0040,
- RS_IM_WELL = 0x0080,
- RS_NOTIFICATION_WELL = 0x0100,
- RS_BUTTON_BUILD = 0x0200,
- RS_BUTTON_SEARCH = 0x0400,
- RS_BUTTON_WORLD_MAP = 0x0800,
- RS_BUTTON_MINI_MAP = 0x1000,
- RS_BUTTON_DESTINATIONS = 0x2000,
- RS_BUTTON_AVATARS = 0x4000,
- RS_BUTTON_PEOPLE = 0x8000,
- RS_BUTTON_PROFILE = 0x10000,
- RS_BUTTON_HOWTO = 0x20000,
- RS_BUTTON_SPLITTER_1 = 0x40000,
- RS_BUTTON_SPLITTER_2 = 0x80000,
-
- /*
- Once new button that can be hidden on resize is added don't forget to update related places:
- - RS_BUTTONS_CAN_BE_HIDDEN enum value below.
- - initResizeStateContainers(): mStateProcessedObjectMap and mButtonsProcessOrder
- */
-
- /**
- * Specifies buttons which can be hidden when bottom tray is shrunk.
- * They are: Gestures, Movement (Move), Camera (View), Snapshot
- * new: Build, Search, Map, World Map, Mini-Map, destinations, avatars
- */
- RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
- | RS_BUTTON_BUILD | RS_BUTTON_SEARCH | RS_BUTTON_WORLD_MAP | RS_BUTTON_MINI_MAP
- | RS_BUTTON_DESTINATIONS | RS_BUTTON_AVATARS
- }EResizeState;
-
- // Below are three methods that were introduced to handle drag'n'drop
-
- /**
- * finds a panel under the specified LOCAL point
- */
- LLPanel* findChildPanelByLocalCoords(S32 x, S32 y);
-
- /**
- * checks whether the cursor is over an area where the dragged button may be dropped
- */
- bool isCursorOverDraggableArea(S32 x, S32 y);
-
- /**
- * Updates process(shrink/show/hide) order of buttons and order in which they'll be stored for further save/load.
- * It is called when dragged button is dropped
- */
- void updateButtonsOrdersAfterDnD();
-
- // saves order of buttons to file on disk
- void saveButtonsOrder();
- // reads order of buttons from file on disk
- void loadButtonsOrder();
-
- /**
- * Updates child controls size and visibility when it is necessary to reduce total width.
- *
- * Process order:
- * - reduce chiclet panel to its minimal width;
- * - reduce chatbar to its minimal width;
- * - reduce visible buttons from right to left to their minimal width;
- * - hide visible buttons from right to left;
- * When button is hidden chatbar extended to fill released space if it is necessary.
- *
- * @param[in] delta_width - value by which bottom tray should be shrunk. It is a negative value.
- * @return positive value which bottom tray can not process when it reaches its minimal width.
- * Zero if there was enough space to process delta_width.
- */
- S32 processWidthDecreased(S32 delta_width);
-
- /**
- * Updates child controls size and visibility when it is necessary to extend total width.
- *
- * Process order:
- * - show invisible buttons should be shown from left to right if possible;
- * - extend visible buttons from left to right to their default width;
- * - extend chatbar to its maximal width;
- * - extend chiclet panel to all available space;
- * When chatbar & chiclet panels are wider then their minimal width they can be reduced to allow
- * a button gets visible in case if passed delta_width is not enough (chatbar first).
- *
- * @param[in] delta_width - value by which bottom tray should be extended. It is a positive value.
- */
- void processWidthIncreased(S32 delta_width);
-
- /** helper function to log debug messages */
- void log(LLView* panel, const std::string& descr);
-
- /**
- * Tries to show hidden by resize buttons using available width.
- *
- * Gets buttons visible if there is enough space. Reduces available_width in this case.
- *
- * @params[in, out] available_width - reference to available width to be used to show buttons.
- * @see processShowButton()
- * @return consumed pixels (difference in available width).
- */
- S32 processShowButtons(S32& available_width);
-
- /**
- * Tries to show panel with specified button using available width.
- *
- * Shows button specified by type if there is enough space. Reduces available_width in this case.
- *
- * @params[in] shown_object_type - type of button to be shown.
- * @params[in, out] available_width - reference to available width to be used to show button.
- *
- * @return true if button can be shown, false otherwise
- */
- bool processShowButton(EResizeState shown_object_type, S32& available_width);
-
- /**
- * Hides visible panels with all buttons that may be hidden by resize if it is necessary.
- *
- * When button gets hidden some space is released in bottom tray.
- * This space is taken into account for several consecutive calls for several buttons.
- *
- * @params[in, out] required_width - reference to required width to be released. This is a negative value.
- * Its absolute value is decreased by shown panel width.
- * @params[in, out] buttons_freed_width - reference to value released over required one.
- * If panel's width is more than required difference is added to buttons_freed_width.
- * @see processHideButton()
- */
- void processHideButtons(S32& required_width, S32& buttons_freed_width);
-
- /**
- * Hides panel with specified button if it is visible.
- *
- * When button gets hidden some space is released in bottom tray.
- * This space is taken into account for several consecutive calls for several buttons.
- *
- * @params[in] processed_object_type - type of button to be hide.
- * @params[in, out] required_width - reference to required width to be released. This is a negative value.
- * Its absolute value is decreased by panel width.
- * @params[in, out] buttons_freed_width - reference to value released over required one.
- * If panel's width is more than required difference is added to buttons_freed_width.
- */
- void processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width);
-
- /**
- * Shrinks shown buttons to reduce total taken space.
- *
- * Shrinks buttons that may be shrunk smoothly first. Then shrinks Speak button.
- *
- * @param[in, out] required_width - reference to width value which should be released when buttons are shrunk. It is a negative value.
- * It is increased on the value processed by buttons.
- * @params[in, out] buttons_freed_width - reference to value released over required one.
- * If width of panel with Speak button is more than required that difference is added
- * to buttons_freed_width.
- * This is because Speak button shrinks discretely unlike other buttons which are changed smoothly.
- */
- void processShrinkButtons(S32& required_width, S32& buttons_freed_width);
-
- /**
- * Shrinks panel with specified button if it is visible.
- *
- * @params[in] processed_object_type - type of button to be shrunk.
- * @param[in, out] required_width - reference to width value which should be released when button is shrunk. It is a negative value.
- * It is increased on the value released by the button.
- */
- void processShrinkButton(EResizeState processed_object_type, S32& required_width);
-
- /**
- * Extends shown buttons to increase total taken space.
- *
- * Extends buttons that may be extended smoothly first. Then extends Speak button.
- *
- * @param[in, out] available_width - reference to width value which buttons can use to be extended.
- * It is a positive value. It is decreased on the value processed by buttons.
- */
- void processExtendButtons(S32& available_width);
-
- /**
- * Extends the Speak button if there is enough headroom.
- *
- * Unlike other buttons, the Speak buttons has only two possible widths:
- * the minimal one (without label) and the maximal (default) one.
- *
- * If the button is at its minimum width there is not enough headroom to
- * reshape it to the maximum width, the method does nothing.
- *
- * @param available_width Available headroom.
- * @return false if the button requires extension but there's not enough headroom, true otherwise.
- */
- bool processExtendSpeakButton(S32& available_width);
-
- /**
- * Extends shown button to increase total taken space.
- *
- * @params[in] processed_object_type - type of button to be extended.
- * @param[in, out] available_width - reference to width value which button can use to be extended.
- * It is a positive value. It is decreased on the value processed by buttons.
- */
- void processExtendButton(EResizeState processed_object_type, S32& available_width);
-
- /**
- * Determines if specified by type object can be shown. It should be hidden by shrink before.
- *
- * Processes buttons a such way to show buttons in constant order:
- * - Gestures, Move, View, Snapshot
- */
- bool canButtonBeShown(EResizeState processed_object_type) const;
-
- /**
- * Initializes all containers stored data related to children resize state.
- *
- * @see mStateProcessedObjectMap
- * @see mObjectDefaultWidthMap
- * @see mButtonsProcessOrder
- */
- void initResizeStateContainers();
-
- /**
- * Initializes buttons' visibility depend on stored Control Settings.
- */
- void initButtonsVisibility();
-
- /**
- * Initializes listeners of Control Settings to toggle appropriate buttons' visibility.
- *
- * @see toggleShowButton()
- */
- void setButtonsControlsAndListeners();
-
- /**
- * Toggles visibility of specified button depend on passed value.
- *
- * @param button_type - type of button to be toggled
- * @param new_visibility - new visibility of the button
- *
- * @see setButtonsControlsAndListeners()
- */
- static bool toggleShowButton(EResizeState button_type, const LLSD& new_visibility);
-
- /**
- * Show the button if there is enough space.
- *
- * @param[in] button_type - type of button to be shown.
- * @param[in, out] available_width amount of available space on the bottom bar.
- *
- * @return true if button was shown, false that's not possible (not enough space, etc)
- */
- bool showButton(EResizeState button_type, S32& available_width);
-
- /**
- * Sets passed visibility to object specified by resize type.
- */
- void setTrayButtonVisible(EResizeState shown_object_type, bool visible);
-
- /**
- * Sets passed visibility to object specified by resize type if it is possible.
- *
- * If it is impossible to show required button due to there is no enough room in bottom tray
- * it will no be shown. Is called via context menu commands.
- * In this case Alert Dialog will be shown to notify user about that.
- *
- * Method also stores resize state to be processed while future bottom tray extending:
- * - if hidden while resizing button should be hidden it will not be shown while extending;
- * - if hidden via context menu button should be shown but there is no enough room for now
- * it will be shown while extending.
- */
- void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification = true);
-
- /**
- * Sets passed visibility to required button and fit widths of shown
- * buttons(notice that method can shrink widths to
- * allocate needed room in bottom tray).
- * Returns true if visibility of required button was set.
- */
- bool setVisibleAndFitWidths(EResizeState object_type, bool visible);
-
- /**
- * Get panel containing the given button.
- *
- * @see mStateProcessedObjectMap
- */
- LLPanel* getButtonPanel(EResizeState button_type);
-
- /**
- * Shows/hides panel with specified well button (IM or Notification)
- *
- * @param[in] object_type - type of well button to be processed.
- * Must be one of RS_IM_WELL or RS_NOTIFICATION_WELL.
- * @param[in] visible - flag specified whether button should be shown or hidden.
- */
- void showWellButton(EResizeState object_type, bool visible);
-
- /**
- * Handles a customization of chatbar width.
- *
- * When chatbar gets wider layout stack will reduce chiclet panel (it is auto-resizable)
- * But once chiclet panel reaches its minimal width Stack will force to reduce buttons width.
- * including Speak button. The similar behavior is when chatbar gets narrowly.
- * This methods force resize behavior to resize buttons properly in these cases.
- */
- void processChatbarCustomization(S32 new_width);
-
- /**
- * @return difference between current chiclet panel width and the minimum.
- */
- S32 getChicletPanelShrinkHeadroom() const;
-
- /// Get button name for debugging.
- static std::string resizeStateToString(EResizeState state);
-
- /// Dump a mask for debugging
- static std::string resizeStateMaskToString(MASK mask);
-
- /// @return true if any of the the passed buttons have been auto-hidden due to lack of available space.
- bool isAutoHidden(MASK button_types) const;
-
- /**
- * (Un)Mark the buttons as hidden.
- *
- * Auto-hidden buttons are those that re-appear as soon as we have enough available space.
- */
- void setAutoHidden(MASK button_types, bool hide);
-
- /// Buttons automatically hidden due to lack of space.
- MASK mResizeState;
-
- /**
- * Mapping of button types to the layout panels the buttons are wrapped in.
- *
- * Used by getButtonPanel().
- */
- typedef std::map<EResizeState, LLPanel*> state_object_map_t;
- state_object_map_t mStateProcessedObjectMap;
-
- /// Default (maximum) widths of the layout panels.
- typedef std::map<EResizeState, S32> state_object_width_map_t;
- state_object_width_map_t mObjectDefaultWidthMap;
-
- typedef std::vector<EResizeState> resize_state_vec_t;
-
- /**
- * Contains order in which child buttons should be processed in show/hide, extend/shrink methods.
- */
- resize_state_vec_t mButtonsProcessOrder;
-
- /**
- * Contains order in which child buttons are shown.
- * It traces order of all bottomtray buttons that may change place via drag'n'drop and should
- * save and load it between sessions. mButtonsProcessOrder is not enough for it because it contains only
- * buttons that may be hidden.
- */
- resize_state_vec_t mButtonsOrder;
-
-protected:
-
- LLBottomTray(const LLSD& key = LLSD());
-
- static void* createNearbyChatBar(void* userdata);
-
- void updateContextMenu(S32 x, S32 y, MASK mask);
- void onContextMenuItemClicked(const LLSD& userdata);
- bool onContextMenuItemEnabled(const LLSD& userdata);
-
- // Either default or saved after user's manual resize width of nearby chat.
- // Nearby chat will not always have it, because sometimes it can be shrunk on resize,
- // but when possible it will be restored back to this value.
- S32 mDesiredNearbyChatWidth;
- LLChicletPanel* mChicletPanel;
- LLPanel* mSpeakPanel;
- LLSpeakButton* mSpeakBtn;
- LLNearbyChatBar* mNearbyChatBar;
- LLLayoutPanel* mChatBarContainer;
- LLPanel* mNearbyCharResizeHandlePanel;
- LLLayoutStack* mToolbarStack;
- LLMenuGL* mBottomTrayContextMenu;
- LLButton* mCamButton;
- LLButton* mMovementButton;
- LLBottomTrayLite* mBottomTrayLite;
- bool mIsInLiteMode;
-
- // Drag'n'Drop
-
- /**
- * Is true if mouse down happened on draggable button.
- * Set false whether on drag start or on mouse up.
- */
- bool mCheckForDrag;
- /**
- * These two variables hold corrdinates of mouse down on draggable button.
- * They are used to compare with current coordinates of cursor and determine whether drag'n'drop should start.
- */
- S32 mStartX;
- S32 mStartY;
- /**
- * True if drag'n'drop is happening.
- */
- bool mDragStarted;
-
- /**
- * Pointer to panel which is currently dragged (though it seems to user that button is dragged,
- * we are changing place of layout panel).
- */
- LLPanel* mDraggedItem;
- /**
- * Panel before which the dragged button will be inserted.
- */
- LLPanel* mLandingTab;
- /**
- * Image used to show position where dragged button will be dropped.
- */
- LLUIImage* mImageDragIndication;
-
- // We want only one LLNearbyChatBarListener object, so it's tied to this singleton
- boost::shared_ptr<LLNearbyChatBarListener> mListener;
-};
-
-#endif // LL_LLBOTTOMPANEL_H
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 945a760d05..e3217668c5 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -37,9 +37,9 @@
#include "llavatarnamecache.h"
#include "llavatariconctrl.h"
#include "llavatarlist.h"
-#include "llbottomtray.h"
#include "lldraghandle.h"
#include "llimfloater.h"
+#include "llimview.h"
#include "llfloaterreg.h"
#include "llparticipantlist.h"
#include "llspeakers.h"
@@ -115,9 +115,6 @@ LLCallFloater::LLCallFloater(const LLSD& key)
LLVoiceClient::instance().addObserver(this);
LLTransientFloaterMgr::getInstance()->addControlView(this);
- // force docked state since this floater doesn't save it between recreations
- setDocked(true);
-
// update the agent's name if display name setting change
LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
LLViewerDisplayName::addNameChangedCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
@@ -145,7 +142,6 @@ LLCallFloater::~LLCallFloater()
// virtual
BOOL LLCallFloater::postBuild()
{
- LLTransientDockableFloater::postBuild();
mAvatarList = getChild<LLAvatarList>("speakers_list");
mAvatarListRefreshConnection = mAvatarList->setRefreshCompleteCallback(boost::bind(&LLCallFloater::onAvatarListRefreshed, this));
@@ -154,20 +150,10 @@ BOOL LLCallFloater::postBuild()
mNonAvatarCaller = findChild<LLNonAvatarCaller>("non_avatar_caller");
mNonAvatarCaller->setVisible(FALSE);
- LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
-
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP));
-
initAgentData();
connectToChannel(LLVoiceChannel::getCurrentVoiceChannel());
- setIsChrome(true);
- //chrome="true" hides floater caption
- if (mDragHandle)
- mDragHandle->setTitleVisible(TRUE);
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
updateSession();
@@ -204,13 +190,13 @@ void LLCallFloater::draw()
if (mParticipants)
mParticipants->updateRecentSpeakersOrder();
- LLTransientDockableFloater::draw();
+ LLFloater::draw();
}
// virtual
void LLCallFloater::setFocus( BOOL b )
{
- LLTransientDockableFloater::setFocus(b);
+ LLFloater::setFocus(b);
// Force using active floater transparency (STORM-730).
// We have to override setFocus() for LLCallFloater because selecting an item
diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp
index 4ab3d8dc98..987651fc80 100644
--- a/indra/newview/llchannelmanager.cpp
+++ b/indra/newview/llchannelmanager.cpp
@@ -58,7 +58,10 @@ LLChannelManager::~LLChannelManager()
{
for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it)
{
- delete (*it).channel;
+ LLScreenChannelBase* channel = it->channel.get();
+ if (!channel) continue;
+
+ delete channel;
}
mChannelList.clear();
@@ -68,9 +71,10 @@ LLChannelManager::~LLChannelManager()
LLScreenChannel* LLChannelManager::createNotificationChannel()
{
// creating params for a channel
- LLChannelManager::Params p;
+ LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("NotificationChannelUUID"));
p.channel_align = CA_RIGHT;
+ p.toast_align = NA_TOP;
// Getting a Channel for our notifications
return dynamic_cast<LLScreenChannel*> (LLChannelManager::getInstance()->getChannel(p));
@@ -84,16 +88,19 @@ void LLChannelManager::onLoginCompleted()
// calc a number of all offline notifications
for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it)
{
+ LLScreenChannelBase* channel = it->channel.get();
+ if (!channel) continue;
+
// don't calc notifications for Nearby Chat
- if((*it).channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID")))
+ if(channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID")))
{
continue;
}
// don't calc notifications for channels that always show their notifications
- if(!(*it).channel->getDisplayToastsAlways())
+ if(!channel->getDisplayToastsAlways())
{
- away_notifications +=(*it).channel->getNumberOfHiddenToasts();
+ away_notifications +=channel->getNumberOfHiddenToasts();
}
}
@@ -106,7 +113,7 @@ void LLChannelManager::onLoginCompleted()
else
{
// create a channel for the StartUp Toast
- LLChannelManager::Params p;
+ LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("StartUpChannelUUID"));
p.channel_align = CA_RIGHT;
mStartUpChannel = createChannel(p);
@@ -157,33 +164,22 @@ LLScreenChannelBase* LLChannelManager::addChannel(LLScreenChannelBase* channel)
ChannelElem new_elem;
new_elem.id = channel->getChannelID();
- new_elem.channel = channel;
+ new_elem.channel = channel->getHandle();
mChannelList.push_back(new_elem);
return channel;
}
-LLScreenChannel* LLChannelManager::createChannel(LLChannelManager::Params& p)
+LLScreenChannel* LLChannelManager::createChannel(LLScreenChannelBase::Params& p)
{
- LLScreenChannel* new_channel = new LLScreenChannel(p.id);
-
- if(!new_channel)
- {
- llerrs << "LLChannelManager::getChannel(LLChannelManager::Params& p) - can't create a channel!" << llendl;
- }
- else
- {
- new_channel->setToastAlignment(p.toast_align);
- new_channel->setChannelAlignment(p.channel_align);
- new_channel->setDisplayToastsAlways(p.display_toasts_always);
+ LLScreenChannel* new_channel = new LLScreenChannel(p);
- addChannel(new_channel);
- }
+ addChannel(new_channel);
return new_channel;
}
-LLScreenChannelBase* LLChannelManager::getChannel(LLChannelManager::Params& p)
+LLScreenChannelBase* LLChannelManager::getChannel(LLScreenChannelBase::Params& p)
{
LLScreenChannelBase* new_channel = findChannelByID(p.id);
@@ -195,19 +191,19 @@ LLScreenChannelBase* LLChannelManager::getChannel(LLChannelManager::Params& p)
}
//--------------------------------------------------------------------------
-LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID id)
+LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID& id)
{
std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id);
if(it != mChannelList.end())
{
- return (*it).channel;
+ return (*it).channel.get();
}
return NULL;
}
//--------------------------------------------------------------------------
-void LLChannelManager::removeChannelByID(const LLUUID id)
+void LLChannelManager::removeChannelByID(const LLUUID& id)
{
std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id);
if(it != mChannelList.end())
@@ -222,7 +218,10 @@ void LLChannelManager::muteAllChannels(bool mute)
for (std::vector<ChannelElem>::iterator it = mChannelList.begin();
it != mChannelList.end(); it++)
{
- it->channel->setShowToasts(!mute);
+ if (it->channel.get())
+ {
+ it->channel.get()->setShowToasts(!mute);
+ }
}
}
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 1a0b98f6cf..a5de8a5327 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -44,24 +44,14 @@ namespace LLNotificationsUI
class LLChannelManager : public LLSingleton<LLChannelManager>
{
public:
- struct Params
- {
- LLUUID id;
- bool display_toasts_always;
- EToastAlignment toast_align;
- EChannelAlignment channel_align;
-
- Params()
- : id(LLUUID("")), display_toasts_always(false), toast_align(NA_BOTTOM), channel_align(CA_LEFT)
- {}
- };
+
struct ChannelElem
{
- LLUUID id;
- LLScreenChannelBase* channel;
+ LLUUID id;
+ LLHandle<LLScreenChannelBase> channel;
- ChannelElem() : id(LLUUID("")), channel(NULL) { }
+ ChannelElem() { }
ChannelElem(const ChannelElem &elem)
{
@@ -84,18 +74,18 @@ public:
void onStartUpToastClose();
// creates a new ScreenChannel according to the given parameters or returns existing if present
- LLScreenChannelBase* getChannel(LLChannelManager::Params& p);
+ LLScreenChannelBase* getChannel(LLScreenChannelBase::Params& p);
LLScreenChannelBase* addChannel(LLScreenChannelBase* channel);
// returns a channel by its ID
- LLScreenChannelBase* findChannelByID(const LLUUID id);
+ LLScreenChannelBase* findChannelByID(const LLUUID& id);
// creator of the Notification channel, that is used in more than one handler
LLScreenChannel* createNotificationChannel();
// remove channel methods
- void removeChannelByID(const LLUUID id);
+ void removeChannelByID(const LLUUID& id);
/**
* Manages toasts showing for all channels.
@@ -117,7 +107,7 @@ public:
std::vector<ChannelElem>& getChannelList() { return mChannelList;}
private:
- LLScreenChannel* createChannel(LLChannelManager::Params& p);
+ LLScreenChannel* createChannel(LLScreenChannelBase::Params& p);
LLScreenChannel* mStartUpChannel;
std::vector<ChannelElem> mChannelList;
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index cf0374075a..d6095cce07 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -60,7 +60,6 @@
#include "llui.h"
#include "llviewermenu.h"
#include "lluictrlfactory.h"
-#include "llbottomtray.h"
//
// Globals
@@ -95,7 +94,7 @@ LLChatBar::LLChatBar()
mGestureCombo(NULL),
mObserver(NULL)
{
- setIsChrome(TRUE);
+ //setIsChrome(TRUE);
}
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 913d2f34b0..42de47e777 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -42,6 +42,7 @@
#include "llavataractions.h"
#include "lltrans.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmutelist.h"
#include "llstylemap.h"
#include "llslurl.h"
@@ -58,8 +59,6 @@
#include "llviewercontrol.h"
-#include "llsidetray.h"//for blocked objects panel
-
static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
const static std::string NEW_LINE(rawstr_to_utf8("\n"));
@@ -144,7 +143,7 @@ public:
{
LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT));
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
}
}
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index 8584885bc9..9a84280f25 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -35,6 +35,7 @@
#include "llfloaterreg.h"
#include "lllocalcliprect.h"
#include "lltrans.h"
+#include "llnearbychatbar.h"
#include "llviewercontrol.h"
#include "llagentdata.h"
@@ -315,12 +316,12 @@ BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
return TRUE;
else
{
- LLFloaterReg::showInstance("nearby_chat",LLSD());
+ LLNearbyChatBar::getInstance()->showHistory();
return FALSE;
}
}
- LLFloaterReg::showInstance("nearby_chat",LLSD());
+ LLNearbyChatBar::getInstance()->showHistory();
return LLPanel::handleMouseUp(x,y,mask);
}
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 245157923d..a076374903 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -29,7 +29,7 @@
#include "llagent.h"
#include "llavataractions.h"
-#include "llbottomtray.h"
+#include "llchicletbar.h"
#include "lleventtimer.h"
#include "llgroupactions.h"
#include "lliconctrl.h"
@@ -214,10 +214,10 @@ void LLSysWellChiclet::updateWidget(bool is_window_empty)
{
mButton->setEnabled(!is_window_empty);
- LLSD params;
- params["well_empty"] = is_window_empty;
- params["well_name"] = getName();
- notifyParent(params);
+ if (LLChicletBar::instanceExists())
+ {
+ LLChicletBar::getInstance()->showWellButton(getName(), !is_window_empty);
+ }
}
// virtual
BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
@@ -297,7 +297,7 @@ void LLIMWellChiclet::createMenu()
void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
{
const LLUUID& session_id = session_data["session_id"];
- const S32 counter = LLBottomTray::getInstance()->getTotalUnreadIMCount();
+ const S32 counter = LLChicletBar::getInstance()->getTotalUnreadIMCount();
const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container")
&& !LLFloaterReg::instanceVisible("impanel", session_id);
diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp
new file mode 100644
index 0000000000..a879651060
--- /dev/null
+++ b/indra/newview/llchicletbar.cpp
@@ -0,0 +1,374 @@
+/**
+ * @file llchicletbar.cpp
+ * @brief LLChicletBar class implementation
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h" // must be first include
+
+#include "llchicletbar.h"
+
+// library includes
+#include "llfloaterreg.h"
+#include "lllayoutstack.h"
+
+// newview includes
+#include "llchiclet.h"
+#include "llimfloater.h" // for LLIMFloater
+#include "llpaneltopinfobar.h"
+#include "llsyswellwindow.h"
+
+namespace
+{
+ const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
+
+ S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel)
+ {
+ S32 minimal_width = 0;
+ llassert(stack);
+ if ( stack && panel && panel->getVisible() )
+ {
+ stack->getPanelMinSize(panel->getName(), &minimal_width);
+ }
+ return minimal_width;
+ }
+
+ S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel)
+ {
+ S32 max_width = 0;
+ llassert(stack);
+ if ( stack && panel && panel->getVisible() )
+ {
+ stack->getPanelMaxSize(panel->getName(), &max_width);
+ }
+ return max_width;
+ }
+
+ S32 get_curr_width(LLUICtrl* ctrl)
+ {
+ S32 cur_width = 0;
+ if ( ctrl && ctrl->getVisible() )
+ {
+ cur_width = ctrl->getRect().getWidth();
+ }
+ return cur_width;
+ }
+}
+
+LLChicletBar::LLChicletBar(const LLSD&)
+: mChicletPanel(NULL),
+ mToolbarStack(NULL)
+{
+ // Firstly add our self to IMSession observers, so we catch session events
+ // before chiclets do that.
+ LLIMMgr::getInstance()->addSessionObserver(this);
+
+ buildFromFile("panel_chiclet_bar.xml");
+}
+
+LLChicletBar::~LLChicletBar()
+{
+ if (!LLSingleton<LLIMMgr>::destroyed())
+ {
+ LLIMMgr::getInstance()->removeSessionObserver(this);
+ }
+}
+
+LLIMChiclet* LLChicletBar::createIMChiclet(const LLUUID& session_id)
+{
+ LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
+
+ switch (im_chiclet_type)
+ {
+ case LLIMChiclet::TYPE_IM:
+ return getChicletPanel()->createChiclet<LLIMP2PChiclet>(session_id);
+ case LLIMChiclet::TYPE_GROUP:
+ return getChicletPanel()->createChiclet<LLIMGroupChiclet>(session_id);
+ case LLIMChiclet::TYPE_AD_HOC:
+ return getChicletPanel()->createChiclet<LLAdHocChiclet>(session_id);
+ case LLIMChiclet::TYPE_UNKNOWN:
+ break;
+ }
+
+ return NULL;
+}
+
+//virtual
+void LLChicletBar::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
+{
+ if (!getChicletPanel()) return;
+
+ LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
+ if (!session) return;
+
+ // no need to spawn chiclets for participants in P2P calls called through Avaline
+ if (session->isP2P() && session->isOtherParticipantAvaline()) return;
+
+ if (getChicletPanel()->findChiclet<LLChiclet>(session_id)) return;
+
+ LLIMChiclet* chiclet = createIMChiclet(session_id);
+ if(chiclet)
+ {
+ chiclet->setIMSessionName(name);
+ chiclet->setOtherParticipantId(other_participant_id);
+
+ LLIMFloater::onIMChicletCreated(session_id);
+
+ }
+ else
+ {
+ llwarns << "Could not create chiclet" << llendl;
+ }
+}
+
+//virtual
+void LLChicletBar::sessionRemoved(const LLUUID& session_id)
+{
+ if(getChicletPanel())
+ {
+ // IM floater should be closed when session removed and associated chiclet closed
+ LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
+ if (iMfloater != NULL)
+ {
+ iMfloater->closeFloater();
+ }
+
+ getChicletPanel()->removeChiclet(session_id);
+ }
+}
+
+void LLChicletBar::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
+{
+ //this is only needed in case of outgoing ad-hoc/group chat sessions
+ LLChicletPanel* chiclet_panel = getChicletPanel();
+ if (chiclet_panel)
+ {
+ //it should be ad-hoc im chiclet or group im chiclet
+ LLChiclet* chiclet = chiclet_panel->findChiclet<LLChiclet>(old_session_id);
+ if (chiclet) chiclet->setSessionId(new_session_id);
+ }
+}
+
+S32 LLChicletBar::getTotalUnreadIMCount()
+{
+ return getChicletPanel()->getTotalUnreadIMCount();
+}
+
+BOOL LLChicletBar::postBuild()
+{
+ mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
+ mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
+
+ showWellButton("im_well", !LLIMWellWindow::getInstance()->isWindowEmpty());
+ showWellButton("notification_well", !LLNotificationWellWindow::getInstance()->isWindowEmpty());
+
+ LLPanelTopInfoBar::instance().setResizeCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this));
+ LLPanelTopInfoBar::instance().setVisibleCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this));
+
+ return TRUE;
+}
+
+void LLChicletBar::showWellButton(const std::string& well_name, bool visible)
+{
+ LLView * panel = findChild<LLView>(well_name + "_panel");
+ if (!panel) return;
+
+ panel->setVisible(visible);
+}
+
+void LLChicletBar::log(LLView* panel, const std::string& descr)
+{
+ if (NULL == panel) return;
+ LLView* layout = panel->getParent();
+ LL_DEBUGS("Chiclet Bar Rects") << descr << ": "
+ << "panel: " << panel->getName()
+ << ", rect: " << panel->getRect()
+ << " layout: " << layout->getName()
+ << ", rect: " << layout->getRect()
+ << LL_ENDL;
+}
+
+void LLChicletBar::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ static S32 debug_calling_number = 0;
+ lldebugs << "**************************************** " << ++debug_calling_number << llendl;
+
+ S32 current_width = getRect().getWidth();
+ S32 delta_width = width - current_width;
+ lldebugs << "Reshaping: "
+ << ", width: " << width
+ << ", cur width: " << current_width
+ << ", delta_width: " << delta_width
+ << ", called_from_parent: " << called_from_parent
+ << llendl;
+
+ if (mChicletPanel) log(mChicletPanel, "before");
+
+ // Difference between chiclet bar width required to fit its children and the actual width. (see EXT-991)
+ // Positive value means that chiclet bar is not wide enough.
+ // Negative value means that there is free space.
+ static S32 extra_shrink_width = 0;
+ bool should_be_reshaped = true;
+
+ if (mChicletPanel && mToolbarStack)
+ {
+ // Firstly, update layout stack to ensure we deal with correct panel sizes.
+ {
+ BOOL saved_anim = mToolbarStack->getAnimate();
+ // Set chiclet panel to be autoresized by default.
+ mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+ // Disable animation to prevent layout updating in several frames.
+ mToolbarStack->setAnimate(FALSE);
+ // Force the updating of layout to reset panels collapse factor.
+ mToolbarStack->updateLayout();
+ // Restore animate state.
+ mToolbarStack->setAnimate(saved_anim);
+ }
+
+ // chiclet bar is narrowed
+ if (delta_width < 0)
+ {
+ if (extra_shrink_width > 0) // not enough space
+ {
+ extra_shrink_width += llabs(delta_width);
+ should_be_reshaped = false;
+ }
+ else
+ {
+ extra_shrink_width = processWidthDecreased(delta_width);
+
+ // increase new width to extra_shrink_width value to not reshape less than chiclet bar minimum
+ width += extra_shrink_width;
+ }
+ }
+ // chiclet bar is widened
+ else
+ {
+ if (extra_shrink_width > delta_width)
+ {
+ // Still not enough space.
+ // Only subtract the delta from the required delta and don't reshape.
+ extra_shrink_width -= delta_width;
+ should_be_reshaped = false;
+ }
+ else if (extra_shrink_width > 0)
+ {
+ // If we have some extra shrink width let's reduce delta_width & width
+ delta_width -= extra_shrink_width;
+ width -= extra_shrink_width;
+ extra_shrink_width = 0;
+ }
+ }
+ }
+
+ if (should_be_reshaped)
+ {
+ lldebugs << "Reshape all children with width: " << width << llendl;
+ LLPanel::reshape(width, height, called_from_parent);
+ }
+
+ if (mChicletPanel) log(mChicletPanel, "after");
+}
+
+S32 LLChicletBar::processWidthDecreased(S32 delta_width)
+{
+ bool still_should_be_processed = true;
+
+ const S32 chiclet_panel_shrink_headroom = getChicletPanelShrinkHeadroom();
+
+ // Decreasing width of chiclet panel.
+ if (chiclet_panel_shrink_headroom > 0)
+ {
+ // we have some space to decrease chiclet panel
+ S32 shrink_by = llmin(-delta_width, chiclet_panel_shrink_headroom);
+
+ lldebugs << "delta_width: " << delta_width
+ << ", panel_delta_min: " << chiclet_panel_shrink_headroom
+ << ", shrink_by: " << shrink_by
+ << llendl;
+
+ // is chiclet panel wide enough to process resizing?
+ delta_width += chiclet_panel_shrink_headroom;
+
+ still_should_be_processed = delta_width < 0;
+
+ lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
+ mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
+ log(mChicletPanel, "after processing panel decreasing via chiclet panel");
+
+ lldebugs << "RS_CHICLET_PANEL"
+ << ", delta_width: " << delta_width
+ << llendl;
+ }
+
+ S32 extra_shrink_width = 0;
+
+ if (still_should_be_processed)
+ {
+ extra_shrink_width = -delta_width;
+ llwarns << "There is no enough width to reshape all children: "
+ << extra_shrink_width << llendl;
+ }
+
+ return extra_shrink_width;
+}
+
+S32 LLChicletBar::getChicletPanelShrinkHeadroom() const
+{
+ static const S32 min_width = mChicletPanel->getMinWidth();
+ const S32 cur_width = mChicletPanel->getParent()->getRect().getWidth();
+
+ S32 shrink_headroom = cur_width - min_width;
+ llassert(shrink_headroom >= 0); // the panel cannot get narrower than the minimum
+ return shrink_headroom;
+}
+
+void LLChicletBar::fitWithTopInfoBar()
+{
+ LLPanelTopInfoBar& top_info_bar = LLPanelTopInfoBar::instance();
+
+ LLRect rect = getRect();
+ S32 width = rect.getWidth();
+
+ if (top_info_bar.getVisible())
+ {
+ S32 delta = top_info_bar.calcScreenRect().mRight - calcScreenRect().mLeft;
+ if (delta < 0 && rect.mLeft < llabs(delta))
+ delta = -rect.mLeft;
+ rect.setLeftTopAndSize(rect.mLeft + delta, rect.mTop, rect.getWidth(), rect.getHeight());
+ width = rect.getWidth() - delta;
+ }
+ else
+ {
+ LLView* parent = getParent();
+ if (parent)
+ {
+ LLRect parent_rect = parent->getRect();
+ rect.setLeftTopAndSize(0, rect.mTop, rect.getWidth(), rect.getHeight());
+ width = parent_rect.getWidth();
+ }
+ }
+
+ setRect(rect);
+ LLPanel::reshape(width, rect.getHeight(), false);
+}
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
new file mode 100644
index 0000000000..1427bf95e0
--- /dev/null
+++ b/indra/newview/llchicletbar.h
@@ -0,0 +1,105 @@
+/**
+* @file llchicletbar.h
+* @brief LLChicletBar class header file
+*
+* $LicenseInfo:firstyear=2011&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2011, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+
+#ifndef LL_LLCHICLETBAR_H
+#define LL_LLCHICLETBAR_H
+
+#include "llpanel.h"
+#include "llimview.h"
+
+class LLChicletPanel;
+class LLIMChiclet;
+class LLLayoutPanel;
+class LLLayoutStack;
+
+class LLChicletBar
+ : public LLSingleton<LLChicletBar>
+ , public LLPanel
+ , public LLIMSessionObserver
+{
+ LOG_CLASS(LLChicletBar);
+ friend class LLSingleton<LLChicletBar>;
+public:
+ ~LLChicletBar();
+
+ BOOL postBuild();
+
+ LLChicletPanel* getChicletPanel() { return mChicletPanel; }
+
+ // LLIMSessionObserver observe triggers
+ virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);
+ virtual void sessionRemoved(const LLUUID& session_id);
+ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
+
+ S32 getTotalUnreadIMCount();
+
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
+
+ /**
+ * Creates IM Chiclet based on session type (IM chat or Group chat)
+ */
+ LLIMChiclet* createIMChiclet(const LLUUID& session_id);
+
+ /**
+ * Shows/hides panel with specified well button (IM or Notification)
+ *
+ * @param well_name - name of the well panel to be processed.
+ * @param visible - a flag specifying whether a button should be shown or hidden.
+ */
+ void showWellButton(const std::string& well_name, bool visible);
+
+private:
+ /**
+ * Updates child controls size and visibility when it is necessary to reduce total width.
+ *
+ * @param delta_width - value by which chiclet bar should be shrunk. It is a negative value.
+ * @returns positive value which chiclet bar can not process when it reaches its minimal width.
+ * Zero if there was enough space to process delta_width.
+ */
+ S32 processWidthDecreased(S32 delta_width);
+
+ /** helper function to log debug messages */
+ void log(LLView* panel, const std::string& descr);
+
+ /**
+ * @return difference between current chiclet panel width and the minimum.
+ */
+ S32 getChicletPanelShrinkHeadroom() const;
+
+ /**
+ * function adjusts Chiclet bar width to prevent overlapping with Mini-Location bar
+ * EXP-1463
+ */
+ void fitWithTopInfoBar();
+
+protected:
+ LLChicletBar(const LLSD& key = LLSD());
+
+ LLChicletPanel* mChicletPanel;
+ LLLayoutStack* mToolbarStack;
+};
+
+#endif // LL_LLCHICLETBAR_H
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 254c0adef1..54598f90c8 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -33,6 +33,7 @@
#include "llagentdata.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventory.h"
#include "llinventoryfunctions.h"
#include "lllistcontextmenu.h"
@@ -40,7 +41,6 @@
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llpaneloutfitedit.h"
-#include "llsidetray.h"
#include "lltrans.h"
static LLRegisterPanelClassWrapper<LLCOFWearables> t_cof_wearables("cof_wearables");
@@ -159,13 +159,8 @@ public:
protected:
static void replaceWearable(const LLUUID& item_id)
{
- // *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
- // LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
- // without casting. Getter methods provides possibility to check and construct
- // absent instance. Explicit relations between components avoids situations
- // when we tries to construct instance with unsatisfied implicit input conditions.
LLPanelOutfitEdit * panel_outfit_edit =
- dynamic_cast<LLPanelOutfitEdit*> (LLSideTray::getInstance()->getPanel(
+ dynamic_cast<LLPanelOutfitEdit*> (LLFloaterSidePanelContainer::getPanel("appearance",
"panel_outfit_edit"));
if (panel_outfit_edit != NULL)
{
@@ -235,9 +230,7 @@ protected:
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
LLUUID selected_id = mUUIDs.back();
- // *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
- // LLSideTray::getInstance()->getPanel() is rather slow variant
- LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+ LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));
diff --git a/indra/newview/llcylinder.cpp b/indra/newview/llcylinder.cpp
index 4901e29691..f353851a25 100644
--- a/indra/newview/llcylinder.cpp
+++ b/indra/newview/llcylinder.cpp
@@ -37,261 +37,39 @@
#include "llgl.h"
#include "llglheaders.h"
-LLCylinder gCylinder;
LLCone gCone;
-GLUquadricObj* gQuadObj = NULL;
-
-static const GLint SLICES[] = { 30, 20, 12, 6 }; // same as sphere slices
-static const GLint STACKS = 2;
-static const GLfloat RADIUS = 0.5f;
-
-// draws a cylinder or cone
-// returns approximate number of triangles required
-U32 draw_cylinder_side(GLint slices, GLint stacks, GLfloat base_radius, GLfloat top_radius)
-{
- U32 triangles = 0;
- GLfloat height = 1.0f;
-
- if (!gQuadObj)
- {
- gQuadObj = gluNewQuadric();
- if (!gQuadObj) llerror("draw_cylindrical_body couldn't allocated quadric", 0);
- }
-
- gluQuadricDrawStyle(gQuadObj, GLU_FILL);
- gluQuadricNormals(gQuadObj, GLU_SMOOTH);
- gluQuadricOrientation(gQuadObj, GLU_OUTSIDE);
- gluQuadricTexture(gQuadObj, GL_TRUE);
- gluCylinder(gQuadObj, base_radius, top_radius, height, slices, stacks);
- triangles += stacks * (slices * 2);
-
-
- return triangles;
-}
-
-
-// Returns number of triangles required to draw
-// Need to know if top or not to set lighting normals
-const BOOL TOP = TRUE;
-const BOOL BOTTOM = FALSE;
-U32 draw_cylinder_cap(GLint slices, GLfloat base_radius, BOOL is_top)
-{
- U32 triangles = 0;
-
- if (!gQuadObj)
- {
- gQuadObj = gluNewQuadric();
- if (!gQuadObj) llerror("draw_cylinder_base couldn't allocated quadric", 0);
- }
-
- gluQuadricDrawStyle(gQuadObj, GLU_FILL);
- gluQuadricNormals(gQuadObj, GLU_SMOOTH);
- gluQuadricOrientation(gQuadObj, GLU_OUTSIDE);
- gluQuadricTexture(gQuadObj, GL_TRUE);
-
- // no hole in the middle of the disk, and just one ring
- GLdouble inner_radius = 0.0;
- GLint rings = 1;
-
- // normals point in +z for top, -z for base
- if (is_top)
- {
- gluQuadricOrientation(gQuadObj, GLU_OUTSIDE);
- }
- else
- {
- gluQuadricOrientation(gQuadObj, GLU_INSIDE);
- }
- gluDisk(gQuadObj, inner_radius, base_radius, slices, rings);
- triangles += slices;
-
- return triangles;
-}
-
-void LLCylinder::drawSide(S32 detail)
-{
- draw_cylinder_side(SLICES[detail], STACKS, RADIUS, RADIUS);
-}
-
-void LLCylinder::drawTop(S32 detail)
-{
- draw_cylinder_cap(SLICES[detail], RADIUS, TOP);
-}
-
-void LLCylinder::drawBottom(S32 detail)
-{
- draw_cylinder_cap(SLICES[detail], RADIUS, BOTTOM);
-}
-
-void LLCylinder::prerender()
-{
-}
-
-void LLCylinder::cleanupGL()
-{
- if (gQuadObj)
- {
- gluDeleteQuadric(gQuadObj);
- gQuadObj = NULL;
- }
-}
-
-void LLCylinder::render(F32 pixel_area)
-{
- renderface(pixel_area, 0);
- renderface(pixel_area, 1);
- renderface(pixel_area, 2);
-}
-
-
-void LLCylinder::renderface(F32 pixel_area, S32 face)
-{
- if (face < 0 || face > 2)
- {
- llerror("LLCylinder::renderface() invalid face number", face);
- return;
- }
-
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
-
- S32 level_of_detail;
-
- if (pixel_area > 20000.f)
- {
- level_of_detail = 0;
- }
- else if (pixel_area > 1600.f)
- {
- level_of_detail = 1;
- }
- else if (pixel_area > 200.f)
- {
- level_of_detail = 2;
- }
- else
- {
- level_of_detail = 3;
- }
-
- if (level_of_detail < 0 || CYLINDER_LEVELS_OF_DETAIL <= level_of_detail)
- {
- llerror("LLCylinder::renderface() invalid level of detail", level_of_detail);
- return;
- }
-
- LLVertexBuffer::unbind();
-
- switch(face)
- {
- case 0:
- glTranslatef(0.f, 0.f, -0.5f);
- drawSide(level_of_detail);
- break;
- case 1:
- glTranslatef(0.0f, 0.f, 0.5f);
- drawTop(level_of_detail);
- break;
- case 2:
- glTranslatef(0.0f, 0.f, -0.5f);
- drawBottom(level_of_detail);
- break;
- default:
- llerror("LLCylinder::renderface() fell out of switch", 0);
- break;
- }
-
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
-}
-
-
//
// Cones
//
-void LLCone::prerender()
+void LLCone::render(S32 sides)
{
-}
+ gGL.begin(LLRender::TRIANGLE_FAN);
+ gGL.vertex3f(0,0,0);
-void LLCone::cleanupGL()
-{
- if (gQuadObj)
+ for (U32 i = 0; i < sides; i++)
{
- gluDeleteQuadric(gQuadObj);
- gQuadObj = NULL;
+ F32 a = (F32) i/sides * F_PI*2.f;
+ F32 x = cosf(a)*0.5f;
+ F32 y = sinf(a)*0.5f;
+ gGL.vertex3f(x,y,-.5f);
}
-}
+ gGL.vertex3f(cosf(0.f)*0.5f, sinf(0.f)*0.5f, -0.5f);
-void LLCone::drawSide(S32 detail)
-{
- draw_cylinder_side( SLICES[detail], STACKS, RADIUS, 0.f );
-}
-
-void LLCone::drawBottom(S32 detail)
-{
- draw_cylinder_cap( SLICES[detail], RADIUS, BOTTOM );
-}
-
-void LLCone::render(S32 level_of_detail)
-{
- GLfloat height = 1.0f;
+ gGL.end();
- if (level_of_detail < 0 || CONE_LEVELS_OF_DETAIL <= level_of_detail)
+ gGL.begin(LLRender::TRIANGLE_FAN);
+ gGL.vertex3f(0.f, 0.f, 0.5f);
+ for (U32 i = 0; i < sides; i++)
{
- llerror("LLCone::render() invalid level of detail", level_of_detail);
- return;
+ F32 a = (F32) i/sides * F_PI*2.f;
+ F32 x = cosf(a)*0.5f;
+ F32 y = sinf(a)*0.5f;
+ gGL.vertex3f(x,y,-0.5f);
}
+ gGL.vertex3f(cosf(0.f)*0.5f, sinf(0.f)*0.5f, -0.5f);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
-
- // center object at 0
- glTranslatef(0.f, 0.f, - height / 2.0f);
-
- drawSide(level_of_detail);
- drawBottom(level_of_detail);
-
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.end();
}
-
-void LLCone::renderface(S32 level_of_detail, S32 face)
-{
- if (face < 0 || face > 1)
- {
- llerror("LLCone::renderface() invalid face number", face);
- return;
- }
-
- if (level_of_detail < 0 || CONE_LEVELS_OF_DETAIL <= level_of_detail)
- {
- llerror("LLCone::renderface() invalid level of detail", level_of_detail);
- return;
- }
-
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
-
- LLVertexBuffer::unbind();
-
- switch(face)
- {
- case 0:
- glTranslatef(0.f, 0.f, -0.5f);
- drawSide(level_of_detail);
- break;
- case 1:
- glTranslatef(0.f, 0.f, -0.5f);
- drawBottom(level_of_detail);
- break;
- default:
- llerror("LLCylinder::renderface() fell out of switch", 0);
- break;
- }
-
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
-}
diff --git a/indra/newview/llcylinder.h b/indra/newview/llcylinder.h
index 40a669ceb6..4369f06659 100644
--- a/indra/newview/llcylinder.h
+++ b/indra/newview/llcylinder.h
@@ -30,45 +30,18 @@
//#include "stdtypes.h"
//#include "llgl.h"
-//
-// Cylinders
-//
-const S32 CYLINDER_LEVELS_OF_DETAIL = 4;
-const S32 CYLINDER_FACES = 3;
-
-class LLCylinder
-{
-public:
- void prerender();
- void drawTop(S32 detail);
- void drawSide(S32 detail);
- void drawBottom(S32 detail);
- void cleanupGL();
-
- void render(F32 pixel_area);
- void renderface(F32 pixel_area, S32 face);
-};
-
+#include "llvertexbuffer.h"
//
// Cones
//
-const S32 CONE_LOD_HIGHEST = 0;
-const S32 CONE_LEVELS_OF_DETAIL = 4;
-const S32 CONE_FACES = 2;
-
class LLCone
{
public:
- void prerender();
- void cleanupGL();
- void drawSide(S32 detail);
- void drawBottom(S32 detail);
- void render(S32 level_of_detail);
- void renderface(S32 level_of_detail, S32 face);
+ void render(S32 sides = 12);
};
-extern LLCylinder gCylinder;
+
extern LLCone gCone;
#endif
diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp
index cc6ba05e7e..7d3170cb76 100644
--- a/indra/newview/lldebugview.cpp
+++ b/indra/newview/lldebugview.cpp
@@ -55,9 +55,23 @@ LLDebugView* gDebugView = NULL;
static LLDefaultChildRegistry::Register<LLDebugView> r("debug_view");
LLDebugView::LLDebugView(const LLDebugView::Params& p)
-: LLView(p)
+: LLView(p),
+ mFastTimerView(NULL),
+ mMemoryView(NULL),
+ mDebugConsolep(NULL),
+ mFloaterSnapRegion(NULL)
{}
+LLDebugView::~LLDebugView()
+{
+ // These have already been deleted. Fix the globals appropriately.
+ gDebugView = NULL;
+ gTextureView = NULL;
+ gSceneView = NULL;
+ gTextureSizeView = NULL;
+ gTextureCategoryView = NULL;
+}
+
void LLDebugView::init()
{
LLRect r;
@@ -109,8 +123,6 @@ void LLDebugView::init()
addChild(gTextureView);
//gTextureView->reshape(r.getWidth(), r.getHeight(), TRUE);
-
-
if(gAuditTexture)
{
@@ -136,14 +148,16 @@ void LLDebugView::init()
}
}
-
-LLDebugView::~LLDebugView()
+void LLDebugView::draw()
{
- // These have already been deleted. Fix the globals appropriately.
- gDebugView = NULL;
- gTextureView = NULL;
- gSceneView = NULL;
- gTextureSizeView = NULL;
- gTextureCategoryView = NULL;
-}
+ if (mFloaterSnapRegion == NULL)
+ {
+ mFloaterSnapRegion = getRootView()->getChildView("floater_snap_region");
+ }
+
+ LLRect debug_rect;
+ mFloaterSnapRegion->localRectToOtherView(mFloaterSnapRegion->getLocalRect(), &debug_rect, getParent());
+ setShape(debug_rect);
+ LLView::draw();
+}
diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h
index 20262fc89e..5aec77ad62 100644
--- a/indra/newview/lldebugview.h
+++ b/indra/newview/lldebugview.h
@@ -51,16 +51,19 @@ public:
changeDefault(mouse_opaque, false);
}
};
+
LLDebugView(const Params&);
~LLDebugView();
void init();
-
+ void draw();
+
void setStatsVisible(BOOL visible);
LLFastTimerView* mFastTimerView;
LLMemoryView* mMemoryView;
LLConsole* mDebugConsolep;
+ LLView* mFloaterSnapRegion;
};
extern LLDebugView* gDebugView;
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index dd243397a1..1e03582a29 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -217,12 +217,12 @@ OSStatus LLDirPicker::doNavChooseDialog()
error = NavCreateChooseFolderDialog(&mNavOptions, &doNavCallbackEvent, NULL, NULL, &navRef);
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
if (error == noErr)
error = NavDialogRun(navRef);
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
if (error == noErr)
error = NavDialogGetReply(navRef, &navReply);
diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp
index 8a38c8a643..7c9dda6b1d 100644
--- a/indra/newview/lldndbutton.cpp
+++ b/indra/newview/lldndbutton.cpp
@@ -31,16 +31,9 @@
static LLDefaultChildRegistry::Register<LLDragAndDropButton> r("dnd_button");
-LLDragAndDropButton::Params::Params()
-{
-
-}
-
LLDragAndDropButton::LLDragAndDropButton(const Params& params)
: LLButton(params)
-{
-
-}
+{}
BOOL LLDragAndDropButton::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, std::string& tooltip_msg)
{
diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h
index 0642cbb7b9..53ea2f5ea7 100644
--- a/indra/newview/lldndbutton.h
+++ b/indra/newview/lldndbutton.h
@@ -43,10 +43,7 @@
class LLDragAndDropButton : public LLButton
{
public:
- struct Params : public LLInitParam::Block<Params, LLButton::Params>
- {
- Params();
- };
+ struct Params : public LLInitParam::Block<Params, LLButton::Params> {};
LLDragAndDropButton(const Params& params);
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index 286284f828..35f8a85796 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -384,7 +384,7 @@ BOOL LLFacePool::LLOverrideFaceColor::sOverrideFaceColor = FALSE;
void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4& color)
{
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
}
void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4U& color)
@@ -394,7 +394,7 @@ void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4U& color)
void LLFacePool::LLOverrideFaceColor::setColor(F32 r, F32 g, F32 b, F32 a)
{
- glColor4f(r,g,b,a);
+ gGL.diffuseColor4f(r,g,b,a);
}
@@ -457,10 +457,10 @@ void LLRenderPass::applyModelMatrix(LLDrawInfo& params)
if (params.mModelMatrix != gGLLastMatrix)
{
gGLLastMatrix = params.mModelMatrix;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
if (params.mModelMatrix)
{
- glMultMatrixf((GLfloat*) params.mModelMatrix->mMatrix);
+ gGL.multMatrix((GLfloat*) params.mModelMatrix->mMatrix);
}
gPipeline.mMatrixOpCount++;
}
@@ -494,8 +494,8 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL ba
{
tex_setup = true;
gGL.getTexUnit(0)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
gPipeline.mTextureMatrixOps++;
}
}
@@ -519,8 +519,8 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL ba
if (tex_setup)
{
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
}
diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h
index c7acbb42c6..5a2981e749 100644
--- a/indra/newview/lldrawpool.h
+++ b/indra/newview/lldrawpool.h
@@ -133,7 +133,6 @@ public:
PASS_ALPHA,
PASS_ALPHA_MASK,
PASS_FULLBRIGHT_ALPHA_MASK,
- PASS_ALPHA_SHADOW,
NUM_RENDER_TYPES,
};
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 9719140a37..ddb7d3ceeb 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -54,7 +54,7 @@ static BOOL deferred_render = FALSE;
LLDrawPoolAlpha::LLDrawPoolAlpha(U32 type) :
LLRenderPass(type), current_shader(NULL), target_shader(NULL),
- simple_shader(NULL), fullbright_shader(NULL),
+ simple_shader(NULL), fullbright_shader(NULL), emissive_shader(NULL),
mColorSFactor(LLRender::BF_UNDEF), mColorDFactor(LLRender::BF_UNDEF),
mAlphaSFactor(LLRender::BF_UNDEF), mAlphaDFactor(LLRender::BF_UNDEF)
{
@@ -90,7 +90,7 @@ void LLDrawPoolAlpha::renderDeferred(S32 pass)
{
LLFastTimer t(FTM_RENDER_GRASS);
gDeferredDiffuseAlphaMaskProgram.bind();
- gDeferredDiffuseAlphaMaskProgram.setAlphaRange(0.33f, 1.f);
+ gDeferredDiffuseAlphaMaskProgram.setMinimumAlpha(0.33f);
//render alpha masked objects
LLRenderPass::pushBatches(LLRenderPass::PASS_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
@@ -136,7 +136,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass)
simple_shader = NULL;
fullbright_shader = NULL;
gObjectFullbrightAlphaMaskProgram.bind();
- gObjectFullbrightAlphaMaskProgram.setAlphaRange(0.33f, 1.f);
+ gObjectFullbrightAlphaMaskProgram.setMinimumAlpha(0.33f);
}
deferred_render = TRUE;
@@ -175,11 +175,13 @@ void LLDrawPoolAlpha::beginRenderPass(S32 pass)
{
simple_shader = &gObjectSimpleWaterAlphaMaskProgram;
fullbright_shader = &gObjectFullbrightWaterAlphaMaskProgram;
+ emissive_shader = &gObjectEmissiveWaterProgram;
}
else
{
simple_shader = &gObjectSimpleAlphaMaskProgram;
fullbright_shader = &gObjectFullbrightAlphaMaskProgram;
+ emissive_shader = &gObjectEmissiveProgram;
}
if (mVertexShaderLevel > 0)
@@ -230,14 +232,14 @@ void LLDrawPoolAlpha::render(S32 pass)
if (!LLPipeline::sRenderDeferred || !deferred_render)
{
simple_shader->bind();
- simple_shader->setAlphaRange(0.33f, 1.f);
+ simple_shader->setMinimumAlpha(0.33f);
pushBatches(LLRenderPass::PASS_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
}
if (fullbright_shader)
{
fullbright_shader->bind();
- fullbright_shader->setAlphaRange(0.33f, 1.f);
+ fullbright_shader->setMinimumAlpha(0.33f);
}
pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
//LLGLSLShader::bindNoShader();
@@ -273,16 +275,16 @@ void LLDrawPoolAlpha::render(S32 pass)
if (LLPipeline::sImpostorRender)
{
fullbright_shader->bind();
- fullbright_shader->setAlphaRange(0.5f, 1.f);
+ fullbright_shader->setMinimumAlpha(0.5f);
simple_shader->bind();
- simple_shader->setAlphaRange(0.5f, 1.f);
+ simple_shader->setMinimumAlpha(0.5f);
}
else
{
fullbright_shader->bind();
- fullbright_shader->setAlphaRange(0.f, 1.f);
+ fullbright_shader->setMinimumAlpha(0.f);
simple_shader->bind();
- simple_shader->setAlphaRange(0.f, 1.f);
+ simple_shader->setMinimumAlpha(0.f);
}
}
else
@@ -319,20 +321,26 @@ void LLDrawPoolAlpha::render(S32 pass)
BOOL shaders = gPipeline.canUseVertexShaders();
if(shaders)
{
- gObjectFullbrightNonIndexedProgram.bind();
+ gHighlightProgram.bind();
}
else
{
gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
}
- glColor4f(1,0,0,1);
+
+ gGL.diffuseColor4f(1,0,0,1);
+
LLViewerFetchedTexture::sSmokeImagep->addTextureStats(1024.f*1024.f);
gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sSmokeImagep, TRUE) ;
renderAlphaHighlight(LLVertexBuffer::MAP_VERTEX |
LLVertexBuffer::MAP_TEXCOORD0);
+
+ pushBatches(LLRenderPass::PASS_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
+ pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
+
if(shaders)
{
- gObjectFullbrightNonIndexedProgram.unbind();
+ gHighlightProgram.unbind();
}
}
}
@@ -472,8 +480,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
{
tex_setup = true;
gGL.getTexUnit(0)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
gPipeline.mTextureMatrixOps++;
}
}
@@ -488,30 +496,34 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode);
// If this alpha mesh has glow, then draw it a second time to add the destination-alpha (=glow). Interleaving these state-changing calls could be expensive, but glow must be drawn Z-sorted with alpha.
- if (draw_glow_for_this_partition &&
- params.mGlowColor.mV[3] > 0)
+ if (current_shader &&
+ draw_glow_for_this_partition &&
+ params.mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_EMISSIVE))
{
// install glow-accumulating blend mode
gGL.blendFunc(LLRender::BF_ZERO, LLRender::BF_ONE, // don't touch color
LLRender::BF_ONE, LLRender::BF_ONE); // add to alpha (glow)
+ emissive_shader->bind();
+
// glow doesn't use vertex colors from the mesh data
- params.mVertexBuffer->setBuffer(mask & ~LLVertexBuffer::MAP_COLOR);
- glColor4ubv(params.mGlowColor.mV);
-
+ params.mVertexBuffer->setBuffer((mask & ~LLVertexBuffer::MAP_COLOR) | LLVertexBuffer::MAP_EMISSIVE);
+
// do the actual drawing, again
params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset);
gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode);
// restore our alpha blend mode
gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor);
+
+ current_shader->bind();
}
if (tex_setup)
{
gGL.getTexUnit(0)->activate();
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
}
}
diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h
index 12a7ae92b1..a4245e561d 100644
--- a/indra/newview/lldrawpoolalpha.h
+++ b/indra/newview/lldrawpoolalpha.h
@@ -78,6 +78,7 @@ private:
LLGLSLShader* target_shader;
LLGLSLShader* simple_shader;
LLGLSLShader* fullbright_shader;
+ LLGLSLShader* emissive_shader;
// our 'normal' alpha blend function for this pass
LLRender::eBlendFactor mColorSFactor;
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 37ee81aeb5..55b314fbb1 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -263,7 +263,6 @@ void LLDrawPoolAvatar::beginPostDeferredAlpha()
gPipeline.bindDeferredShader(*sVertexProgram);
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
- enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
}
void LLDrawPoolAvatar::beginDeferredRiggedAlpha()
@@ -271,7 +270,6 @@ void LLDrawPoolAvatar::beginDeferredRiggedAlpha()
sVertexProgram = &gDeferredSkinnedAlphaProgram;
gPipeline.bindDeferredShader(*sVertexProgram);
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
gPipeline.enableLightsDynamic();
}
@@ -280,7 +278,6 @@ void LLDrawPoolAvatar::endDeferredRiggedAlpha()
LLVertexBuffer::unbind();
gPipeline.unbindDeferredShader(*sVertexProgram);
sDiffuseChannel = 0;
- LLVertexBuffer::sWeight4Loc = -1;
sVertexProgram = NULL;
}
@@ -314,8 +311,7 @@ void LLDrawPoolAvatar::endPostDeferredAlpha()
// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
sRenderingSkinned = FALSE;
sSkipOpaque = FALSE;
- disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-
+
gPipeline.unbindDeferredShader(*sVertexProgram);
sDiffuseChannel = 0;
sShaderLevel = mVertexShaderLevel;
@@ -356,27 +352,22 @@ void LLDrawPoolAvatar::beginShadowPass(S32 pass)
if (pass == 0)
{
sVertexProgram = &gDeferredAvatarShadowProgram;
- if (sShaderLevel > 0)
- {
- gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
- }
- //gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.2f);
- glColor4f(1,1,1,1);
+ //gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.2f);
if ((sShaderLevel > 0)) // for hardware blending
{
sRenderingSkinned = TRUE;
sVertexProgram->bind();
- enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
}
+
+ gGL.diffuseColor4f(1,1,1,1);
}
else
{
sVertexProgram = &gDeferredAttachmentShadowProgram;
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
sVertexProgram->bind();
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
}
@@ -389,14 +380,12 @@ void LLDrawPoolAvatar::endShadowPass(S32 pass)
{
sRenderingSkinned = FALSE;
sVertexProgram->unbind();
- disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
}
}
else
{
LLVertexBuffer::unbind();
sVertexProgram->unbind();
- LLVertexBuffer::sWeight4Loc = -1;
sVertexProgram = NULL;
}
}
@@ -430,11 +419,6 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
if (pass == 0)
{
- if (sShaderLevel > 0)
- {
- gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
- }
-
avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE);
}
else
@@ -492,11 +476,6 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
//reset vertex buffer mappings
LLVertexBuffer::unbind();
- if (pass == 0)
- { //make sure no stale colors are left over from a previous render
- glColor4f(1,1,1,1);
- }
-
if (LLPipeline::sImpostorRender)
{ //impostor render does not have impostors or rigid rendering
pass += 2;
@@ -535,6 +514,11 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
beginRiggedGlow();
break;
}
+
+ if (pass == 0)
+ { //make sure no stale colors are left over from a previous render
+ gGL.diffuseColor4f(1,1,1,1);
+ }
}
void LLDrawPoolAvatar::endRenderPass(S32 pass)
@@ -592,7 +576,7 @@ void LLDrawPoolAvatar::beginImpostor()
if (LLGLSLShader::sNoFixedFunction)
{
gImpostorProgram.bind();
- gImpostorProgram.setAlphaRange(0.01f, 1.f);
+ gImpostorProgram.setMinimumAlpha(0.01f);
}
gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
@@ -614,17 +598,17 @@ void LLDrawPoolAvatar::beginRigid()
{
if (LLPipeline::sUnderWaterRender)
{
- sVertexProgram = &gObjectAlphaMaskNonIndexedWaterProgram;
+ sVertexProgram = &gObjectAlphaMaskNoColorWaterProgram;
}
else
{
- sVertexProgram = &gObjectAlphaMaskNonIndexedProgram;
+ sVertexProgram = &gObjectAlphaMaskNoColorProgram;
}
if (sVertexProgram != NULL)
{ //eyeballs render with the specular shader
sVertexProgram->bind();
- sVertexProgram->setAlphaRange(0.2f, 1.f);
+ sVertexProgram->setMinimumAlpha(0.2f);
}
}
else
@@ -657,7 +641,7 @@ void LLDrawPoolAvatar::beginDeferredImpostor()
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
sVertexProgram->bind();
- sVertexProgram->setAlphaRange(0.01f, 1.f);
+ sVertexProgram->setMinimumAlpha(0.01f);
}
void LLDrawPoolAvatar::endDeferredImpostor()
@@ -672,14 +656,16 @@ void LLDrawPoolAvatar::endDeferredImpostor()
void LLDrawPoolAvatar::beginDeferredRigid()
{
- sVertexProgram = &gDeferredNonIndexedDiffuseProgram;
-
+ sVertexProgram = &gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
+ sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
sVertexProgram->bind();
+ sVertexProgram->setMinimumAlpha(0.2f);
}
void LLDrawPoolAvatar::endDeferredRigid()
{
sShaderLevel = mVertexShaderLevel;
+ sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
sVertexProgram->unbind();
gGL.getTexUnit(0)->activate();
}
@@ -703,11 +689,11 @@ void LLDrawPoolAvatar::beginSkinned()
{
if (LLPipeline::sUnderWaterRender)
{
- sVertexProgram = &gObjectAlphaMaskNonIndexedWaterProgram;
+ sVertexProgram = &gObjectAlphaMaskNoColorWaterProgram;
}
else
{
- sVertexProgram = &gObjectAlphaMaskNonIndexedProgram;
+ sVertexProgram = &gObjectAlphaMaskNoColorProgram;
}
}
@@ -716,17 +702,6 @@ void LLDrawPoolAvatar::beginSkinned()
sRenderingSkinned = TRUE;
sVertexProgram->bind();
- if (sShaderLevel >= SHADER_LEVEL_CLOTH)
- {
- enable_cloth_weights(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_CLOTHING]);
- }
- enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-
- if (sShaderLevel >= SHADER_LEVEL_BUMP)
- {
- enable_binormals(sVertexProgram->mAttribute[LLViewerShaderMgr::BINORMAL]);
- }
-
sVertexProgram->enableTexture(LLViewerShaderMgr::BUMP_MAP);
gGL.getTexUnit(0)->activate();
}
@@ -742,7 +717,7 @@ void LLDrawPoolAvatar::beginSkinned()
if (LLGLSLShader::sNoFixedFunction)
{
- sVertexProgram->setAlphaRange(0.2f, 1.f);
+ sVertexProgram->setMinimumAlpha(0.2f);
}
}
@@ -754,16 +729,6 @@ void LLDrawPoolAvatar::endSkinned()
sRenderingSkinned = FALSE;
sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);
gGL.getTexUnit(0)->activate();
- disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
- if (sShaderLevel >= SHADER_LEVEL_BUMP)
- {
- disable_binormals(sVertexProgram->mAttribute[LLViewerShaderMgr::BINORMAL]);
- }
- if ((sShaderLevel >= SHADER_LEVEL_CLOTH))
- {
- disable_cloth_weights(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_CLOTHING]);
- }
-
sVertexProgram->unbind();
sShaderLevel = mVertexShaderLevel;
}
@@ -809,7 +774,6 @@ void LLDrawPoolAvatar::beginRiggedSimple()
{
sDiffuseChannel = 0;
sVertexProgram->bind();
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
}
@@ -820,7 +784,6 @@ void LLDrawPoolAvatar::endRiggedSimple()
{
sVertexProgram->unbind();
sVertexProgram = NULL;
- LLVertexBuffer::sWeight4Loc = -1;
}
}
@@ -847,7 +810,34 @@ void LLDrawPoolAvatar::endRiggedFullbrightAlpha()
void LLDrawPoolAvatar::beginRiggedGlow()
{
- beginRiggedFullbright();
+ if (sShaderLevel > 0)
+ {
+ if (LLPipeline::sUnderWaterRender)
+ {
+ sVertexProgram = &gSkinnedObjectEmissiveWaterProgram;
+ }
+ else
+ {
+ sVertexProgram = &gSkinnedObjectEmissiveProgram;
+ }
+ }
+ else
+ {
+ if (LLPipeline::sUnderWaterRender)
+ {
+ sVertexProgram = &gObjectEmissiveNonIndexedWaterProgram;
+ }
+ else
+ {
+ sVertexProgram = &gObjectEmissiveNonIndexedProgram;
+ }
+ }
+
+ if (sShaderLevel > 0 || gPipeline.canUseVertexShaders())
+ {
+ sDiffuseChannel = 0;
+ sVertexProgram->bind();
+ }
}
void LLDrawPoolAvatar::endRiggedGlow()
@@ -884,7 +874,6 @@ void LLDrawPoolAvatar::beginRiggedFullbright()
{
sDiffuseChannel = 0;
sVertexProgram->bind();
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
}
@@ -895,7 +884,6 @@ void LLDrawPoolAvatar::endRiggedFullbright()
{
sVertexProgram->unbind();
sVertexProgram = NULL;
- LLVertexBuffer::sWeight4Loc = -1;
}
}
@@ -928,7 +916,6 @@ void LLDrawPoolAvatar::beginRiggedShinySimple()
{
sVertexProgram->bind();
LLDrawPoolBump::bindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
}
@@ -940,7 +927,6 @@ void LLDrawPoolAvatar::endRiggedShinySimple()
LLDrawPoolBump::unbindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
sVertexProgram->unbind();
sVertexProgram = NULL;
- LLVertexBuffer::sWeight4Loc = -1;
}
}
@@ -974,7 +960,6 @@ void LLDrawPoolAvatar::beginRiggedFullbrightShiny()
{
sVertexProgram->bind();
LLDrawPoolBump::bindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
}
@@ -986,7 +971,6 @@ void LLDrawPoolAvatar::endRiggedFullbrightShiny()
LLDrawPoolBump::unbindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
sVertexProgram->unbind();
sVertexProgram = NULL;
- LLVertexBuffer::sWeight4Loc = -1;
}
}
@@ -996,14 +980,12 @@ void LLDrawPoolAvatar::beginDeferredRiggedSimple()
sVertexProgram = &gDeferredSkinnedDiffuseProgram;
sDiffuseChannel = 0;
sVertexProgram->bind();
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
void LLDrawPoolAvatar::endDeferredRiggedSimple()
{
LLVertexBuffer::unbind();
sVertexProgram->unbind();
- LLVertexBuffer::sWeight4Loc = -1;
sVertexProgram = NULL;
}
@@ -1013,7 +995,6 @@ void LLDrawPoolAvatar::beginDeferredRiggedBump()
sVertexProgram->bind();
normal_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::BUMP_MAP);
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
- LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
}
void LLDrawPoolAvatar::endDeferredRiggedBump()
@@ -1022,7 +1003,6 @@ void LLDrawPoolAvatar::endDeferredRiggedBump()
sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);
sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
sVertexProgram->unbind();
- LLVertexBuffer::sWeight4Loc = -1;
normal_channel = -1;
sDiffuseChannel = 0;
sVertexProgram = NULL;
@@ -1032,14 +1012,12 @@ void LLDrawPoolAvatar::beginDeferredSkinned()
{
sShaderLevel = mVertexShaderLevel;
sVertexProgram = &gDeferredAvatarProgram;
-
sRenderingSkinned = TRUE;
sVertexProgram->bind();
+ sVertexProgram->setMinimumAlpha(0.2f);
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
- enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-
gGL.getTexUnit(0)->activate();
}
@@ -1047,7 +1025,6 @@ void LLDrawPoolAvatar::endDeferredSkinned()
{
// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
sRenderingSkinned = FALSE;
- disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
sVertexProgram->unbind();
sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
@@ -1161,10 +1138,10 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
return;
}
- if (single_avatar && avatarp->mSpecialRenderMode >= 1) // 1=anim preview, 2=image preview, 3=morph view
+ /*if (single_avatar && avatarp->mSpecialRenderMode >= 1) // 1=anim preview, 2=image preview, 3=morph view
{
gPipeline.enableLightsAvatarEdit(LLColor4(.5f, .5f, .5f, 1.f));
- }
+ }*/
if (pass == 1)
{
@@ -1255,11 +1232,6 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
return;
}
- if (sShaderLevel > 0)
- {
- gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
- }
-
if ((sShaderLevel >= SHADER_LEVEL_CLOTH))
{
LLMatrix4 rot_mat;
@@ -1273,16 +1245,16 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
wind = wind * rot_mat;
wind.mV[VW] = avatarp->mWindVec.mV[VW];
- sVertexProgram->vertexAttrib4fv(LLViewerShaderMgr::AVATAR_WIND, wind.mV);
+ sVertexProgram->uniform4fv(LLViewerShaderMgr::AVATAR_WIND, 1, wind.mV);
F32 phase = -1.f * (avatarp->mRipplePhase);
F32 freq = 7.f + (noise1(avatarp->mRipplePhase) * 2.f);
LLVector4 sin_params(freq, freq, freq, phase);
- sVertexProgram->vertexAttrib4fv(LLViewerShaderMgr::AVATAR_SINWAVE, sin_params.mV);
+ sVertexProgram->uniform4fv(LLViewerShaderMgr::AVATAR_SINWAVE, 1, sin_params.mV);
LLVector4 gravity(0.f, 0.f, -CLOTHING_GRAVITY_EFFECT, 0.f);
gravity = gravity * rot_mat;
- sVertexProgram->vertexAttrib4fv(LLViewerShaderMgr::AVATAR_GRAVITY, gravity.mV);
+ sVertexProgram->uniform4fv(LLViewerShaderMgr::AVATAR_GRAVITY, 1, gravity.mV);
}
if( !single_avatar || (avatarp == single_avatar) )
@@ -1306,8 +1278,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
if (buffer.isNull() ||
buffer->getTypeMask() != data_mask ||
- buffer->getRequestedVerts() != vol_face.mNumVertices ||
- buffer->getRequestedIndices() != vol_face.mNumIndices ||
+ buffer->getNumVerts() != vol_face.mNumVertices ||
+ buffer->getNumIndices() != vol_face.mNumIndices ||
(drawable && drawable->isState(LLDrawable::REBUILD_ALL)))
{
face->setGeomIndex(0);
@@ -1346,7 +1318,19 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
LLMatrix3 mat_normal(mat3);
+ //let getGeometryVolume know if alpha should override shiny
+ if (face->getFaceColor().mV[3] < 1.f)
+ {
+ face->setPoolType(LLDrawPool::POOL_ALPHA);
+ }
+ else
+ {
+ face->setPoolType(LLDrawPool::POOL_AVATAR);
+ }
+
face->getGeometryVolume(*volume, face->getTEOffset(), mat_vert, mat_normal, offset, true);
+
+ buffer->flush();
}
if (sShaderLevel <= 0 && face->mLastSkinTime < avatar->getLastSkinTime())
@@ -1383,7 +1367,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
LLMatrix4a bind_shape_matrix;
bind_shape_matrix.loadu(skin->mBindShapeMatrix);
- for (U32 j = 0; j < buffer->getRequestedVerts(); ++j)
+ for (U32 j = 0; j < buffer->getNumVerts(); ++j)
{
LLMatrix4a final_mat;
final_mat.clear();
@@ -1483,12 +1467,12 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
continue;
}
- stop_glerror();
+ //stop_glerror();
- const LLVolumeFace& vol_face = volume->getVolumeFace(te);
- updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
+ //const LLVolumeFace& vol_face = volume->getVolumeFace(te);
+ //updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
- stop_glerror();
+ //stop_glerror();
U32 data_mask = LLFace::getRiggedDataMask(type);
@@ -1524,17 +1508,15 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
data_mask &= ~LLVertexBuffer::MAP_WEIGHT4;
}
- buff->setBuffer(data_mask);
-
U16 start = face->getGeomStart();
U16 end = start + face->getGeomCount()-1;
S32 offset = face->getIndicesStart();
U32 count = face->getIndicesCount();
- if (glow)
+ /*if (glow)
{
- glColor4f(0,0,0,face->getTextureEntry()->getGlow());
- }
+ gGL.diffuseColor4f(0,0,0,face->getTextureEntry()->getGlow());
+ }*/
gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture());
if (normal_channel > -1)
@@ -1544,14 +1526,16 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
if (face->mTextureMatrix)
{
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf((F32*) face->mTextureMatrix->mMatrix);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadMatrix((F32*) face->mTextureMatrix->mMatrix);
+ buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
else
{
+ buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
}
}
@@ -1560,6 +1544,7 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
void LLDrawPoolAvatar::renderDeferredRiggedSimple(LLVOAvatar* avatar)
{
+ updateRiggedVertexBuffers(avatar);
renderRigged(avatar, RIGGED_DEFERRED_SIMPLE);
}
@@ -1568,8 +1553,58 @@ void LLDrawPoolAvatar::renderDeferredRiggedBump(LLVOAvatar* avatar)
renderRigged(avatar, RIGGED_DEFERRED_BUMP);
}
+void LLDrawPoolAvatar::updateRiggedVertexBuffers(LLVOAvatar* avatar)
+{
+ //update rigged vertex buffers
+ for (U32 type = 0; type < NUM_RIGGED_PASSES; ++type)
+ {
+ for (U32 i = 0; i < mRiggedFace[type].size(); ++i)
+ {
+ LLFace* face = mRiggedFace[type][i];
+ LLDrawable* drawable = face->getDrawable();
+ if (!drawable)
+ {
+ continue;
+ }
+
+ LLVOVolume* vobj = drawable->getVOVolume();
+
+ if (!vobj)
+ {
+ continue;
+ }
+
+ LLVolume* volume = vobj->getVolume();
+ S32 te = face->getTEOffset();
+
+ if (!volume || volume->getNumVolumeFaces() <= te)
+ {
+ continue;
+ }
+
+ LLUUID mesh_id = volume->getParams().getSculptID();
+ if (mesh_id.isNull())
+ {
+ continue;
+ }
+
+ const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(mesh_id, vobj);
+ if (!skin)
+ {
+ continue;
+ }
+
+ stop_glerror();
+
+ const LLVolumeFace& vol_face = volume->getVolumeFace(te);
+ updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
+ }
+ }
+}
+
void LLDrawPoolAvatar::renderRiggedSimple(LLVOAvatar* avatar)
{
+ updateRiggedVertexBuffers(avatar);
renderRigged(avatar, RIGGED_SIMPLE);
}
@@ -1684,34 +1719,3 @@ LLVertexBufferAvatar::LLVertexBufferAvatar()
}
-void LLVertexBufferAvatar::setupVertexBuffer(U32 data_mask) const
-{
- if (sRenderingSkinned)
- {
- U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
-
- glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_VERTEX], (void*)(base + 0));
- glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
-
- set_vertex_weights(LLDrawPoolAvatar::sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT],
- LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_WEIGHT], (F32*)(base + mOffsets[TYPE_WEIGHT]));
-
- if (sShaderLevel >= LLDrawPoolAvatar::SHADER_LEVEL_BUMP)
- {
- set_binormals(LLDrawPoolAvatar::sVertexProgram->mAttribute[LLViewerShaderMgr::BINORMAL],
- LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_BINORMAL], (LLVector3*)(base + mOffsets[TYPE_BINORMAL]));
- }
-
- if (sShaderLevel >= LLDrawPoolAvatar::SHADER_LEVEL_CLOTH)
- {
- set_vertex_clothing_weights(LLDrawPoolAvatar::sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_CLOTHING],
- LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_CLOTHWEIGHT], (LLVector4*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
- }
- }
- else
- {
- LLVertexBuffer::setupVertexBuffer(data_mask);
- }
-}
-
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index fcd8294af5..69e3068858 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -134,6 +134,7 @@ public:
const LLMeshSkinInfo* skin,
LLVolume* volume,
const LLVolumeFace& vol_face);
+ void updateRiggedVertexBuffers(LLVOAvatar* avatar);
void renderRigged(LLVOAvatar* avatar, U32 type, bool glow = false);
void renderRiggedSimple(LLVOAvatar* avatar);
@@ -176,6 +177,7 @@ public:
RIGGED_FULLBRIGHT_SHINY_MASK = RIGGED_SIMPLE_MASK,
RIGGED_GLOW_MASK = LLVertexBuffer::MAP_VERTEX |
LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_EMISSIVE |
LLVertexBuffer::MAP_WEIGHT4,
RIGGED_ALPHA_MASK = RIGGED_SIMPLE_MASK,
RIGGED_FULLBRIGHT_ALPHA_MASK = RIGGED_FULLBRIGHT_MASK,
@@ -214,7 +216,6 @@ class LLVertexBufferAvatar : public LLVertexBuffer
{
public:
LLVertexBufferAvatar();
- virtual void setupVertexBuffer(U32 data_mask) const;
};
extern S32 AVATAR_OFFSET_POS;
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 0742250b0b..b696b90d84 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -763,7 +763,7 @@ void LLDrawPoolBump::renderBump(U32 pass)
LLGLDisable fog(GL_FOG);
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_LEQUAL);
LLGLEnable blend(GL_BLEND);
- glColor4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
/// Get rid of z-fighting with non-bump pass.
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.0f, -1.0f);
@@ -786,7 +786,7 @@ void LLDrawPoolBump::endBump(U32 pass)
{
// Disable texture blending on unit 1
gGL.getTexUnit(1)->activate();
- //gGL.getTexUnit(1)->disable();
+ gGL.getTexUnit(1)->disable();
gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
// Disable texture blending on unit 0
@@ -1088,6 +1088,8 @@ LLViewerTexture* LLBumpImageList::getBrightnessDarknessImage(LLViewerFetchedText
}
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_STANDARD_LOADED("Bump Standard Callback");
+
// static
void LLBumpImageList::onSourceBrightnessLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata )
{
@@ -1110,14 +1112,24 @@ void LLBumpImageList::onSourceDarknessLoaded( BOOL success, LLViewerFetchedTextu
}
}
+static LLFastTimer::DeclareTimer FTM_BUMP_GEN_NORMAL("Generate Normal Map");
+static LLFastTimer::DeclareTimer FTM_BUMP_CREATE_TEXTURE("Create GL Normal Map");
+
void LLBumpImageList::onSourceStandardLoaded( BOOL success, LLViewerFetchedTexture* src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)
{
if (success && LLPipeline::sRenderDeferred)
{
+ LLFastTimer t(FTM_BUMP_SOURCE_STANDARD_LOADED);
LLPointer<LLImageRaw> nrm_image = new LLImageRaw(src->getWidth(), src->getHeight(), 4);
- generateNormalMapFromAlpha(src, nrm_image);
+ {
+ LLFastTimer t(FTM_BUMP_GEN_NORMAL);
+ generateNormalMapFromAlpha(src, nrm_image);
+ }
src_vi->setExplicitFormat(GL_RGBA, GL_RGBA);
- src_vi->createGLTexture(src_vi->getDiscardLevel(), nrm_image);
+ {
+ LLFastTimer t(FTM_BUMP_CREATE_TEXTURE);
+ src_vi->createGLTexture(src_vi->getDiscardLevel(), nrm_image);
+ }
}
}
@@ -1176,24 +1188,39 @@ void LLBumpImageList::generateNormalMapFromAlpha(LLImageRaw* src, LLImageRaw* nr
}
}
+
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_LOADED("Bump Source Loaded");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_ENTRIES_UPDATE("Entries Update");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_MIN_MAX("Min/Max");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_RGB2LUM("RGB to Luminance");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_RESCALE("Rescale");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_GEN_NORMAL("Generate Normal");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_CREATE("Create");
+
// static
void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLImageRaw* src, LLUUID& source_asset_id, EBumpEffect bump_code )
{
if( success )
{
+ LLFastTimer t(FTM_BUMP_SOURCE_LOADED);
+
+
bump_image_map_t& entries_list(bump_code == BE_BRIGHTNESS ? gBumpImageList.mBrightnessEntries : gBumpImageList.mDarknessEntries );
bump_image_map_t::iterator iter = entries_list.find(source_asset_id);
- if (iter == entries_list.end() ||
- iter->second.isNull() ||
- iter->second->getWidth() != src->getWidth() ||
- iter->second->getHeight() != src->getHeight()) // bump not cached yet or has changed resolution
- { //make sure an entry exists for this image
- LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,1);
- raw->clear(0x77, 0x77, 0xFF, 0xFF);
-
- entries_list[src_vi->getID()] = LLViewerTextureManager::getLocalTexture( raw.get(), TRUE);
- iter = entries_list.find(src_vi->getID());
+ {
+ LLFastTimer t(FTM_BUMP_SOURCE_ENTRIES_UPDATE);
+ if (iter == entries_list.end() ||
+ iter->second.isNull() ||
+ iter->second->getWidth() != src->getWidth() ||
+ iter->second->getHeight() != src->getHeight()) // bump not cached yet or has changed resolution
+ { //make sure an entry exists for this image
+ LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,1);
+ raw->clear(0x77, 0x77, 0xFF, 0xFF);
+
+ entries_list[src_vi->getID()] = LLViewerTextureManager::getLocalTexture( raw.get(), TRUE);
+ iter = entries_list.find(src_vi->getID());
+ }
}
//if (iter->second->getWidth() != src->getWidth() ||
@@ -1224,50 +1251,56 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
{
case 1:
case 2:
- if( src_data_size == dst_data_size * src_components )
{
- for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
+ LLFastTimer t(FTM_BUMP_SOURCE_MIN_MAX);
+ if( src_data_size == dst_data_size * src_components )
{
- dst_data[i] = src_data[j];
- if( dst_data[i] < minimum )
- {
- minimum = dst_data[i];
- }
- if( dst_data[i] > maximum )
+ for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
{
- maximum = dst_data[i];
+ dst_data[i] = src_data[j];
+ if( dst_data[i] < minimum )
+ {
+ minimum = dst_data[i];
+ }
+ if( dst_data[i] > maximum )
+ {
+ maximum = dst_data[i];
+ }
}
}
- }
- else
- {
- llassert(0);
- dst_image->clear();
+ else
+ {
+ llassert(0);
+ dst_image->clear();
+ }
}
break;
case 3:
case 4:
- if( src_data_size == dst_data_size * src_components )
{
- for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
+ LLFastTimer t(FTM_BUMP_SOURCE_RGB2LUM);
+ if( src_data_size == dst_data_size * src_components )
{
- // RGB to luminance
- dst_data[i] = (R_WEIGHT * src_data[j] + G_WEIGHT * src_data[j+1] + B_WEIGHT * src_data[j+2]) >> FIXED_PT;
- //llassert( dst_data[i] <= 255 );true because it's 8bit
- if( dst_data[i] < minimum )
+ for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
{
- minimum = dst_data[i];
- }
- if( dst_data[i] > maximum )
- {
- maximum = dst_data[i];
+ // RGB to luminance
+ dst_data[i] = (R_WEIGHT * src_data[j] + G_WEIGHT * src_data[j+1] + B_WEIGHT * src_data[j+2]) >> FIXED_PT;
+ //llassert( dst_data[i] <= 255 );true because it's 8bit
+ if( dst_data[i] < minimum )
+ {
+ minimum = dst_data[i];
+ }
+ if( dst_data[i] > maximum )
+ {
+ maximum = dst_data[i];
+ }
}
}
- }
- else
- {
- llassert(0);
- dst_image->clear();
+ else
+ {
+ llassert(0);
+ dst_image->clear();
+ }
}
break;
default:
@@ -1278,6 +1311,7 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
if( maximum > minimum )
{
+ LLFastTimer t(FTM_BUMP_SOURCE_RESCALE);
U8 bias_and_scale_lut[256];
F32 twice_one_over_range = 2.f / (maximum - minimum);
S32 i;
@@ -1311,17 +1345,99 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
// accidentally releases it.
LLPointer<LLViewerTexture> bump = LLViewerTextureManager::getLocalTexture( TRUE );
+
if (!LLPipeline::sRenderDeferred)
{
+ LLFastTimer t(FTM_BUMP_SOURCE_CREATE);
bump->setExplicitFormat(GL_ALPHA8, GL_ALPHA);
bump->createGLTexture(0, dst_image);
}
- else
- {
- LLPointer<LLImageRaw> nrm_image = new LLImageRaw(dst_image->getWidth(), dst_image->getHeight(), 4);
- generateNormalMapFromAlpha(dst_image, nrm_image);
- bump->setExplicitFormat(GL_RGBA, GL_RGBA);
- bump->createGLTexture(0, nrm_image);
+ else
+ { //convert to normal map
+ {
+ LLFastTimer t(FTM_BUMP_SOURCE_CREATE);
+ bump->setExplicitFormat(GL_RGBA8, GL_ALPHA);
+ bump->createGLTexture(0, dst_image);
+ }
+
+ {
+ LLFastTimer t(FTM_BUMP_SOURCE_GEN_NORMAL);
+ gPipeline.mScreen.bindTarget();
+
+ LLGLDepthTest depth(GL_FALSE);
+ LLGLDisable cull(GL_CULL_FACE);
+ LLGLDisable blend(GL_BLEND);
+ gGL.setColorMask(TRUE, TRUE);
+ gNormalMapGenProgram.bind();
+ gNormalMapGenProgram.uniform1f("norm_scale", gSavedSettings.getF32("RenderNormalMapScale"));
+ gNormalMapGenProgram.uniform1f("stepX", 1.f/bump->getWidth());
+ gNormalMapGenProgram.uniform1f("stepY", 1.f/bump->getHeight());
+
+ LLVector2 v((F32) bump->getWidth()/gPipeline.mScreen.getWidth(),
+ (F32) bump->getHeight()/gPipeline.mScreen.getHeight());
+
+ gGL.getTexUnit(0)->bind(bump);
+
+ S32 width = bump->getWidth();
+ S32 height = bump->getHeight();
+
+ S32 screen_width = gPipeline.mScreen.getWidth();
+ S32 screen_height = gPipeline.mScreen.getHeight();
+
+ glViewport(0, 0, screen_width, screen_height);
+
+ for (S32 left = 0; left < width; left += screen_width)
+ {
+ S32 right = left + screen_width;
+ right = llmin(right, width);
+
+ F32 left_tc = (F32) left/ width;
+ F32 right_tc = (F32) right/width;
+
+ for (S32 bottom = 0; bottom < height; bottom += screen_height)
+ {
+ S32 top = bottom+screen_height;
+ top = llmin(top, height);
+
+ F32 bottom_tc = (F32) bottom/height;
+ F32 top_tc = (F32)(bottom+screen_height)/height;
+ top_tc = llmin(top_tc, 1.f);
+
+ F32 screen_right = (F32) (right-left)/screen_width;
+ F32 screen_top = (F32) (top-bottom)/screen_height;
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.texCoord2f(left_tc, bottom_tc);
+ gGL.vertex2f(0, 0);
+
+ gGL.texCoord2f(left_tc, top_tc);
+ gGL.vertex2f(0, screen_top);
+
+ gGL.texCoord2f(right_tc, bottom_tc);
+ gGL.vertex2f(screen_right, 0);
+
+ gGL.texCoord2f(right_tc, top_tc);
+ gGL.vertex2f(screen_right, screen_top);
+
+ gGL.end();
+
+ gGL.flush();
+
+ S32 w = right-left;
+ S32 h = top-bottom;
+
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, left, bottom, 0, 0, w, h);
+ }
+ }
+
+ glGenerateMipmap(GL_TEXTURE_2D);
+
+ gPipeline.mScreen.flush();
+
+ gNormalMapGenProgram.unbind();
+
+ //generateNormalMapFromAlpha(dst_image, nrm_image);
+ }
}
iter->second = bump; // derefs (and deletes) old image
@@ -1369,18 +1485,24 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL
if (mShiny)
{
gGL.getTexUnit(0)->activate();
- glMatrixMode(GL_TEXTURE);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
}
else
{
- gGL.getTexUnit(1)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
- gPipeline.mTextureMatrixOps++;
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ gGL.getTexUnit(1)->activate();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
+ }
+
gGL.getTexUnit(0)->activate();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
+ gPipeline.mTextureMatrixOps++;
}
- glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+ gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
gPipeline.mTextureMatrixOps++;
tex_setup = true;
@@ -1390,7 +1512,7 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL
{
if (params.mTexture.notNull())
{
- gGL.getTexUnit(diffuse_channel)->bind(params.mTexture) ;
+ gGL.getTexUnit(diffuse_channel)->bind(params.mTexture);
params.mTexture->addTextureStats(params.mVSize);
}
else
@@ -1415,12 +1537,17 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL
}
else
{
- gGL.getTexUnit(1)->activate();
- glLoadIdentity();
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ gGL.getTexUnit(1)->activate();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ }
gGL.getTexUnit(0)->activate();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
}
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
}
@@ -1465,6 +1592,7 @@ void LLDrawPoolInvisible::endDeferredPass( S32 pass )
void LLDrawPoolInvisible::renderDeferred( S32 pass )
{ //render invisiprims; this doesn't work becaue it also blocks all the post-deferred stuff
+#if 0
LLFastTimer t(FTM_RENDER_INVISIBLE);
U32 invisi_mask = LLVertexBuffer::MAP_VERTEX;
@@ -1482,4 +1610,5 @@ void LLDrawPoolInvisible::renderDeferred( S32 pass )
renderShiny(true);
endShiny(true);
}
+#endif
}
diff --git a/indra/newview/lldrawpoolground.cpp b/indra/newview/lldrawpoolground.cpp
index ce07e62122..59c3fbf7a1 100644
--- a/indra/newview/lldrawpoolground.cpp
+++ b/indra/newview/lldrawpoolground.cpp
@@ -71,9 +71,9 @@ void LLDrawPoolGround::render(S32 pass)
LLGLSquashToFarClip far_clip(glh_get_current_projection());
F32 water_height = gAgent.getRegion()->getWaterHeight();
- glPushMatrix();
+ gGL.pushMatrix();
LLVector3 origin = LLViewerCamera::getInstance()->getOrigin();
- glTranslatef(origin.mV[0], origin.mV[1], llmax(origin.mV[2], water_height));
+ gGL.translatef(origin.mV[0], origin.mV[1], llmax(origin.mV[2], water_height));
LLFace *facep = mDrawFace[0];
@@ -82,6 +82,6 @@ void LLDrawPoolGround::render(S32 pass)
LLOverrideFaceColor col(this, gSky.mVOSkyp->getGLFogColor());
facep->renderIndexed();
- glPopMatrix();
+ gGL.popMatrix();
}
diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp
index eec4ee6bac..6e0ea78af2 100644
--- a/indra/newview/lldrawpoolsimple.cpp
+++ b/indra/newview/lldrawpoolsimple.cpp
@@ -46,7 +46,7 @@ static LLFastTimer::DeclareTimer FTM_RENDER_GRASS_DEFERRED("Deferred Grass");
void LLDrawPoolGlow::beginPostDeferredPass(S32 pass)
{
- gDeferredFullbrightProgram.bind();
+ gDeferredEmissiveProgram.bind();
}
static LLFastTimer::DeclareTimer FTM_RENDER_GLOW_PUSH("Glow Push");
@@ -76,10 +76,22 @@ void LLDrawPoolGlow::renderPostDeferred(S32 pass)
void LLDrawPoolGlow::endPostDeferredPass(S32 pass)
{
- gDeferredFullbrightProgram.unbind();
+ gDeferredEmissiveProgram.unbind();
LLRenderPass::endRenderPass(pass);
}
+S32 LLDrawPoolGlow::getNumPasses()
+{
+ if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
void LLDrawPoolGlow::render(S32 pass)
{
LLFastTimer t(FTM_RENDER_GLOW);
@@ -93,39 +105,29 @@ void LLDrawPoolGlow::render(S32 pass)
U32 shader_level = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT);
- if (shader_level > 0 && fullbright_shader)
- {
- fullbright_shader->bind();
- }
- else
- {
- gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
- }
+ //should never get here without basic shaders enabled
+ llassert(shader_level > 0);
+
+ LLGLSLShader* shader = LLPipeline::sUnderWaterRender ? &gObjectEmissiveWaterProgram : &gObjectEmissiveProgram;
+ shader->bind();
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
gGL.setColorMask(false, true);
- if (shader_level > 1)
- {
- pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
- }
- else
- {
- renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask());
- }
+ pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
gGL.setColorMask(true, false);
gGL.setSceneBlendType(LLRender::BT_ALPHA);
if (shader_level > 0 && fullbright_shader)
{
- fullbright_shader->unbind();
+ shader->unbind();
}
}
void LLDrawPoolGlow::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures)
{
- glColor4ubv(params.mGlowColor.mV);
+ //gGL.diffuseColor4ubv(params.mGlowColor.mV);
LLRenderPass::pushBatch(params, mask, texture, batch_textures);
}
@@ -253,6 +255,7 @@ void LLDrawPoolGrass::prerender()
void LLDrawPoolGrass::beginRenderPass(S32 pass)
{
LLFastTimer t(FTM_RENDER_GRASS);
+ stop_glerror();
if (LLPipeline::sUnderWaterRender)
{
@@ -266,7 +269,7 @@ void LLDrawPoolGrass::beginRenderPass(S32 pass)
if (mVertexShaderLevel > 0)
{
simple_shader->bind();
- simple_shader->setAlphaRange(0.5f, 1.f);
+ simple_shader->setMinimumAlpha(0.5f);
}
else
{
@@ -322,7 +325,7 @@ void LLDrawPoolGrass::renderDeferred(S32 pass)
{
LLFastTimer t(FTM_RENDER_GRASS_DEFERRED);
gDeferredNonIndexedDiffuseAlphaMaskProgram.bind();
- gDeferredNonIndexedDiffuseAlphaMaskProgram.setAlphaRange(0.5f, 1.f);
+ gDeferredNonIndexedDiffuseAlphaMaskProgram.setMinimumAlpha(0.5f);
//render grass
LLRenderPass::renderTexture(LLRenderPass::PASS_GRASS, getVertexDataMask());
}
diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h
index 3811b3d398..bd62bc7502 100644
--- a/indra/newview/lldrawpoolsimple.h
+++ b/indra/newview/lldrawpoolsimple.h
@@ -118,7 +118,8 @@ public:
enum
{
VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX |
- LLVertexBuffer::MAP_TEXCOORD0
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_EMISSIVE
};
virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; }
@@ -130,6 +131,8 @@ public:
/*virtual*/ void endPostDeferredPass(S32 pass);
/*virtual*/ void renderPostDeferred(S32 pass);
+ /*virtual*/ S32 getNumPasses();
+
void render(S32 pass = 0);
void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture = TRUE, BOOL batch_textures = FALSE);
diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp
index efffb2df9e..7f7d9f65c6 100644
--- a/indra/newview/lldrawpoolsky.cpp
+++ b/indra/newview/lldrawpoolsky.cpp
@@ -76,15 +76,16 @@ void LLDrawPoolSky::render(S32 pass)
return;
}
- // use a shader only underwater
+ // don't render sky under water (background just gets cleared to fog color)
if(mVertexShaderLevel > 0 && LLPipeline::sUnderWaterRender)
{
- mShader = &gObjectFullbrightWaterProgram;
- mShader->bind();
+ return;
}
- else if (LLGLSLShader::sNoFixedFunction)
+
+
+ if (LLGLSLShader::sNoFixedFunction)
{ //just use the UI shader (generic single texture no lighting)
- gUIProgram.bind();
+ gOneTextureNoColorProgram.bind();
}
else
{
@@ -111,21 +112,21 @@ void LLDrawPoolSky::render(S32 pass)
LLGLDisable clip(GL_CLIP_PLANE0);
- glPushMatrix();
+ gGL.pushMatrix();
LLVector3 origin = LLViewerCamera::getInstance()->getOrigin();
- glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+ gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
S32 face_count = (S32)mDrawFace.size();
LLVertexBuffer::unbind();
- glColor4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
for (S32 i = 0; i < llmin(6, face_count); ++i)
{
renderSkyCubeFace(i);
}
- glPopMatrix();
+ gGL.popMatrix();
}
void LLDrawPoolSky::renderSkyCubeFace(U8 side)
@@ -146,7 +147,7 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side)
LLGLEnable blend(GL_BLEND);
mSkyTex[side].bindTexture(FALSE);
- glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled
+ gGL.diffuseColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled
face.renderIndexed();
}
}
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 3daa0f8261..b95d8296fa 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -62,13 +62,16 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
LLFacePool(POOL_TERRAIN),
mTexturep(texturep)
{
+ U32 format = GL_ALPHA8;
+ U32 int_format = GL_ALPHA;
+
// Hack!
sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga",
TRUE, LLViewerTexture::BOOST_UI,
LLViewerTexture::FETCHED_TEXTURE,
- GL_ALPHA8, GL_ALPHA,
+ format, int_format,
LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
//gGL.getTexUnit(0)->bind(mAlphaRampImagep.get());
@@ -77,7 +80,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c",
TRUE, LLViewerTexture::BOOST_UI,
LLViewerTexture::FETCHED_TEXTURE,
- GL_ALPHA8, GL_ALPHA,
+ format, int_format,
LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
//gGL.getTexUnit(0)->bind(m2DAlphaRampImagep.get());
@@ -106,6 +109,10 @@ U32 LLDrawPoolTerrain::getVertexDataMask()
{
return LLVertexBuffer::MAP_VERTEX;
}
+ else if (LLGLSLShader::sCurBoundShaderPtr)
+ {
+ return VERTEX_DATA_MASK & ~(LLVertexBuffer::MAP_TEXCOORD2 | LLVertexBuffer::MAP_TEXCOORD3);
+ }
else
{
return VERTEX_DATA_MASK;
@@ -115,14 +122,7 @@ U32 LLDrawPoolTerrain::getVertexDataMask()
void LLDrawPoolTerrain::prerender()
{
mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT);
- if (mVertexShaderLevel > 0)
- {
- sDetailMode = 1;
- }
- else
- {
- sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
- }
+ sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
}
void LLDrawPoolTerrain::beginRenderPass( S32 pass )
@@ -132,7 +132,7 @@ void LLDrawPoolTerrain::beginRenderPass( S32 pass )
sShader = LLPipeline::sUnderWaterRender ?
&gTerrainWaterProgram :
- &gTerrainProgram;
+ &gTerrainProgram;
if (mVertexShaderLevel > 1 && sShader->mShaderLevel > 0)
{
@@ -174,6 +174,8 @@ void LLDrawPoolTerrain::render(S32 pass)
compp->mDetailTextures[i]->addTextureStats(1024.f*1024.f); // assume large pixel area
}
+ LLOverrideFaceColor override(this, 1.f, 1.f, 1.f, 1.f);
+
if (!gGLManager.mHasMultitexture)
{
// No multitexture, render simple land.
@@ -188,22 +190,27 @@ void LLDrawPoolTerrain::render(S32 pass)
}
LLGLSPipeline gls;
- LLOverrideFaceColor override(this, 1.f, 1.f, 1.f, 1.f);
-
+
if (mVertexShaderLevel > 1 && sShader->mShaderLevel > 0)
{
gPipeline.enableLightsDynamic();
+
renderFullShader();
}
else
{
gPipeline.enableLightsStatic();
- if (sDetailMode == 0){
+ if (sDetailMode == 0)
+ {
renderSimple();
- } else if (gGLManager.mNumTextureUnits < 4){
+ }
+ else if (gGLManager.mNumTextureUnits < 4)
+ {
renderFull2TU();
- } else {
+ }
+ else
+ {
renderFull4TU();
}
}
@@ -215,8 +222,9 @@ void LLDrawPoolTerrain::render(S32 pass)
{ //use fullbright shader for highlighting
LLGLSLShader* old_shader = sShader;
sShader->unbind();
- sShader = &gObjectFullbrightNonIndexedProgram;
+ sShader = &gHighlightProgram;
sShader->bind();
+ gGL.diffuseColor4f(1,1,1,1);
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.0f, -1.0f);
renderOwnership();
@@ -312,16 +320,15 @@ void LLDrawPoolTerrain::renderFullShader()
gGL.getTexUnit(detail0)->bind(detail_texture0p);
gGL.getTexUnit(0)->activate();
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ llassert(shader);
+
+ shader->uniform4fv("object_plane_s", 1, tp0.mV);
+ shader->uniform4fv("object_plane_t", 1, tp1.mV);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
//
// detail texture 1
@@ -331,9 +338,9 @@ void LLDrawPoolTerrain::renderFullShader()
/// ALPHA TEXTURE COORDS 0:
gGL.getTexUnit(1)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
// detail texture 2
//
@@ -343,10 +350,10 @@ void LLDrawPoolTerrain::renderFullShader()
gGL.getTexUnit(2)->activate();
/// ALPHA TEXTURE COORDS 1:
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(-2.f, 0.f, 0.f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.translatef(-2.f, 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
//
// detail texture 3
@@ -356,10 +363,10 @@ void LLDrawPoolTerrain::renderFullShader()
/// ALPHA TEXTURE COORDS 2:
gGL.getTexUnit(3)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(-1.f, 0.f, 0.f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.translatef(-1.f, 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
//
// Alpha Ramp
@@ -380,38 +387,30 @@ void LLDrawPoolTerrain::renderFullShader()
gGL.getTexUnit(alpha_ramp)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(4)->disable();
gGL.getTexUnit(4)->activate();
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
-
+
gGL.getTexUnit(detail3)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(3)->disable();
gGL.getTexUnit(3)->activate();
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(detail2)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(2)->disable();
gGL.getTexUnit(2)->activate();
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(detail1)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(1)->disable();
gGL.getTexUnit(1)->activate();
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
//----------------------------------------------------------------------------
// Restore Texture Unit 0 defaults
@@ -419,11 +418,9 @@ void LLDrawPoolTerrain::renderFullShader()
gGL.getTexUnit(detail0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(0)->activate();
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
void LLDrawPoolTerrain::renderFull4TU()
@@ -534,9 +531,9 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(1)->activate();
// Set the texture matrix
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(-2.f, 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.translatef(-2.f, 0.f, 0.f);
// Care about alpha only
gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
@@ -566,9 +563,9 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(3)->activate();
// Set the texture matrix
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(-1.f, 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.translatef(-1.f, 0.f, 0.f);
// Set alpha texture and do lighting modulation
gGL.getTexUnit(3)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_VERT_COLOR);
@@ -586,9 +583,9 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(3)->disable();
gGL.getTexUnit(3)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(2)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(2)->disable();
@@ -596,17 +593,17 @@ void LLDrawPoolTerrain::renderFull4TU()
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(1)->disable();
gGL.getTexUnit(1)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
// Restore blend state
gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -620,9 +617,9 @@ void LLDrawPoolTerrain::renderFull4TU()
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
@@ -714,9 +711,9 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
// Set the texture matrix
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(-1.f, 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.translatef(-1.f, 0.f, 0.f);
// Care about alpha only
gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
@@ -753,9 +750,9 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
// Set the texture matrix
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(-2.f, 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.translatef(-2.f, 0.f, 0.f);
// Care about alpha only
gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
@@ -793,9 +790,9 @@ void LLDrawPoolTerrain::renderFull2TU()
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
//----------------------------------------------------------------------------
// Restore Texture Unit 0 defaults
@@ -805,9 +802,9 @@ void LLDrawPoolTerrain::renderFull2TU()
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
@@ -831,13 +828,21 @@ void LLDrawPoolTerrain::renderSimple()
tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f));
tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f));
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ sShader->uniform4fv("object_plane_s", 1, tp0.mV);
+ sShader->uniform4fv("object_plane_t", 1, tp1.mV);
+ }
+ else
+ {
+ glEnable(GL_TEXTURE_GEN_S);
+ glEnable(GL_TEXTURE_GEN_T);
+ glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
+ glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+ }
+
gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
drawLoop();
@@ -847,11 +852,14 @@ void LLDrawPoolTerrain::renderSimple()
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glDisable(GL_TEXTURE_GEN_S);
+ glDisable(GL_TEXTURE_GEN_T);
+ }
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
@@ -882,11 +890,11 @@ void LLDrawPoolTerrain::renderOwnership()
// texture coordinates for pixel 256x256 is not 1,1. This makes the
// ownership map not line up with the selection. We address this with
// a texture matrix multiply.
- glMatrixMode(GL_TEXTURE);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.pushMatrix();
const F32 TEXTURE_FUDGE = 257.f / 256.f;
- glScalef( TEXTURE_FUDGE, TEXTURE_FUDGE, 1.f );
+ gGL.scalef( TEXTURE_FUDGE, TEXTURE_FUDGE, 1.f );
for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
iter != mDrawFace.end(); iter++)
{
@@ -895,9 +903,9 @@ void LLDrawPoolTerrain::renderOwnership()
LLVertexBuffer::MAP_TEXCOORD0);
}
- glMatrixMode(GL_TEXTURE);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h
index 3056da44d5..283ed87f1a 100644
--- a/indra/newview/lldrawpoolterrain.h
+++ b/indra/newview/lldrawpoolterrain.h
@@ -40,8 +40,7 @@ public:
LLVertexBuffer::MAP_TEXCOORD0 |
LLVertexBuffer::MAP_TEXCOORD1 |
LLVertexBuffer::MAP_TEXCOORD2 |
- LLVertexBuffer::MAP_TEXCOORD3 |
- LLVertexBuffer::MAP_COLOR
+ LLVertexBuffer::MAP_TEXCOORD3
};
virtual U32 getVertexDataMask();
diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp
index a6e0151114..3165a3516c 100644
--- a/indra/newview/lldrawpooltree.cpp
+++ b/indra/newview/lldrawpooltree.cpp
@@ -65,17 +65,18 @@ void LLDrawPoolTree::beginRenderPass(S32 pass)
if (LLPipeline::sUnderWaterRender)
{
- shader = &gObjectAlphaMaskNonIndexedWaterProgram;
+ shader = &gTreeWaterProgram;
}
else
{
- shader = &gObjectAlphaMaskNonIndexedProgram;
+ shader = &gTreeProgram;
}
if (gPipeline.canUseVertexShaders())
{
shader->bind();
- shader->setAlphaRange(0.5f, 1.f);
+ shader->setMinimumAlpha(0.5f);
+ gGL.diffuseColor4f(1,1,1,1);
}
else
{
@@ -96,25 +97,18 @@ void LLDrawPoolTree::render(S32 pass)
LLGLState test(GL_ALPHA_TEST, LLGLSLShader::sNoFixedFunction ? 0 : 1);
LLOverrideFaceColor color(this, 1.f, 1.f, 1.f, 1.f);
- if (gSavedSettings.getBOOL("RenderAnimateTrees"))
- {
- renderTree();
- }
- else
+ gGL.getTexUnit(sDiffTex)->bind(mTexturep);
+
+ for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
+ iter != mDrawFace.end(); iter++)
{
- gGL.getTexUnit(sDiffTex)->bind(mTexturep);
-
- for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
- iter != mDrawFace.end(); iter++)
+ LLFace *face = *iter;
+ LLVertexBuffer* buff = face->getVertexBuffer();
+ if(buff)
{
- LLFace *face = *iter;
- LLVertexBuffer* buff = face->getVertexBuffer();
- if(buff)
- {
- buff->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
- buff->drawRange(LLRender::TRIANGLES, 0, buff->getRequestedVerts()-1, buff->getRequestedIndices(), 0);
- gPipeline.addTrianglesDrawn(buff->getRequestedIndices());
- }
+ buff->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
+ buff->drawRange(LLRender::TRIANGLES, 0, buff->getNumVerts()-1, buff->getNumIndices(), 0);
+ gPipeline.addTrianglesDrawn(buff->getNumIndices());
}
}
}
@@ -141,9 +135,9 @@ void LLDrawPoolTree::beginDeferredPass(S32 pass)
{
LLFastTimer t(FTM_RENDER_TREES);
- shader = &gDeferredNonIndexedDiffuseAlphaMaskProgram;
+ shader = &gDeferredTreeProgram;
shader->bind();
- shader->setAlphaRange(0.5f, 1.f);
+ shader->setMinimumAlpha(0.5f);
}
void LLDrawPoolTree::renderDeferred(S32 pass)
@@ -168,8 +162,8 @@ void LLDrawPoolTree::beginShadowPass(S32 pass)
glPolygonOffset(gSavedSettings.getF32("RenderDeferredTreeShadowOffset"),
gSavedSettings.getF32("RenderDeferredTreeShadowBias"));
- gDeferredShadowAlphaMaskProgram.bind();
- gDeferredShadowAlphaMaskProgram.setAlphaRange(0.5f, 1.f);
+ gDeferredTreeShadowProgram.bind();
+ gDeferredTreeShadowProgram.setMinimumAlpha(0.5f);
}
void LLDrawPoolTree::renderShadow(S32 pass)
@@ -183,133 +177,7 @@ void LLDrawPoolTree::endShadowPass(S32 pass)
glPolygonOffset(gSavedSettings.getF32("RenderDeferredSpotShadowOffset"),
gSavedSettings.getF32("RenderDeferredSpotShadowBias"));
-}
-
-
-void LLDrawPoolTree::renderTree(BOOL selecting)
-{
- LLGLState normalize(GL_NORMALIZE, TRUE);
-
- // Bind the texture for this tree.
- gGL.getTexUnit(sDiffTex)->bind(mTexturep.get(), TRUE);
-
- U32 indices_drawn = 0;
-
- glMatrixMode(GL_MODELVIEW);
-
- for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
- iter != mDrawFace.end(); iter++)
- {
- LLFace *face = *iter;
- LLDrawable *drawablep = face->getDrawable();
-
- if (drawablep->isDead() || !face->getVertexBuffer())
- {
- continue;
- }
-
- face->getVertexBuffer()->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
- U16* indicesp = (U16*) face->getVertexBuffer()->getIndicesPointer();
-
- // Render each of the trees
- LLVOTree *treep = (LLVOTree *)drawablep->getVObj().get();
-
- LLColor4U color(255,255,255,255);
-
- if (!selecting || treep->mGLName != 0)
- {
- if (selecting)
- {
- S32 name = treep->mGLName;
-
- color = LLColor4U((U8)(name >> 16), (U8)(name >> 8), (U8)name, 255);
- }
-
- gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
- //glPushMatrix();
- F32 mat[16];
- for (U32 i = 0; i < 16; i++)
- mat[i] = (F32) gGLModelView[i];
-
- LLMatrix4 matrix(mat);
-
- // Translate to tree base HACK - adjustment in Z plants tree underground
- const LLVector3 &pos_agent = treep->getPositionAgent();
- //glTranslatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
- LLMatrix4 trans_mat;
- trans_mat.setTranslation(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
- trans_mat *= matrix;
-
- // Rotate to tree position and bend for current trunk/wind
- // Note that trunk stiffness controls the amount of bend at the trunk as
- // opposed to the crown of the tree
- //
- const F32 TRUNK_STIFF = 22.f;
-
- LLQuaternion rot =
- LLQuaternion(treep->mTrunkBend.magVec()*TRUNK_STIFF*DEG_TO_RAD, LLVector4(treep->mTrunkBend.mV[VX], treep->mTrunkBend.mV[VY], 0)) *
- LLQuaternion(90.f*DEG_TO_RAD, LLVector4(0,0,1)) *
- treep->getRotation();
-
- LLMatrix4 rot_mat(rot);
- rot_mat *= trans_mat;
-
- F32 radius = treep->getScale().magVec()*0.05f;
- LLMatrix4 scale_mat;
- scale_mat.mMatrix[0][0] =
- scale_mat.mMatrix[1][1] =
- scale_mat.mMatrix[2][2] = radius;
-
- scale_mat *= rot_mat;
-
- const F32 THRESH_ANGLE_FOR_BILLBOARD = 15.f;
- const F32 BLEND_RANGE_FOR_BILLBOARD = 3.f;
-
- F32 droop = treep->mDroop + 25.f*(1.f - treep->mTrunkBend.magVec());
-
- S32 stop_depth = 0;
- F32 app_angle = treep->getAppAngle()*LLVOTree::sTreeFactor;
- F32 alpha = 1.0;
- S32 trunk_LOD = LLVOTree::sMAX_NUM_TREE_LOD_LEVELS;
-
- for (S32 j = 0; j < 4; j++)
- {
-
- if (app_angle > LLVOTree::sLODAngles[j])
- {
- trunk_LOD = j;
- break;
- }
- }
- if(trunk_LOD >= LLVOTree::sMAX_NUM_TREE_LOD_LEVELS)
- {
- continue ; //do not render.
- }
-
- if (app_angle < (THRESH_ANGLE_FOR_BILLBOARD - BLEND_RANGE_FOR_BILLBOARD))
- {
- //
- // Draw only the billboard
- //
- // Only the billboard, can use closer to normal alpha func.
- stop_depth = -1;
- LLFacePool::LLOverrideFaceColor clr(this, color);
- indices_drawn += treep->drawBranchPipeline(scale_mat, indicesp, trunk_LOD, stop_depth, treep->mDepth, treep->mTrunkDepth, 1.0, treep->mTwist, droop, treep->mBranches, alpha);
- }
- else // if (app_angle > (THRESH_ANGLE_FOR_BILLBOARD + BLEND_RANGE_FOR_BILLBOARD))
- {
- //
- // Draw only the full geometry tree
- //
- //stop_depth = (app_angle < THRESH_ANGLE_FOR_RECURSION_REDUCTION);
- LLFacePool::LLOverrideFaceColor clr(this, color);
- indices_drawn += treep->drawBranchPipeline(scale_mat, indicesp, trunk_LOD, stop_depth, treep->mDepth, treep->mTrunkDepth, 1.0, treep->mTwist, droop, treep->mBranches, alpha);
- }
-
- //glPopMatrix();
- }
- }
+ gDeferredTreeShadowProgram.unbind();
}
BOOL LLDrawPoolTree::verify() const
diff --git a/indra/newview/lldrawpooltree.h b/indra/newview/lldrawpooltree.h
index ddb259bb82..e7e25453cf 100644
--- a/indra/newview/lldrawpooltree.h
+++ b/indra/newview/lldrawpooltree.h
@@ -68,9 +68,6 @@ public:
/*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display
static S32 sDiffTex;
-
-private:
- void renderTree(BOOL selecting = FALSE);
};
#endif // LL_LLDRAWPOOLTREE_H
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 31c14361b5..4f6eaa5a5b 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -59,6 +59,8 @@ BOOL LLDrawPoolWater::sSkipScreenCopy = FALSE;
BOOL LLDrawPoolWater::sNeedsReflectionUpdate = TRUE;
BOOL LLDrawPoolWater::sNeedsDistortionUpdate = TRUE;
LLColor4 LLDrawPoolWater::sWaterFogColor = LLColor4(0.2f, 0.5f, 0.5f, 0.f);
+F32 LLDrawPoolWater::sWaterFogEnd = 0.f;
+
LLVector3 LLDrawPoolWater::sLightDir;
LLDrawPoolWater::LLDrawPoolWater() :
@@ -219,7 +221,7 @@ void LLDrawPoolWater::render(S32 pass)
water_color.setVec(1.f, 1.f, 1.f, 0.5f*(1.f + up_dot));
}
- glColor4fv(water_color.mV);
+ gGL.diffuseColor4fv(water_color.mV);
// Automatically generate texture coords for detail map
glEnable(GL_TEXTURE_GEN_S); //texture unit 1
@@ -275,15 +277,15 @@ void LLDrawPoolWater::render(S32 pass)
gSky.mVOSkyp->getCubeMap()->enable(0);
gSky.mVOSkyp->getCubeMap()->bind();
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
LLMatrix4 camera_mat = LLViewerCamera::getInstance()->getModelview();
LLMatrix4 camera_rot(camera_mat.getMat3());
camera_rot.invert();
- glLoadMatrixf((F32 *)camera_rot.mMatrix);
+ gGL.loadMatrix((F32 *)camera_rot.mMatrix);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
LLOverrideFaceColor overrid(this, 1.f, 1.f, 1.f, 0.5f*up_dot);
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
@@ -310,9 +312,9 @@ void LLDrawPoolWater::render(S32 pass)
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
@@ -332,6 +334,21 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
{
LLVOSky *voskyp = gSky.mVOSkyp;
+ LLGLSLShader* shader = NULL;
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ if (LLPipeline::sUnderWaterRender)
+ {
+ shader = &gObjectSimpleNonIndexedTexGenWaterProgram;
+ }
+ else
+ {
+ shader = &gObjectSimpleNonIndexedTexGenProgram;
+ }
+
+ shader->bind();
+ }
+
stop_glerror();
// Depth sorting and write to depth buffer
@@ -354,10 +371,13 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
gGL.getTexUnit(0)->bind(mOpaqueWaterImagep);
// Automatically generate texture coords for water texture
- glEnable(GL_TEXTURE_GEN_S); //texture unit 0
- glEnable(GL_TEXTURE_GEN_T); //texture unit 0
- glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
- glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ if (!shader)
+ {
+ glEnable(GL_TEXTURE_GEN_S); //texture unit 0
+ glEnable(GL_TEXTURE_GEN_T); //texture unit 0
+ glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+ }
// Use the fact that we know all water faces are the same size
// to save some computation
@@ -380,10 +400,18 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
F32 tp0[4] = { 16.f / 256.f, 0.0f, 0.0f, offset };
F32 tp1[4] = { 0.0f, 16.f / 256.f, 0.0f, offset };
- glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0);
- glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1);
+ if (!shader)
+ {
+ glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0);
+ glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1);
+ }
+ else
+ {
+ shader->uniform4fv("object_plane_s", 1, tp0);
+ shader->uniform4fv("object_plane_t", 1, tp1);
+ }
- glColor3f(1.f, 1.f, 1.f);
+ gGL.diffuseColor3f(1.f, 1.f, 1.f);
for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
iter != mDrawFace.end(); iter++)
@@ -399,9 +427,12 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
stop_glerror();
- // Reset the settings back to expected values
- glDisable(GL_TEXTURE_GEN_S); //texture unit 0
- glDisable(GL_TEXTURE_GEN_T); //texture unit 0
+ if (!shader)
+ {
+ // Reset the settings back to expected values
+ glDisable(GL_TEXTURE_GEN_S); //texture unit 0
+ glDisable(GL_TEXTURE_GEN_T); //texture unit 0
+ }
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
@@ -623,8 +654,6 @@ void LLDrawPoolWater::shade()
water_color.mV[3] = 0.9f;
}
- glColor4fv(water_color.mV);
-
{
LLGLEnable depth_clamp(gGLManager.mHasDepthClamp ? GL_DEPTH_CLAMP : 0);
LLGLDisable cullface(GL_CULL_FACE);
diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h
index 99b541ca5a..aeeba179d6 100644
--- a/indra/newview/lldrawpoolwater.h
+++ b/indra/newview/lldrawpoolwater.h
@@ -49,6 +49,7 @@ public:
static LLVector3 sLightDir;
static LLColor4 sWaterFogColor;
+ static F32 sWaterFogEnd;
enum
{
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 79a835fd14..caf15fe1cb 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -100,12 +100,12 @@ void LLDrawPoolWLSky::beginRenderPass( S32 pass )
{
sky_shader =
LLPipeline::sUnderWaterRender ?
- &gObjectSimpleWaterProgram :
+ &gObjectFullbrightNoColorWaterProgram :
&gWLSkyProgram;
cloud_shader =
LLPipeline::sUnderWaterRender ?
- &gObjectSimpleWaterProgram :
+ &gObjectFullbrightNoColorWaterProgram :
&gWLCloudProgram;
}
@@ -130,33 +130,33 @@ void LLDrawPoolWLSky::renderDome(F32 camHeightLocal, LLGLSLShader * shader) cons
llassert_always(NULL != shader);
- glPushMatrix();
+ gGL.pushMatrix();
//chop off translation
if (LLPipeline::sReflectionRender && origin.mV[2] > 256.f)
{
- glTranslatef(origin.mV[0], origin.mV[1], 256.f-origin.mV[2]*0.5f);
+ gGL.translatef(origin.mV[0], origin.mV[1], 256.f-origin.mV[2]*0.5f);
}
else
{
- glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+ gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
}
// the windlight sky dome works most conveniently in a coordinate system
// where Y is up, so permute our basis vectors accordingly.
- glRotatef(120.f, 1.f / F_SQRT3, 1.f / F_SQRT3, 1.f / F_SQRT3);
+ gGL.rotatef(120.f, 1.f / F_SQRT3, 1.f / F_SQRT3, 1.f / F_SQRT3);
- glScalef(0.333f, 0.333f, 0.333f);
+ gGL.scalef(0.333f, 0.333f, 0.333f);
- glTranslatef(0.f,-camHeightLocal, 0.f);
+ gGL.translatef(0.f,-camHeightLocal, 0.f);
// Draw WL Sky
shader->uniform3f("camPosLocal", 0.f, camHeightLocal, 0.f);
gSky.mVOWLSkyp->drawDome();
- glPopMatrix();
+ gGL.popMatrix();
}
void LLDrawPoolWLSky::renderSkyHaze(F32 camHeightLocal) const
@@ -197,7 +197,7 @@ void LLDrawPoolWLSky::renderStars(void) const
gGL.getTexUnit(0)->bind(gSky.mVOSkyp->getBloomTex());
gGL.pushMatrix();
- glRotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f);
+ gGL.rotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f);
// gl_FragColor.rgb = gl_Color.rgb;
// gl_FragColor.a = gl_Color.a * star_alpha.a;
if (LLGLSLShader::sNoFixedFunction)
@@ -267,10 +267,6 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
if (gSky.mVOSkyp->getMoon().getDraw() && face->getGeomCount())
{
- if (gPipeline.canUseVertexShaders())
- {
- gUIProgram.bind();
- }
// *NOTE: even though we already bound this texture above for the
// stars register combiners, we bind again here for defensive reasons,
// since LLImageGL::bind detects that it's a noop, and optimizes it out.
@@ -284,12 +280,18 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
color.mV[3] = llclamp(a, 0.f, 1.f);
+ if (gPipeline.canUseVertexShaders())
+ {
+ gHighlightProgram.bind();
+ }
+
LLFacePool::LLOverrideFaceColor color_override(this, color);
+
face->renderIndexed();
if (gPipeline.canUseVertexShaders())
{
- gUIProgram.unbind();
+ gHighlightProgram.unbind();
}
}
}
@@ -315,10 +317,10 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)
renderSkyHaze(camHeightLocal);
LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();
- glPushMatrix();
+ gGL.pushMatrix();
- glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+ gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
gDeferredStarProgram.bind();
// *NOTE: have to bind a texture here since register combiners blending in
@@ -332,7 +334,7 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)
gDeferredStarProgram.unbind();
- glPopMatrix();
+ gGL.popMatrix();
renderSkyClouds(camHeightLocal);
@@ -360,9 +362,9 @@ void LLDrawPoolWLSky::render(S32 pass)
renderSkyHaze(camHeightLocal);
LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();
- glPushMatrix();
+ gGL.pushMatrix();
- glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+ gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
// *NOTE: have to bind a texture here since register combiners blending in
// renderStars() requires something to be bound and we might as well only
@@ -374,7 +376,7 @@ void LLDrawPoolWLSky::render(S32 pass)
renderStars();
- glPopMatrix();
+ gGL.popMatrix();
renderSkyClouds(camHeightLocal);
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index fb9958ee9d..5d6081a35c 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -41,6 +41,7 @@
#include "llviewerdisplay.h"
#include "llrender.h"
#include "pipeline.h"
+#include "llglslshader.h"
// static
LLViewerDynamicTexture::instance_list_t LLViewerDynamicTexture::sInstances[ LLViewerDynamicTexture::ORDER_COUNT ];
@@ -207,6 +208,9 @@ BOOL LLViewerDynamicTexture::updateAllInstances()
return TRUE;
}
+ LLGLSLShader::bindNoShader();
+ LLVertexBuffer::unbind();
+
BOOL result = FALSE;
BOOL ret = FALSE ;
for( S32 order = 0; order < ORDER_COUNT; order++ )
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 432e61f6d8..6dbeae6677 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -496,14 +496,14 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
gGL.pushMatrix();
if (mDrawablep->isActive())
{
- glMultMatrixf((GLfloat*)mDrawablep->getRenderMatrix().mMatrix);
+ gGL.multMatrix((GLfloat*)mDrawablep->getRenderMatrix().mMatrix);
}
else
{
- glMultMatrixf((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix);
+ gGL.multMatrix((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix);
}
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
if (mDrawablep->isState(LLDrawable::RIGGED))
{
@@ -515,7 +515,7 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
{
LLGLEnable offset(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.f, -1.f);
- glMultMatrixf((F32*) volume->getRelativeXform().mMatrix);
+ gGL.multMatrix((F32*) volume->getRelativeXform().mMatrix);
const LLVolumeFace& vol_face = rigged->getVolumeFace(getTEOffset());
LLVertexBuffer::unbind();
glVertexPointer(3, GL_FLOAT, 16, vol_face.mPositions);
@@ -524,6 +524,7 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 8, vol_face.mTexCoords);
}
+ gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, vol_face.mNumIndices, GL_UNSIGNED_SHORT, vol_face.mIndices);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
@@ -557,17 +558,17 @@ void LLFace::renderSelectedUV()
// add green dither pattern on top of red/blue gradient
gGL.blendFunc(LLRender::BF_ONE, LLRender::BF_ONE);
- glMatrixMode(GL_TEXTURE);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.pushMatrix();
// make green pattern repeat once per texel in red/blue texture
- glScalef(256.f, 256.f, 1.f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.scalef(256.f, 256.f, 1.f);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
renderSelected(green_imagep, LLColor4::white);
- glMatrixMode(GL_TEXTURE);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.blendFunc(LLRender::BF_SOURCE_ALPHA, LLRender::BF_ONE_MINUS_SOURCE_ALPHA);
}
*/
@@ -1055,6 +1056,7 @@ static LLFastTimer::DeclareTimer FTM_FACE_GEOM_POSITION("Position");
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_NORMAL("Normal");
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_TEXTURE("Texture");
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_COLOR("Color");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_EMISSIVE("Emissive");
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_WEIGHTS("Weights");
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_BINORMAL("Binormal");
static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX("Index");
@@ -1071,6 +1073,11 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
S32 num_vertices = (S32)vf.mNumVertices;
S32 num_indices = (S32) vf.mNumIndices;
+ if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_OCTREE))
+ {
+ updateRebuildFlags();
+ }
+
bool map_range = gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange;
if (mVertexBuffer.notNull())
@@ -1124,6 +1131,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
bool rebuild_pos = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_POSITION);
bool rebuild_color = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_COLOR);
+ bool rebuild_emissive = rebuild_color && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_EMISSIVE);
bool rebuild_tcoord = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_TCOORD);
bool rebuild_normal = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL);
bool rebuild_binormal = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_BINORMAL);
@@ -1213,7 +1221,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1438,7 +1446,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
else
@@ -1585,7 +1593,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
if (do_bump)
@@ -1622,7 +1630,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
}
@@ -1650,6 +1658,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
while(dst < end);
F32 index = (F32) (mTextureIndex < 255 ? mTextureIndex : 0);
+
+ llassert(index <= LLGLSLShader::sIndexedTextureChannels-1);
F32 *index_dst = (F32*) vertices;
F32 *index_end = (F32*) end;
@@ -1672,7 +1682,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1692,7 +1702,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1712,7 +1722,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1724,7 +1734,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
LLVector4a::memcpyNonAliased16((F32*) weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32));
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1754,10 +1764,48 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
+ if (rebuild_emissive)
+ {
+ LLFastTimer t(FTM_FACE_GEOM_EMISSIVE);
+ LLStrider<LLColor4U> emissive;
+ mVertexBuffer->getEmissiveStrider(emissive, mGeomIndex, mGeomCount, map_range);
+
+ U8 glow = (U8) llclamp((S32) (getTextureEntry()->getGlow()*255), 0, 255);
+
+ LLVector4a src;
+
+
+ U32 glow32 = glow |
+ (glow << 8) |
+ (glow << 16) |
+ (glow << 24);
+
+ U32 vec[4];
+ vec[0] = vec[1] = vec[2] = vec[3] = glow32;
+
+ src.loadua((F32*) vec);
+
+ LLVector4a* dst = (LLVector4a*) emissive.get();
+ S32 num_vecs = num_vertices/4;
+ if (num_vertices%4 > 0)
+ {
+ ++num_vecs;
+ }
+
+ for (S32 i = 0; i < num_vecs; i++)
+ {
+ dst[i] = src;
+ }
+
+ if (map_range)
+ {
+ mVertexBuffer->flush();
+ }
+ }
if (rebuild_tcoord)
{
mTexExtents[0].setVec(0,0);
@@ -2014,7 +2062,7 @@ BOOL LLFace::verify(const U32* indices_array) const
}
// First, check whether the face data fits within the pool's range.
- if ((mGeomIndex + mGeomCount) > mVertexBuffer->getRequestedVerts())
+ if ((mGeomIndex + mGeomCount) > mVertexBuffer->getNumVerts())
{
ok = FALSE;
llinfos << "Face references invalid vertices!" << llendl;
@@ -2033,7 +2081,7 @@ BOOL LLFace::verify(const U32* indices_array) const
llinfos << "Face has bogus indices count" << llendl;
}
- if (mIndicesIndex + mIndicesCount > mVertexBuffer->getRequestedIndices())
+ if (mIndicesIndex + mIndicesCount > mVertexBuffer->getNumIndices())
{
ok = FALSE;
llinfos << "Face references invalid indices!" << llendl;
@@ -2095,7 +2143,7 @@ void LLFace::renderSetColor() const
{
const LLColor4* color = &(getRenderColor());
- glColor4fv(color->mV);
+ gGL.diffuseColor4fv(color->mV);
}
}
@@ -2130,10 +2178,10 @@ S32 LLFace::renderElements(const U16 *index_array) const
}
else
{
- glPushMatrix();
- glMultMatrixf((float*)getRenderMatrix().mMatrix);
+ gGL.pushMatrix();
+ gGL.multMatrix((float*)getRenderMatrix().mMatrix);
ret = pushVertices(index_array);
- glPopMatrix();
+ gGL.popMatrix();
}
return ret;
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index b5eaeecd60..82e4ab61b7 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -329,13 +329,9 @@ public:
{
return lhs->getTexture() < rhs->getTexture();
}
- else if (lte->getBumpShinyFullbright() != rte->getBumpShinyFullbright())
- {
- return lte->getBumpShinyFullbright() < rte->getBumpShinyFullbright();
- }
else
{
- return lte->getGlow() < rte->getGlow();
+ return lte->getBumpShinyFullbright() < rte->getBumpShinyFullbright();
}
}
};
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index a161428c2b..233038daba 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -105,6 +105,7 @@ void LLFastTimerView::onPause()
if (!LLFastTimer::sPauseHistory)
{
mScrollIndex = 0;
+ LLFastTimer::sResetHistory = true;
getChild<LLButton>("pause_btn")->setLabel(getString("pause"));
}
else
@@ -591,6 +592,7 @@ void LLFastTimerView::draw()
{
mAvgCountTotal = ticks;
mMaxCountTotal = ticks;
+ LLFastTimer::sResetHistory = false;
}
}
@@ -1125,10 +1127,10 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t
LLPointer<LLImageRaw> scratch = new LLImageRaw(1024, 512, 3);
gGL.pushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.05, 1.05, -0.05, 1.05, -1.0, 1.0);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.loadIdentity();
+ gGL.ortho(-0.05f, 1.05f, -0.05f, 1.05f, -1.0f, 1.0f);
//render charts
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1367,7 +1369,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t
buffer.flush();
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
}
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 0b17d64eb0..4f2fd47488 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -31,6 +31,7 @@
#include "llfocusmgr.h"
#include "llinventory.h"
#include "lllandmarkactions.h"
+#include "lltoolbarview.h"
#include "lltrans.h"
#include "lluictrlfactory.h"
#include "llmenugl.h"
@@ -41,10 +42,10 @@
#include "llinventoryclipboard.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "lllandmarkactions.h"
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
#include "llviewermenu.h"
@@ -54,6 +55,7 @@
static LLDefaultChildRegistry::Register<LLFavoritesBarCtrl> r("favorites_bar");
const S32 DROP_DOWN_MENU_WIDTH = 250;
+const S32 DROP_DOWN_MENU_TOP_PAD = 13;
/**
* Helper for LLFavoriteLandmarkButton and LLFavoriteLandmarkMenuItem.
@@ -360,7 +362,7 @@ struct LLFavoritesSort
LLFavoritesBarCtrl::Params::Params()
: image_drag_indication("image_drag_indication"),
- chevron_button("chevron_button"),
+ more_button("more_button"),
label("label")
{
}
@@ -389,10 +391,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
gInventory.addObserver(this);
//make chevron button
- LLButton::Params chevron_button_params(p.chevron_button);
- chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
- mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params);
- addChild(mChevronButton);
+ LLTextBox::Params more_button_params(p.more_button);
+ mMoreTextBox = LLUICtrlFactory::create<LLTextBox> (more_button_params);
+ mMoreTextBox->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
+ addChild(mMoreTextBox);
LLTextBox::Params label_param(p.label);
mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param);
@@ -403,8 +405,8 @@ LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
{
gInventory.removeObserver(this);
- LLView::deleteViewByHandle(mOverflowMenuHandle);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mOverflowMenuHandle.get();
+ delete mContextMenuHandle.get();
}
BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
@@ -441,17 +443,17 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
{
setLandingTab(dest);
}
- /*
- * the condition dest == NULL can be satisfied not only in the case
- * of dragging to the right from the last tab of the favbar. there is a
- * small gap between each tab. if the user drags something exactly there
- * then mLandingTab will be set to NULL and the dragged item will be pushed
- * to the end of the favorites bar. this is incorrect behavior. that's why
- * we need an additional check which excludes the case described previously
- * making sure that the mouse pointer is beyond the last tab.
- */
- else if (mLastTab && x >= mLastTab->getRect().mRight)
+ else if (mLastTab && (x >= mLastTab->getRect().mRight))
{
+ /*
+ * the condition dest == NULL can be satisfied not only in the case
+ * of dragging to the right from the last tab of the favbar. there is a
+ * small gap between each tab. if the user drags something exactly there
+ * then mLandingTab will be set to NULL and the dragged item will be pushed
+ * to the end of the favorites bar. this is incorrect behavior. that's why
+ * we need an additional check which excludes the case described previously
+ * making sure that the mouse pointer is beyond the last tab.
+ */
setLandingTab(NULL);
}
@@ -465,7 +467,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
if (drop)
{
handleExistingFavoriteDragAndDrop(x, y);
- showDragMarker(FALSE);
}
}
else
@@ -488,7 +489,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
setLandingTab(NULL);
}
handleNewFavoriteDragAndDrop(item, favorites_id, x, y);
- showDragMarker(FALSE);
}
}
}
@@ -502,20 +502,29 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
{
+ // Identify the button hovered and the side to drop
LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
+ bool insert_before = true;
+ if (!dest)
+ {
+ insert_before = false;
+ dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab);
+ }
- // there is no need to handle if an item was dragged onto itself
+ // There is no need to handle if an item was dragged onto itself
if (dest && dest->getLandmarkId() == mDragItemId)
{
return;
}
+ // Insert the dragged item in the right place
if (dest)
{
- LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId());
+ LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId(), insert_before);
}
else
{
+ // This can happen when the item list is empty
mItems.push_back(gInventory.getItem(mDragItemId));
}
@@ -532,22 +541,35 @@ void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, const LLUUID& favorites_id, S32 x, S32 y)
{
- LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
-
- // there is no need to handle if an item was dragged onto itself
+ // Identify the button hovered and the side to drop
+ LLFavoriteLandmarkButton* dest = NULL;
+ bool insert_before = true;
+ if (!mItems.empty())
+ {
+ dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
+ if (!dest)
+ {
+ insert_before = false;
+ dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab);
+ }
+ }
+
+ // There is no need to handle if an item was dragged onto itself
if (dest && dest->getLandmarkId() == mDragItemId)
{
return;
}
-
+
LLPointer<LLViewerInventoryItem> viewer_item = new LLViewerInventoryItem(item);
+ // Insert the dragged item in the right place
if (dest)
{
- insertBeforeItem(mItems, dest->getLandmarkId(), viewer_item);
+ insertItem(mItems, dest->getLandmarkId(), viewer_item, insert_before);
}
else
{
+ // This can happen when the item list is empty
mItems.push_back(viewer_item);
}
@@ -577,7 +599,11 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con
if (tool_dad->getSource() == LLToolDragAndDrop::SOURCE_NOTECARD)
{
viewer_item->setType(LLAssetType::AT_LANDMARK);
- copy_inventory_from_notecard(tool_dad->getObjectID(), tool_dad->getSourceID(), viewer_item.get(), gInventoryCallbacks.registerCB(cb));
+ copy_inventory_from_notecard(favorites_id,
+ tool_dad->getObjectID(),
+ tool_dad->getSourceID(),
+ viewer_item.get(),
+ gInventoryCallbacks.registerCB(cb));
}
else
{
@@ -640,7 +666,7 @@ void LLFavoritesBarCtrl::draw()
{
// mouse pointer hovers over an existing tab
LLRect rect = mLandingTab->getRect();
- mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h);
+ mImageDragIndication->draw(rect.mLeft, rect.getHeight(), w, h);
}
else if (mLastTab)
{
@@ -648,6 +674,8 @@ void LLFavoritesBarCtrl::draw()
LLRect rect = mLastTab->getRect();
mImageDragIndication->draw(rect.mRight, rect.getHeight(), w, h);
}
+ // Once drawn, mark this false so we won't draw it again (unless we hit the favorite bar again)
+ mShowDragMarker = FALSE;
}
}
@@ -692,7 +720,7 @@ void LLFavoritesBarCtrl::updateButtons()
const child_list_t* childs = getChildList();
child_list_const_iter_t child_it = childs->begin();
int first_changed_item_index = 0;
- int rightest_point = getRect().mRight - mChevronButton->getRect().getWidth();
+ int rightest_point = getRect().mRight - mMoreTextBox->getRect().getWidth();
//lets find first changed button
while (child_it != childs->end() && first_changed_item_index < mItems.count())
{
@@ -719,7 +747,7 @@ void LLFavoritesBarCtrl::updateButtons()
if (first_changed_item_index <= mItems.count())
{
// Rebuild the buttons only
- // child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator
+ // child_list_t is a linked list, so safe to erase from the middle if we pre-increment the iterator
while (child_it != childs->end())
{
@@ -735,9 +763,9 @@ void LLFavoritesBarCtrl::updateButtons()
}
// we have to remove ChevronButton to make sure that the last item will be LandmarkButton to get the right aligning
// keep in mind that we are cutting all buttons in space between the last visible child of favbar and ChevronButton
- if (mChevronButton->getParent() == this)
+ if (mMoreTextBox->getParent() == this)
{
- removeChild(mChevronButton);
+ removeChild(mMoreTextBox);
}
int last_right_edge = 0;
//calculate new buttons offset
@@ -777,13 +805,13 @@ void LLFavoritesBarCtrl::updateButtons()
S32 buttonHGap = button_params.rect.left; // default value
LLRect rect;
// Chevron button should stay right aligned
- rect.setOriginAndSize(getRect().mRight - mChevronButton->getRect().getWidth() - buttonHGap, 0,
- mChevronButton->getRect().getWidth(),
- mChevronButton->getRect().getHeight());
+ rect.setOriginAndSize(getRect().mRight - mMoreTextBox->getRect().getWidth() - buttonHGap, 0,
+ mMoreTextBox->getRect().getWidth(),
+ mMoreTextBox->getRect().getHeight());
- addChild(mChevronButton);
- mChevronButton->setRect(rect);
- mChevronButton->setVisible(TRUE);
+ addChild(mMoreTextBox);
+ mMoreTextBox->setRect(rect);
+ mMoreTextBox->setVisible(TRUE);
}
// Update overflow menu
LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mOverflowMenuHandle.get());
@@ -808,16 +836,16 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
/**
* WORKAROUND:
- * there are some problem with displaying of fonts in buttons.
- * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough.
- * Problem will gone, if we stretch out the button. For that reason I have to put additional 20 pixels.
+ * There are some problem with displaying of fonts in buttons.
+ * Empty space or ellipsis might be displayed instead of last symbols, even though the width of the button is enough.
+ * The problem disappears if we pad the button with 20 pixels.
*/
int required_width = mFont->getWidth(item->getName()) + 20;
int width = required_width > def_button_width? def_button_width : required_width;
LLFavoriteLandmarkButton* fav_btn = NULL;
- // do we have a place for next button + double buttonHGap + mChevronButton ?
- if(curr_x + width + 2*button_x_delta + mChevronButton->getRect().getWidth() > getRect().mRight )
+ // do we have a place for next button + double buttonHGap + mMoreTextBox ?
+ if(curr_x + width + 2*button_x_delta + mMoreTextBox->getRect().getWidth() > getRect().mRight )
{
return NULL;
}
@@ -838,7 +866,6 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
fav_btn->setRect(butt_rect);
// change only left and save bottom
fav_btn->setFont(mFont);
- fav_btn->setName(item->getName());
fav_btn->setLabel(item->getName());
fav_btn->setToolTip(item->getName());
fav_btn->setCommitCallback(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
@@ -893,84 +920,157 @@ void LLFavoritesBarCtrl::showDropDownMenu()
{
if (mOverflowMenuHandle.isDead())
{
- LLToggleableMenu::Params menu_p;
- menu_p.name("favorites menu");
- menu_p.can_tear_off(false);
- menu_p.visible(false);
- menu_p.scrollable(true);
- menu_p.max_scrollable_items = 10;
- menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
-
- LLToggleableMenu* menu = LLUICtrlFactory::create<LLFavoriteLandmarkToggleableMenu>(menu_p);
- mOverflowMenuHandle = menu->getHandle();
+ createOverflowMenu();
}
LLToggleableMenu* menu = (LLToggleableMenu*)mOverflowMenuHandle.get();
+ if (menu && menu->toggleVisibility())
+ {
+ if (mUpdateDropDownItems)
+ {
+ updateMenuItems(menu);
+ }
- if (menu)
+ menu->buildDrawLabels();
+ menu->updateParent(LLMenuGL::sMenuContainer);
+ menu->setButtonRect(mMoreTextBox->getRect(), this);
+ positionAndShowMenu(menu);
+ }
+}
+
+void LLFavoritesBarCtrl::createOverflowMenu()
+{
+ LLToggleableMenu::Params menu_p;
+ menu_p.name("favorites menu");
+ menu_p.can_tear_off(false);
+ menu_p.visible(false);
+ menu_p.scrollable(true);
+ menu_p.max_scrollable_items = 10;
+ menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
+
+ LLToggleableMenu* menu = LLUICtrlFactory::create<LLFavoriteLandmarkToggleableMenu>(menu_p);
+ mOverflowMenuHandle = menu->getHandle();
+}
+
+void LLFavoritesBarCtrl::updateMenuItems(LLToggleableMenu* menu)
+{
+ menu->empty();
+
+ U32 widest_item = 0;
+
+ for (S32 i = mFirstDropDownItem; i < mItems.count(); i++)
{
- if (!menu->toggleVisibility())
- return;
+ LLViewerInventoryItem* item = mItems.get(i);
+ const std::string& item_name = item->getName();
- U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
- if (mUpdateDropDownItems)
+ LLFavoriteLandmarkMenuItem::Params item_params;
+ item_params.name(item_name);
+ item_params.label(item_name);
+ item_params.on_click.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
+
+ LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
+ menu_item->initFavoritesBarPointer(this);
+ menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID(), _1, _2, _3, _4));
+ menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
+ menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
+ menu_item->setLandmarkID(item->getUUID());
+
+ fitLabelWidth(menu_item);
+
+ widest_item = llmax(widest_item, menu_item->getNominalWidth());
+
+ menu->addChild(menu_item);
+ }
+
+ addOpenLandmarksMenuItem(menu);
+ mUpdateDropDownItems = false;
+}
+
+void LLFavoritesBarCtrl::fitLabelWidth(LLMenuItemCallGL* menu_item)
+{
+ U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
+ std::string item_name = menu_item->getName();
+
+ // Check whether item name wider than menu
+ if (menu_item->getNominalWidth() > max_width)
+ {
+ S32 chars_total = item_name.length();
+ S32 chars_fitted = 1;
+ menu_item->setLabel(LLStringExplicit(""));
+ S32 label_space = max_width - menu_item->getFont()->getWidth("...") -
+ menu_item->getNominalWidth();// This returns width of menu item with empty label (pad pixels)
+
+ while (chars_fitted < chars_total
+ && menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space)
{
- menu->empty();
+ chars_fitted++;
+ }
+ chars_fitted--; // Rolling back one char, that doesn't fit
- U32 widest_item = 0;
+ menu_item->setLabel(item_name.substr(0, chars_fitted) + "...");
+ }
+}
- for (S32 i = mFirstDropDownItem; i < mItems.count(); i++)
- {
- LLViewerInventoryItem* item = mItems.get(i);
- const std::string& item_name = item->getName();
-
- LLFavoriteLandmarkMenuItem::Params item_params;
- item_params.name(item_name);
- item_params.label(item_name);
-
- item_params.on_click.function(boost::bind(
- &LLFavoritesBarCtrl::onButtonClick, this,
- item->getUUID()));
- LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
- menu_item->initFavoritesBarPointer(this);
- menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID(), _1, _2, _3, _4));
- menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
- menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
- menu_item->setLandmarkID(item->getUUID());
-
- // Check whether item name wider than menu
- if (menu_item->getNominalWidth() > max_width)
- {
- S32 chars_total = item_name.length();
- S32 chars_fitted = 1;
- menu_item->setLabel(LLStringExplicit(""));
- S32 label_space = max_width - menu_item->getFont()->getWidth("...") -
- menu_item->getNominalWidth();// This returns width of menu item with empty label (pad pixels)
-
- while (chars_fitted < chars_total
- && menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space)
- {
- chars_fitted++;
- }
- chars_fitted--; // Rolling back one char, that doesn't fit
+void LLFavoritesBarCtrl::addOpenLandmarksMenuItem(LLToggleableMenu* menu)
+{
+ std::string label_untrans = "Open landmarks";
+ std::string label_transl;
+ bool translated = LLTrans::findString(label_transl, label_untrans);
+
+ LLMenuItemCallGL::Params item_params;
+ item_params.name("open_my_landmarks");
+ item_params.label(translated ? label_transl: label_untrans);
+ LLSD key;
+ key["type"] = "open_landmark_tab";
+ item_params.on_click.function(boost::bind(&LLFloaterSidePanelContainer::showPanel, "places", key));
+ LLMenuItemCallGL* menu_item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params);
+
+ fitLabelWidth(menu_item);
+
+ LLMenuItemSeparatorGL::Params sep_params;
+ sep_params.enabled_color=LLUIColorTable::instance().getColor("MenuItemEnabledColor");
+ sep_params.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
+ sep_params.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
+ sep_params.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
+ LLMenuItemSeparatorGL* separator = LLUICtrlFactory::create<LLMenuItemSeparatorGL>(sep_params);
+
+ menu->addChild(separator);
+ menu->addChild(menu_item);
+}
- menu_item->setLabel(item_name.substr(0, chars_fitted)
- + "...");
- }
- widest_item = llmax(widest_item, menu_item->getNominalWidth());
+void LLFavoritesBarCtrl::positionAndShowMenu(LLToggleableMenu* menu)
+{
+ U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
- menu->addChild(menu_item);
- }
- mUpdateDropDownItems = false;
+ S32 menu_x = getRect().getWidth() - max_width;
+ S32 menu_y = getParent()->getRect().mBottom - DROP_DOWN_MENU_TOP_PAD;
+
+ // the menu should be offset of the right edge of the window
+ // so it's no covered by buttons in the right-side toolbar.
+ LLToolBar* right_toolbar = gToolBarView->getChild<LLToolBar>("toolbar_right");
+ if (right_toolbar && right_toolbar->hasButtons())
+ {
+ S32 toolbar_top = 0;
+
+ if (LLView* top_border_panel = right_toolbar->getChild<LLView>("button_panel"))
+ {
+ toolbar_top = top_border_panel->calcScreenRect().mTop;
}
- menu->buildDrawLabels();
- menu->updateParent(LLMenuGL::sMenuContainer);
+ // Calculating the bottom (in screen coord) of the drop down menu
+ S32 menu_top = getParent()->getRect().mBottom - DROP_DOWN_MENU_TOP_PAD;
+ S32 menu_bottom = menu_top - menu->getRect().getHeight();
+ S32 menu_bottom_screen = 0;
- menu->setButtonRect(mChevronButton->getRect(), this);
+ localPointToScreen(0, menu_bottom, &menu_top, &menu_bottom_screen);
- LLMenuGL::showPopup(this, menu, getRect().getWidth() - max_width, 0);
+ if (menu_bottom_screen < toolbar_top)
+ {
+ menu_x -= right_toolbar->getRect().getWidth();
+ }
}
+
+ LLMenuGL::showPopup(this, menu, menu_x, menu_y);
}
void LLFavoritesBarCtrl::onButtonClick(LLUUID item_id)
@@ -1057,7 +1157,7 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
key["type"] = "landmark";
key["id"] = mSelectedItemID;
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
else if (action == "copy_slurl")
{
@@ -1103,7 +1203,9 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
LLToggleableMenu* menu = (LLToggleableMenu*) mOverflowMenuHandle.get();
if (mRestoreOverflowMenu && menu && !menu->getVisible())
{
+ menu->resetScrollPositionOnShow(false);
showDropDownMenu();
+ menu->resetScrollPositionOnShow(true);
}
}
@@ -1225,25 +1327,24 @@ BOOL LLFavoritesBarCtrl::handleHover(S32 x, S32 y, MASK mask)
LLUICtrl* LLFavoritesBarCtrl::findChildByLocalCoords(S32 x, S32 y)
{
- LLUICtrl* ctrl = 0;
- S32 screenX, screenY;
+ LLUICtrl* ctrl = NULL;
const child_list_t* list = getChildList();
- localPointToScreen(x, y, &screenX, &screenY);
-
- // look for a child which contains the point (screenX, screenY) in it's rectangle
for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i)
{
- LLRect rect;
- localRectToScreen((*i)->getRect(), &rect);
-
- if (rect.pointInRect(screenX, screenY))
+ // Look only for children that are favorite buttons
+ if ((*i)->getName() == "favorites_bar_btn")
{
- ctrl = dynamic_cast<LLUICtrl*>(*i);
- break;
+ LLRect rect = (*i)->getRect();
+ // We consider a button hit if the cursor is left of the right side
+ // This makes the hit a bit less finicky than hitting directly on the button itself
+ if (x <= rect.mRight)
+ {
+ ctrl = dynamic_cast<LLUICtrl*>(*i);
+ break;
+ }
}
}
-
return ctrl;
}
@@ -1264,29 +1365,28 @@ BOOL LLFavoritesBarCtrl::needToSaveItemsOrder(const LLInventoryModel::item_array
return result;
}
-LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
+void LLFavoritesBarCtrl::insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before)
{
- LLInventoryModel::item_array_t::iterator result = items.end();
+ // Get the iterator to the destination item
+ LLInventoryModel::item_array_t::iterator it_dest = LLInventoryModel::findItemIterByUUID(items, dest_item_id);
+ if (it_dest == items.end())
+ return;
- for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+ // Go to the next element if one wishes to insert after the dest element
+ if (!insert_before)
{
- if ((*i)->getUUID() == id)
- {
- result = i;
- break;
- }
+ ++it_dest;
}
-
- return result;
-}
-
-void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem)
-{
- LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId);
- llassert(beforeItem);
- if (beforeItem)
+
+ // Insert the source item in the right place
+ if (it_dest != items.end())
+ {
+ items.insert(it_dest, insertedItem);
+ }
+ else
{
- items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+ // Append to the list if it_dest reached the end
+ items.push_back(insertedItem);
}
}
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 1a28731c4f..2f75b3bb0e 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -34,13 +34,16 @@
#include "llinventoryobserver.h"
#include "llinventorymodel.h"
+class LLMenuItemCallGL;
+class LLToggleableMenu;
+
class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
{
public:
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
{
Optional<LLUIImage*> image_drag_indication;
- Optional<LLButton::Params> chevron_button;
+ Optional<LLTextBox::Params> more_button;
Optional<LLTextBox::Params> label;
Params();
};
@@ -127,15 +130,26 @@ private:
* inserts an item identified by insertedItemId BEFORE an item identified by beforeItemId.
* this function assumes that an item identified by insertedItemId doesn't exist in items array.
*/
- void insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem);
+ void insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before);
// finds an item by it's UUID in the items array
LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
+ void createOverflowMenu();
+
+ void updateMenuItems(LLToggleableMenu* menu);
+
+ // Fits menu item label width with favorites menu width
+ void fitLabelWidth(LLMenuItemCallGL* menu_item);
+
+ void addOpenLandmarksMenuItem(LLToggleableMenu* menu);
+
+ void positionAndShowMenu(LLToggleableMenu* menu);
+
BOOL mShowDragMarker;
LLUICtrl* mLandingTab;
LLUICtrl* mLastTab;
- LLButton* mChevronButton;
+ LLTextBox* mMoreTextBox;
LLTextBox* mBarLabel;
LLUUID mDragItemId;
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index db9a0424c0..08f9d26705 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -51,6 +51,7 @@
#include "llcontrol.h"
#include "llboost.h"
#include "llweb.h"
+#include "llviewershadermgr.h"
#if LL_WINDOWS
#include "lldxhardware.h"
@@ -662,8 +663,10 @@ void LLFeatureManager::applyFeatures(bool skipFeatures)
void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
{
- applyBaseMasks();
+ LLViewerShaderMgr::sSkipReload = true;
+ applyBaseMasks();
+
switch (level)
{
case 0:
@@ -684,6 +687,9 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
}
applyFeatures(skipFeatures);
+
+ LLViewerShaderMgr::sSkipReload = false;
+ LLViewerShaderMgr::instance()->setShaders();
}
void LLFeatureManager::applyBaseMasks()
@@ -725,7 +731,7 @@ void LLFeatureManager::applyBaseMasks()
{
maskFeatures("NoPixelShaders");
}
- if (!gGLManager.mHasVertexShader)
+ if (!gGLManager.mHasVertexShader || !mGPUSupported)
{
maskFeatures("NoVertexShaders");
}
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 8c0ed29855..4897cf1885 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -653,12 +653,12 @@ OSStatus LLFilePicker::doNavChooseDialog(ELoadFilter filter)
// (It is destroyed by NavDialogDispose() below.)
error = NavCreateChooseFileDialog(&mNavOptions, NULL, NULL, NULL, navOpenFilterProc, (void*)(&filter), &navRef);
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
if (error == noErr)
error = NavDialogRun(navRef);
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
if (error == noErr)
error = NavDialogGetReply(navRef, &navReply);
@@ -808,13 +808,13 @@ OSStatus LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& fi
}
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
// Run the dialog
if (error == noErr)
error = NavDialogRun(navRef);
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
if (error == noErr)
error = NavDialogGetReply(navRef, &navReply);
@@ -1204,7 +1204,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
return FALSE;
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
reset();
@@ -1284,7 +1284,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
rtn = (getFileCount() == 1);
}
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
return rtn;
}
@@ -1299,7 +1299,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
return FALSE;
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
reset();
@@ -1337,7 +1337,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
rtn = (getFileCount() == 1);
}
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
return rtn;
}
@@ -1352,7 +1352,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
return FALSE;
}
- gViewerWindow->mWindow->beforeDialog();
+ gViewerWindow->getWindow()->beforeDialog();
reset();
@@ -1370,7 +1370,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
rtn = !mFiles.empty();
}
- gViewerWindow->mWindow->afterDialog();
+ gViewerWindow->getWindow()->afterDialog();
return rtn;
}
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 22f500ba15..83fb887d81 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -384,6 +384,9 @@ void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url)
// Render the LLSD from getInfo() as a format_map_t
LLStringUtil::format_map_t args;
+ // allow the "Release Notes" URL label to be localized
+ args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
+
for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
ii != iend; ++ii)
{
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 1f334815d6..2a3512e21a 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -1063,14 +1063,19 @@ BOOL LLPreviewAnimation::render()
mNeedsUpdate = FALSE;
LLVOAvatar* avatarp = mDummyAvatar;
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
- glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+ gGL.loadIdentity();
+ gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
LLGLSUIDefault def;
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1078,10 +1083,10 @@ BOOL LLPreviewAnimation::render()
gl_rect_2d_simple( mFullWidth, mFullHeight );
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
gGL.flush();
diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp
new file mode 100644
index 0000000000..bdc5b581a9
--- /dev/null
+++ b/indra/newview/llfloateravatar.cpp
@@ -0,0 +1,54 @@
+/**
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloateravatar.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterAvatar::LLFloaterAvatar(const LLSD& key)
+ : LLFloater(key)
+{
+}
+
+LLFloaterAvatar::~LLFloaterAvatar()
+{
+}
+
+BOOL LLFloaterAvatar::postBuild()
+{
+ enableResizeCtrls(true, true, false);
+ return TRUE;
+}
+
+
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
new file mode 100644
index 0000000000..cadc5e4028
--- /dev/null
+++ b/indra/newview/llfloateravatar.h
@@ -0,0 +1,43 @@
+/**
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FLOATER_AVATAR_H
+#define LL_FLOATER_AVATAR_H
+
+#include "llfloater.h"
+
+class LLFloaterAvatar:
+ public LLFloater
+{
+ friend class LLFloaterReg;
+private:
+ LLFloaterAvatar(const LLSD& key);
+ /*virtual*/ ~LLFloaterAvatar();
+ /*virtual*/ BOOL postBuild();
+};
+
+#endif
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index 1dfa904a19..21b58d3e3d 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -36,7 +36,6 @@
#include "lljoystickbutton.h"
#include "llviewercontrol.h"
#include "llviewercamera.h"
-#include "llbottomtray.h"
#include "lltoolmgr.h"
#include "lltoolfocus.h"
#include "llslider.h"
@@ -314,12 +313,6 @@ void LLFloaterCamera::onOpen(const LLSD& key)
{
LLFirstUse::viewPopup();
- LLButton *anchor_panel = LLBottomTray::getInstance()->getChild<LLButton>("camera_btn");
-
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP));
-
mZoom->onOpen(key);
// Returns to previous mode, see EXT-2727(View tool should remember state).
@@ -343,27 +336,23 @@ void LLFloaterCamera::onClose(bool app_quitting)
if (mCurrMode == CAMERA_CTRL_MODE_PAN)
mPrevMode = CAMERA_CTRL_MODE_PAN;
- // HACK: Should always close as docked to prevent toggleInstance without calling onOpen.
- if ( !isDocked() )
- setDocked(true);
switchMode(CAMERA_CTRL_MODE_PAN);
mClosed = TRUE;
}
LLFloaterCamera::LLFloaterCamera(const LLSD& val)
-: LLTransientDockableFloater(NULL, true, val),
+: LLFloater(val),
mClosed(FALSE),
mCurrMode(CAMERA_CTRL_MODE_PAN),
mPrevMode(CAMERA_CTRL_MODE_PAN)
{
- LLHints::registerHintTarget("view_popup", LLView::getHandle());
+ LLHints::registerHintTarget("view_popup", getHandle());
+ mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
}
// virtual
BOOL LLFloaterCamera::postBuild()
{
- setIsChrome(TRUE);
- setTitleVisible(TRUE); // restore title visibility after chrome applying
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
mRotate = getChild<LLJoystickCameraRotate>(ORBIT);
@@ -379,7 +368,7 @@ BOOL LLFloaterCamera::postBuild()
// ensure that appearance mode is handled while building. See EXT-7796.
handleAvatarEditingAppearance(sAppearanceEditing);
- return LLDockableFloater::postBuild();
+ return LLFloater::postBuild();
}
void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel)
@@ -444,26 +433,6 @@ void LLFloaterCamera::setMode(ECameraControlMode mode)
updateState();
}
-void LLFloaterCamera::setModeTitle(const ECameraControlMode mode)
-{
- std::string title;
- switch(mode)
- {
- case CAMERA_CTRL_MODE_MODES:
- title = getString("camera_modes_title");
- break;
- case CAMERA_CTRL_MODE_PAN:
- title = getString("pan_mode_title");
- break;
- case CAMERA_CTRL_MODE_PRESETS:
- title = getString("presets_mode_title");
- break;
- default:
- break;
- }
- setTitle(title);
-}
-
void LLFloaterCamera::switchMode(ECameraControlMode mode)
{
setMode(mode);
@@ -543,7 +512,6 @@ void LLFloaterCamera::updateState()
{
iter->second->setToggleState(iter->first == mCurrMode);
}
- setModeTitle(mCurrMode);
}
void LLFloaterCamera::updateItemsSelection()
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 424191ef26..4d6d03f22d 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -27,7 +27,7 @@
#ifndef LLFLOATERCAMERA_H
#define LLFLOATERCAMERA_H
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
#include "lliconctrl.h"
#include "lltextbox.h"
#include "llflatlistview.h"
@@ -45,8 +45,7 @@ enum ECameraControlMode
CAMERA_CTRL_MODE_PRESETS
};
-class LLFloaterCamera
- : public LLTransientDockableFloater
+class LLFloaterCamera : public LLFloater
{
friend class LLFloaterReg;
@@ -103,9 +102,6 @@ private:
/* sets a new mode preserving previous one and updates ui*/
void setMode(ECameraControlMode mode);
- /** set title appropriate to passed mode */
- void setModeTitle(const ECameraControlMode mode);
-
/* updates the state (UI) according to the current mode */
void updateState();
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
deleted file mode 100644
index 2679dbb78b..0000000000
--- a/indra/newview/llfloaterchat.cpp
+++ /dev/null
@@ -1,485 +0,0 @@
-/**
- * @file llfloaterchat.cpp
- * @brief LLFloaterChat class implementation
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-/**
- * Actually the "Chat History" floater.
- * Should be llfloaterchathistory, not llfloaterchat.
- */
-
-#include "llviewerprecompiledheaders.h"
-
-// project include
-#include "llagent.h"
-#include "llappviewer.h"
-#include "llbutton.h"
-#include "llcheckboxctrl.h"
-#include "llcombobox.h"
-#include "llconsole.h"
-#include "llfloateractivespeakers.h"
-#include "llfloaterchatterbox.h"
-#include "llfloaterreg.h"
-#include "llfloaterscriptdebug.h"
-#include "llkeyboard.h"
-//#include "lllineeditor.h"
-#include "llmutelist.h"
-//#include "llresizehandle.h"
-#include "llchatbar.h"
-#include "llrecentpeople.h"
-#include "llpanelblockedlist.h"
-#include "llslurl.h"
-#include "llstatusbar.h"
-#include "llviewertexteditor.h"
-#include "llviewergesture.h" // for triggering gestures
-#include "llviewermessage.h"
-#include "llviewerwindow.h"
-#include "llviewercontrol.h"
-#include "lluictrlfactory.h"
-#include "lllogchat.h"
-#include "lltexteditor.h"
-#include "lltextparser.h"
-#include "llweb.h"
-#include "llstylemap.h"
-
-// linden library includes
-#include "llaudioengine.h"
-#include "llchat.h"
-#include "llfontgl.h"
-#include "llrect.h"
-#include "llerror.h"
-#include "llstring.h"
-#include "llwindow.h"
-#include "message.h"
-
-//
-// Constants
-//
-const F32 INSTANT_MSG_SIZE = 8.0f;
-const F32 CHAT_MSG_SIZE = 8.0f;
-
-
-//
-// Global statics
-//
-LLColor4 get_text_color(const LLChat& chat);
-
-//
-// Member Functions
-//
-LLFloaterChat::LLFloaterChat(const LLSD& seed)
- : LLFloater(seed),
- mPanel(NULL)
-{
- mFactoryMap["chat_panel"] = LLCallbackMap(createChatPanel, NULL);
- mFactoryMap["active_speakers_panel"] = LLCallbackMap(createSpeakersPanel, NULL);
- //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_chat_history.xml");
-
-}
-
-LLFloaterChat::~LLFloaterChat()
-{
- // Children all cleaned up by default view destructor.
-}
-
-void LLFloaterChat::draw()
-{
- // enable say and shout only when text available
-
- childSetValue("toggle_active_speakers_btn", childIsVisible("active_speakers_panel"));
-
- LLChatBar* chat_barp = findChild<LLChatBar>("chat_panel", TRUE);
- if (chat_barp)
- {
- chat_barp->refresh();
- }
-
- mPanel->refreshSpeakers();
- LLFloater::draw();
-}
-
-BOOL LLFloaterChat::postBuild()
-{
- // Hide the chat overlay when our history is visible.
- setVisibleCallback(boost::bind(&LLFloaterChat::updateConsoleVisibility, this));
-
- mPanel = (LLPanelActiveSpeakers*)getChild<LLPanel>("active_speakers_panel");
-
- childSetCommitCallback("show mutes",onClickToggleShowMute,this); //show mutes
- childSetVisible("Chat History Editor with mute",FALSE);
- childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this);
-
- return TRUE;
-}
-
-void LLFloaterChat::updateConsoleVisibility()
-{
- if(gDisconnected)
- {
- return;
- }
- // determine whether we should show console due to not being visible
- gConsole->setVisible( !isInVisibleChain() // are we not in part of UI being drawn?
- || isMinimized() // are we minimized?
- || (getHost() && getHost()->isMinimized() )); // are we hosted in a minimized floater?
-}
-
-void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4& color)
-{
- std::string line = chat.mText;
- bool prepend_newline = true;
- if (gSavedSettings.getBOOL("ChatShowTimestamps"))
- {
- edit->appendTime(prepend_newline);
- prepend_newline = false;
- }
-
- // If the msg is from an agent (not yourself though),
- // extract out the sender name and replace it with the hotlinked name.
- if (chat.mSourceType == CHAT_SOURCE_AGENT &&
- chat.mFromID != LLUUID::null)
- {
- chat.mURL = LLSLURL("agent", chat.mFromID, "inspect").getSLURLString();
- }
-
- // If the chat line has an associated url, link it up to the name.
- if (!chat.mURL.empty()
- && (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0))
- {
- std::string start_line = line.substr(0, chat.mFromName.length() + 1);
- line = line.substr(chat.mFromName.length() + 1);
- edit->appendText(start_line, prepend_newline, LLStyleMap::instance().lookup(chat.mFromID,chat.mURL));
- edit->blockUndo();
- prepend_newline = false;
- }
- edit->appendText(line, prepend_newline, LLStyle::Params().color(color));
- edit->blockUndo();
-}
-
-// static
-void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
-{
- if (log_to_file && (gSavedPerAccountSettings.getBOOL("LogChat")))
- {
- if (chat.mChatType != CHAT_TYPE_WHISPER && chat.mChatType != CHAT_TYPE_SHOUT)
- {
- LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
- }
- else
- {
- LLLogChat::saveHistory("chat", "", chat.mFromID, chat.mFromName + " " + chat.mText);
- }
- }
-
- LLColor4 color = get_text_color(chat);
-
- if (!log_to_file) color = LLColor4::grey; //Recap from log file.
-
- if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
- {
- if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
- return;
- if (gSavedSettings.getS32("ShowScriptErrorsLocation") == 1)
- {
- LLFloaterScriptDebug::addScriptLine(chat.mText,
- chat.mFromName,
- color,
- chat.mFromID);
- return;
- }
- }
-
- // could flash the chat button in the status bar here. JC
- LLFloaterChat* chat_floater = LLFloaterChat::getInstance();
- LLViewerTextEditor* history_editor = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor");
- LLViewerTextEditor* history_editor_with_mute = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
-
- if (!chat.mMuted)
- {
- add_timestamped_line(history_editor, chat, color);
- add_timestamped_line(history_editor_with_mute, chat, color);
- }
- else
- {
- // desaturate muted chat
- LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f);
- add_timestamped_line(history_editor_with_mute, chat, color);
- }
-
- // add objects as transient speakers that can be muted
- if (chat.mSourceType == CHAT_SOURCE_OBJECT)
- {
- chat_floater->mPanel->setSpeaker(chat.mFromID, chat.mFromName, LLSpeaker::STATUS_NOT_IN_CHANNEL, LLSpeaker::SPEAKER_OBJECT);
- }
-
- // start tab flashing on incoming text from other users (ignoring system text, etc)
- if (!chat_floater->isInVisibleChain() && chat.mSourceType == CHAT_SOURCE_AGENT)
- {
- LLFloaterChatterBox::getInstance()->setFloaterFlashing(chat_floater, TRUE);
- }
-}
-
-// static
-void LLFloaterChat::setHistoryCursorAndScrollToEnd()
-{
- LLViewerTextEditor* history_editor = LLFloaterChat::getInstance()->getChild<LLViewerTextEditor>("Chat History Editor");
- LLViewerTextEditor* history_editor_with_mute = LLFloaterChat::getInstance()->getChild<LLViewerTextEditor>("Chat History Editor with mute");
-
- if (history_editor)
- {
- history_editor->setCursorAndScrollToEnd();
- }
- if (history_editor_with_mute)
- {
- history_editor_with_mute->setCursorAndScrollToEnd();
- }
-}
-
-
-//static
-void LLFloaterChat::onClickMute(void *data)
-{
- LLFloaterChat* self = (LLFloaterChat*)data;
-
- LLComboBox* chatter_combo = self->getChild<LLComboBox>("chatter combobox");
-
- const std::string& name = chatter_combo->getSimple();
- LLUUID id = chatter_combo->getCurrentID();
-
- if (name.empty()) return;
-
- LLMute mute(id);
- mute.setFromDisplayName(name);
- LLMuteList::getInstance()->add(mute);
- LLPanelBlockedList::showPanelAndSelect(mute.mID);
-}
-
-//static
-void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
-{
- LLFloaterChat* floater = (LLFloaterChat*)data;
-
-
- //LLCheckBoxCtrl*
- BOOL show_mute = floater->getChild<LLCheckBoxCtrl>("show mutes")->get();
- LLViewerTextEditor* history_editor = floater->getChild<LLViewerTextEditor>("Chat History Editor");
- LLViewerTextEditor* history_editor_with_mute = floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
-
- if (!history_editor || !history_editor_with_mute)
- return;
-
- //BOOL show_mute = floater->mShowMuteCheckBox->get();
- if (show_mute)
- {
- history_editor->setVisible(FALSE);
- history_editor_with_mute->setVisible(TRUE);
- history_editor_with_mute->setCursorAndScrollToEnd();
- }
- else
- {
- history_editor->setVisible(TRUE);
- history_editor_with_mute->setVisible(FALSE);
- history_editor->setCursorAndScrollToEnd();
- }
-}
-
-// Put a line of chat in all the right places
-void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent)
-{
- triggerAlerts(chat.mText);
-
- // Add the sender to the list of people with which we've recently interacted.
- // this is not the best place to add _all_ messages to recent list
- // comment this for now, may remove later on code cleanup
- //if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())
- // LLRecentPeople::instance().add(chat.mFromID);
-
- addChatHistory(chat, true);
-}
-
-// Moved from lltextparser.cpp to break llui/llaudio library dependency.
-//static
-void LLFloaterChat::triggerAlerts(const std::string& text)
-{
- LLTextParser* parser = LLTextParser::getInstance();
-// bool spoken=FALSE;
- for (S32 i=0;i<parser->mHighlights.size();i++)
- {
- LLSD& highlight = parser->mHighlights[i];
- if (parser->findPattern(text,highlight) >= 0 )
- {
- if(gAudiop)
- {
- if ((std::string)highlight["sound_lluuid"] != LLUUID::null.asString())
- {
- gAudiop->triggerSound(highlight["sound_lluuid"].asUUID(),
- gAgent.getID(),
- 1.f,
- LLAudioEngine::AUDIO_TYPE_UI,
- gAgent.getPositionGlobal() );
- }
-/*
- if (!spoken)
- {
- LLTextToSpeech* text_to_speech = NULL;
- text_to_speech = LLTextToSpeech::getInstance();
- spoken = text_to_speech->speak((LLString)highlight["voice"],text);
- }
- */
- }
- if (highlight["flash"])
- {
- LLWindow* viewer_window = gViewerWindow->getWindow();
- if (viewer_window && viewer_window->getMinimized())
- {
- viewer_window->flashIcon(5.f);
- }
- }
- }
- }
-}
-
-LLColor4 get_text_color(const LLChat& chat)
-{
- LLColor4 text_color;
-
- if(chat.mMuted)
- {
- text_color.setVec(0.8f, 0.8f, 0.8f, 1.f);
- }
- else
- {
- switch(chat.mSourceType)
- {
- case CHAT_SOURCE_SYSTEM:
- text_color = LLUIColorTable::instance().getColor("SystemChatColor");
- break;
- case CHAT_SOURCE_AGENT:
- if (chat.mFromID.isNull())
- {
- text_color = LLUIColorTable::instance().getColor("SystemChatColor");
- }
- else
- {
- if(gAgent.getID() == chat.mFromID)
- {
- text_color = LLUIColorTable::instance().getColor("UserChatColor");
- }
- else
- {
- text_color = LLUIColorTable::instance().getColor("AgentChatColor");
- }
- }
- break;
- case CHAT_SOURCE_OBJECT:
- if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
- {
- text_color = LLUIColorTable::instance().getColor("ScriptErrorColor");
- }
- else if ( chat.mChatType == CHAT_TYPE_OWNER )
- {
- text_color = LLUIColorTable::instance().getColor("llOwnerSayChatColor");
- }
- else
- {
- text_color = LLUIColorTable::instance().getColor("ObjectChatColor");
- }
- break;
- default:
- text_color.setToWhite();
- }
-
- if (!chat.mPosAgent.isExactlyZero())
- {
- LLVector3 pos_agent = gAgent.getPositionAgent();
- F32 distance_squared = dist_vec_squared(pos_agent, chat.mPosAgent);
- F32 dist_near_chat = gAgent.getNearChatRadius();
- if (distance_squared > dist_near_chat * dist_near_chat)
- {
- // diminish far-off chat
- text_color.mV[VALPHA] = 0.8f;
- }
- }
- }
-
- return text_color;
-}
-
-//static
-void LLFloaterChat::loadHistory()
-{
- LLLogChat::loadHistory(std::string("chat"), &chatFromLogFile, (void *)LLFloaterChat::getInstance());
-}
-
-//static
-void LLFloaterChat::chatFromLogFile(LLLogChat::ELogLineType type , const LLSD& line, void* userdata)
-{
- switch (type)
- {
- case LLLogChat::LOG_EMPTY:
- case LLLogChat::LOG_END:
- // *TODO: nice message from XML file here
- break;
- case LLLogChat::LOG_LINE:
- case LLLogChat::LOG_LLSD:
- {
- LLChat chat;
- chat.mText = line["message"].asString();
- get_text_color(chat);
- addChatHistory(chat, FALSE);
- }
- break;
- default:
- // nothing
- break;
- }
-}
-
-//static
-void* LLFloaterChat::createSpeakersPanel(void* data)
-{
- return new LLPanelActiveSpeakers(LLLocalSpeakerMgr::getInstance(), TRUE);
-}
-
-//static
-void* LLFloaterChat::createChatPanel(void* data)
-{
- LLChatBar* chatp = new LLChatBar();
- return chatp;
-}
-
-// static
-void LLFloaterChat::onClickToggleActiveSpeakers(void* userdata)
-{
- LLFloaterChat* self = (LLFloaterChat*)userdata;
-
- self->childSetVisible("active_speakers_panel", !self->childIsVisible("active_speakers_panel"));
-}
-
-//static
- LLFloaterChat* LLFloaterChat::getInstance()
- {
- return LLFloaterReg::getTypedInstance<LLFloaterChat>("chat", LLSD()) ;
-
- }
diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h
deleted file mode 100644
index fb2aabbfdf..0000000000
--- a/indra/newview/llfloaterchat.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * @file llfloaterchat.h
- * @brief LLFloaterChat class definition
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-/*
- * Actually the "Chat History" floater.
- * Should be llfloaterchathistory, not llfloaterchat.
- */
-
-#ifndef LL_LLFLOATERCHAT_H
-#define LL_LLFLOATERCHAT_H
-
-#include "llfloater.h"
-#include "lllogchat.h"
-
-class LLChat;
-class LLPanelActiveSpeakers;
-class LLLogChat;
-
-class LLFloaterChat : public LLFloater
-{
-public:
- LLFloaterChat(const LLSD& seed);
- ~LLFloaterChat();
-
- virtual void draw();
- virtual BOOL postBuild();
-
- void updateConsoleVisibility();
-
- static void setHistoryCursorAndScrollToEnd();
-
- // *TODO:Skinning - move these to LLChat (or LLViewerChat?)
- // Add chat to console and history list.
- // Color based on source, type, distance.
- static void addChat(const LLChat& chat, BOOL local_agent = FALSE);
- // Add chat to history alone.
- static void addChatHistory(const LLChat& chat, bool log_to_file = true);
-
- static void triggerAlerts(const std::string& text);
-
- static void onClickMute(void *data);
- static void onClickToggleShowMute(LLUICtrl* caller, void *data);
- static void onClickToggleActiveSpeakers(void* userdata);
- static void chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& line, void* userdata);
- static void loadHistory();
- static void* createSpeakersPanel(void* data);
- static void* createChatPanel(void* data);
-
- static LLFloaterChat* getInstance(); // *TODO:Skinning Deprecate
-
- LLPanelActiveSpeakers* mPanel;
- BOOL mScrolledToEnd;
-};
-
-#endif
diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp
deleted file mode 100644
index dc33e45dd4..0000000000
--- a/indra/newview/llfloaterchatterbox.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/**
- * @file llfloaterchatterbox.cpp
- * @author Richard
- * @date 2007-05-08
- * @brief Implementation of the chatterbox integrated conversation ui
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloaterreg.h"
-#include "llfloaterchatterbox.h"
-#include "lluictrlfactory.h"
-#include "llfloaterfriends.h"
-#include "llfloatergroups.h"
-#include "llviewercontrol.h"
-#include "llvoicechannel.h"
-#include "llimpanel.h"
-#include "llimview.h"
-
-//
-// LLFloaterMyFriends
-//
-
-LLFloaterMyFriends::LLFloaterMyFriends(const LLSD& seed)
- : LLFloater(seed)
-{
- mFactoryMap["friends_panel"] = LLCallbackMap(LLFloaterMyFriends::createFriendsPanel, NULL);
- mFactoryMap["groups_panel"] = LLCallbackMap(LLFloaterMyFriends::createGroupsPanel, NULL);
- //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_my_friends.xml");
-}
-
-LLFloaterMyFriends::~LLFloaterMyFriends()
-{
-}
-
-BOOL LLFloaterMyFriends::postBuild()
-{
- return TRUE;
-}
-
-void LLFloaterMyFriends::onOpen(const LLSD& key)
-{
- if (key.asString() == "friends")
- {
- childShowTab("friends_and_groups", "friends_panel");
- }
- else if (key.asString() == "groups")
- {
- childShowTab("friends_and_groups", "groups_panel");
- }
-}
-
-//static
-void* LLFloaterMyFriends::createFriendsPanel(void* data)
-{
- return new LLPanelFriends();
-}
-
-//static
-void* LLFloaterMyFriends::createGroupsPanel(void* data)
-{
- return new LLPanelGroups();
-}
-
-//static
-LLFloaterMyFriends* LLFloaterMyFriends::getInstance()
-{
- return LLFloaterReg::getTypedInstance<LLFloaterMyFriends>("contacts", "friends") ;
-}
-
-//
-// LLFloaterChatterBox
-//
-LLFloaterChatterBox::LLFloaterChatterBox(const LLSD& seed)
-: LLMultiFloater(seed),
- mActiveVoiceFloater(NULL)
-{
- mAutoResize = FALSE;
-
- //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_chatterbox.xml", FALSE);
-}
-
-LLFloaterChatterBox::~LLFloaterChatterBox()
-{
-}
-
-BOOL LLFloaterChatterBox::postBuild()
-{
- setVisibleCallback(boost::bind(&LLFloaterChatterBox::onVisibilityChange, this, _2));
-
- if (gSavedSettings.getBOOL("ContactsTornOff"))
- {
- LLFloaterMyFriends* floater_contacts = LLFloaterMyFriends::getInstance();
- if(floater_contacts)
- {
- // add then remove to set up relationship for re-attach
- addFloater(floater_contacts, FALSE);
- removeFloater(floater_contacts);
- // reparent to floater view
- gFloaterView->addChild(floater_contacts);
- }
- }
- else
- {
- addFloater(LLFloaterMyFriends::getInstance(), TRUE);
- }
-
- mTabContainer->lockTabs();
- return TRUE;
-}
-
-BOOL LLFloaterChatterBox::handleKeyHere(KEY key, MASK mask)
-{
- if (key == 'W' && mask == MASK_CONTROL)
- {
- LLFloater* floater = getActiveFloater();
- // is user closeable and is system closeable
- if (floater && floater->canClose())
- {
- if (floater->isCloseable())
- {
- floater->closeFloater();
- }
- else
- {
- // close chatterbox window if frontmost tab is reserved, non-closeable tab
- // such as contacts or near me
- closeFloater();
- }
- }
- return TRUE;
- }
-
- return LLMultiFloater::handleKeyHere(key, mask);
-}
-
-void LLFloaterChatterBox::draw()
-{
- // clear new im notifications when chatterbox is visible
- if (!isMinimized())
- {
- gIMMgr->clearNewIMNotification();
- }
- LLFloater* current_active_floater = getCurrentVoiceFloater();
- // set icon on tab for floater currently associated with active voice channel
- if(mActiveVoiceFloater != current_active_floater)
- {
- // remove image from old floater's tab
- if (mActiveVoiceFloater)
- {
- mTabContainer->setTabImage(mActiveVoiceFloater, "");
- }
- }
-
- // update image on current active tab
- if (current_active_floater)
- {
- LLColor4 icon_color = LLColor4::white;
- LLVoiceChannel* channelp = LLVoiceChannel::getCurrentVoiceChannel();
- if (channelp)
- {
- if (channelp->isActive())
- {
- icon_color = LLColor4::green;
- }
- else if (channelp->getState() == LLVoiceChannel::STATE_ERROR)
- {
- icon_color = LLColor4::red;
- }
- else // active, but not connected
- {
- icon_color = LLColor4::yellow;
- }
- }
- mTabContainer->setTabImage(current_active_floater, "active_voice_tab.tga", icon_color);
- }
-
- mActiveVoiceFloater = current_active_floater;
-
- LLMultiFloater::draw();
-}
-
-void LLFloaterChatterBox::onOpen(const LLSD& key)
-{
- //*TODO:Skinning show the session id associated with key
- if (key.asString() == "local")
- {
- }
- else if (key.isDefined())
- {
- /*LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID());
- if (impanel)
- {
- impanel->openFloater();
- }*/
- }
-}
-
-void LLFloaterChatterBox::onVisibilityChange ( const LLSD& new_visibility )
-{
-}
-
-void LLFloaterChatterBox::removeFloater(LLFloater* floaterp)
-{
- if(!floaterp) return;
-
- if (floaterp->getName() == "chat floater")
- {
- // only my friends floater now locked
- mTabContainer->lockTabs(mTabContainer->getNumLockedTabs() - 1);
- gSavedSettings.setBOOL("ChatHistoryTornOff", TRUE);
- floaterp->setCanClose(TRUE);
- }
- else if (floaterp->getName() == "floater_my_friends")
- {
- // only chat floater now locked
- mTabContainer->lockTabs(mTabContainer->getNumLockedTabs() - 1);
- gSavedSettings.setBOOL("ContactsTornOff", TRUE);
- floaterp->setCanClose(TRUE);
- }
- LLMultiFloater::removeFloater(floaterp);
-}
-
-void LLFloaterChatterBox::addFloater(LLFloater* floaterp,
- BOOL select_added_floater,
- LLTabContainer::eInsertionPoint insertion_point)
-{
- if(!floaterp) return;
-
- S32 num_locked_tabs = mTabContainer->getNumLockedTabs();
-
- // already here
- if (floaterp->getHost() == this)
- {
- openFloater(floaterp->getKey());
- return;
- }
-
- // make sure my friends and chat history both locked when re-attaching chat history
- if (floaterp->getName() == "chat floater")
- {
- mTabContainer->unlockTabs();
- // add chat history as second tab if contact window is present, first tab otherwise
- if (getChildView("floater_my_friends"))
- {
- // assuming contacts window is first tab, select it
- mTabContainer->selectFirstTab();
- // and add ourselves after
- LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::RIGHT_OF_CURRENT);
- }
- else
- {
- LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::START);
- }
-
- // make sure first two tabs are now locked
- mTabContainer->lockTabs(num_locked_tabs + 1);
- gSavedSettings.setBOOL("ChatHistoryTornOff", FALSE);
- floaterp->setCanClose(FALSE);
- }
- else if (floaterp->getName() == "floater_my_friends")
- {
- mTabContainer->unlockTabs();
- // add contacts window as first tab
- LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::START);
- // make sure first two tabs are now locked
- mTabContainer->lockTabs(num_locked_tabs + 1);
- gSavedSettings.setBOOL("ContactsTornOff", FALSE);
- floaterp->setCanClose(FALSE);
- }
- else
- {
- LLMultiFloater::addFloater(floaterp, select_added_floater, insertion_point);
- // openFloater(floaterp->getKey());
- }
-
- // make sure active voice icon shows up for new tab
- if (floaterp == mActiveVoiceFloater)
- {
- mTabContainer->setTabImage(floaterp, "active_voice_tab.tga");
- }
-}
-
-//static
-LLFloaterChatterBox* LLFloaterChatterBox::getInstance()
-{
- return LLFloaterReg::getTypedInstance<LLFloaterChatterBox>("communicate", LLSD()) ;
-}
-
-//static
-LLFloater* LLFloaterChatterBox::getCurrentVoiceFloater()
-{
- if (!LLVoiceClient::getInstance()->voiceEnabled())
- {
- return NULL;
- }
- if (LLVoiceChannelProximal::getInstance() == LLVoiceChannel::getCurrentVoiceChannel())
- {
- return NULL;
- }
- else
- {
- LLFloaterChatterBox* floater = LLFloaterChatterBox::getInstance();
- if(!floater) return NULL;
- // iterator over all IM tabs (skip friends and near me)
- for (S32 i = 0; i < floater->getFloaterCount(); i++)
- {
- LLPanel* panelp = floater->mTabContainer->getPanelByIndex(i);
- if (panelp->getName() == "im_floater")
- {
- // only LLFloaterIMPanels are called "im_floater"
- LLFloaterIMPanel* im_floaterp = (LLFloaterIMPanel*)panelp;
- LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(im_floaterp->getSessionID());
- if (voice_channel == LLVoiceChannel::getCurrentVoiceChannel())
- {
- return im_floaterp;
- }
- }
- }
- }
- return NULL;
-}
diff --git a/indra/newview/llfloaterchatterbox.h b/indra/newview/llfloaterchatterbox.h
deleted file mode 100644
index 3a8bfe2fa4..0000000000
--- a/indra/newview/llfloaterchatterbox.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * @file llfloaterchatterbox.h
- * @author Richard
- * @date 2007-05-04
- * @brief Integrated friends and group management/communication tool
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERCHATTERBOX_H
-#define LL_LLFLOATERCHATTERBOX_H
-
-#include "llfloater.h"
-#include "llmultifloater.h"
-#include "llstring.h"
-#include "llimpanel.h"
-
-class LLTabContainer;
-
-class LLFloaterChatterBox : public LLMultiFloater
-{
-public:
- LLFloaterChatterBox(const LLSD& seed);
- virtual ~LLFloaterChatterBox();
-
- /*virtual*/ BOOL postBuild();
- /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
- /*virtual*/ void draw();
- /*virtual*/ void onOpen(const LLSD& key);
-
- /*virtual*/ void removeFloater(LLFloater* floaterp);
- /*virtual*/ void addFloater(LLFloater* floaterp,
- BOOL select_added_floater,
- LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
-
- static LLFloaterChatterBox* getInstance(); // *TODO:Skinning Deprecate
- static LLFloater* getCurrentVoiceFloater();
-
-protected:
- void onVisibilityChange ( const LLSD& new_visibility );
-
- LLFloater* mActiveVoiceFloater;
-};
-
-
-class LLFloaterMyFriends : public LLFloater
-{
-public:
- LLFloaterMyFriends(const LLSD& seed);
- virtual ~LLFloaterMyFriends();
-
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void onOpen(const LLSD& key);
-
- static LLFloaterMyFriends* getInstance(); // *TODO:Skinning Deprecate
-
- static void* createFriendsPanel(void* data);
- static void* createGroupsPanel(void* data);
-};
-
-#endif // LL_LLFLOATERCHATTERBOX_H
diff --git a/indra/newview/llfloaterdestinations.cpp b/indra/newview/llfloaterdestinations.cpp
new file mode 100644
index 0000000000..af21cb593f
--- /dev/null
+++ b/indra/newview/llfloaterdestinations.cpp
@@ -0,0 +1,54 @@
+/**
+ * @file llfloaterdestinations.h
+ * @author Leyla Farazha
+ * @brief floater for the destinations guide
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterdestinations.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterDestinations::LLFloaterDestinations(const LLSD& key)
+ : LLFloater(key)
+{
+}
+
+LLFloaterDestinations::~LLFloaterDestinations()
+{
+}
+
+BOOL LLFloaterDestinations::postBuild()
+{
+ enableResizeCtrls(true, true, false);
+ return TRUE;
+}
+
+
diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h
new file mode 100644
index 0000000000..85d9b3391e
--- /dev/null
+++ b/indra/newview/llfloaterdestinations.h
@@ -0,0 +1,43 @@
+/**
+ * @file llfloaterdestinations.h
+ * @author Leyla Farazha
+ * @brief floater for the destinations guide
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FLOATER_DESTINATIONS_H
+#define LL_FLOATER_DESTINATIONS_H
+
+#include "llfloater.h"
+
+class LLFloaterDestinations:
+ public LLFloater
+{
+ friend class LLFloaterReg;
+private:
+ LLFloaterDestinations(const LLSD& key);
+ /*virtual*/ ~LLFloaterDestinations();
+ /*virtual*/ BOOL postBuild();
+};
+
+#endif
diff --git a/indra/newview/llfloaterfriends.cpp b/indra/newview/llfloaterfriends.cpp
deleted file mode 100644
index f93568d617..0000000000
--- a/indra/newview/llfloaterfriends.cpp
+++ /dev/null
@@ -1,807 +0,0 @@
-/**
- * @file llfloaterfriends.cpp
- * @author Phoenix
- * @date 2005-01-13
- * @brief Implementation of the friends floater
- *
- * $LicenseInfo:firstyear=2005&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloaterfriends.h"
-
-#include <sstream>
-
-#include "lldir.h"
-
-#include "llagent.h"
-#include "llappviewer.h" // for gLastVersionChannel
-#include "llfloateravatarpicker.h"
-#include "llviewerwindow.h"
-#include "llbutton.h"
-#include "llavataractions.h"
-#include "llinventorymodel.h"
-#include "llnamelistctrl.h"
-#include "llnotificationsutil.h"
-#include "llresmgr.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llscrolllistcell.h"
-#include "lluictrlfactory.h"
-#include "llmenucommands.h"
-#include "llviewercontrol.h"
-#include "llviewermessage.h"
-#include "lleventtimer.h"
-#include "lltextbox.h"
-#include "llvoiceclient.h"
-
-// *TODO: Move more common stuff to LLAvatarActions?
-
-//Maximum number of people you can select to do an operation on at once.
-#define MAX_FRIEND_SELECT 20
-#define DEFAULT_PERIOD 5.0
-#define RIGHTS_CHANGE_TIMEOUT 5.0
-#define OBSERVER_TIMEOUT 0.5
-
-#define ONLINE_SIP_ICON_NAME "slim_icon_16_viewer.tga"
-
-// simple class to observe the calling cards.
-class LLLocalFriendsObserver : public LLFriendObserver, public LLEventTimer
-{
-public:
- LLLocalFriendsObserver(LLPanelFriends* floater) : mFloater(floater), LLEventTimer(OBSERVER_TIMEOUT)
- {
- mEventTimer.stop();
- }
- virtual ~LLLocalFriendsObserver()
- {
- mFloater = NULL;
- }
- virtual void changed(U32 mask)
- {
- // events can arrive quickly in bulk - we need not process EVERY one of them -
- // so we wait a short while to let others pile-in, and process them in aggregate.
- mEventTimer.start();
-
- // save-up all the mask-bits which have come-in
- mMask |= mask;
- }
- virtual BOOL tick()
- {
- mFloater->updateFriends(mMask);
-
- mEventTimer.stop();
- mMask = 0;
-
- return FALSE;
- }
-
-protected:
- LLPanelFriends* mFloater;
- U32 mMask;
-};
-
-LLPanelFriends::LLPanelFriends() :
- LLPanel(),
- LLEventTimer(DEFAULT_PERIOD),
- mObserver(NULL),
- mShowMaxSelectWarning(TRUE),
- mAllowRightsChange(TRUE),
- mNumRightsChanged(0)
-{
- mEventTimer.stop();
- mObserver = new LLLocalFriendsObserver(this);
- LLAvatarTracker::instance().addObserver(mObserver);
- // For notification when SIP online status changes.
- LLVoiceClient::getInstance()->addObserver(mObserver);
-}
-
-LLPanelFriends::~LLPanelFriends()
-{
- // For notification when SIP online status changes.
- LLVoiceClient::getInstance()->removeObserver(mObserver);
- LLAvatarTracker::instance().removeObserver(mObserver);
- delete mObserver;
-}
-
-BOOL LLPanelFriends::tick()
-{
- mEventTimer.stop();
- mPeriod = DEFAULT_PERIOD;
- mAllowRightsChange = TRUE;
- updateFriends(LLFriendObserver::ADD);
- return FALSE;
-}
-
-void LLPanelFriends::updateFriends(U32 changed_mask)
-{
- LLUUID selected_id;
- LLCtrlListInterface *friends_list = childGetListInterface("friend_list");
- if (!friends_list) return;
- LLCtrlScrollInterface *friends_scroll = childGetScrollInterface("friend_list");
- if (!friends_scroll) return;
-
- // We kill the selection warning, otherwise we'll spam with warning popups
- // if the maximum amount of friends are selected
- mShowMaxSelectWarning = false;
-
- std::vector<LLUUID> selected_friends = getSelectedIDs();
- if(changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE))
- {
- refreshNames(changed_mask);
- }
- else if(changed_mask & LLFriendObserver::POWERS)
- {
- --mNumRightsChanged;
- if(mNumRightsChanged > 0)
- {
- mPeriod = RIGHTS_CHANGE_TIMEOUT;
- mEventTimer.start();
- mAllowRightsChange = FALSE;
- }
- else
- {
- tick();
- }
- }
- if(selected_friends.size() > 0)
- {
- // only non-null if friends was already found. This may fail,
- // but we don't really care here, because refreshUI() will
- // clean up the interface.
- friends_list->setCurrentByID(selected_id);
- for(std::vector<LLUUID>::iterator itr = selected_friends.begin(); itr != selected_friends.end(); ++itr)
- {
- friends_list->setSelectedByValue(*itr, true);
- }
- }
-
- refreshUI();
- mShowMaxSelectWarning = true;
-}
-
-// virtual
-BOOL LLPanelFriends::postBuild()
-{
- mFriendsList = getChild<LLScrollListCtrl>("friend_list");
- mFriendsList->setMaxSelectable(MAX_FRIEND_SELECT);
- mFriendsList->setMaximumSelectCallback(boost::bind(&LLPanelFriends::onMaximumSelect));
- mFriendsList->setCommitOnSelectionChange(TRUE);
- mFriendsList->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
- childSetCommitCallback("friend_list", onSelectName, this);
- getChild<LLScrollListCtrl>("friend_list")->setDoubleClickCallback(onClickIM, this);
-
- U32 changed_mask = LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE;
- refreshNames(changed_mask);
-
- childSetAction("im_btn", onClickIM, this);
- childSetAction("profile_btn", onClickProfile, this);
- childSetAction("offer_teleport_btn", onClickOfferTeleport, this);
- childSetAction("pay_btn", onClickPay, this);
- childSetAction("add_btn", onClickAddFriend, this);
- childSetAction("remove_btn", onClickRemove, this);
-
- setDefaultBtn("im_btn");
-
- updateFriends(LLFriendObserver::ADD);
- refreshUI();
-
- // primary sort = online status, secondary sort = name
- mFriendsList->sortByColumn(std::string("friend_name"), TRUE);
- mFriendsList->sortByColumn(std::string("icon_online_status"), FALSE);
-
- return TRUE;
-}
-
-BOOL LLPanelFriends::addFriend(const LLUUID& agent_id)
-{
- LLAvatarTracker& at = LLAvatarTracker::instance();
- const LLRelationship* relationInfo = at.getBuddyInfo(agent_id);
- if(!relationInfo) return FALSE;
-
- bool isOnlineSIP = LLVoiceClient::getInstance()->isOnlineSIP(agent_id);
- bool isOnline = relationInfo->isOnline();
-
- std::string fullname;
- BOOL have_name = gCacheName->getFullName(agent_id, fullname);
-
- LLSD element;
- element["id"] = agent_id;
- LLSD& friend_column = element["columns"][LIST_FRIEND_NAME];
- friend_column["column"] = "friend_name";
- friend_column["value"] = fullname;
- friend_column["font"]["name"] = "SANSSERIF";
- friend_column["font"]["style"] = "NORMAL";
-
- LLSD& online_status_column = element["columns"][LIST_ONLINE_STATUS];
- online_status_column["column"] = "icon_online_status";
- online_status_column["type"] = "icon";
-
- if (isOnline)
- {
- friend_column["font"]["style"] = "BOLD";
- online_status_column["value"] = "icon_avatar_online.tga";
- }
- else if(isOnlineSIP)
- {
- friend_column["font"]["style"] = "BOLD";
- online_status_column["value"] = ONLINE_SIP_ICON_NAME;
- }
-
- LLSD& online_column = element["columns"][LIST_VISIBLE_ONLINE];
- online_column["column"] = "icon_visible_online";
- online_column["type"] = "checkbox";
- online_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS);
-
- LLSD& visible_map_column = element["columns"][LIST_VISIBLE_MAP];
- visible_map_column["column"] = "icon_visible_map";
- visible_map_column["type"] = "checkbox";
- visible_map_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION);
-
- LLSD& edit_my_object_column = element["columns"][LIST_EDIT_MINE];
- edit_my_object_column["column"] = "icon_edit_mine";
- edit_my_object_column["type"] = "checkbox";
- edit_my_object_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS);
-
- LLSD& edit_their_object_column = element["columns"][LIST_EDIT_THEIRS];
- edit_their_object_column["column"] = "icon_edit_theirs";
- edit_their_object_column["type"] = "checkbox";
- edit_their_object_column["enabled"] = "";
- edit_their_object_column["value"] = relationInfo->isRightGrantedFrom(LLRelationship::GRANT_MODIFY_OBJECTS);
-
- LLSD& update_gen_column = element["columns"][LIST_FRIEND_UPDATE_GEN];
- update_gen_column["column"] = "friend_last_update_generation";
- update_gen_column["value"] = have_name ? relationInfo->getChangeSerialNum() : -1;
-
- mFriendsList->addElement(element, ADD_BOTTOM);
- return have_name;
-}
-
-// propagate actual relationship to UI.
-// Does not resort the UI list because it can be called frequently. JC
-BOOL LLPanelFriends::updateFriendItem(const LLUUID& agent_id, const LLRelationship* info)
-{
- if (!info) return FALSE;
- LLScrollListItem* itemp = mFriendsList->getItem(agent_id);
- if (!itemp) return FALSE;
-
- bool isOnlineSIP = LLVoiceClient::getInstance()->isOnlineSIP(itemp->getUUID());
- bool isOnline = info->isOnline();
-
- std::string fullname;
- BOOL have_name = gCacheName->getFullName(agent_id, fullname);
-
- // Name of the status icon to use
- std::string statusIcon;
-
- if(isOnline)
- {
- statusIcon = "icon_avatar_online.tga";
- }
- else if(isOnlineSIP)
- {
- statusIcon = ONLINE_SIP_ICON_NAME;
- }
-
- itemp->getColumn(LIST_ONLINE_STATUS)->setValue(statusIcon);
-
- itemp->getColumn(LIST_FRIEND_NAME)->setValue(fullname);
- // render name of online friends in bold text
- ((LLScrollListText*)itemp->getColumn(LIST_FRIEND_NAME))->setFontStyle((isOnline || isOnlineSIP) ? LLFontGL::BOLD : LLFontGL::NORMAL);
- itemp->getColumn(LIST_VISIBLE_ONLINE)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS));
- itemp->getColumn(LIST_VISIBLE_MAP)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION));
- itemp->getColumn(LIST_EDIT_MINE)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS));
- S32 change_generation = have_name ? info->getChangeSerialNum() : -1;
- itemp->getColumn(LIST_FRIEND_UPDATE_GEN)->setValue(change_generation);
-
- // enable this item, in case it was disabled after user input
- itemp->setEnabled(TRUE);
-
- // Do not resort, this function can be called frequently.
- return have_name;
-}
-
-void LLPanelFriends::refreshRightsChangeList()
-{
- std::vector<LLUUID> friends = getSelectedIDs();
- S32 num_selected = friends.size();
-
- bool can_offer_teleport = num_selected >= 1;
- bool selected_friends_online = true;
-
- const LLRelationship* friend_status = NULL;
- for(std::vector<LLUUID>::iterator itr = friends.begin(); itr != friends.end(); ++itr)
- {
- friend_status = LLAvatarTracker::instance().getBuddyInfo(*itr);
- if (friend_status)
- {
- if(!friend_status->isOnline())
- {
- can_offer_teleport = false;
- selected_friends_online = false;
- }
- }
- else // missing buddy info, don't allow any operations
- {
- can_offer_teleport = false;
- }
- }
-
- if (num_selected == 0) // nothing selected
- {
- childSetEnabled("im_btn", FALSE);
- childSetEnabled("offer_teleport_btn", FALSE);
- }
- else // we have at least one friend selected...
- {
- // only allow IMs to groups when everyone in the group is online
- // to be consistent with context menus in inventory and because otherwise
- // offline friends would be silently dropped from the session
- childSetEnabled("im_btn", selected_friends_online || num_selected == 1);
- childSetEnabled("offer_teleport_btn", can_offer_teleport);
- }
-}
-
-struct SortFriendsByID
-{
- bool operator() (const LLScrollListItem* const a, const LLScrollListItem* const b) const
- {
- return a->getValue().asUUID() < b->getValue().asUUID();
- }
-};
-
-void LLPanelFriends::refreshNames(U32 changed_mask)
-{
- std::vector<LLUUID> selected_ids = getSelectedIDs();
- S32 pos = mFriendsList->getScrollPos();
-
- // get all buddies we know about
- LLAvatarTracker::buddy_map_t all_buddies;
- LLAvatarTracker::instance().copyBuddyList(all_buddies);
-
- BOOL have_names = TRUE;
-
- if(changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE))
- {
- have_names &= refreshNamesSync(all_buddies);
- }
-
- if(changed_mask & LLFriendObserver::ONLINE)
- {
- have_names &= refreshNamesPresence(all_buddies);
- }
-
- if (!have_names)
- {
- mEventTimer.start();
- }
- // Changed item in place, need to request sort and update columns
- // because we might have changed data in a column on which the user
- // has already sorted. JC
- mFriendsList->updateSort();
-
- // re-select items
- mFriendsList->selectMultiple(selected_ids);
- mFriendsList->setScrollPos(pos);
-}
-
-BOOL LLPanelFriends::refreshNamesSync(const LLAvatarTracker::buddy_map_t & all_buddies)
-{
- mFriendsList->deleteAllItems();
-
- BOOL have_names = TRUE;
- LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
-
- for(; buddy_it != all_buddies.end(); ++buddy_it)
- {
- have_names &= addFriend(buddy_it->first);
- }
-
- return have_names;
-}
-
-BOOL LLPanelFriends::refreshNamesPresence(const LLAvatarTracker::buddy_map_t & all_buddies)
-{
- std::vector<LLScrollListItem*> items = mFriendsList->getAllData();
- std::sort(items.begin(), items.end(), SortFriendsByID());
-
- LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
- std::vector<LLScrollListItem*>::const_iterator item_it = items.begin();
- BOOL have_names = TRUE;
-
- while(true)
- {
- if(item_it == items.end() || buddy_it == all_buddies.end())
- {
- break;
- }
-
- const LLUUID & buddy_uuid = buddy_it->first;
- const LLUUID & item_uuid = (*item_it)->getValue().asUUID();
- if(item_uuid == buddy_uuid)
- {
- const LLRelationship* info = buddy_it->second;
- if (!info)
- {
- ++item_it;
- continue;
- }
-
- S32 last_change_generation = (*item_it)->getColumn(LIST_FRIEND_UPDATE_GEN)->getValue().asInteger();
- if (last_change_generation < info->getChangeSerialNum())
- {
- // update existing item in UI
- have_names &= updateFriendItem(buddy_it->first, info);
- }
-
- ++buddy_it;
- ++item_it;
- }
- else if(item_uuid < buddy_uuid)
- {
- ++item_it;
- }
- else //if(item_uuid > buddy_uuid)
- {
- ++buddy_it;
- }
- }
-
- return have_names;
-}
-
-void LLPanelFriends::refreshUI()
-{
- BOOL single_selected = FALSE;
- BOOL multiple_selected = FALSE;
- int num_selected = mFriendsList->getAllSelected().size();
- if(num_selected > 0)
- {
- single_selected = TRUE;
- if(num_selected > 1)
- {
- multiple_selected = TRUE;
- }
- }
-
-
- //Options that can only be performed with one friend selected
- childSetEnabled("profile_btn", single_selected && !multiple_selected);
- childSetEnabled("pay_btn", single_selected && !multiple_selected);
-
- //Options that can be performed with up to MAX_FRIEND_SELECT friends selected
- //(single_selected will always be true in this situations)
- childSetEnabled("remove_btn", single_selected);
- childSetEnabled("im_btn", single_selected);
-// childSetEnabled("friend_rights", single_selected);
-
- refreshRightsChangeList();
-}
-
-std::vector<LLUUID> LLPanelFriends::getSelectedIDs()
-{
- LLUUID selected_id;
- std::vector<LLUUID> friend_ids;
- std::vector<LLScrollListItem*> selected = mFriendsList->getAllSelected();
- for(std::vector<LLScrollListItem*>::iterator itr = selected.begin(); itr != selected.end(); ++itr)
- {
- friend_ids.push_back((*itr)->getUUID());
- }
- return friend_ids;
-}
-
-// static
-void LLPanelFriends::onSelectName(LLUICtrl* ctrl, void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
- if(panelp)
- {
- panelp->refreshUI();
- // check to see if rights have changed
- panelp->applyRightsToFriends();
- }
-}
-
-//static
-void LLPanelFriends::onMaximumSelect()
-{
- LLSD args;
- args["MAX_SELECT"] = llformat("%d", MAX_FRIEND_SELECT);
- LLNotificationsUtil::add("MaxListSelectMessage", args);
-};
-
-// static
-void LLPanelFriends::onClickProfile(void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
- std::vector<LLUUID> ids = panelp->getSelectedIDs();
- if(ids.size() > 0)
- {
- LLUUID agent_id = ids[0];
- LLAvatarActions::showProfile(agent_id);
- }
-}
-
-// static
-void LLPanelFriends::onClickIM(void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
- std::vector<LLUUID> ids = panelp->getSelectedIDs();
- if(ids.size() > 0)
- {
- if(ids.size() == 1)
- {
- LLAvatarActions::startIM(ids[0]);
- }
- else
- {
- LLAvatarActions::startConference(ids);
- }
- }
-}
-
-// static
-void LLPanelFriends::onPickAvatar(const std::vector<std::string>& names,
- const std::vector<LLUUID>& ids)
-{
- if (names.empty()) return;
- if (ids.empty()) return;
- LLAvatarActions::requestFriendshipDialog(ids[0], names[0]);
-}
-
-// static
-void LLPanelFriends::onClickAddFriend(void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
- LLFloater* root_floater = gFloaterView->getParentFloater(panelp);
- LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(boost::bind(&LLPanelFriends::onPickAvatar, _1,_2), FALSE, TRUE);
- if (root_floater)
- {
- root_floater->addDependentFloater(picker);
- }
-}
-
-// static
-void LLPanelFriends::onClickRemove(void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
- LLAvatarActions::removeFriendsDialog(panelp->getSelectedIDs());
-}
-
-// static
-void LLPanelFriends::onClickOfferTeleport(void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
- LLAvatarActions::offerTeleport(panelp->getSelectedIDs());
-}
-
-// static
-void LLPanelFriends::onClickPay(void* user_data)
-{
- LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
- std::vector<LLUUID> ids = panelp->getSelectedIDs();
- if(ids.size() == 1)
- {
- LLAvatarActions::pay(ids[0]);
- }
-}
-
-void LLPanelFriends::confirmModifyRights(rights_map_t& ids, EGrantRevoke command)
-{
- if (ids.empty()) return;
-
- LLSD args;
- if(ids.size() > 0)
- {
- rights_map_t* rights = new rights_map_t(ids);
-
- // for single friend, show their name
- if(ids.size() == 1)
- {
- LLUUID agent_id = ids.begin()->first;
- std::string first, last;
- if(gCacheName->getName(agent_id, first, last))
- {
- args["FIRST_NAME"] = first;
- args["LAST_NAME"] = last;
- }
- if (command == GRANT)
- {
- LLNotificationsUtil::add("GrantModifyRights",
- args,
- LLSD(),
- boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
- }
- else
- {
- LLNotificationsUtil::add("RevokeModifyRights",
- args,
- LLSD(),
- boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
- }
- }
- else
- {
- if (command == GRANT)
- {
- LLNotificationsUtil::add("GrantModifyRightsMultiple",
- args,
- LLSD(),
- boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
- }
- else
- {
- LLNotificationsUtil::add("RevokeModifyRightsMultiple",
- args,
- LLSD(),
- boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
- }
- }
- }
-}
-
-bool LLPanelFriends::modifyRightsConfirmation(const LLSD& notification, const LLSD& response, rights_map_t* rights)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- if(0 == option)
- {
- sendRightsGrant(*rights);
- }
- else
- {
- // need to resync view with model, since user cancelled operation
- rights_map_t::iterator rights_it;
- for (rights_it = rights->begin(); rights_it != rights->end(); ++rights_it)
- {
- const LLRelationship* info = LLAvatarTracker::instance().getBuddyInfo(rights_it->first);
- updateFriendItem(rights_it->first, info);
- }
- }
- refreshUI();
-
- delete rights;
- return false;
-}
-
-void LLPanelFriends::applyRightsToFriends()
-{
- BOOL rights_changed = FALSE;
-
- // store modify rights separately for confirmation
- rights_map_t rights_updates;
-
- BOOL need_confirmation = FALSE;
- EGrantRevoke confirmation_type = GRANT;
-
- // this assumes that changes only happened to selected items
- std::vector<LLScrollListItem*> selected = mFriendsList->getAllSelected();
- for(std::vector<LLScrollListItem*>::iterator itr = selected.begin(); itr != selected.end(); ++itr)
- {
- LLUUID id = (*itr)->getValue();
- const LLRelationship* buddy_relationship = LLAvatarTracker::instance().getBuddyInfo(id);
- if (buddy_relationship == NULL) continue;
-
- bool show_online_staus = (*itr)->getColumn(LIST_VISIBLE_ONLINE)->getValue().asBoolean();
- bool show_map_location = (*itr)->getColumn(LIST_VISIBLE_MAP)->getValue().asBoolean();
- bool allow_modify_objects = (*itr)->getColumn(LIST_EDIT_MINE)->getValue().asBoolean();
-
- S32 rights = buddy_relationship->getRightsGrantedTo();
- if(buddy_relationship->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS) != show_online_staus)
- {
- rights_changed = TRUE;
- if(show_online_staus)
- {
- rights |= LLRelationship::GRANT_ONLINE_STATUS;
- }
- else
- {
- // ONLINE_STATUS necessary for MAP_LOCATION
- rights &= ~LLRelationship::GRANT_ONLINE_STATUS;
- rights &= ~LLRelationship::GRANT_MAP_LOCATION;
- // propagate rights constraint to UI
- (*itr)->getColumn(LIST_VISIBLE_MAP)->setValue(FALSE);
- }
- }
- if(buddy_relationship->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION) != show_map_location)
- {
- rights_changed = TRUE;
- if(show_map_location)
- {
- // ONLINE_STATUS necessary for MAP_LOCATION
- rights |= LLRelationship::GRANT_MAP_LOCATION;
- rights |= LLRelationship::GRANT_ONLINE_STATUS;
- (*itr)->getColumn(LIST_VISIBLE_ONLINE)->setValue(TRUE);
- }
- else
- {
- rights &= ~LLRelationship::GRANT_MAP_LOCATION;
- }
- }
-
- // now check for change in modify object rights, which requires confirmation
- if(buddy_relationship->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS) != allow_modify_objects)
- {
- rights_changed = TRUE;
- need_confirmation = TRUE;
-
- if(allow_modify_objects)
- {
- rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
- confirmation_type = GRANT;
- }
- else
- {
- rights &= ~LLRelationship::GRANT_MODIFY_OBJECTS;
- confirmation_type = REVOKE;
- }
- }
-
- if (rights_changed)
- {
- rights_updates.insert(std::make_pair(id, rights));
- // disable these ui elements until response from server
- // to avoid race conditions
- (*itr)->setEnabled(FALSE);
- }
- }
-
- // separately confirm grant and revoke of modify rights
- if (need_confirmation)
- {
- confirmModifyRights(rights_updates, confirmation_type);
- }
- else
- {
- sendRightsGrant(rights_updates);
- }
-}
-
-void LLPanelFriends::sendRightsGrant(rights_map_t& ids)
-{
- if (ids.empty()) return;
-
- LLMessageSystem* msg = gMessageSystem;
-
- // setup message header
- msg->newMessageFast(_PREHASH_GrantUserRights);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUID(_PREHASH_AgentID, gAgent.getID());
- msg->addUUID(_PREHASH_SessionID, gAgent.getSessionID());
-
- rights_map_t::iterator id_it;
- rights_map_t::iterator end_it = ids.end();
- for(id_it = ids.begin(); id_it != end_it; ++id_it)
- {
- msg->nextBlockFast(_PREHASH_Rights);
- msg->addUUID(_PREHASH_AgentRelated, id_it->first);
- msg->addS32(_PREHASH_RelatedRights, id_it->second);
- }
-
- mNumRightsChanged = ids.size();
- gAgent.sendReliableMessage();
-}
diff --git a/indra/newview/llfloaterfriends.h b/indra/newview/llfloaterfriends.h
deleted file mode 100644
index a303477c95..0000000000
--- a/indra/newview/llfloaterfriends.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * @file llfloaterfriends.h
- * @author Phoenix
- * @date 2005-01-13
- * @brief Declaration of class for displaying the local agent's friends.
- *
- * $LicenseInfo:firstyear=2005&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERFRIENDS_H
-#define LL_LLFLOATERFRIENDS_H
-
-#include "llpanel.h"
-#include "llstring.h"
-#include "lluuid.h"
-#include "lltimer.h"
-#include "llcallingcard.h"
-
-class LLFriendObserver;
-class LLRelationship;
-class LLScrollListItem;
-class LLScrollListCtrl;
-
-/**
- * @class LLPanelFriends
- * @brief An instance of this class is used for displaying your friends
- * and gives you quick access to all agents which a user relationship.
- *
- * @sa LLFloater
- */
-class LLPanelFriends : public LLPanel, public LLEventTimer
-{
-public:
- LLPanelFriends();
- virtual ~LLPanelFriends();
-
- /**
- * @brief This method either creates or brings to the front the
- * current instantiation of this floater. There is only once since
- * you can currently only look at your local friends.
- */
- virtual BOOL tick();
-
- /**
- * @brief This method is called in response to the LLAvatarTracker
- * sending out a changed() message.
- */
- void updateFriends(U32 changed_mask);
-
- virtual BOOL postBuild();
-
- // *HACK Made public to remove friends from LLAvatarIconCtrl context menu
- static bool handleRemove(const LLSD& notification, const LLSD& response);
-
-private:
-
- enum FRIENDS_COLUMN_ORDER
- {
- LIST_ONLINE_STATUS,
- LIST_FRIEND_NAME,
- LIST_VISIBLE_ONLINE,
- LIST_VISIBLE_MAP,
- LIST_EDIT_MINE,
- LIST_EDIT_THEIRS,
- LIST_FRIEND_UPDATE_GEN
- };
-
- // protected members
- typedef std::map<LLUUID, S32> rights_map_t;
- void refreshNames(U32 changed_mask);
- BOOL refreshNamesSync(const LLAvatarTracker::buddy_map_t & all_buddies);
- BOOL refreshNamesPresence(const LLAvatarTracker::buddy_map_t & all_buddies);
- void refreshUI();
- void refreshRightsChangeList();
- void applyRightsToFriends();
- BOOL addFriend(const LLUUID& agent_id);
- BOOL updateFriendItem(const LLUUID& agent_id, const LLRelationship* relationship);
-
- typedef enum
- {
- GRANT,
- REVOKE
- } EGrantRevoke;
- void confirmModifyRights(rights_map_t& ids, EGrantRevoke command);
- void sendRightsGrant(rights_map_t& ids);
-
- // return empty vector if nothing is selected
- std::vector<LLUUID> getSelectedIDs();
-
- // callback methods
- static void onSelectName(LLUICtrl* ctrl, void* user_data);
- static bool callbackAddFriend(const LLSD& notification, const LLSD& response);
- static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
- static void onPickAvatar(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
- static void onMaximumSelect();
-
- static void onClickIM(void* user_data);
- static void onClickProfile(void* user_data);
- static void onClickAddFriend(void* user_data);
- static void onClickRemove(void* user_data);
-
- static void onClickOfferTeleport(void* user_data);
- static void onClickPay(void* user_data);
-
- static void onClickModifyStatus(LLUICtrl* ctrl, void* user_data);
-
- bool modifyRightsConfirmation(const LLSD& notification, const LLSD& response, rights_map_t* rights);
-
-private:
- // member data
- LLFriendObserver* mObserver;
- LLUUID mAddFriendID;
- std::string mAddFriendName;
- LLScrollListCtrl* mFriendsList;
- BOOL mShowMaxSelectWarning;
- BOOL mAllowRightsChange;
- S32 mNumRightsChanged;
-};
-
-
-#endif // LL_LLFLOATERFRIENDS_H
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 42ec7d765b..f9a403cf9f 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -34,7 +34,9 @@
#include "llviewercontrol.h"
#include "llviewertexturelist.h"
#include "llfeaturemanager.h"
+#include "llspinctrl.h"
#include "llstartup.h"
+#include "lltextbox.h"
#include "pipeline.h"
// Linden library includes
@@ -98,18 +100,40 @@ void LLFloaterHardwareSettings::refreshEnabledState()
}
// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
- getChildView("gamma")->setEnabled(!gPipeline.canUseWindLightShaders());
+ LLSpinCtrl* gamma_ctrl = getChild<LLSpinCtrl>("gamma");
+ gamma_ctrl->setEnabled(!gPipeline.canUseWindLightShaders());
getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders());
getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());
- getChildView("fsaa")->setEnabled(gPipeline.canUseAntiAliasing());
- getChildView("antialiasing restart")->setVisible(!gSavedSettings.getBOOL("RenderDeferred"));
- /* Enable to reset fsaa value to disabled when feature is not available.
- if (!gPipeline.canUseAntiAliasing())
+ // anti-aliasing
{
- getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) 0);
+ LLUICtrl* fsaa_ctrl = getChild<LLUICtrl>("fsaa");
+ LLTextBox* fsaa_text = getChild<LLTextBox>("antialiasing label");
+ LLView* fsaa_restart = getChildView("antialiasing restart");
+
+ // Enable or disable the control, the "Antialiasing:" label and the restart warning
+ // based on code support for the feature on the current hardware.
+
+ if (gPipeline.canUseAntiAliasing())
+ {
+ fsaa_ctrl->setEnabled(TRUE);
+
+ // borrow the text color from the gamma control for consistency
+ fsaa_text->setColor(gamma_ctrl->getEnabledTextColor());
+
+ fsaa_restart->setVisible(!gSavedSettings.getBOOL("RenderDeferred"));
+ }
+ else
+ {
+ fsaa_ctrl->setEnabled(FALSE);
+ fsaa_ctrl->setValue((LLSD::Integer) 0);
+
+ // borrow the text color from the gamma control for consistency
+ fsaa_text->setColor(gamma_ctrl->getDisabledTextColor());
+
+ fsaa_restart->setVisible(FALSE);
+ }
}
- */
}
//============================================================================
diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp
index 3012638d44..fd9c37ae73 100644
--- a/indra/newview/llfloaterhelpbrowser.cpp
+++ b/indra/newview/llfloaterhelpbrowser.cpp
@@ -39,6 +39,7 @@
#include "llurlhistory.h"
#include "llmediactrl.h"
#include "llviewermedia.h"
+#include "llviewerhelp.h"
LLFloaterHelpBrowser::LLFloaterHelpBrowser(const LLSD& key)
@@ -74,6 +75,17 @@ void LLFloaterHelpBrowser::buildURLHistory()
void LLFloaterHelpBrowser::onOpen(const LLSD& key)
{
gSavedSettings.setBOOL("HelpFloaterOpen", TRUE);
+
+ std::string topic = key.asString();
+
+ if (topic == "__local")
+ {
+ mBrowser->navigateToLocalPage( "help-offline" , "index.html" );
+ }
+ else
+ {
+ mBrowser->navigateTo(LLViewerHelp::instance().getURL(topic));
+ }
}
//virtual
@@ -148,8 +160,3 @@ void LLFloaterHelpBrowser::openMedia(const std::string& media_url)
mBrowser->navigateTo(media_url, "text/html");
setCurrentURL(media_url);
}
-
-void LLFloaterHelpBrowser::navigateToLocalPage( const std::string& subdir, const std::string& filename_in )
-{
- mBrowser->navigateToLocalPage(subdir, filename_in);
-}
diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h
index afe0f4df69..bf4f544a14 100644
--- a/indra/newview/llfloaterhelpbrowser.h
+++ b/indra/newview/llfloaterhelpbrowser.h
@@ -1,5 +1,5 @@
/**
- * @file llfloatermediabrowser.h
+ * @file llfloaterhelpbrowser.h
* @brief HTML Help floater - uses embedded web browser control
*
* $LicenseInfo:firstyear=2006&license=viewerlgpl$
@@ -48,8 +48,6 @@ class LLFloaterHelpBrowser :
/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
void openMedia(const std::string& media_url);
-
- void navigateToLocalPage( const std::string& subdir, const std::string& filename_in );
private:
void buildURLHistory();
diff --git a/indra/newview/llfloaterhud.cpp b/indra/newview/llfloaterhud.cpp
index 4181d1906e..58c76a0b85 100644
--- a/indra/newview/llfloaterhud.cpp
+++ b/indra/newview/llfloaterhud.cpp
@@ -54,14 +54,6 @@ LLFloaterHUD::LLFloaterHUD(const LLSD& key)
return;
}
- // Don't grab the focus as it will impede performing in-world actions
- // while using the HUD
- setIsChrome(TRUE);
-
- // Chrome doesn't show the window title by default, but here we
- // want to show it.
- setTitleVisible(true);
-
// Opaque background since we never get the focus
setBackgroundOpaque(TRUE);
}
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index e4d8e3513d..69de15d9ea 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -50,6 +50,7 @@
#include "llvoavatar.h"
#include "pipeline.h"
#include "lluictrlfactory.h"
+#include "llviewershadermgr.h"
#include "llviewertexturelist.h"
#include "llstring.h"
@@ -649,25 +650,30 @@ BOOL LLImagePreviewAvatar::render()
gGL.pushUIMatrix();
gGL.loadUIIdentity();
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
- glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+ gGL.loadIdentity();
+ gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
LLGLSUIDefault def;
gGL.color4f(0.15f, 0.2f, 0.3f, 1.f);
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
gl_rect_2d_simple( mFullWidth, mFullHeight );
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
gGL.flush();
@@ -690,8 +696,7 @@ BOOL LLImagePreviewAvatar::render()
LLVertexBuffer::unbind();
avatarp->updateLOD();
-
-
+
if (avatarp->mDrawable.notNull())
{
LLGLDepthTest gls_depth(GL_TRUE, GL_TRUE);
@@ -699,7 +704,7 @@ BOOL LLImagePreviewAvatar::render()
LLGLDisable no_blend(GL_BLEND);
LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool();
-
+ gPipeline.enableLightsPreview();
avatarPoolp->renderAvatars(avatarp); // renders only one avatar
}
@@ -790,15 +795,17 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
U32 num_indices = vf.mNumIndices;
U32 num_vertices = vf.mNumVertices;
- mVertexBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL, 0);
+ mVertexBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0, 0);
mVertexBuffer->allocateBuffer(num_vertices, num_indices, TRUE);
LLStrider<LLVector3> vertex_strider;
LLStrider<LLVector3> normal_strider;
+ LLStrider<LLVector2> tc_strider;
LLStrider<U16> index_strider;
mVertexBuffer->getVertexStrider(vertex_strider);
mVertexBuffer->getNormalStrider(normal_strider);
+ mVertexBuffer->getTexCoord0Strider(tc_strider);
mVertexBuffer->getIndexStrider(index_strider);
// build vertices and normals
@@ -806,7 +813,8 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
pos = (LLVector3*) vf.mPositions; pos.setStride(16);
LLStrider<LLVector3> norm;
norm = (LLVector3*) vf.mNormals; norm.setStride(16);
-
+ LLStrider<LLVector2> tc;
+ tc = (LLVector2*) vf.mTexCoords; tc.setStride(8);
for (U32 i = 0; i < num_vertices; i++)
{
@@ -814,6 +822,7 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
LLVector3 normal = *norm++;
normal.normalize();
*(normal_strider++) = normal;
+ *(tc_strider++) = *tc++;
}
// build indices
@@ -835,23 +844,28 @@ BOOL LLImagePreviewSculpted::render()
LLGLEnable cull(GL_CULL_FACE);
LLGLDepthTest depth(GL_TRUE);
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
- glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+ gGL.loadIdentity();
+ gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
gGL.color4f(0.15f, 0.2f, 0.3f, 1.f);
- gl_rect_2d_simple( mFullWidth, mFullHeight );
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
- glMatrixMode(GL_PROJECTION);
+ gl_rect_2d_simple( mFullWidth, mFullHeight );
+
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
glClear(GL_DEPTH_BUFFER_BIT);
@@ -876,17 +890,28 @@ BOOL LLImagePreviewSculpted::render()
const LLVolumeFace &vf = mVolume->getVolumeFace(0);
U32 num_indices = vf.mNumIndices;
- mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL);
-
gPipeline.enableLightsAvatar();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gObjectPreviewProgram.bind();
+ }
gGL.pushMatrix();
const F32 SCALE = 1.25f;
gGL.scalef(SCALE, SCALE, SCALE);
const F32 BRIGHTNESS = 0.9f;
gGL.color3f(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS);
+
+ mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0);
mVertexBuffer->draw(LLRender::TRIANGLES, num_indices, 0);
gGL.popMatrix();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gObjectPreviewProgram.unbind();
+ }
+
return TRUE;
}
diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp
index a09b9ea235..cece8d299c 100644
--- a/indra/newview/llfloaterinspect.cpp
+++ b/indra/newview/llfloaterinspect.cpp
@@ -37,6 +37,7 @@
#include "llselectmgr.h"
#include "lltoolcomp.h"
#include "lltoolmgr.h"
+#include "lltrans.h"
#include "llviewercontrol.h"
#include "llviewerobject.h"
#include "lluictrlfactory.h"
@@ -166,6 +167,15 @@ LLUUID LLFloaterInspect::getSelectedUUID()
return LLUUID::null;
}
+void LLFloaterInspect::onGetAvNameCallback(const LLUUID& idCreator, const LLAvatarName& av_name, void* FloaterPtr)
+{
+ if (FloaterPtr)
+ {
+ LLFloaterInspect* floater = (LLFloaterInspect*)FloaterPtr;
+ floater->dirty();
+ }
+}
+
void LLFloaterInspect::refresh()
{
LLUUID creator_id;
@@ -205,11 +215,32 @@ void LLFloaterInspect::refresh()
substitution["datetime"] = (S32) timestamp;
LLStringUtil::format (timeStr, substitution);
+ const LLUUID& idOwner = obj->mPermissions->getOwner();
+ const LLUUID& idCreator = obj->mPermissions->getCreator();
LLAvatarName av_name;
- LLAvatarNameCache::get(obj->mPermissions->getOwner(), &av_name);
- owner_name = av_name.getCompleteName();
- LLAvatarNameCache::get(obj->mPermissions->getCreator(), &av_name);
- creator_name = av_name.getCompleteName();
+
+ // Only work with the names if we actually get a result
+ // from the name cache. If not, defer setting the
+ // actual name and set a placeholder.
+ if (LLAvatarNameCache::get(idOwner, &av_name))
+ {
+ owner_name = av_name.getCompleteName();
+ }
+ else
+ {
+ owner_name = LLTrans::getString("RetrievingData");
+ LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::onGetAvNameCallback, _1, _2, this));
+ }
+
+ if (LLAvatarNameCache::get(idCreator, &av_name))
+ {
+ creator_name = av_name.getCompleteName();
+ }
+ else
+ {
+ creator_name = LLTrans::getString("RetrievingData");
+ LLAvatarNameCache::get(idCreator, boost::bind(&LLFloaterInspect::onGetAvNameCallback, _1, _2, this));
+ }
row["id"] = obj->getObject()->getID();
row["columns"][0]["column"] = "object_name";
diff --git a/indra/newview/llfloaterinspect.h b/indra/newview/llfloaterinspect.h
index d9ffdf114b..7ee83ccdb4 100644
--- a/indra/newview/llfloaterinspect.h
+++ b/indra/newview/llfloaterinspect.h
@@ -29,6 +29,7 @@
#ifndef LL_LLFLOATERINSPECT_H
#define LL_LLFLOATERINSPECT_H
+#include "llavatarname.h"
#include "llfloater.h"
//class LLTool;
@@ -53,6 +54,9 @@ public:
void onClickCreatorProfile();
void onClickOwnerProfile();
void onSelectObject();
+
+ static void onGetAvNameCallback(const LLUUID& idCreator, const LLAvatarName& av_name, void* FloaterPtr);
+
LLScrollListCtrl* mObjectList;
protected:
// protected members
diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp
index df769bdd88..9b9b90e521 100644
--- a/indra/newview/llfloaterinventory.cpp
+++ b/indra/newview/llfloaterinventory.cpp
@@ -98,3 +98,12 @@ void LLFloaterInventory::onOpen(const LLSD& key)
{
//LLFirstUse::useInventory();
}
+
+void LLFloaterInventory::onClose(bool app_quitting)
+{
+ LLFloater::onClose(app_quitting);
+ if (mKey.asInteger() > 1)
+ {
+ destroy();
+ }
+}
diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h
index f59a015b07..823c4903b4 100644
--- a/indra/newview/llfloaterinventory.h
+++ b/indra/newview/llfloaterinventory.h
@@ -58,6 +58,7 @@ public:
// Inherited functionality
/*virtual*/ void onOpen(const LLSD& key);
+ /*virtual*/ void onClose(bool app_quitting);
LLInventoryPanel* getPanel();
LLPanelMainInventory* getMainInventoryPanel() { return mPanelMainInventory;}
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 4746f93009..b13a9aab88 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -433,7 +433,6 @@ BOOL LLPanelLandGeneral::postBuild()
mTextDwell = getChild<LLTextBox>("DwellText");
-
mBtnBuyLand = getChild<LLButton>("Buy Land...");
mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
@@ -696,20 +695,26 @@ void LLPanelLandGeneral::refresh()
S32 area;
S32 claim_price;
S32 rent_price;
- F32 dwell;
+ F32 dwell = DWELL_NAN;
LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
&claim_price,
&rent_price,
&for_sale,
&dwell);
-
// Area
LLUIString price = getString("area_size_text");
price.setArg("[AREA]", llformat("%d",area));
mTextPriceLabel->setText(getString("area_text"));
mTextPrice->setText(price.getString());
- mTextDwell->setText(llformat("%.0f", dwell));
+ if (dwell == DWELL_NAN)
+ {
+ mTextDwell->setText(LLTrans::getString("LoadingData"));
+ }
+ else
+ {
+ mTextDwell->setText(llformat("%.0f", dwell));
+ }
if (for_sale)
{
@@ -1801,7 +1806,6 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)
mCheckEditGroupObjects(NULL),
mCheckAllObjectEntry(NULL),
mCheckGroupObjectEntry(NULL),
- mCheckEditLand(NULL),
mCheckSafe(NULL),
mCheckFly(NULL),
mCheckGroupScripts(NULL),
@@ -1835,10 +1839,6 @@ BOOL LLPanelLandOptions::postBuild()
mCheckGroupObjectEntry = getChild<LLCheckBoxCtrl>( "group object entry check");
childSetCommitCallback("group object entry check", onCommitAny, this);
- mCheckEditLand = getChild<LLCheckBoxCtrl>( "edit land check");
- childSetCommitCallback("edit land check", onCommitAny, this);
-
-
mCheckGroupScripts = getChild<LLCheckBoxCtrl>( "check group scripts");
childSetCommitCallback("check group scripts", onCommitAny, this);
@@ -1951,9 +1951,6 @@ void LLPanelLandOptions::refresh()
mCheckGroupObjectEntry ->set(FALSE);
mCheckGroupObjectEntry ->setEnabled(FALSE);
- mCheckEditLand ->set(FALSE);
- mCheckEditLand ->setEnabled(FALSE);
-
mCheckSafe ->set(FALSE);
mCheckSafe ->setEnabled(FALSE);
@@ -2001,10 +1998,6 @@ void LLPanelLandOptions::refresh()
mCheckGroupObjectEntry ->set( parcel->getAllowGroupObjectEntry() || parcel->getAllowAllObjectEntry());
mCheckGroupObjectEntry ->setEnabled( can_change_options && !parcel->getAllowAllObjectEntry() );
-
- BOOL can_change_terraform = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_EDIT);
- mCheckEditLand ->set( parcel->getAllowTerraform() );
- mCheckEditLand ->setEnabled( can_change_terraform );
mCheckSafe ->set( !parcel->getAllowDamage() );
mCheckSafe ->setEnabled( can_change_options );
@@ -2230,7 +2223,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
BOOL create_group_objects = self->mCheckEditGroupObjects->get() || self->mCheckEditObjects->get();
BOOL all_object_entry = self->mCheckAllObjectEntry->get();
BOOL group_object_entry = self->mCheckGroupObjectEntry->get() || self->mCheckAllObjectEntry->get();
- BOOL allow_terraform = self->mCheckEditLand->get();
+ BOOL allow_terraform = false; // removed from UI so always off now - self->mCheckEditLand->get();
BOOL allow_damage = !self->mCheckSafe->get();
BOOL allow_fly = self->mCheckFly->get();
BOOL allow_landmark = TRUE; // cannot restrict landmark creation
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 6fceca1acd..4f1c10274a 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -330,7 +330,6 @@ private:
LLCheckBoxCtrl* mCheckEditGroupObjects;
LLCheckBoxCtrl* mCheckAllObjectEntry;
LLCheckBoxCtrl* mCheckGroupObjectEntry;
- LLCheckBoxCtrl* mCheckEditLand;
LLCheckBoxCtrl* mCheckSafe;
LLCheckBoxCtrl* mCheckFly;
LLCheckBoxCtrl* mCheckGroupScripts;
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 641e64247b..a65e9e911a 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -100,17 +100,11 @@ BOOL LLFloaterMap::postBuild()
mTextBoxSouthWest = getChild<LLTextBox> ("floater_map_southwest");
mTextBoxNorthWest = getChild<LLTextBox> ("floater_map_northwest");
- stretchMiniMap(getRect().getWidth() - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
- ,getRect().getHeight() - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
-
updateMinorDirections();
// Get the drag handle all the way in back
sendChildToBack(getDragHandle());
- setIsChrome(TRUE);
- getDragHandle()->setTitleVisible(TRUE);
-
// keep onscreen
gFloaterView->adjustToFitScreen(this, FALSE);
@@ -223,40 +217,10 @@ void LLFloaterMap::draw()
LLFloater::draw();
}
-// virtual
-void LLFloaterMap::onFocusReceived()
-{
- setBackgroundOpaque(true);
- LLPanel::onFocusReceived();
-}
-
-// virtual
-void LLFloaterMap::onFocusLost()
-{
- setBackgroundOpaque(false);
- LLPanel::onFocusLost();
-}
-
-void LLFloaterMap::stretchMiniMap(S32 width,S32 height)
-{
- //fix for ext-7112
- //by default ctrl can't overlap caption area
- if(mMap)
- {
- LLRect map_rect;
- map_rect.setLeftTopAndSize( MAP_PADDING_LEFT, getRect().getHeight() - MAP_PADDING_TOP, width, height);
- mMap->reshape( width, height, 1);
- mMap->setRect(map_rect);
- }
-}
-
void LLFloaterMap::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLFloater::reshape(width, height, called_from_parent);
- stretchMiniMap(width - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
- ,height - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
-
updateMinorDirections();
}
@@ -285,16 +249,3 @@ void LLFloaterMap::handleZoom(const LLSD& userdata)
mMap->setScale(scale);
}
}
-
-void LLFloaterMap::setMinimized(BOOL b)
-{
- LLFloater::setMinimized(b);
- if(b)
- {
- setTitle(getString("mini_map_caption"));
- }
- else
- {
- setTitle("");
- }
-}
diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h
index 5cf66a594b..8a1b965e62 100644
--- a/indra/newview/llfloatermap.h
+++ b/indra/newview/llfloatermap.h
@@ -45,18 +45,12 @@ public:
/*virtual*/ BOOL handleDoubleClick( S32 x, S32 y, MASK mask );
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void draw();
- /*virtual*/ void onFocusLost();
- /*virtual*/ void onFocusReceived();
- /*virtual*/ void setMinimized(BOOL b);
-
private:
void handleZoom(const LLSD& userdata);
void setDirectionPos( LLTextBox* text_box, F32 rotation );
void updateMinorDirections();
- void stretchMiniMap(S32 width,S32 height);
-
LLTextBox* mTextBoxEast;
LLTextBox* mTextBoxNorth;
LLTextBox* mTextBoxWest;
diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp
deleted file mode 100644
index 7a670dd90c..0000000000
--- a/indra/newview/llfloatermediabrowser.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * @file llfloatermediabrowser.cpp
- * @brief media browser floater - uses embedded media browser control
- *
- * $LicenseInfo:firstyear=2006&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatermediabrowser.h"
-
-#include "llfloaterreg.h"
-#include "llparcel.h"
-#include "llpluginclassmedia.h"
-#include "lluictrlfactory.h"
-#include "llmediactrl.h"
-#include "llviewerwindow.h"
-#include "llviewercontrol.h"
-#include "llviewerparcelmgr.h"
-#include "llweb.h"
-#include "llui.h"
-#include "roles_constants.h"
-
-#include "llurlhistory.h"
-#include "llmediactrl.h"
-#include "llviewermedia.h"
-#include "llviewerparcelmedia.h"
-#include "llcombobox.h"
-#include "llwindow.h"
-#include "lllayoutstack.h"
-#include "llcheckboxctrl.h"
-
-#include "llnotifications.h"
-
-// TEMP
-#include "llsdutil.h"
-
-LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& key)
- : LLFloater(key)
-{
-}
-
-//static
-void LLFloaterMediaBrowser::create(const std::string &url, const std::string& target, const std::string& uuid)
-{
- lldebugs << "url = " << url << ", target = " << target << ", uuid = " << uuid << llendl;
-
- std::string tag = target;
-
- if(target.empty() || target == "_blank")
- {
- if(!uuid.empty())
- {
- tag = uuid;
- }
- else
- {
- // create a unique tag for this instance
- LLUUID id;
- id.generate();
- tag = id.asString();
- }
- }
-
- S32 browser_window_limit = gSavedSettings.getS32("MediaBrowserWindowLimit");
-
- if(LLFloaterReg::findInstance("media_browser", tag) != NULL)
- {
- // There's already a media browser for this tag, so we won't be opening a new window.
- }
- else if(browser_window_limit != 0)
- {
- // showInstance will open a new window. Figure out how many media browsers are already open,
- // and close the least recently opened one if this will put us over the limit.
-
- LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList("media_browser");
- lldebugs << "total instance count is " << instances.size() << llendl;
-
- for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
- {
- lldebugs << " " << (*iter)->getKey() << llendl;
- }
-
- if(instances.size() >= (size_t)browser_window_limit)
- {
- // Destroy the least recently opened instance
- (*instances.begin())->closeFloater();
- }
- }
-
- LLFloaterMediaBrowser *browser = dynamic_cast<LLFloaterMediaBrowser*> (LLFloaterReg::showInstance("media_browser", tag));
- llassert(browser);
- if(browser)
- {
- browser->mUUID = uuid;
-
- // tell the browser instance to load the specified URL
- browser->openMedia(url, target);
- LLViewerMedia::proxyWindowOpened(target, uuid);
- }
-}
-
-//static
-void LLFloaterMediaBrowser::closeRequest(const std::string &uuid)
-{
- LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser");
- lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl;
- for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
- {
- LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter);
- lldebugs << " " << i->mUUID << llendl;
- if (i && i->mUUID == uuid)
- {
- i->closeFloater(false);
- return;
- }
- }
-}
-
-//static
-void LLFloaterMediaBrowser::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height)
-{
- LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser");
- lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl;
- for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
- {
- LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter);
- lldebugs << " " << i->mUUID << llendl;
- if (i && i->mUUID == uuid)
- {
- i->geometryChanged(x, y, width, height);
- return;
- }
-}
-}
-
-void LLFloaterMediaBrowser::geometryChanged(S32 x, S32 y, S32 width, S32 height)
-{
- // Make sure the layout of the browser control is updated, so this calculation is correct.
- LLLayoutStack::updateClass();
-
- // TODO: need to adjust size and constrain position to make sure floaters aren't moved outside the window view, etc.
- LLCoordWindow window_size;
- getWindow()->getSize(&window_size);
-
- // Adjust width and height for the size of the chrome on the Media Browser window.
- width += getRect().getWidth() - mBrowser->getRect().getWidth();
- height += getRect().getHeight() - mBrowser->getRect().getHeight();
-
- LLRect geom;
- geom.setOriginAndSize(x, window_size.mY - (y + height), width, height);
-
- lldebugs << "geometry change: " << geom << llendl;
-
- handleReshape(geom,false);
-}
-
-
-void LLFloaterMediaBrowser::draw()
-{
- getChildView("go")->setEnabled(!mAddressCombo->getValue().asString().empty());
- LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- if(parcel)
- {
- getChildView("parcel_owner_controls")->setVisible( LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_MEDIA));
- getChildView("assign")->setEnabled(!mAddressCombo->getValue().asString().empty());
- }
- bool show_time_controls = false;
- bool media_playing = false;
- if(mBrowser)
- {
- LLPluginClassMedia* media_plugin = mBrowser->getMediaPlugin();
- if(media_plugin)
- {
- show_time_controls = media_plugin->pluginSupportsMediaTime();
- media_playing = media_plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING;
- }
- }
- getChildView("rewind")->setVisible( show_time_controls);
- getChildView("play")->setVisible( show_time_controls && ! media_playing);
- getChildView("pause")->setVisible( show_time_controls && media_playing);
- getChildView("stop")->setVisible( show_time_controls);
- getChildView("seek")->setVisible( show_time_controls);
-
- getChildView("play")->setEnabled(! media_playing);
- getChildView("stop")->setEnabled(media_playing);
-
- getChildView("back")->setEnabled(mBrowser->canNavigateBack());
- getChildView("forward")->setEnabled(mBrowser->canNavigateForward());
-
- LLFloater::draw();
-}
-
-BOOL LLFloaterMediaBrowser::postBuild()
-{
- mBrowser = getChild<LLMediaCtrl>("browser");
- mBrowser->addObserver(this);
-
- mAddressCombo = getChild<LLComboBox>("address");
- mAddressCombo->setCommitCallback(onEnterAddress, this);
- mAddressCombo->sortByName();
-
- childSetAction("back", onClickBack, this);
- childSetAction("forward", onClickForward, this);
- childSetAction("reload", onClickRefresh, this);
- childSetAction("rewind", onClickRewind, this);
- childSetAction("play", onClickPlay, this);
- childSetAction("stop", onClickStop, this);
- childSetAction("pause", onClickPlay, this);
- childSetAction("seek", onClickSeek, this);
- childSetAction("go", onClickGo, this);
- childSetAction("close", onClickClose, this);
- childSetAction("open_browser", onClickOpenWebBrowser, this);
- childSetAction("assign", onClickAssign, this);
-
- buildURLHistory();
-
- return TRUE;
-}
-
-void LLFloaterMediaBrowser::buildURLHistory()
-{
- LLCtrlListInterface* url_list = childGetListInterface("address");
- if (url_list)
- {
- url_list->operateOnAll(LLCtrlListInterface::OP_DELETE);
- }
-
- // Get all of the entries in the "browser" collection
- LLSD browser_history = LLURLHistory::getURLHistory("browser");
-
- LLSD::array_iterator iter_history =
- browser_history.beginArray();
- LLSD::array_iterator end_history =
- browser_history.endArray();
- for(; iter_history != end_history; ++iter_history)
- {
- std::string url = (*iter_history).asString();
- if(! url.empty())
- url_list->addSimpleElement(url);
- }
-
- // initialize URL history in the plugin
- if(mBrowser && mBrowser->getMediaPlugin())
- {
- mBrowser->getMediaPlugin()->initializeUrlHistory(browser_history);
- }
-}
-
-std::string LLFloaterMediaBrowser::getSupportURL()
-{
- return getString("support_page_url");
-}
-
-//virtual
-void LLFloaterMediaBrowser::onClose(bool app_quitting)
-{
- LLViewerMedia::proxyWindowClosed(mUUID);
- //setVisible(FALSE);
- destroy();
-}
-
-void LLFloaterMediaBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
-{
- if(event == MEDIA_EVENT_LOCATION_CHANGED)
- {
- setCurrentURL(self->getLocation());
- }
- else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
- {
- // This is the event these flags are sent with.
- getChildView("back")->setEnabled(self->getHistoryBackAvailable());
- getChildView("forward")->setEnabled(self->getHistoryForwardAvailable());
- }
- else if(event == MEDIA_EVENT_CLOSE_REQUEST)
- {
- // The browser instance wants its window closed.
- closeFloater();
- }
- else if(event == MEDIA_EVENT_GEOMETRY_CHANGE)
- {
- geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight());
- }
-}
-
-void LLFloaterMediaBrowser::setCurrentURL(const std::string& url)
-{
- mCurrentURL = url;
-
- mAddressCombo->remove(mCurrentURL);
- mAddressCombo->add(mCurrentURL);
- mAddressCombo->selectByValue(mCurrentURL);
-
- // Serialize url history
- LLURLHistory::removeURL("browser", mCurrentURL);
- LLURLHistory::addURL("browser", mCurrentURL);
-
- getChildView("back")->setEnabled(mBrowser->canNavigateBack());
- getChildView("forward")->setEnabled(mBrowser->canNavigateForward());
- getChildView("reload")->setEnabled(TRUE);
-}
-
-//static
-void LLFloaterMediaBrowser::onEnterAddress(LLUICtrl* ctrl, void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
- self->mBrowser->navigateTo(self->mAddressCombo->getValue().asString());
-}
-
-//static
-void LLFloaterMediaBrowser::onClickRefresh(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- if( self->mBrowser->getMediaPlugin() && self->mBrowser->getMediaPlugin()->pluginSupportsMediaBrowser())
- {
- bool ignore_cache = true;
- self->mBrowser->getMediaPlugin()->browse_reload( ignore_cache );
- }
- else
- {
- self->mBrowser->navigateTo(self->mCurrentURL);
- }
-}
-
-//static
-void LLFloaterMediaBrowser::onClickForward(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- self->mBrowser->navigateForward();
-}
-
-//static
-void LLFloaterMediaBrowser::onClickBack(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- self->mBrowser->navigateBack();
-}
-
-//static
-void LLFloaterMediaBrowser::onClickGo(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- self->mBrowser->navigateTo(self->mAddressCombo->getValue().asString());
-}
-
-//static
-void LLFloaterMediaBrowser::onClickClose(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- self->closeFloater();
-}
-
-//static
-void LLFloaterMediaBrowser::onClickOpenWebBrowser(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- std::string url = self->mCurrentURL.empty() ?
- self->mBrowser->getHomePageUrl() :
- self->mCurrentURL;
- LLWeb::loadURLExternal(url);
-}
-
-void LLFloaterMediaBrowser::onClickAssign(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- if (!parcel)
- {
- return;
- }
- std::string media_url = self->mAddressCombo->getValue().asString();
- LLStringUtil::trim(media_url);
-
- if(parcel->getMediaType() != "text/html")
- {
- parcel->setMediaURL(media_url);
- parcel->setMediaCurrentURL(media_url);
- parcel->setMediaType(std::string("text/html"));
- LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel, true );
- LLViewerParcelMedia::sendMediaNavigateMessage(media_url);
- LLViewerParcelMedia::stop();
- // LLViewerParcelMedia::update( parcel );
- }
- LLViewerParcelMedia::sendMediaNavigateMessage(media_url);
-}
-//static
-void LLFloaterMediaBrowser::onClickRewind(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- if(self->mBrowser->getMediaPlugin())
- self->mBrowser->getMediaPlugin()->start(-2.0f);
-}
-//static
-void LLFloaterMediaBrowser::onClickPlay(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- LLPluginClassMedia* plugin = self->mBrowser->getMediaPlugin();
- if(plugin)
- {
- if(plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING)
- {
- plugin->pause();
- }
- else
- {
- plugin->start();
- }
- }
-}
-//static
-void LLFloaterMediaBrowser::onClickStop(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- if(self->mBrowser->getMediaPlugin())
- self->mBrowser->getMediaPlugin()->stop();
-}
-//static
-void LLFloaterMediaBrowser::onClickSeek(void* user_data)
-{
- LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
- if(self->mBrowser->getMediaPlugin())
- self->mBrowser->getMediaPlugin()->start(2.0f);
-}
-void LLFloaterMediaBrowser::openMedia(const std::string& media_url, const std::string& target)
-{
- mBrowser->setHomePageUrl(media_url);
- mBrowser->setTarget(target);
- mBrowser->navigateTo(media_url);
- setCurrentURL(media_url);
-}
-
-
diff --git a/indra/newview/llfloatermediabrowser.h b/indra/newview/llfloatermediabrowser.h
deleted file mode 100644
index 152d221a01..0000000000
--- a/indra/newview/llfloatermediabrowser.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * @file llfloatermediabrowser.h
- * @brief media browser floater - uses embedded media browser control
- *
- * $LicenseInfo:firstyear=2006&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERMEDIABROWSER_H
-#define LL_LLFLOATERMEDIABROWSER_H
-
-#include "llfloater.h"
-#include "llmediactrl.h"
-
-
-class LLComboBox;
-class LLMediaCtrl;
-class LLNotification;
-
-class LLFloaterMediaBrowser :
- public LLFloater,
- public LLViewerMediaObserver
-{
-public:
- LOG_CLASS(LLFloaterMediaBrowser);
- LLFloaterMediaBrowser(const LLSD& key);
-
- static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null);
-
- static void closeRequest(const std::string &uuid);
- static void geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height);
- void geometryChanged(S32 x, S32 y, S32 width, S32 height);
-
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void onClose(bool app_quitting);
- /*virtual*/ void draw();
-
- // inherited from LLViewerMediaObserver
- /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
-
- void openMedia(const std::string& media_url, const std::string& target);
- void buildURLHistory();
- std::string getSupportURL();
- void setCurrentURL(const std::string& url);
-
- static void onEnterAddress(LLUICtrl* ctrl, void* user_data);
- static void onClickRefresh(void* user_data);
- static void onClickBack(void* user_data);
- static void onClickForward(void* user_data);
- static void onClickGo(void* user_data);
- static void onClickClose(void* user_data);
- static void onClickOpenWebBrowser(void* user_data);
- static void onClickAssign(void* user_data);
- static void onClickRewind(void* user_data);
- static void onClickPlay(void* user_data);
- static void onClickStop(void* user_data);
- static void onClickSeek(void* user_data);
-
-private:
- LLMediaCtrl* mBrowser;
- LLComboBox* mAddressCombo;
- std::string mCurrentURL;
- boost::shared_ptr<LLNotification> mCurNotification;
- std::string mUUID;
-};
-
-#endif // LL_LLFLOATERMEDIABROWSER_H
-
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 881f087d7b..64bdcccd9f 100644..100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -26,6 +26,10 @@
#include "llviewerprecompiledheaders.h"
+#if LL_MSVC
+#pragma warning (disable : 4263)
+#pragma warning (disable : 4264)
+#endif
#include "dae.h"
//#include "dom.h"
#include "dom/domAsset.h"
@@ -47,6 +51,10 @@
#include "dom/domScale.h"
#include "dom/domTranslate.h"
#include "dom/domVisual_scene.h"
+#if LL_MSVC
+#pragma warning (default : 4263)
+#pragma warning (default : 4264)
+#endif
#include "llfloatermodelpreview.h"
@@ -103,6 +111,7 @@
#include "llviewerobjectlist.h"
#include "llanimationstates.h"
#include "llviewernetwork.h"
+#include "llviewershadermgr.h"
#include "glod/glod.h"
#include <boost/algorithm/string.hpp>
@@ -496,6 +505,11 @@ BOOL LLFloaterModelPreview::postBuild()
{
validate_url = "http://secondlife.com/my/account/mesh.php";
}
+ else if (current_grid == "damballah")
+ {
+ // Staging grid has its own naming scheme.
+ validate_url = "http://secondlife-staging.com/my/account/mesh.php";
+ }
else
{
validate_url = llformat("http://secondlife.%s.lindenlab.com/my/account/mesh.php",current_grid.c_str());
@@ -744,6 +758,11 @@ void LLFloaterModelPreview::draw()
if (!mModelPreview->mLoading)
{
+ if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_MATERIALS )
+ {
+ childSetTextArg("status", "[STATUS]", getString("status_material_mismatch"));
+ }
+ else
if ( mModelPreview->getLoadState() > LLModelLoader::ERROR_PARSING )
{
childSetTextArg("status", "[STATUS]", getString(LLModel::getStatusString(mModelPreview->getLoadState() - LLModelLoader::ERROR_PARSING)));
@@ -995,38 +1014,38 @@ void LLFloaterModelPreview::onPhysicsBrowse(LLUICtrl* ctrl, void* userdata)
//static
void LLFloaterModelPreview::onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata)
{
- S32 num_modes = 4;
- S32 which_mode = 3;
- static S32 previous_mode = which_mode;
+ S32 num_lods = 4;
+ S32 which_mode;
LLCtrlSelectionInterface* iface = sInstance->childGetSelectionInterface("physics_lod_combo");
if (iface)
{
which_mode = iface->getFirstSelectedIndex();
}
+ else
+ {
+ llwarns << "no iface" << llendl;
+ return;
+ }
- S32 file_mode = iface->getItemCount() - 1;
- bool file_browse = which_mode == file_mode;
- bool lod_to_file = file_browse && (previous_mode != file_mode);
- bool file_to_lod = !file_browse && (previous_mode == file_mode);
-
- if (!lod_to_file)
+ if (which_mode <= 0)
{
- which_mode = num_modes - which_mode;
- sInstance->mModelPreview->setPhysicsFromLOD(which_mode);
+ llwarns << "which_mode out of range, " << which_mode << llendl;
}
- if (lod_to_file || file_to_lod)
+ S32 file_mode = iface->getItemCount() - 1;
+ if (which_mode < file_mode)
{
- LLModelPreview *model_preview = sInstance->mModelPreview;
- if (model_preview)
- {
- model_preview->refresh();
- model_preview->updateStatusMessages();
- }
+ S32 which_lod = num_lods - which_mode;
+ sInstance->mModelPreview->setPhysicsFromLOD(which_lod);
}
- previous_mode = which_mode;
+ LLModelPreview *model_preview = sInstance->mModelPreview;
+ if (model_preview)
+ {
+ model_preview->refresh();
+ model_preview->updateStatusMessages();
+ }
}
//static
@@ -3304,7 +3323,7 @@ void LLModelPreview::rebuildUploadData()
F32 max_scale = 0.f;
//reorder materials to match mBaseModel
- for (U32 i = 0; i < LLModel::NUM_LODS; i++)
+ for (U32 i = 0; i < LLModel::NUM_LODS-1; i++)
{
if (mBaseModel.size() == mModel[i].size())
{
@@ -3316,6 +3335,7 @@ void LLModelPreview::rebuildUploadData()
if ( !mModel[i][j]->matchMaterialOrder(mBaseModel[j], refFaceCnt, modelFaceCnt ) )
{
+ setLoadState( LLModelLoader::ERROR_MATERIALS );
mFMP->childDisable( "calculate_btn" );
}
}
@@ -3840,6 +3860,15 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim
LLVertexBuffer::unbind();
+ bool no_ff = LLGLSLShader::sNoFixedFunction;
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ LLGLSLShader::sNoFixedFunction = false;
+
+ if (shader)
+ {
+ shader->unbind();
+ }
+
stop_gloderror();
static U32 cur_name = 1;
@@ -4138,6 +4167,13 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim
mResourceCost = calcResourceCost();
+ LLVertexBuffer::unbind();
+ LLGLSLShader::sNoFixedFunction = no_ff;
+ if (shader)
+ {
+ shader->bind();
+ }
+
/*if (which_lod == -1 && mScene[LLModel::LOD_PHYSICS].empty())
{ //build physics scene
mScene[LLModel::LOD_PHYSICS] = mScene[LLModel::LOD_LOW];
@@ -4351,11 +4387,6 @@ void LLModelPreview::updateStatusMessages()
{
skinAndRigOk = false;
}
- else
- if ( !isLegacyRigValid() )
- {
- mFMP->childDisable("calculate_btn");
- }
}
if(upload_ok && mModelLoader)
@@ -4888,6 +4919,8 @@ BOOL LLModelPreview::render()
LLMutexLock lock(this);
mNeedsUpdate = FALSE;
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
bool edges = mViewOption["show_edges"];
bool joint_positions = mViewOption["show_joint_positions"];
bool skin_weight = mViewOption["show_skin_weight"];
@@ -4904,25 +4937,33 @@ BOOL LLModelPreview::render()
LLGLDisable fog(GL_FOG);
{
+ if (use_shaders)
+ {
+ gUIProgram.bind();
+ }
//clear background to blue
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
- glOrtho(0.0f, width, 0.0f, height, -1.0f, 1.0f);
+ gGL.loadIdentity();
+ gGL.ortho(0.0f, width, 0.0f, height, -1.0f, 1.0f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
gGL.color4f(0.169f, 0.169f, 0.169f, 1.f);
gl_rect_2d_simple( width, height );
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
+ if (use_shaders)
+ {
+ gUIProgram.unbind();
+ }
}
LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance;
@@ -5035,7 +5076,7 @@ BOOL LLModelPreview::render()
refresh();
}
- glLoadIdentity();
+ gGL.loadIdentity();
gPipeline.enableLightsPreview();
LLQuaternion camera_rot = LLQuaternion(mCameraPitch, LLVector3::y_axis) *
@@ -5060,6 +5101,11 @@ BOOL LLModelPreview::render()
const U32 type_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0;
+ if (use_shaders)
+ {
+ gObjectPreviewProgram.bind();
+ }
+
LLGLEnable normalize(GL_NORMALIZE);
if (!mBaseModel.empty() && mVertexBuffer[5].empty())
@@ -5071,6 +5117,8 @@ BOOL LLModelPreview::render()
if (!mModel[mPreviewLOD].empty())
{
+ mFMP->childEnable("reset_btn");
+
bool regen = mVertexBuffer[mPreviewLOD].empty();
if (!regen)
{
@@ -5083,7 +5131,7 @@ BOOL LLModelPreview::render()
}
//make sure material lists all match
- for (U32 i = 0; i < LLModel::NUM_LODS; i++)
+ for (U32 i = 0; i < LLModel::NUM_LODS-1; i++)
{
if (mBaseModel.size() == mModel[i].size())
{
@@ -5121,7 +5169,7 @@ BOOL LLModelPreview::render()
gGL.pushMatrix();
LLMatrix4 mat = instance.mTransform;
- glMultMatrixf((GLfloat*) mat.mMatrix);
+ gGL.multMatrix((GLfloat*) mat.mMatrix);
for (U32 i = 0; i < mVertexBuffer[mPreviewLOD][model].size(); ++i)
{
@@ -5137,7 +5185,8 @@ BOOL LLModelPreview::render()
const std::string& binding = instance.mModel->mMaterialList[i];
const LLImportMaterial& material = instance.mMaterial[binding];
- glColor4fv(material.mDiffuseColor.mV);
+ gGL.diffuseColor4fv(material.mDiffuseColor.mV);
+
if (material.mDiffuseMap.notNull())
{
if (material.mDiffuseMap->getDiscardLevel() > -1)
@@ -5150,12 +5199,12 @@ BOOL LLModelPreview::render()
}
else
{
- glColor4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
}
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glColor3f(0.4f, 0.4f, 0.4f);
+ gGL.diffuseColor3f(0.4f, 0.4f, 0.4f);
if (edges)
{
@@ -5203,7 +5252,7 @@ BOOL LLModelPreview::render()
gGL.pushMatrix();
LLMatrix4 mat = instance.mTransform;
- glMultMatrixf((GLfloat*) mat.mMatrix);
+ gGL.multMatrix((GLfloat*) mat.mMatrix);
bool render_mesh = true;
@@ -5268,12 +5317,12 @@ BOOL LLModelPreview::render()
LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i];
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glColor4f(0.4f, 0.4f, 0.0f, 0.4f);
+ gGL.diffuseColor4f(0.4f, 0.4f, 0.0f, 0.4f);
buffer->setBuffer(type_mask & buffer->getTypeMask());
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0);
- glColor3f(1.f, 1.f, 0.f);
+ gGL.diffuseColor3f(1.f, 1.f, 0.f);
glLineWidth(2.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
@@ -5293,7 +5342,7 @@ BOOL LLModelPreview::render()
//show degenerate triangles
LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
LLGLDisable cull(GL_CULL_FACE);
- glColor4f(1.f,0.f,0.f,1.f);
+ gGL.diffuseColor4f(1.f,0.f,0.f,1.f);
const LLVector4a scale(0.5f);
for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter)
@@ -5310,7 +5359,7 @@ BOOL LLModelPreview::render()
gGL.pushMatrix();
LLMatrix4 mat = instance.mTransform;
- glMultMatrixf((GLfloat*) mat.mMatrix);
+ gGL.multMatrix((GLfloat*) mat.mMatrix);
LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread;
@@ -5376,7 +5425,16 @@ BOOL LLModelPreview::render()
if (joint_positions)
{
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ if (shader)
+ {
+ gDebugProgram.bind();
+ }
getPreviewAvatar()->renderCollisionVolumes();
+ if (shader)
+ {
+ shader->bind();
+ }
}
for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter)
@@ -5415,7 +5473,7 @@ BOOL LLModelPreview::render()
}
}
- for (U32 j = 0; j < buffer->getRequestedVerts(); ++j)
+ for (U32 j = 0; j < buffer->getNumVerts(); ++j)
{
LLMatrix4 final_mat;
final_mat.mMatrix[0][0] = final_mat.mMatrix[1][1] = final_mat.mMatrix[2][2] = final_mat.mMatrix[3][3] = 0.f;
@@ -5459,11 +5517,12 @@ BOOL LLModelPreview::render()
const std::string& binding = instance.mModel->mMaterialList[i];
const LLImportMaterial& material = instance.mMaterial[binding];
+
buffer->setBuffer(type_mask & buffer->getTypeMask());
- glColor4fv(material.mDiffuseColor.mV);
+ gGL.diffuseColor4fv(material.mDiffuseColor.mV);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0);
- glColor3f(0.4f, 0.4f, 0.4f);
+ gGL.diffuseColor3f(0.4f, 0.4f, 0.4f);
if (edges)
{
@@ -5480,6 +5539,11 @@ BOOL LLModelPreview::render()
}
}
+ if (use_shaders)
+ {
+ gObjectPreviewProgram.unbind();
+ }
+
gGL.popMatrix();
return TRUE;
@@ -5568,6 +5632,7 @@ void LLFloaterModelPreview::onReset(void* user_data)
assert_main_thread();
LLFloaterModelPreview* fmp = (LLFloaterModelPreview*) user_data;
+ fmp->childDisable("reset_btn");
LLModelPreview* mp = fmp->mModelPreview;
std::string filename = mp->mLODFile[3];
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 47de99ce25..64324854a5 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -70,7 +70,8 @@ public:
GENERATING_VERTEX_BUFFERS,
GENERATING_LOD,
DONE,
- ERROR_PARSING //basically loading failed
+ ERROR_PARSING, //basically loading failed
+ ERROR_MATERIALS,
} eLoadState;
U32 mState;
diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp
deleted file mode 100644
index 3bcbb987f7..0000000000
--- a/indra/newview/llfloaterpostcard.cpp
+++ /dev/null
@@ -1,384 +0,0 @@
-/**
- * @file llfloaterpostcard.cpp
- * @brief Postcard send floater, allows setting name, e-mail address, etc.
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloaterpostcard.h"
-
-#include "llfontgl.h"
-#include "llsys.h"
-#include "llgl.h"
-#include "v3dmath.h"
-#include "lldir.h"
-
-#include "llagent.h"
-#include "llui.h"
-#include "lllineeditor.h"
-#include "llbutton.h"
-#include "lltexteditor.h"
-#include "llfloaterreg.h"
-#include "llnotificationsutil.h"
-#include "llviewercontrol.h"
-#include "llviewernetwork.h"
-#include "lluictrlfactory.h"
-#include "lluploaddialog.h"
-#include "llviewerstats.h"
-#include "llviewerwindow.h"
-#include "llstatusbar.h"
-#include "llviewerregion.h"
-#include "lleconomy.h"
-#include "message.h"
-
-#include "llimagejpeg.h"
-#include "llimagej2c.h"
-#include "llvfile.h"
-#include "llvfs.h"
-#include "llviewertexture.h"
-#include "llassetuploadresponders.h"
-#include "llagentui.h"
-
-#include <boost/regex.hpp> //boost.regex lib
-
-///----------------------------------------------------------------------------
-/// Local function declarations, constants, enums, and typedefs
-///----------------------------------------------------------------------------
-
-///----------------------------------------------------------------------------
-/// Class LLFloaterPostcard
-///----------------------------------------------------------------------------
-
-LLFloaterPostcard::LLFloaterPostcard(const LLSD& key)
-: LLFloater(key),
- mJPEGImage(NULL),
- mViewerImage(NULL),
- mHasFirstMsgFocus(false)
-{
-}
-
-// Destroys the object
-LLFloaterPostcard::~LLFloaterPostcard()
-{
- mJPEGImage = NULL; // deletes image
-}
-
-BOOL LLFloaterPostcard::postBuild()
-{
- // pick up the user's up-to-date email address
- gAgent.sendAgentUserInfoRequest();
-
- childSetAction("cancel_btn", onClickCancel, this);
- childSetAction("send_btn", onClickSend, this);
-
- getChildView("from_form")->setEnabled(FALSE);
-
- std::string name_string;
- LLAgentUI::buildFullname(name_string);
- getChild<LLUICtrl>("name_form")->setValue(LLSD(name_string));
-
- // For the first time a user focusess to .the msg box, all text will be selected.
- getChild<LLUICtrl>("msg_form")->setFocusChangedCallback(boost::bind(onMsgFormFocusRecieved, _1, this));
-
- getChild<LLUICtrl>("to_form")->setFocus(TRUE);
-
- return TRUE;
-}
-
-// static
-LLFloaterPostcard* LLFloaterPostcard::showFromSnapshot(LLImageJPEG *jpeg, LLViewerTexture *img, const LLVector2 &image_scale, const LLVector3d& pos_taken_global)
-{
- // Take the images from the caller
- // It's now our job to clean them up
- LLFloaterPostcard* instance = LLFloaterReg::showTypedInstance<LLFloaterPostcard>("postcard", LLSD(img->getID()));
-
- if (instance) // may be 0 if we're in mouselook mode
- {
- instance->mJPEGImage = jpeg;
- instance->mViewerImage = img;
- instance->mImageScale = image_scale;
- instance->mPosTakenGlobal = pos_taken_global;
- }
-
- return instance;
-}
-
-void LLFloaterPostcard::draw()
-{
- LLGLSUIDefault gls_ui;
- LLFloater::draw();
-
- if(!isMinimized() && mViewerImage.notNull() && mJPEGImage.notNull())
- {
- // Force the texture to be 100% opaque when the floater is focused.
- F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();
- LLRect rect(getRect());
-
- // first set the max extents of our preview
- rect.translate(-rect.mLeft, -rect.mBottom);
- rect.mLeft += 320;
- rect.mRight -= 10;
- rect.mTop -= 27;
- rect.mBottom = rect.mTop - 130;
-
- // then fix the aspect ratio
- F32 ratio = (F32)mJPEGImage->getWidth() / (F32)mJPEGImage->getHeight();
- if ((F32)rect.getWidth() / (F32)rect.getHeight() >= ratio)
- {
- rect.mRight = LLRect::tCoordType((F32)rect.mLeft + ((F32)rect.getHeight() * ratio));
- }
- else
- {
- rect.mBottom = LLRect::tCoordType((F32)rect.mTop - ((F32)rect.getWidth() / ratio));
- }
- {
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- gl_rect_2d(rect, LLColor4(0.f, 0.f, 0.f, 1.f) % alpha);
- rect.stretch(-1);
- }
- {
-
- glMatrixMode(GL_TEXTURE);
- glPushMatrix();
- {
- glScalef(mImageScale.mV[VX], mImageScale.mV[VY], 1.f);
- glMatrixMode(GL_MODELVIEW);
- gl_draw_scaled_image(rect.mLeft,
- rect.mBottom,
- rect.getWidth(),
- rect.getHeight(),
- mViewerImage.get(),
- LLColor4::white % alpha);
- }
- glMatrixMode(GL_TEXTURE);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- }
- }
-}
-
-// static
-void LLFloaterPostcard::onClickCancel(void* data)
-{
- if (data)
- {
- LLFloaterPostcard *self = (LLFloaterPostcard *)data;
-
- self->closeFloater(false);
- }
-}
-
-class LLSendPostcardResponder : public LLAssetUploadResponder
-{
-public:
- LLSendPostcardResponder(const LLSD &post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type):
- LLAssetUploadResponder(post_data, vfile_id, asset_type)
- {
- }
- // *TODO define custom uploadFailed here so it's not such a generic message
- void uploadComplete(const LLSD& content)
- {
- // we don't care about what the server returns from this post, just clean up the UI
- LLUploadDialog::modalUploadFinished();
- }
-};
-
-// static
-void LLFloaterPostcard::onClickSend(void* data)
-{
- if (data)
- {
- LLFloaterPostcard *self = (LLFloaterPostcard *)data;
-
- std::string from(self->getChild<LLUICtrl>("from_form")->getValue().asString());
- std::string to(self->getChild<LLUICtrl>("to_form")->getValue().asString());
-
- boost::regex emailFormat("[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}(,[ \t]*[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,})*");
-
- if (to.empty() || !boost::regex_match(to, emailFormat))
- {
- LLNotificationsUtil::add("PromptRecipientEmail");
- return;
- }
-
- if (from.empty() || !boost::regex_match(from, emailFormat))
- {
- LLNotificationsUtil::add("PromptSelfEmail");
- return;
- }
-
- std::string subject(self->getChild<LLUICtrl>("subject_form")->getValue().asString());
- if(subject.empty() || !self->mHasFirstMsgFocus)
- {
- LLNotificationsUtil::add("PromptMissingSubjMsg", LLSD(), LLSD(), boost::bind(&LLFloaterPostcard::missingSubjMsgAlertCallback, self, _1, _2));
- return;
- }
-
- if (self->mJPEGImage.notNull())
- {
- self->sendPostcard();
- }
- else
- {
- LLNotificationsUtil::add("ErrorProcessingSnapshot");
- }
- }
-}
-
-// static
-void LLFloaterPostcard::uploadCallback(const LLUUID& asset_id, void *user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed)
-{
- LLFloaterPostcard *self = (LLFloaterPostcard *)user_data;
-
- LLUploadDialog::modalUploadFinished();
-
- if (result)
- {
- LLSD args;
- args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
- LLNotificationsUtil::add("ErrorUploadingPostcard", args);
- }
- else
- {
- // only create the postcard once the upload succeeds
-
- // request the postcard
- LLMessageSystem* msg = gMessageSystem;
- msg->newMessage("SendPostcard");
- msg->nextBlock("AgentData");
- msg->addUUID("AgentID", gAgent.getID());
- msg->addUUID("SessionID", gAgent.getSessionID());
- msg->addUUID("AssetID", self->mAssetID);
- msg->addVector3d("PosGlobal", self->mPosTakenGlobal);
- msg->addString("To", self->getChild<LLUICtrl>("to_form")->getValue().asString());
- msg->addString("From", self->getChild<LLUICtrl>("from_form")->getValue().asString());
- msg->addString("Name", self->getChild<LLUICtrl>("name_form")->getValue().asString());
- msg->addString("Subject", self->getChild<LLUICtrl>("subject_form")->getValue().asString());
- msg->addString("Msg", self->getChild<LLUICtrl>("msg_form")->getValue().asString());
- msg->addBOOL("AllowPublish", FALSE);
- msg->addBOOL("MaturePublish", FALSE);
- gAgent.sendReliableMessage();
- }
-
- self->closeFloater();
-}
-
-// static
-void LLFloaterPostcard::updateUserInfo(const std::string& email)
-{
- LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("postcard");
- for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin();
- iter != inst_list.end(); ++iter)
- {
- LLFloater* instance = *iter;
- const std::string& text = instance->getChild<LLUICtrl>("from_form")->getValue().asString();
- if (text.empty())
- {
- // there's no text in this field yet, pre-populate
- instance->getChild<LLUICtrl>("from_form")->setValue(LLSD(email));
- }
- }
-}
-
-void LLFloaterPostcard::onMsgFormFocusRecieved(LLFocusableElement* receiver, void* data)
-{
- LLFloaterPostcard* self = (LLFloaterPostcard *)data;
- if(self)
- {
- LLTextEditor* msgForm = self->getChild<LLTextEditor>("msg_form");
- if(msgForm && msgForm == receiver && msgForm->hasFocus() && !(self->mHasFirstMsgFocus))
- {
- self->mHasFirstMsgFocus = true;
- msgForm->setText(LLStringUtil::null);
- }
- }
-}
-
-bool LLFloaterPostcard::missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- if(0 == option)
- {
- // User clicked OK
- if((getChild<LLUICtrl>("subject_form")->getValue().asString()).empty())
- {
- // Stuff the subject back into the form.
- getChild<LLUICtrl>("subject_form")->setValue(getString("default_subject"));
- }
-
- if(!mHasFirstMsgFocus)
- {
- // The user never switched focus to the messagee window.
- // Using the default string.
- getChild<LLUICtrl>("msg_form")->setValue(getString("default_message"));
- }
-
- sendPostcard();
- }
- return false;
-}
-
-void LLFloaterPostcard::sendPostcard()
-{
- mTransactionID.generate();
- mAssetID = mTransactionID.makeAssetID(gAgent.getSecureSessionID());
- LLVFile::writeFile(mJPEGImage->getData(), mJPEGImage->getDataSize(), gVFS, mAssetID, LLAssetType::AT_IMAGE_JPEG);
-
- // upload the image
- std::string url = gAgent.getRegion()->getCapability("SendPostcard");
- if(!url.empty())
- {
- llinfos << "Send Postcard via capability" << llendl;
- LLSD body = LLSD::emptyMap();
- // the capability already encodes: agent ID, region ID
- body["pos-global"] = mPosTakenGlobal.getValue();
- body["to"] = getChild<LLUICtrl>("to_form")->getValue().asString();
- body["from"] = getChild<LLUICtrl>("from_form")->getValue().asString();
- body["name"] = getChild<LLUICtrl>("name_form")->getValue().asString();
- body["subject"] = getChild<LLUICtrl>("subject_form")->getValue().asString();
- body["msg"] = getChild<LLUICtrl>("msg_form")->getValue().asString();
- LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, mAssetID, LLAssetType::AT_IMAGE_JPEG));
- }
- else
- {
- gAssetStorage->storeAssetData(mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)this, FALSE);
- }
-
- // give user feedback of the event
- gViewerWindow->playSnapshotAnimAndSound();
- LLUploadDialog::modalUploadDialog(getString("upload_message"));
-
- // don't destroy the window until the upload is done
- // this way we keep the information in the form
- setVisible(FALSE);
-
- // also remove any dependency on another floater
- // so that we can be sure to outlive it while we
- // need to.
- LLFloater* dependee = getDependee();
- if (dependee)
- dependee->removeDependentFloater(this);
-}
diff --git a/indra/newview/llfloaterpostcard.h b/indra/newview/llfloaterpostcard.h
deleted file mode 100644
index 472592154f..0000000000
--- a/indra/newview/llfloaterpostcard.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * @file llfloaterpostcard.h
- * @brief Postcard send floater, allows setting name, e-mail address, etc.
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERPOSTCARD_H
-#define LL_LLFLOATERPOSTCARD_H
-
-#include "llfloater.h"
-#include "llcheckboxctrl.h"
-
-#include "llpointer.h"
-
-class LLTextEditor;
-class LLLineEditor;
-class LLButton;
-class LLViewerTexture;
-class LLImageJPEG;
-
-class LLFloaterPostcard
-: public LLFloater
-{
-public:
- LLFloaterPostcard(const LLSD& key);
- virtual ~LLFloaterPostcard();
-
- virtual BOOL postBuild();
- virtual void draw();
-
- static LLFloaterPostcard* showFromSnapshot(LLImageJPEG *jpeg, LLViewerTexture *img, const LLVector2& img_scale, const LLVector3d& pos_taken_global);
-
- static void onClickCancel(void* data);
- static void onClickSend(void* data);
-
- static void uploadCallback(const LLUUID& asset_id,
- void *user_data,
- S32 result, LLExtStat ext_status);
-
- static void updateUserInfo(const std::string& email);
-
- static void onMsgFormFocusRecieved(LLFocusableElement* receiver, void* data);
- bool missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response);
-
- void sendPostcard();
-
-private:
-
- LLPointer<LLImageJPEG> mJPEGImage;
- LLPointer<LLViewerTexture> mViewerImage;
- LLTransactionID mTransactionID;
- LLAssetID mAssetID;
- LLVector2 mImageScale;
- LLVector3d mPosTakenGlobal;
- bool mHasFirstMsgFocus;
-};
-
-
-#endif // LL_LLFLOATERPOSTCARD_H
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 9630d7b29f..a333989e7e 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -50,6 +50,7 @@
#include "llfloaterreg.h"
#include "llfloaterabout.h"
#include "llfloaterhardwaresettings.h"
+#include "llfloatersidepanelcontainer.h"
#include "llimfloater.h"
#include "llkeyboard.h"
#include "llmodaldialog.h"
@@ -66,7 +67,6 @@
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "llsliderctrl.h"
-#include "llsidetray.h"
#include "lltabcontainer.h"
#include "lltrans.h"
#include "llviewercontrol.h"
@@ -345,6 +345,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.MaturitySettings", boost::bind(&LLFloaterPreference::onChangeMaturity, this));
mCommitCallbackRegistrar.add("Pref.BlockList", boost::bind(&LLFloaterPreference::onClickBlockList, this));
mCommitCallbackRegistrar.add("Pref.Proxy", boost::bind(&LLFloaterPreference::onClickProxySettings, this));
+ mCommitCallbackRegistrar.add("Pref.TranslationSettings", boost::bind(&LLFloaterPreference::onClickTranslationSettings, this));
sSkin = gSavedSettings.getString("SkinCurrent");
@@ -599,6 +600,9 @@ void LLFloaterPreference::cancel()
}
// hide joystick pref floater
LLFloaterReg::hideInstance("pref_joystick");
+
+ // hide translation settings floater
+ LLFloaterReg::hideInstance("prefs_translation");
// cancel hardware menu
LLFloaterHardwareSettings* hardware_settings = LLFloaterReg::getTypedInstance<LLFloaterHardwareSettings>("prefs_hardware_settings");
@@ -679,7 +683,7 @@ void LLFloaterPreference::onOpen(const LLSD& key)
// Display selected maturity icons.
onChangeMaturity();
-
+
// Load (double-)click to walk/teleport settings.
updateClickActionControls();
@@ -1497,11 +1501,7 @@ void LLFloaterPreference::onChangeMaturity()
// but the UI for this will still be enabled
void LLFloaterPreference::onClickBlockList()
{
- // don't create side tray on demand
- if (LLSideTray::instanceCreated())
- {
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray");
- }
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
}
void LLFloaterPreference::onClickProxySettings()
@@ -1509,6 +1509,11 @@ void LLFloaterPreference::onClickProxySettings()
LLFloaterReg::showInstance("prefs_proxy");
}
+void LLFloaterPreference::onClickTranslationSettings()
+{
+ LLFloaterReg::showInstance("prefs_translation");
+}
+
void LLFloaterPreference::onClickActionChange()
{
mClickActionDirty = true;
@@ -1917,7 +1922,6 @@ BOOL LLFloaterPreferenceProxy::postBuild()
getChild<LLLineEditor>("socks5_password")->setValue(socks_cred->getAuthenticator()["creds"].asString());
}
- center();
return TRUE;
}
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 5c74e9f60c..7ee3294478 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -156,6 +156,7 @@ public:
void onChangeMaturity();
void onClickBlockList();
void onClickProxySettings();
+ void onClickTranslationSettings();
void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
void getUIColor(LLUICtrl* ctrl, const LLSD& param);
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
new file mode 100644
index 0000000000..be7a53491d
--- /dev/null
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -0,0 +1,111 @@
+/**
+ * @file llfloatersidepanelcontainer.cpp
+ * @brief LLFloaterSidePanelContainer class definition
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
+
+// newview includes
+#include "llsidetraypanelcontainer.h"
+#include "lltransientfloatermgr.h"
+
+//static
+const std::string LLFloaterSidePanelContainer::sMainPanelName("main_panel");
+
+LLFloaterSidePanelContainer::LLFloaterSidePanelContainer(const LLSD& key, const Params& params)
+: LLFloater(key, params)
+{
+ // Prevent transient floaters (e.g. IM windows) from hiding
+ // when this floater is clicked.
+ LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
+}
+
+LLFloaterSidePanelContainer::~LLFloaterSidePanelContainer()
+{
+ LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
+}
+
+void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
+{
+ getChild<LLPanel>(sMainPanelName)->onOpen(key);
+}
+
+LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
+{
+ LLView* view = findChildView(panel_name, true);
+ if (!view) return NULL;
+
+ openFloater();
+
+ LLPanel* panel = NULL;
+
+ LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
+ if (container)
+ {
+ LLSD new_params = params;
+ new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
+ container->onOpen(new_params);
+
+ panel = container->getCurrentPanel();
+ }
+ else if ((panel = dynamic_cast<LLPanel*>(view)) != NULL)
+ {
+ panel->onOpen(params);
+ }
+
+ return panel;
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& key)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+ if (floaterp)
+ {
+ floaterp->openChildPanel(sMainPanelName, key);
+ }
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+ if (floaterp)
+ {
+ floaterp->openChildPanel(panel_name, key);
+ }
+}
+
+LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+
+ if (floaterp)
+ {
+ return floaterp->findChild<LLPanel>(panel_name, true);
+ }
+
+ return NULL;
+}
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
new file mode 100644
index 0000000000..10d85867ce
--- /dev/null
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -0,0 +1,81 @@
+/**
+ * @file llfloatersidepanelcontainer.h
+ * @brief LLFloaterSidePanelContainer class
+ *
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERSIDEPANELCONTAINER_H
+#define LL_LLFLOATERSIDEPANELCONTAINER_H
+
+#include "llfloater.h"
+
+/**
+ * Class LLFloaterSidePanelContainer
+ *
+ * Provides an interface for all former Side Tray panels.
+ *
+ * This class helps to make sure that clicking a floater containing the side panel
+ * doesn't make transient floaters (e.g. IM windows) hide, so that it's possible to
+ * drag an inventory item from My Inventory window to a docked IM window,
+ * i.e. share the item (see VWR-22891).
+ */
+class LLFloaterSidePanelContainer : public LLFloater
+{
+private:
+ static const std::string sMainPanelName;
+
+public:
+ LLFloaterSidePanelContainer(const LLSD& key, const Params& params = getDefaultParams());
+ ~LLFloaterSidePanelContainer();
+
+ /*virtual*/ void onOpen(const LLSD& key);
+
+ LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
+
+ static void showPanel(const std::string& floater_name, const LLSD& key);
+
+ static void showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key);
+
+ static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
+
+ /**
+ * Gets the panel of given type T (doesn't show it or do anything else with it).
+ *
+ * @param floater_name a string specifying the floater to be searched for a child panel.
+ * @param panel_name a string specifying the child panel to get.
+ * @returns a pointer to the panel of given type T.
+ */
+ template <typename T>
+ static T* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName)
+ {
+ T* panel = dynamic_cast<T*>(getPanel(floater_name, panel_name));
+ if (!panel)
+ {
+ llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
+ }
+ return panel;
+ }
+};
+
+#endif // LL_LLFLOATERSIDEPANELCONTAINER_H
diff --git a/indra/newview/llfloatersidetraytab.cpp b/indra/newview/llfloatersidetraytab.cpp
deleted file mode 100644
index 9f15e62d84..0000000000
--- a/indra/newview/llfloatersidetraytab.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llfloatersidetraytab.cpp
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatersidetraytab.h"
-
-// newview includes
-#include "lltransientfloatermgr.h"
-#include "llsidetray.h"
-
-LLFloaterSideTrayTab::LLFloaterSideTrayTab(const LLSD& key, const Params& params)
-: LLFloater(key, params)
-{
- // Prevent transient floaters (e.g. IM windows) from hiding
- // when this floater is clicked.
- LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
-{
- LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-void LLFloaterSideTrayTab::onClose(bool app_quitting)
-{
- // The floater is already being closed, so don't toggle it once more (that may crash viewer).
- LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
-}
diff --git a/indra/newview/llfloatersidetraytab.h b/indra/newview/llfloatersidetraytab.h
deleted file mode 100644
index 89f2444a0e..0000000000
--- a/indra/newview/llfloatersidetraytab.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file llfloatersidetraytab.h
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERSIDETRAYTAB_H
-#define LL_LLFLOATERSIDETRAYTAB_H
-
-#include "llfloater.h"
-
-/**
- * When a side tray tab gets detached, it's wrapped in an instance of this class.
- *
- * This class helps to make sure that clicking a detached side tray tab doesn't
- * make transient floaters (e.g. IM windows) hide, so that it's possible to
- * drag an inventory item from detached My Inventory window to a docked IM window,
- * i.e. share the item (see VWR-22891).
- */
-class LLFloaterSideTrayTab : public LLFloater
-{
-public:
- LLFloaterSideTrayTab(const LLSD& key, const Params& params = getDefaultParams());
- ~LLFloaterSideTrayTab();
-
- void onClose(bool app_quitting);
-};
-
-#endif // LL_LLFLOATERSIDETRAYTAB_H
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 00dc7b1627..1b3290d5a8 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -42,6 +42,8 @@
#include "llcombobox.h"
#include "lleconomy.h"
#include "lllandmarkactions.h"
+#include "llpanelsnapshot.h"
+#include "llsidetraypanelcontainer.h"
#include "llsliderctrl.h"
#include "llspinctrl.h"
#include "llviewercontrol.h"
@@ -50,9 +52,7 @@
#include "llviewercamera.h"
#include "llviewerwindow.h"
#include "llviewermenufile.h" // upload_new_resource()
-#include "llfloaterpostcard.h"
#include "llcheckboxctrl.h"
-#include "llradiogroup.h"
#include "llslurl.h"
#include "lltoolfocus.h"
#include "lltoolmgr.h"
@@ -76,18 +76,17 @@
#include "llimagej2c.h"
#include "lllocalcliprect.h"
#include "llnotificationsutil.h"
+#include "llpostcard.h"
#include "llresmgr.h" // LLLocale
#include "llvfile.h"
#include "llvfs.h"
+#include "llwebprofile.h"
#include "llwindow.h"
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
///----------------------------------------------------------------------------
-S32 LLFloaterSnapshot::sUIWinHeightLong = 530 ;
-S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 240 ;
-S32 LLFloaterSnapshot::sUIWinWidth = 215 ;
-
+LLUICtrl* LLFloaterSnapshot::sThumbnailPlaceholder = NULL;
LLSnapshotFloaterView* gSnapshotFloaterView = NULL;
const F32 AUTO_SNAPSHOT_TIME_DELAY = 1.f;
@@ -108,6 +107,7 @@ static LLDefaultChildRegistry::Register<LLSnapshotFloaterView> r("snapshot_float
///----------------------------------------------------------------------------
class LLSnapshotLivePreview : public LLView
{
+ LOG_CLASS(LLSnapshotLivePreview);
public:
enum ESnapshotType
{
@@ -135,7 +135,11 @@ public:
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
void setSize(S32 w, S32 h);
+ void setWidth(S32 w) { mWidth[mCurImageIndex] = w; }
+ void setHeight(S32 h) { mHeight[mCurImageIndex] = h; }
void getSize(S32& w, S32& h) const;
+ S32 getWidth() const { return mWidth[mCurImageIndex]; }
+ S32 getHeight() const { return mHeight[mCurImageIndex]; }
S32 getDataSize() const { return mDataSize; }
void setMaxImageSize(S32 size) ;
S32 getMaxImageSize() {return mMaxImageSize ;}
@@ -152,8 +156,10 @@ public:
LLViewerTexture* getCurrentImage();
F32 getImageAspect();
F32 getAspect() ;
- LLRect getImageRect();
- BOOL isImageScaled();
+ const LLRect& getImageRect() const { return mImageRect[mCurImageIndex]; }
+ BOOL isImageScaled() const { return mImageScaled[mCurImageIndex]; }
+ void setImageScaled(BOOL scaled) { mImageScaled[mCurImageIndex] = scaled; }
+ const LLVector3d& getPosTakenGlobal() const { return mPosTakenGlobal; }
void setSnapshotType(ESnapshotType type) { mSnapshotType = type; }
void setSnapshotFormat(LLFloaterSnapshot::ESnapshotFormat type) { mSnapshotFormat = type; }
@@ -161,10 +167,13 @@ public:
void setSnapshotBufferType(LLViewerWindow::ESnapshotType type) { mSnapshotBufferType = type; }
void updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail = FALSE, F32 delay = 0.f);
void saveWeb();
- LLFloaterPostcard* savePostcard();
void saveTexture();
BOOL saveLocal();
+ LLPointer<LLImageFormatted> getFormattedImage() const { return mFormattedImage; }
+ LLPointer<LLImageRaw> getEncodedImage() const { return mPreviewImageEncoded; }
+
+ /// Sets size of preview thumbnail image and thhe surrounding rect.
BOOL setThumbnailImageSize() ;
void generateThumbnailImage(BOOL force_update = FALSE) ;
void resetThumbnailImage() { mThumbnailImage = NULL ; }
@@ -293,7 +302,7 @@ LLViewerTexture* LLSnapshotLivePreview::getCurrentImage()
F32 LLSnapshotLivePreview::getAspect()
{
- F32 image_aspect_ratio = ((F32)mWidth[mCurImageIndex]) / ((F32)mHeight[mCurImageIndex]);
+ F32 image_aspect_ratio = ((F32)getWidth()) / ((F32)getHeight());
F32 window_aspect_ratio = ((F32)getRect().getWidth()) / ((F32)getRect().getHeight());
if (!mKeepAspectRatio)//gSavedSettings.getBOOL("KeepAspectForSnapshot"))
@@ -308,7 +317,7 @@ F32 LLSnapshotLivePreview::getAspect()
F32 LLSnapshotLivePreview::getImageAspect()
{
- if (!mViewerImage[mCurImageIndex])
+ if (!getCurrentImage())
{
return 0.f;
}
@@ -316,32 +325,25 @@ F32 LLSnapshotLivePreview::getImageAspect()
return getAspect() ;
}
-LLRect LLSnapshotLivePreview::getImageRect()
-{
- return mImageRect[mCurImageIndex];
-}
-
-BOOL LLSnapshotLivePreview::isImageScaled()
-{
- return mImageScaled[mCurImageIndex];
-}
-
void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail, F32 delay)
-{
- if (mSnapshotUpToDate)
+{
+ // Invalidate current image.
+ lldebugs << "updateSnapshot: mSnapshotUpToDate = " << getSnapshotUpToDate() << llendl;
+ if (getSnapshotUpToDate())
{
S32 old_image_index = mCurImageIndex;
mCurImageIndex = (mCurImageIndex + 1) % 2;
- mWidth[mCurImageIndex] = mWidth[old_image_index];
- mHeight[mCurImageIndex] = mHeight[old_image_index];
+ setWidth(mWidth[old_image_index]);
+ setHeight(mHeight[old_image_index]);
mFallAnimTimer.start();
}
mSnapshotUpToDate = FALSE;
+ // Update snapshot source rect depending on whether we keep the aspect ratio.
LLRect& rect = mImageRect[mCurImageIndex];
rect.set(0, getRect().getHeight(), getRect().getWidth(), 0);
- F32 image_aspect_ratio = ((F32)mWidth[mCurImageIndex]) / ((F32)mHeight[mCurImageIndex]);
+ F32 image_aspect_ratio = ((F32)getWidth()) / ((F32)getHeight());
F32 window_aspect_ratio = ((F32)getRect().getWidth()) / ((F32)getRect().getHeight());
if (mKeepAspectRatio)//gSavedSettings.getBOOL("KeepAspectForSnapshot"))
@@ -362,17 +364,22 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail
}
}
+ // Stop shining animation.
mShineAnimTimer.stop();
+
+ // Update snapshot if requested.
if (new_snapshot)
{
mSnapshotDelayTimer.start();
mSnapshotDelayTimer.setTimerExpirySec(delay);
+ LLFloaterSnapshot::preUpdate();
}
+
+ // Update thumbnail if requested.
if(new_thumbnail)
{
mThumbnailUpToDate = FALSE ;
}
- setThumbnailImageSize();
}
void LLSnapshotLivePreview::setSnapshotQuality(S32 quality)
@@ -428,26 +435,26 @@ void LLSnapshotLivePreview::drawPreviewRect(S32 offset_x, S32 offset_y)
//called when the frame is frozen.
void LLSnapshotLivePreview::draw()
{
- if (mViewerImage[mCurImageIndex].notNull() &&
+ if (getCurrentImage() &&
mPreviewImageEncoded.notNull() &&
- mSnapshotUpToDate)
+ getSnapshotUpToDate())
{
LLColor4 bg_color(0.f, 0.f, 0.3f, 0.4f);
gl_rect_2d(getRect(), bg_color);
- LLRect &rect = mImageRect[mCurImageIndex];
- LLRect shadow_rect = mImageRect[mCurImageIndex];
+ const LLRect& rect = getImageRect();
+ LLRect shadow_rect = rect;
shadow_rect.stretch(BORDER_WIDTH);
gl_drop_shadow(shadow_rect.mLeft, shadow_rect.mTop, shadow_rect.mRight, shadow_rect.mBottom, LLColor4(0.f, 0.f, 0.f, mNeedsFlash ? 0.f :0.5f), 10);
LLColor4 image_color(1.f, 1.f, 1.f, 1.f);
gGL.color4fv(image_color.mV);
- gGL.getTexUnit(0)->bind(mViewerImage[mCurImageIndex]);
+ gGL.getTexUnit(0)->bind(getCurrentImage());
// calculate UV scale
- F32 uv_width = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mWidth[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f);
- F32 uv_height = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mHeight[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f);
- glPushMatrix();
+ F32 uv_width = isImageScaled() ? 1.f : llmin((F32)getWidth() / (F32)getCurrentImage()->getWidth(), 1.f);
+ F32 uv_height = isImageScaled() ? 1.f : llmin((F32)getHeight() / (F32)getCurrentImage()->getHeight(), 1.f);
+ gGL.pushMatrix();
{
- glTranslatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f);
+ gGL.translatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f);
gGL.begin(LLRender::QUADS);
{
gGL.texCoord2f(uv_width, uv_height);
@@ -464,7 +471,7 @@ void LLSnapshotLivePreview::draw()
}
gGL.end();
}
- glPopMatrix();
+ gGL.popMatrix();
gGL.color4f(1.f, 1.f, 1.f, mFlashAlpha);
gl_rect_2d(getRect());
@@ -484,6 +491,7 @@ void LLSnapshotLivePreview::draw()
mFlashAlpha = lerp(mFlashAlpha, 0.f, LLCriticalDamp::getInterpolant(0.15f));
}
+ // Draw shining animation if appropriate.
if (mShineCountdown > 0)
{
mShineCountdown--;
@@ -494,6 +502,7 @@ void LLSnapshotLivePreview::draw()
}
else if (mShineAnimTimer.getStarted())
{
+ lldebugs << "Drawing shining animation" << llendl;
F32 shine_interp = llmin(1.f, mShineAnimTimer.getElapsedTimeF32() / SHINE_TIME);
// draw "shine" effect
@@ -538,7 +547,7 @@ void LLSnapshotLivePreview::draw()
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.color4f(1.f, 1.f, 1.f, 1.f);
- LLRect outline_rect = mImageRect[mCurImageIndex];
+ const LLRect& outline_rect = getImageRect();
gGL.begin(LLRender::QUADS);
{
gGL.vertex2i(outline_rect.mLeft - BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH);
@@ -570,6 +579,7 @@ void LLSnapshotLivePreview::draw()
S32 old_image_index = (mCurImageIndex + 1) % 2;
if (mViewerImage[old_image_index].notNull() && mFallAnimTimer.getElapsedTimeF32() < FALL_TIME)
{
+ lldebugs << "Drawing fall animation" << llendl;
F32 fall_interp = mFallAnimTimer.getElapsedTimeF32() / FALL_TIME;
F32 alpha = clamp_rescale(fall_interp, 0.f, 1.f, 0.8f, 0.4f);
LLColor4 image_color(1.f, 1.f, 1.f, alpha);
@@ -580,11 +590,11 @@ void LLSnapshotLivePreview::draw()
BOOL rescale = !mImageScaled[old_image_index] && mViewerImage[mCurImageIndex].notNull();
F32 uv_width = rescale ? llmin((F32)mWidth[old_image_index] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f) : 1.f;
F32 uv_height = rescale ? llmin((F32)mHeight[old_image_index] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f) : 1.f;
- glPushMatrix();
+ gGL.pushMatrix();
{
LLRect& rect = mImageRect[old_image_index];
- glTranslatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f);
- glRotatef(-45.f * fall_interp, 0.f, 0.f, 1.f);
+ gGL.translatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f);
+ gGL.rotatef(-45.f * fall_interp, 0.f, 0.f, 1.f);
gGL.begin(LLRender::QUADS);
{
gGL.texCoord2f(uv_width, uv_height);
@@ -601,7 +611,7 @@ void LLSnapshotLivePreview::draw()
}
gGL.end();
}
- glPopMatrix();
+ gGL.popMatrix();
}
}
}
@@ -613,13 +623,14 @@ void LLSnapshotLivePreview::reshape(S32 width, S32 height, BOOL called_from_pare
LLView::reshape(width, height, called_from_parent);
if (old_rect.getWidth() != width || old_rect.getHeight() != height)
{
+ lldebugs << "window reshaped, updating thumbnail" << llendl;
updateSnapshot(FALSE, TRUE);
}
}
BOOL LLSnapshotLivePreview::setThumbnailImageSize()
{
- if(mWidth[mCurImageIndex] < 10 || mHeight[mCurImageIndex] < 10)
+ if(getWidth() < 10 || getHeight() < 10)
{
return FALSE ;
}
@@ -629,8 +640,10 @@ BOOL LLSnapshotLivePreview::setThumbnailImageSize()
F32 window_aspect_ratio = ((F32)window_width) / ((F32)window_height);
// UI size for thumbnail
- S32 max_width = LLFloaterSnapshot::getUIWinWidth() - 20;
- S32 max_height = 90;
+ // *FIXME: the rect does not change, so maybe there's no need to recalculate max w/h.
+ const LLRect& thumbnail_rect = LLFloaterSnapshot::getThumbnailPlaceholderRect();
+ S32 max_width = thumbnail_rect.getWidth();
+ S32 max_height = thumbnail_rect.getHeight();
if (window_aspect_ratio > (F32)max_width / max_height)
{
@@ -653,11 +666,11 @@ BOOL LLSnapshotLivePreview::setThumbnailImageSize()
S32 left = 0 , top = mThumbnailHeight, right = mThumbnailWidth, bottom = 0 ;
if(!mKeepAspectRatio)
{
- F32 ratio_x = (F32)mWidth[mCurImageIndex] / window_width ;
- F32 ratio_y = (F32)mHeight[mCurImageIndex] / window_height ;
+ F32 ratio_x = (F32)getWidth() / window_width ;
+ F32 ratio_y = (F32)getHeight() / window_height ;
- //if(mWidth[mCurImageIndex] > window_width ||
- // mHeight[mCurImageIndex] > window_height )
+ //if(getWidth() > window_width ||
+ // getHeight() > window_height )
{
if(ratio_x > ratio_y)
{
@@ -689,11 +702,11 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
{
return ;
}
- if(mThumbnailUpToDate && !force_update)//already updated
+ if(getThumbnailUpToDate() && !force_update)//already updated
{
return ;
}
- if(mWidth[mCurImageIndex] < 10 || mHeight[mCurImageIndex] < 10)
+ if(getWidth() < 10 || getHeight() < 10)
{
return ;
}
@@ -713,25 +726,19 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
resetThumbnailImage() ;
}
- LLPointer<LLImageRaw> raw = NULL ;
- S32 w , h ;
- w = get_lower_power_two(mThumbnailWidth, 512) * 2 ;
- h = get_lower_power_two(mThumbnailHeight, 512) * 2 ;
-
+ LLPointer<LLImageRaw> raw = new LLImageRaw;
+ if(!gViewerWindow->thumbnailSnapshot(raw,
+ mThumbnailWidth, mThumbnailHeight,
+ gSavedSettings.getBOOL("RenderUIInSnapshot"),
+ FALSE,
+ mSnapshotBufferType) )
{
- raw = new LLImageRaw ;
- if(!gViewerWindow->thumbnailSnapshot(raw,
- w, h,
- gSavedSettings.getBOOL("RenderUIInSnapshot"),
- FALSE,
- mSnapshotBufferType) )
- {
- raw = NULL ;
- }
+ raw = NULL ;
}
if(raw)
{
+ raw->expandToPowerOfTwo();
mThumbnailImage = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE);
mThumbnailUpToDate = TRUE ;
}
@@ -746,8 +753,14 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
//static
BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
{
- LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview;
+ LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview;
+ if (previewp->getWidth() == 0 || previewp->getHeight() == 0)
+ {
+ llwarns << "Incorrect dimensions: " << previewp->getWidth() << "x" << previewp->getHeight() << llendl;
+ return FALSE;
+ }
+ // If we're in freeze-frame mode and camera has moved, update snapshot.
LLVector3 new_camera_pos = LLViewerCamera::getInstance()->getOrigin();
LLQuaternion new_camera_rot = LLViewerCamera::getInstance()->getQuaternion();
if (gSavedSettings.getBOOL("FreezeTime") &&
@@ -757,6 +770,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
previewp->mCameraRot = new_camera_rot;
// request a new snapshot whenever the camera moves, with a time delay
BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
+ lldebugs << "camera moved, updating thumbnail" << llendl;
previewp->updateSnapshot(
autosnap, // whether a new snapshot is needed or merely invalidate the existing one
FALSE, // or if 1st arg is false, whether to produce a new thumbnail image.
@@ -773,7 +787,9 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
}
// time to produce a snapshot
+ previewp->setThumbnailImageSize();
+ lldebugs << "producing snapshot" << llendl;
if (!previewp->mPreviewImage)
{
previewp->mPreviewImage = new LLImageRaw;
@@ -788,13 +804,13 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
previewp->setEnabled(FALSE);
previewp->getWindow()->incBusyCount();
- previewp->mImageScaled[previewp->mCurImageIndex] = FALSE;
+ previewp->setImageScaled(FALSE);
// grab the raw image and encode it into desired format
if(gViewerWindow->rawSnapshot(
previewp->mPreviewImage,
- previewp->mWidth[previewp->mCurImageIndex],
- previewp->mHeight[previewp->mCurImageIndex],
+ previewp->getWidth(),
+ previewp->getHeight(),
previewp->mKeepAspectRatio,//gSavedSettings.getBOOL("KeepAspectForSnapshot"),
previewp->getSnapshotType() == LLSnapshotLivePreview::SNAPSHOT_TEXTURE,
gSavedSettings.getBOOL("RenderUIInSnapshot"),
@@ -809,6 +825,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
if(previewp->getSnapshotType() == SNAPSHOT_TEXTURE)
{
+ lldebugs << "Encoding new image of format J2C" << llendl;
LLPointer<LLImageJ2C> formatted = new LLImageJ2C;
LLPointer<LLImageRaw> scaled = new LLImageRaw(
previewp->mPreviewImage->getData(),
@@ -817,7 +834,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
previewp->mPreviewImage->getComponents());
scaled->biasedScaleToPowerOfTwo(512);
- previewp->mImageScaled[previewp->mCurImageIndex] = TRUE;
+ previewp->setImageScaled(TRUE);
if (formatted->encode(scaled, 0.f))
{
previewp->mDataSize = formatted->getDataSize();
@@ -829,18 +846,8 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
// delete any existing image
previewp->mFormattedImage = NULL;
// now create the new one of the appropriate format.
- // note: postcards and web hardcoded to use jpeg always.
- LLFloaterSnapshot::ESnapshotFormat format;
-
- if (previewp->getSnapshotType() == SNAPSHOT_POSTCARD ||
- previewp->getSnapshotType() == SNAPSHOT_WEB)
- {
- format = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
- }
- else
- {
- format = previewp->getSnapshotFormat();
- }
+ LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotFormat();
+ lldebugs << "Encoding new image of format " << format << llendl;
switch(format)
{
@@ -882,7 +889,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
{
// go ahead and shrink image to appropriate power of 2 for display
scaled->biasedScaleToPowerOfTwo(1024);
- previewp->mImageScaled[previewp->mCurImageIndex] = TRUE;
+ previewp->setImageScaled(TRUE);
}
else
{
@@ -920,56 +927,28 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
{
previewp->generateThumbnailImage() ;
}
+ lldebugs << "done creating snapshot" << llendl;
+ LLFloaterSnapshot::postUpdate();
return TRUE;
}
void LLSnapshotLivePreview::setSize(S32 w, S32 h)
{
- mWidth[mCurImageIndex] = w;
- mHeight[mCurImageIndex] = h;
+ lldebugs << "setSize(" << w << ", " << h << ")" << llendl;
+ setWidth(w);
+ setHeight(h);
}
void LLSnapshotLivePreview::getSize(S32& w, S32& h) const
{
- w = mWidth[mCurImageIndex];
- h = mHeight[mCurImageIndex];
-}
-
-LLFloaterPostcard* LLSnapshotLivePreview::savePostcard()
-{
- if(mViewerImage[mCurImageIndex].isNull())
- {
- //this should never happen!!
- llwarns << "The snapshot image has not been generated!" << llendl ;
- return NULL ;
- }
-
- // calculate and pass in image scale in case image data only use portion
- // of viewerimage buffer
- LLVector2 image_scale(1.f, 1.f);
- if (!isImageScaled())
- {
- image_scale.setVec(llmin(1.f, (F32)mWidth[mCurImageIndex] / (F32)getCurrentImage()->getWidth()), llmin(1.f, (F32)mHeight[mCurImageIndex] / (F32)getCurrentImage()->getHeight()));
- }
-
- LLImageJPEG* jpg = dynamic_cast<LLImageJPEG*>(mFormattedImage.get());
- if(!jpg)
- {
- llwarns << "Formatted image not a JPEG" << llendl;
- return NULL;
- }
- LLFloaterPostcard* floater = LLFloaterPostcard::showFromSnapshot(jpg, mViewerImage[mCurImageIndex], image_scale, mPosTakenGlobal);
- // relinquish lifetime of jpeg image to postcard floater
- mFormattedImage = NULL;
- mDataSize = 0;
- updateSnapshot(FALSE, FALSE);
-
- return floater;
+ w = getWidth();
+ h = getHeight();
}
void LLSnapshotLivePreview::saveTexture()
{
+ lldebugs << "saving texture: " << mPreviewImage->getWidth() << "x" << mPreviewImage->getHeight() << llendl;
// gen a new uuid for this asset
LLTransactionID tid;
tid.generate();
@@ -982,7 +961,8 @@ void LLSnapshotLivePreview::saveTexture()
mPreviewImage->getComponents());
scaled->biasedScaleToPowerOfTwo(512);
-
+ lldebugs << "scaled texture to " << scaled->getWidth() << "x" << scaled->getHeight() << llendl;
+
if (formatted->encode(scaled, 0.0f))
{
LLVFile::writeFile(formatted->getData(), formatted->getDataSize(), gVFS, new_asset_id, LLAssetType::AT_TEXTURE);
@@ -1022,11 +1002,6 @@ BOOL LLSnapshotLivePreview::saveLocal()
{
BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage);
- // Relinquish image memory. Save button will be disabled as a side-effect.
- mFormattedImage = NULL;
- mDataSize = 0;
- updateSnapshot(FALSE, FALSE);
-
if(success)
{
gViewerWindow->playSnapshotAnimAndSound();
@@ -1067,11 +1042,21 @@ void LLSnapshotLivePreview::regionNameCallback(LLImageJPEG* snapshot, LLSD& meta
class LLFloaterSnapshot::Impl
{
+ LOG_CLASS(LLFloaterSnapshot::Impl);
public:
+ typedef enum e_status
+ {
+ STATUS_READY,
+ STATUS_WORKING,
+ STATUS_FINISHED
+ } EStatus;
+
Impl()
: mAvatarPauseHandles(),
mLastToolset(NULL),
- mAspectRatioCheckOff(false)
+ mAspectRatioCheckOff(false),
+ mNeedRefresh(false),
+ mStatus(STATUS_READY)
{
}
~Impl()
@@ -1080,43 +1065,49 @@ public:
mAvatarPauseHandles.clear();
}
- static void onClickDiscard(void* data);
- static void onClickKeep(void* data);
- static void onCommitSave(LLUICtrl* ctrl, void* data);
static void onClickNewSnapshot(void* data);
static void onClickAutoSnap(LLUICtrl *ctrl, void* data);
//static void onClickAdvanceSnap(LLUICtrl *ctrl, void* data);
- static void onClickLess(void* data) ;
static void onClickMore(void* data) ;
static void onClickUICheck(LLUICtrl *ctrl, void* data);
static void onClickHUDCheck(LLUICtrl *ctrl, void* data);
- static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data);
- static void onClickKeepAspectCheck(LLUICtrl *ctrl, void* data);
- static void onCommitQuality(LLUICtrl* ctrl, void* data);
- static void onCommitResolution(LLUICtrl* ctrl, void* data) { updateResolution(ctrl, data); }
+ static void applyKeepAspectCheck(LLFloaterSnapshot* view, BOOL checked);
static void updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update = TRUE);
static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data);
static void onCommitLayerTypes(LLUICtrl* ctrl, void*data);
- static void onCommitSnapshotType(LLUICtrl* ctrl, void* data);
- static void onCommitSnapshotFormat(LLUICtrl* ctrl, void* data);
- static void onCommitCustomResolution(LLUICtrl *ctrl, void* data);
- static void resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height) ;
+ static void onImageQualityChange(LLFloaterSnapshot* view, S32 quality_val);
+ static void onImageFormatChange(LLFloaterSnapshot* view);
+ static void applyCustomResolution(LLFloaterSnapshot* view, S32 w, S32 h);
+ static void onSnapshotUploadFinished(bool status);
+ static void onSendingPostcardFinished(bool status);
static BOOL checkImageSize(LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL isWidthChanged, S32 max_value);
+ static void setImageSizeSpinnersValues(LLFloaterSnapshot *view, S32 width, S32 height) ;
+ static void updateSpinners(LLFloaterSnapshot* view, LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL is_width_changed);
+
+ static LLPanelSnapshot* getActivePanel(LLFloaterSnapshot* floater, bool ok_if_not_found = true);
+ static LLSnapshotLivePreview::ESnapshotType getActiveSnapshotType(LLFloaterSnapshot* floater);
+ static LLFloaterSnapshot::ESnapshotFormat getImageFormat(LLFloaterSnapshot* floater);
+ static LLSpinCtrl* getWidthSpinner(LLFloaterSnapshot* floater);
+ static LLSpinCtrl* getHeightSpinner(LLFloaterSnapshot* floater);
+ static void enableAspectRatioCheckbox(LLFloaterSnapshot* floater, BOOL enable);
+ static void setAspectRatioCheckboxValue(LLFloaterSnapshot* floater, BOOL checked);
static LLSnapshotLivePreview* getPreviewView(LLFloaterSnapshot *floater);
static void setResolution(LLFloaterSnapshot* floater, const std::string& comboname);
static void updateControls(LLFloaterSnapshot* floater);
static void updateLayout(LLFloaterSnapshot* floater);
- static void updateResolutionTextEntry(LLFloaterSnapshot* floater);
+ static void setStatus(EStatus status, bool ok = true, const std::string& msg = LLStringUtil::null);
+ EStatus getStatus() const { return mStatus; }
+ static void setNeedRefresh(LLFloaterSnapshot* floater, bool need);
private:
- static LLSnapshotLivePreview::ESnapshotType getTypeIndex(LLFloaterSnapshot* floater);
- static LLSD getTypeName(LLSnapshotLivePreview::ESnapshotType index);
- static ESnapshotFormat getFormatIndex(LLFloaterSnapshot* floater);
static LLViewerWindow::ESnapshotType getLayerType(LLFloaterSnapshot* floater);
static void comboSetCustom(LLFloaterSnapshot *floater, const std::string& comboname);
static void checkAutoSnapshot(LLSnapshotLivePreview* floater, BOOL update_thumbnail = FALSE);
static void checkAspectRatio(LLFloaterSnapshot *view, S32 index) ;
+ static void setWorking(LLFloaterSnapshot* floater, bool working);
+ static void setFinished(LLFloaterSnapshot* floater, bool finished, bool ok = true, const std::string& msg = LLStringUtil::null);
+
public:
std::vector<LLAnimPauseRequest> mAvatarPauseHandles;
@@ -1124,84 +1115,98 @@ public:
LLToolset* mLastToolset;
LLHandle<LLView> mPreviewHandle;
bool mAspectRatioCheckOff ;
+ bool mNeedRefresh;
+ EStatus mStatus;
};
// static
-LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot *floater)
+LLPanelSnapshot* LLFloaterSnapshot::Impl::getActivePanel(LLFloaterSnapshot* floater, bool ok_if_not_found)
{
- LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)floater->impl.mPreviewHandle.get();
- return previewp;
+ LLSideTrayPanelContainer* panel_container = floater->getChild<LLSideTrayPanelContainer>("panel_container");
+ LLPanelSnapshot* active_panel = dynamic_cast<LLPanelSnapshot*>(panel_container->getCurrentPanel());
+ if (!ok_if_not_found)
+ {
+ llassert_always(active_panel != NULL);
+ }
+ return active_panel;
}
// static
-LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getTypeIndex(LLFloaterSnapshot* floater)
+LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getActiveSnapshotType(LLFloaterSnapshot* floater)
{
- LLSnapshotLivePreview::ESnapshotType index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
- LLSD value = floater->getChild<LLUICtrl>("snapshot_type_radio")->getValue();
+ LLSnapshotLivePreview::ESnapshotType type = LLSnapshotLivePreview::SNAPSHOT_WEB;
+ std::string name;
+ LLPanelSnapshot* spanel = getActivePanel(floater);
- const std::string id = value.asString();
- if (id == "postcard")
+ if (spanel)
{
- index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
+ name = spanel->getName();
}
- else if (id == "texture")
+
+ if (name == "panel_snapshot_postcard")
{
- index = LLSnapshotLivePreview::SNAPSHOT_TEXTURE;
+ type = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
}
- else if (id == "local")
+ else if (name == "panel_snapshot_inventory")
{
- index = LLSnapshotLivePreview::SNAPSHOT_LOCAL;
+ type = LLSnapshotLivePreview::SNAPSHOT_TEXTURE;
}
- else if (id == "share_to_web")
+ else if (name == "panel_snapshot_local")
{
- index = LLSnapshotLivePreview::SNAPSHOT_WEB;
+ type = LLSnapshotLivePreview::SNAPSHOT_LOCAL;
}
- return index;
+ return type;
+}
+
+// static
+LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getImageFormat(LLFloaterSnapshot* floater)
+{
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ // FIXME: if the default is not PNG, profile uploads may fail.
+ return active_panel ? active_panel->getImageFormat() : LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG;
}
// static
-LLSD LLFloaterSnapshot::Impl::getTypeName(LLSnapshotLivePreview::ESnapshotType index)
+LLSpinCtrl* LLFloaterSnapshot::Impl::getWidthSpinner(LLFloaterSnapshot* floater)
{
- std::string id;
- switch (index)
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ return active_panel ? active_panel->getWidthSpinner() : floater->getChild<LLSpinCtrl>("snapshot_width");
+}
+
+// static
+LLSpinCtrl* LLFloaterSnapshot::Impl::getHeightSpinner(LLFloaterSnapshot* floater)
+{
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ return active_panel ? active_panel->getHeightSpinner() : floater->getChild<LLSpinCtrl>("snapshot_height");
+}
+
+// static
+void LLFloaterSnapshot::Impl::enableAspectRatioCheckbox(LLFloaterSnapshot* floater, BOOL enable)
+{
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ if (active_panel)
{
- case LLSnapshotLivePreview::SNAPSHOT_WEB:
- id = "share_to_web";
- break;
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
- id = "postcard";
- break;
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
- id = "texture";
- break;
- case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
- default:
- id = "local";
- break;
+ active_panel->enableAspectRatioCheckbox(enable);
}
- return LLSD(id);
}
// static
-LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getFormatIndex(LLFloaterSnapshot* floater)
+void LLFloaterSnapshot::Impl::setAspectRatioCheckboxValue(LLFloaterSnapshot* floater, BOOL checked)
{
- ESnapshotFormat index = SNAPSHOT_FORMAT_PNG;
- if(floater->hasChild("local_format_combo"))
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ if (active_panel)
{
- LLComboBox* local_format_combo = floater->findChild<LLComboBox>("local_format_combo");
- const std::string id = local_format_combo->getSelectedItemLabel();
- if (id == "PNG")
- index = SNAPSHOT_FORMAT_PNG;
- else if (id == "JPEG")
- index = SNAPSHOT_FORMAT_JPEG;
- else if (id == "BMP")
- index = SNAPSHOT_FORMAT_BMP;
+ active_panel->getChild<LLUICtrl>(active_panel->getAspectRatioCBName())->setValue(checked);
}
- return index;
}
-
+// static
+LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot *floater)
+{
+ LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)floater->impl.mPreviewHandle.get();
+ return previewp;
+}
// static
LLViewerWindow::ESnapshotType LLFloaterSnapshot::Impl::getLayerType(LLFloaterSnapshot* floater)
@@ -1229,20 +1234,28 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
{
LLSnapshotLivePreview* previewp = getPreviewView(floaterp);
- S32 delta_height = gSavedSettings.getBOOL("AdvanceSnapshot") ? 0 : floaterp->getUIWinHeightShort() - floaterp->getUIWinHeightLong() ;
+ BOOL advanced = gSavedSettings.getBOOL("AdvanceSnapshot");
+
+ // Show/hide advanced options.
+ LLPanel* advanced_options_panel = floaterp->getChild<LLPanel>("advanced_options_panel");
+ floaterp->getChild<LLButton>("advanced_options_btn")->setImageOverlay(advanced ? "TabIcon_Open_Off" : "TabIcon_Close_Off");
+ if (advanced != advanced_options_panel->getVisible())
+ {
+ S32 panel_width = advanced_options_panel->getRect().getWidth();
+ floaterp->getChild<LLPanel>("advanced_options_panel")->setVisible(advanced);
+ S32 floater_width = floaterp->getRect().getWidth();
+ floater_width += (advanced ? panel_width : -panel_width);
+ floaterp->reshape(floater_width, floaterp->getRect().getHeight());
+ }
- if(!gSavedSettings.getBOOL("AdvanceSnapshot")) //set to original window resolution
+ if(!advanced) //set to original window resolution
{
previewp->mKeepAspectRatio = TRUE;
+ floaterp->getChild<LLComboBox>("profile_size_combo")->setCurrentByIndex(0);
floaterp->getChild<LLComboBox>("postcard_size_combo")->setCurrentByIndex(0);
- gSavedSettings.setS32("SnapshotPostcardLastResolution", 0);
-
floaterp->getChild<LLComboBox>("texture_size_combo")->setCurrentByIndex(0);
- gSavedSettings.setS32("SnapshotTextureLastResolution", 0);
-
floaterp->getChild<LLComboBox>("local_size_combo")->setCurrentByIndex(0);
- gSavedSettings.setS32("SnapshotLocalLastResolution", 0);
LLSnapshotLivePreview* previewp = getPreviewView(floaterp);
previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw());
@@ -1256,7 +1269,8 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
floaterp->getParent()->setMouseOpaque(TRUE);
// shrink to smaller layout
- floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getUIWinHeightLong() + delta_height);
+ // *TODO: unneeded?
+ floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getRect().getHeight());
// can see and interact with fullscreen preview now
if (previewp)
@@ -1286,7 +1300,8 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
else // turning off freeze frame mode
{
floaterp->getParent()->setMouseOpaque(FALSE);
- floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getUIWinHeightLong() + delta_height);
+ // *TODO: unneeded?
+ floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getRect().getHeight());
if (previewp)
{
previewp->setVisible(FALSE);
@@ -1312,86 +1327,67 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
// No other methods should be changing any of the controls directly except for helpers called by this method.
// The basic pattern for programmatically changing the GUI settings is to first set the
// appropriate saved settings and then call this method to sync the GUI with them.
+// FIXME: The above comment seems obsolete now.
// static
void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
{
- LLRadioGroup* snapshot_type_radio = floater->getChild<LLRadioGroup>("snapshot_type_radio");
- LLSnapshotLivePreview::ESnapshotType shot_type = (LLSnapshotLivePreview::ESnapshotType)gSavedSettings.getS32("LastSnapshotType");
- snapshot_type_radio->setSelectedByValue(getTypeName(shot_type), true);
-
+ LLSnapshotLivePreview::ESnapshotType shot_type = getActiveSnapshotType(floater);
ESnapshotFormat shot_format = (ESnapshotFormat)gSavedSettings.getS32("SnapshotFormat");
LLViewerWindow::ESnapshotType layer_type = getLayerType(floater);
+#if 0
floater->getChildView("share_to_web")->setVisible( gSavedSettings.getBOOL("SnapshotSharingEnabled"));
+#endif
- floater->getChildView("postcard_size_combo")->setVisible( FALSE);
- floater->getChildView("texture_size_combo")->setVisible( FALSE);
- floater->getChildView("local_size_combo")->setVisible( FALSE);
-
- floater->getChild<LLComboBox>("postcard_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution"));
- floater->getChild<LLComboBox>("texture_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution"));
- floater->getChild<LLComboBox>("local_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution"));
floater->getChild<LLComboBox>("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat"));
-
- // *TODO: Separate settings for Web images from postcards
- floater->getChildView("send_btn")->setVisible( shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
- shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB);
- floater->getChildView("upload_btn")->setVisible(shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
- floater->getChildView("save_btn")->setVisible( shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
- floater->getChildView("keep_aspect_check")->setEnabled(shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !floater->impl.mAspectRatioCheckOff);
+ enableAspectRatioCheckbox(floater, !floater->impl.mAspectRatioCheckOff);
+ setAspectRatioCheckboxValue(floater, gSavedSettings.getBOOL("KeepAspectForSnapshot"));
floater->getChildView("layer_types")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
- BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot");
- BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL;
- BOOL show_slider = (shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
- shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB ||
- (is_local && shot_format == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG));
-
- floater->getChildView("more_btn")->setVisible( !is_advance); // the only item hidden in advanced mode
- floater->getChildView("less_btn")->setVisible( is_advance);
- floater->getChildView("type_label2")->setVisible( is_advance);
- floater->getChildView("format_label")->setVisible( is_advance && is_local);
- floater->getChildView("local_format_combo")->setVisible( is_advance && is_local);
- floater->getChildView("layer_types")->setVisible( is_advance);
- floater->getChildView("layer_type_label")->setVisible( is_advance);
- floater->getChildView("snapshot_width")->setVisible( is_advance);
- floater->getChildView("snapshot_height")->setVisible( is_advance);
- floater->getChildView("keep_aspect_check")->setVisible( is_advance);
- floater->getChildView("ui_check")->setVisible( is_advance);
- floater->getChildView("hud_check")->setVisible( is_advance);
- floater->getChildView("keep_open_check")->setVisible( is_advance);
- floater->getChildView("freeze_frame_check")->setVisible( is_advance);
- floater->getChildView("auto_snapshot_check")->setVisible( is_advance);
- floater->getChildView("image_quality_slider")->setVisible( is_advance && show_slider);
-
- if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot"))
- { //clamp snapshot resolution to window size when showing UI or HUD in snapshot
-
- LLSpinCtrl* width_ctrl = floater->getChild<LLSpinCtrl>("snapshot_width");
- LLSpinCtrl* height_ctrl = floater->getChild<LLSpinCtrl>("snapshot_height");
-
- S32 width = gViewerWindow->getWindowWidthRaw();
- S32 height = gViewerWindow->getWindowHeightRaw();
-
- width_ctrl->setMaxValue(width);
-
- height_ctrl->setMaxValue(height);
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ if (active_panel)
+ {
+ LLSpinCtrl* width_ctrl = getWidthSpinner(floater);
+ LLSpinCtrl* height_ctrl = getHeightSpinner(floater);
- if (width_ctrl->getValue().asInteger() > width)
+ // Initialize spinners.
+ if (width_ctrl->getValue().asInteger() == 0)
{
- width_ctrl->forceSetValue(width);
+ S32 w = gViewerWindow->getWindowWidthRaw();
+ lldebugs << "Initializing width spinner (" << width_ctrl->getName() << "): " << w << llendl;
+ width_ctrl->setValue(w);
}
- if (height_ctrl->getValue().asInteger() > height)
+ if (height_ctrl->getValue().asInteger() == 0)
{
- height_ctrl->forceSetValue(height);
+ S32 h = gViewerWindow->getWindowHeightRaw();
+ lldebugs << "Initializing height spinner (" << height_ctrl->getName() << "): " << h << llendl;
+ height_ctrl->setValue(h);
+ }
+
+ // Сlamp snapshot resolution to window size when showing UI or HUD in snapshot.
+ if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot"))
+ {
+ S32 width = gViewerWindow->getWindowWidthRaw();
+ S32 height = gViewerWindow->getWindowHeightRaw();
+
+ width_ctrl->setMaxValue(width);
+
+ height_ctrl->setMaxValue(height);
+
+ if (width_ctrl->getValue().asInteger() > width)
+ {
+ width_ctrl->forceSetValue(width);
+ }
+ if (height_ctrl->getValue().asInteger() > height)
+ {
+ height_ctrl->forceSetValue(height);
+ }
+ }
+ else
+ {
+ width_ctrl->setMaxValue(6016);
+ height_ctrl->setMaxValue(6016);
}
- }
- else
- {
- LLSpinCtrl* width = floater->getChild<LLSpinCtrl>("snapshot_width");
- width->setMaxValue(6016);
- LLSpinCtrl* height = floater->getChild<LLSpinCtrl>("snapshot_height");
- height->setMaxValue(6016);
}
LLSnapshotLivePreview* previewp = getPreviewView(floater);
@@ -1399,11 +1395,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
BOOL got_snap = previewp && previewp->getSnapshotUpToDate();
// *TODO: Separate maximum size for Web images from postcards
- floater->getChildView("send_btn")->setEnabled((shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
- shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB) &&
- got_snap && previewp->getDataSize() <= MAX_POSTCARD_DATASIZE);
- floater->getChildView("upload_btn")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE && got_snap);
- floater->getChildView("save_btn")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL && got_snap);
+ lldebugs << "Is snapshot up-to-date? " << got_snap << llendl;
LLLocale locale(LLLocale::USER_LOCALE);
std::string bytes_string;
@@ -1411,155 +1403,105 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
{
LLResMgr::getInstance()->getIntegerString(bytes_string, (previewp->getDataSize()) >> 10 );
}
- S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
- floater->getChild<LLUICtrl>("texture")->setLabelArg("[AMOUNT]", llformat("%d",upload_cost));
- floater->getChild<LLUICtrl>("upload_btn")->setLabelArg("[AMOUNT]", llformat("%d",upload_cost));
+
+ // Update displayed image resolution.
+ LLTextBox* image_res_tb = floater->getChild<LLTextBox>("image_res_text");
+ image_res_tb->setVisible(got_snap);
+ if (got_snap)
+ {
+ LLPointer<LLImageRaw> img = previewp->getEncodedImage();
+ image_res_tb->setTextArg("[WIDTH]", llformat("%d", img->getWidth()));
+ image_res_tb->setTextArg("[HEIGHT]", llformat("%d", img->getHeight()));
+ }
+
floater->getChild<LLUICtrl>("file_size_label")->setTextArg("[SIZE]", got_snap ? bytes_string : floater->getString("unknown"));
floater->getChild<LLUICtrl>("file_size_label")->setColor(
shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD
&& got_bytes
&& previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" ));
+ // Update the width and height spinners based on the corresponding resolution combos. (?)
switch(shot_type)
{
- // *TODO: Separate settings for Web images from postcards
case LLSnapshotLivePreview::SNAPSHOT_WEB:
+ layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
+ floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
+ setResolution(floater, "profile_size_combo");
+ break;
case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
- if(is_advance)
- {
- setResolution(floater, "postcard_size_combo");
- }
+ setResolution(floater, "postcard_size_combo");
break;
case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
- if(is_advance)
- {
- setResolution(floater, "texture_size_combo");
- }
+ setResolution(floater, "texture_size_combo");
break;
case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
- if(is_advance)
- {
- setResolution(floater, "local_size_combo");
- }
+ setResolution(floater, "local_size_combo");
break;
default:
break;
}
- updateResolutionTextEntry(floater);
-
if (previewp)
{
+ lldebugs << "Setting snapshot type (" << shot_type << "), format (" << shot_format << ")" << llendl;
previewp->setSnapshotType(shot_type);
previewp->setSnapshotFormat(shot_format);
previewp->setSnapshotBufferType(layer_type);
}
-}
-
-// static
-void LLFloaterSnapshot::Impl::updateResolutionTextEntry(LLFloaterSnapshot* floater)
-{
- LLSpinCtrl* width_spinner = floater->getChild<LLSpinCtrl>("snapshot_width");
- LLSpinCtrl* height_spinner = floater->getChild<LLSpinCtrl>("snapshot_height");
- if(getTypeIndex(floater) == LLSnapshotLivePreview::SNAPSHOT_TEXTURE)
+ LLPanelSnapshot* current_panel = Impl::getActivePanel(floater);
+ if (current_panel)
{
- width_spinner->setAllowEdit(FALSE);
- height_spinner->setAllowEdit(FALSE);
- }
- else
- {
- width_spinner->setAllowEdit(TRUE);
- height_spinner->setAllowEdit(TRUE);
+ LLSD info;
+ info["have-snapshot"] = got_snap;
+ current_panel->updateControls(info);
}
}
// static
-void LLFloaterSnapshot::Impl::checkAutoSnapshot(LLSnapshotLivePreview* previewp, BOOL update_thumbnail)
+void LLFloaterSnapshot::Impl::setStatus(EStatus status, bool ok, const std::string& msg)
{
- if (previewp)
+ LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance();
+ switch (status)
{
- BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
- previewp->updateSnapshot(autosnap, update_thumbnail, autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f);
+ case STATUS_READY:
+ setWorking(floater, false);
+ setFinished(floater, false);
+ break;
+ case STATUS_WORKING:
+ setWorking(floater, true);
+ setFinished(floater, false);
+ break;
+ case STATUS_FINISHED:
+ setWorking(floater, false);
+ setFinished(floater, true, ok, msg);
+ break;
}
-}
-// static
-void LLFloaterSnapshot::Impl::onClickDiscard(void* data)
-{
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
-
- if (view)
- {
- view->closeFloater();
- }
+ floater->impl.mStatus = status;
}
-
// static
-void LLFloaterSnapshot::Impl::onCommitSave(LLUICtrl* ctrl, void* data)
+void LLFloaterSnapshot::Impl::setNeedRefresh(LLFloaterSnapshot* floater, bool need)
{
- if (ctrl->getValue().asString() == "save as")
- {
- gViewerWindow->resetSnapshotLoc();
- }
- onClickKeep(data);
+ if (!floater) return;
+
+ floater->mRefreshLabel->setVisible(need);
+ floater->impl.mNeedRefresh = need;
}
// static
-void LLFloaterSnapshot::Impl::onClickKeep(void* data)
+void LLFloaterSnapshot::Impl::checkAutoSnapshot(LLSnapshotLivePreview* previewp, BOOL update_thumbnail)
{
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
- LLSnapshotLivePreview* previewp = getPreviewView(view);
-
if (previewp)
{
- switch (previewp->getSnapshotType())
- {
- case LLSnapshotLivePreview::SNAPSHOT_WEB:
- previewp->saveWeb();
- break;
-
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
- {
- LLFloaterPostcard* floater = previewp->savePostcard();
- // if still in snapshot mode, put postcard floater in snapshot floaterview
- // and link it to snapshot floater
- if (floater && !gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
- {
- gFloaterView->removeChild(floater);
- gSnapshotFloaterView->addChild(floater);
- view->addDependentFloater(floater, FALSE);
- }
- }
- break;
-
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
- previewp->saveTexture();
- break;
-
- case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
- previewp->saveLocal();
- break;
-
- default:
- break;
- }
-
- if (gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
- {
- view->closeFloater();
- }
- else
- {
- checkAutoSnapshot(previewp);
- }
-
- updateControls(view);
+ BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
+ lldebugs << "updating " << (autosnap ? "snapshot" : "thumbnail") << llendl;
+ previewp->updateSnapshot(autosnap, update_thumbnail, autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f);
}
}
@@ -1570,6 +1512,8 @@ void LLFloaterSnapshot::Impl::onClickNewSnapshot(void* data)
LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
if (previewp && view)
{
+ view->impl.setStatus(Impl::STATUS_READY);
+ lldebugs << "updating snapshot" << llendl;
previewp->updateSnapshot(TRUE);
}
}
@@ -1590,36 +1534,15 @@ void LLFloaterSnapshot::Impl::onClickAutoSnap(LLUICtrl *ctrl, void* data)
void LLFloaterSnapshot::Impl::onClickMore(void* data)
{
- gSavedSettings.setBOOL( "AdvanceSnapshot", TRUE );
-
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
- if (view)
- {
- view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() );
- view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong());
- updateControls(view) ;
- updateLayout(view) ;
- if(getPreviewView(view))
- {
- getPreviewView(view)->setThumbnailImageSize() ;
- }
- }
-}
-void LLFloaterSnapshot::Impl::onClickLess(void* data)
-{
- gSavedSettings.setBOOL( "AdvanceSnapshot", FALSE );
+ BOOL visible = gSavedSettings.getBOOL("AdvanceSnapshot");
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
+ LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
if (view)
{
- view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() );
- view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort());
+ view->impl.setStatus(Impl::STATUS_READY);
+ gSavedSettings.setBOOL("AdvanceSnapshot", !visible);
updateControls(view) ;
updateLayout(view) ;
- if(getPreviewView(view))
- {
- getPreviewView(view)->setThumbnailImageSize() ;
- }
}
}
@@ -1652,20 +1575,10 @@ void LLFloaterSnapshot::Impl::onClickHUDCheck(LLUICtrl *ctrl, void* data)
}
// static
-void LLFloaterSnapshot::Impl::onClickKeepOpenCheck(LLUICtrl* ctrl, void* data)
+void LLFloaterSnapshot::Impl::applyKeepAspectCheck(LLFloaterSnapshot* view, BOOL checked)
{
- LLCheckBoxCtrl *check = (LLCheckBoxCtrl *)ctrl;
+ gSavedSettings.setBOOL("KeepAspectForSnapshot", checked);
- gSavedSettings.setBOOL( "CloseSnapshotOnKeep", !check->get() );
-}
-
-// static
-void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
-{
- LLCheckBoxCtrl *check = (LLCheckBoxCtrl *)ctrl;
- gSavedSettings.setBOOL( "KeepAspectForSnapshot", check->get() );
-
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
if (view)
{
LLSnapshotLivePreview* previewp = getPreviewView(view) ;
@@ -1675,11 +1588,9 @@ void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
S32 w, h ;
previewp->getSize(w, h) ;
- if(checkImageSize(previewp, w, h, TRUE, previewp->getMaxImageSize()))
- {
- resetSnapshotSizeOnUI(view, w, h) ;
- }
+ updateSpinners(view, previewp, w, h, TRUE); // may change w and h
+ lldebugs << "updating thumbnail" << llendl;
previewp->setSize(w, h) ;
previewp->updateSnapshot(FALSE, TRUE);
checkAutoSnapshot(previewp, TRUE);
@@ -1688,20 +1599,6 @@ void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
}
// static
-void LLFloaterSnapshot::Impl::onCommitQuality(LLUICtrl* ctrl, void* data)
-{
- LLSliderCtrl* slider = (LLSliderCtrl*)ctrl;
- S32 quality_val = llfloor((F32)slider->getValue().asReal());
-
- LLSnapshotLivePreview* previewp = getPreviewView((LLFloaterSnapshot *)data);
- if (previewp)
- {
- previewp->setSnapshotQuality(quality_val);
- }
- checkAutoSnapshot(previewp, TRUE);
-}
-
-// static
void LLFloaterSnapshot::Impl::onCommitFreezeFrame(LLUICtrl* ctrl, void* data)
{
LLCheckBoxCtrl* check_box = (LLCheckBoxCtrl*)ctrl;
@@ -1723,71 +1620,79 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
LLSnapshotLivePreview *previewp = getPreviewView(view) ;
// Don't round texture sizes; textures are commonly stretched in world, profiles, etc and need to be "squashed" during upload, not cropped here
-#if 0
- if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == getTypeIndex(view))
+ if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == getActiveSnapshotType(view))
{
previewp->mKeepAspectRatio = FALSE ;
return ;
}
-#endif
-
- if(0 == index) //current window size
- {
- view->impl.mAspectRatioCheckOff = true ;
- view->getChildView("keep_aspect_check")->setEnabled(FALSE) ;
- if(previewp)
- {
- previewp->mKeepAspectRatio = TRUE ;
- }
+ BOOL keep_aspect = FALSE, enable_cb = FALSE;
+
+ if (0 == index) // current window size
+ {
+ enable_cb = FALSE;
+ keep_aspect = TRUE;
}
- else if(-1 == index) //custom
+ else if (-1 == index) // custom
{
- view->impl.mAspectRatioCheckOff = false ;
- //if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType"))
- {
- view->getChildView("keep_aspect_check")->setEnabled(TRUE) ;
-
- if(previewp)
- {
- previewp->mKeepAspectRatio = gSavedSettings.getBOOL("KeepAspectForSnapshot") ;
- }
- }
+ enable_cb = TRUE;
+ keep_aspect = gSavedSettings.getBOOL("KeepAspectForSnapshot");
}
- else
+ else // predefined resolution
{
- view->impl.mAspectRatioCheckOff = true ;
- view->getChildView("keep_aspect_check")->setEnabled(FALSE) ;
-
- if(previewp)
- {
- previewp->mKeepAspectRatio = FALSE ;
- }
+ enable_cb = FALSE;
+ keep_aspect = FALSE;
}
- return ;
+ view->impl.mAspectRatioCheckOff = !enable_cb;
+ enableAspectRatioCheckbox(view, enable_cb);
+ if (previewp)
+ {
+ previewp->mKeepAspectRatio = keep_aspect;
+ }
}
-static std::string lastSnapshotWidthName()
+// Show/hide upload progress indicators.
+// static
+void LLFloaterSnapshot::Impl::setWorking(LLFloaterSnapshot* floater, bool working)
{
- switch(gSavedSettings.getS32("LastSnapshotType"))
+ LLUICtrl* working_lbl = floater->getChild<LLUICtrl>("working_lbl");
+ working_lbl->setVisible(working);
+ floater->getChild<LLUICtrl>("working_indicator")->setVisible(working);
+
+ if (working)
{
- // *TODO: Separate settings for Web snapshots and postcards
- case LLSnapshotLivePreview::SNAPSHOT_WEB: return "LastSnapshotToEmailWidth";
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailWidth";
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryWidth";
- default: return "LastSnapshotToDiskWidth";
+ const std::string panel_name = getActivePanel(floater, false)->getName();
+ const std::string prefix = panel_name.substr(std::string("panel_snapshot_").size());
+ std::string progress_text = floater->getString(prefix + "_" + "progress_str");
+ working_lbl->setValue(progress_text);
+ }
+
+ // All controls should be disabled while posting.
+ floater->setCtrlsEnabled(!working);
+ LLPanelSnapshot* active_panel = getActivePanel(floater);
+ if (active_panel)
+ {
+ active_panel->enableControls(!working);
}
}
-static std::string lastSnapshotHeightName()
+
+// Show/hide upload status message.
+// static
+void LLFloaterSnapshot::Impl::setFinished(LLFloaterSnapshot* floater, bool finished, bool ok, const std::string& msg)
{
- switch(gSavedSettings.getS32("LastSnapshotType"))
+ floater->mSucceessLblPanel->setVisible(finished && ok);
+ floater->mFailureLblPanel->setVisible(finished && !ok);
+
+ if (finished)
{
- // *TODO: Separate settings for Web snapshots and postcards
- case LLSnapshotLivePreview::SNAPSHOT_WEB: return "LastSnapshotToEmailHeight";
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailHeight";
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryHeight";
- default: return "LastSnapshotToDiskHeight";
+ LLUICtrl* finished_lbl = floater->getChild<LLUICtrl>(ok ? "succeeded_lbl" : "failed_lbl");
+ std::string result_text = floater->getString(msg + "_" + (ok ? "succeeded_str" : "failed_str"));
+ finished_lbl->setValue(result_text);
+
+ LLSideTrayPanelContainer* panel_container = floater->getChild<LLSideTrayPanelContainer>("panel_container");
+ panel_container->openPreviousPanel();
+ panel_container->getCurrentPanel()->onOpen(LLSD());
}
}
@@ -1799,14 +1704,10 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
if (!view || !combobox)
{
+ llassert(view && combobox);
return;
}
- // save off all selected resolution values
- gSavedSettings.setS32("SnapshotPostcardLastResolution", view->getChild<LLComboBox>("postcard_size_combo")->getCurrentIndex());
- gSavedSettings.setS32("SnapshotTextureLastResolution", view->getChild<LLComboBox>("texture_size_combo")->getCurrentIndex());
- gSavedSettings.setS32("SnapshotLocalLastResolution", view->getChild<LLComboBox>("local_size_combo")->getCurrentIndex());
-
std::string sdstring = combobox->getSelectedValue();
LLSD sdres;
std::stringstream sstream(sdstring);
@@ -1824,16 +1725,35 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
if (width == 0 || height == 0)
{
// take resolution from current window size
+ lldebugs << "Setting preview res from window: " << gViewerWindow->getWindowWidthRaw() << "x" << gViewerWindow->getWindowHeightRaw() << llendl;
previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw());
}
else if (width == -1 || height == -1)
{
// load last custom value
- previewp->setSize(gSavedSettings.getS32(lastSnapshotWidthName()), gSavedSettings.getS32(lastSnapshotHeightName()));
+ S32 new_width = 0, new_height = 0;
+ LLPanelSnapshot* spanel = getActivePanel(view);
+ if (spanel)
+ {
+ lldebugs << "Loading typed res from panel " << spanel->getName() << llendl;
+ new_width = spanel->getTypedPreviewWidth();
+ new_height = spanel->getTypedPreviewHeight();
+ }
+ else
+ {
+ lldebugs << "No custom res chosen, setting preview res from window: "
+ << gViewerWindow->getWindowWidthRaw() << "x" << gViewerWindow->getWindowHeightRaw() << llendl;
+ new_width = gViewerWindow->getWindowWidthRaw();
+ new_height = gViewerWindow->getWindowHeightRaw();
+ }
+
+ llassert(new_width > 0 && new_height > 0);
+ previewp->setSize(new_width, new_height);
}
else
{
// use the resolution from the selected pre-canned drop-down choice
+ lldebugs << "Setting preview res selected from combo: " << width << "x" << height << llendl;
previewp->setSize(width, height);
}
@@ -1847,16 +1767,12 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
height = llmin(height, gViewerWindow->getWindowHeightRaw());
}
+ updateSpinners(view, previewp, width, height, TRUE); // may change width and height
- if(checkImageSize(previewp, width, height, TRUE, previewp->getMaxImageSize()))
- {
- resetSnapshotSizeOnUI(view, width, height) ;
- }
-
- if(view->getChild<LLUICtrl>("snapshot_width")->getValue().asInteger() != width || view->getChild<LLUICtrl>("snapshot_height")->getValue().asInteger() != height)
+ if(getWidthSpinner(view)->getValue().asInteger() != width || getHeightSpinner(view)->getValue().asInteger() != height)
{
- view->getChild<LLUICtrl>("snapshot_width")->setValue(width);
- view->getChild<LLUICtrl>("snapshot_height")->setValue(height);
+ getWidthSpinner(view)->setValue(width);
+ getHeightSpinner(view)->setValue(height);
}
if(original_width != width || original_height != height)
@@ -1865,10 +1781,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
// hide old preview as the aspect ratio could be wrong
checkAutoSnapshot(previewp, FALSE);
+ lldebugs << "updating thumbnail" << llendl;
getPreviewView(view)->updateSnapshot(FALSE, TRUE);
if(do_update)
{
+ lldebugs << "Will update controls" << llendl;
updateControls(view);
+ setNeedRefresh(view, true);
}
}
}
@@ -1892,96 +1811,46 @@ void LLFloaterSnapshot::Impl::onCommitLayerTypes(LLUICtrl* ctrl, void*data)
}
}
-//static
-void LLFloaterSnapshot::Impl::onCommitSnapshotType(LLUICtrl* ctrl, void* data)
+// static
+void LLFloaterSnapshot::Impl::onImageQualityChange(LLFloaterSnapshot* view, S32 quality_val)
{
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
- if (view)
+ LLSnapshotLivePreview* previewp = getPreviewView(view);
+ if (previewp)
{
- gSavedSettings.setS32("LastSnapshotType", getTypeIndex(view));
- getPreviewView(view)->updateSnapshot(TRUE);
- updateControls(view);
+ previewp->setSnapshotQuality(quality_val);
}
+ checkAutoSnapshot(previewp, TRUE);
}
-
-//static
-void LLFloaterSnapshot::Impl::onCommitSnapshotFormat(LLUICtrl* ctrl, void* data)
+// static
+void LLFloaterSnapshot::Impl::onImageFormatChange(LLFloaterSnapshot* view)
{
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
if (view)
{
- gSavedSettings.setS32("SnapshotFormat", getFormatIndex(view));
+ gSavedSettings.setS32("SnapshotFormat", getImageFormat(view));
+ lldebugs << "image format changed, updating snapshot" << llendl;
getPreviewView(view)->updateSnapshot(TRUE);
updateControls(view);
+ setNeedRefresh(view, false); // we're refreshing
}
}
-
-
// Sets the named size combo to "custom" mode.
// static
void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname)
{
LLComboBox* combo = floater->getChild<LLComboBox>(comboname);
-
combo->setCurrentByIndex(combo->getItemCount() - 1); // "custom" is always the last index
-
- if(comboname == "postcard_size_combo")
- {
- gSavedSettings.setS32("SnapshotPostcardLastResolution", combo->getCurrentIndex());
- }
- else if(comboname == "texture_size_combo")
- {
- gSavedSettings.setS32("SnapshotTextureLastResolution", combo->getCurrentIndex());
- }
- else if(comboname == "local_size_combo")
- {
- gSavedSettings.setS32("SnapshotLocalLastResolution", combo->getCurrentIndex());
- }
-
checkAspectRatio(floater, -1); // -1 means custom
}
-
-
+// Update supplied width and height according to the constrain proportions flag; limit them by max_val.
//static
BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL isWidthChanged, S32 max_value)
{
S32 w = width ;
S32 h = height ;
- //if texture, ignore aspect ratio setting, round image size to power of 2.
-#if 0 // Don't round texture sizes; textures are commonly stretched in world, profiles, etc and need to be "squashed" during upload, not cropped here
- if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType"))
- {
- if(width > max_value)
- {
- width = max_value ;
- }
- if(height > max_value)
- {
- height = max_value ;
- }
-
- //round to nearest power of 2 based on the direction of movement
- // i.e. higher power of two if increasing texture resolution
- if(gSavedSettings.getS32("LastSnapshotToInventoryWidth") < width ||
- gSavedSettings.getS32("LastSnapshotToInventoryHeight") < height)
- {
- // Up arrow pressed
- width = get_next_power_two(width, MAX_TEXTURE_SIZE) ;
- height = get_next_power_two(height, MAX_TEXTURE_SIZE) ;
- }
- else
- {
- // Down or no change
- width = get_lower_power_two(width, MAX_TEXTURE_SIZE) ;
- height = get_lower_power_two(height, MAX_TEXTURE_SIZE) ;
- }
- }
- else
-#endif
if(previewp && previewp->mKeepAspectRatio)
{
if(gViewerWindow->getWindowWidthRaw() < 1 || gViewerWindow->getWindowHeightRaw() < 1)
@@ -2017,87 +1886,79 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3
}
}
}
- else
- {
- }
return (w != width || h != height) ;
}
//static
-void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height)
+void LLFloaterSnapshot::Impl::setImageSizeSpinnersValues(LLFloaterSnapshot *view, S32 width, S32 height)
{
- view->getChild<LLSpinCtrl>("snapshot_width")->forceSetValue(width);
- view->getChild<LLSpinCtrl>("snapshot_height")->forceSetValue(height);
- gSavedSettings.setS32(lastSnapshotWidthName(), width);
- gSavedSettings.setS32(lastSnapshotHeightName(), height);
+ getWidthSpinner(view)->forceSetValue(width);
+ getHeightSpinner(view)->forceSetValue(height);
}
-//static
-void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* data)
+// static
+void LLFloaterSnapshot::Impl::updateSpinners(LLFloaterSnapshot* view, LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL is_width_changed)
{
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
- if (view)
+ if (checkImageSize(previewp, width, height, is_width_changed, previewp->getMaxImageSize()))
{
- S32 w = llfloor((F32)view->getChild<LLUICtrl>("snapshot_width")->getValue().asReal());
- S32 h = llfloor((F32)view->getChild<LLUICtrl>("snapshot_height")->getValue().asReal());
+ setImageSizeSpinnersValues(view, width, height);
+ }
+}
- LLSnapshotLivePreview* previewp = getPreviewView(view);
- if (previewp)
+// static
+void LLFloaterSnapshot::Impl::applyCustomResolution(LLFloaterSnapshot* view, S32 w, S32 h)
+{
+ bool need_refresh = false;
+
+ lldebugs << "applyCustomResolution(" << w << ", " << h << ")" << llendl;
+ if (!view) return;
+
+ LLSnapshotLivePreview* previewp = getPreviewView(view);
+ if (previewp)
+ {
+ S32 curw,curh;
+ previewp->getSize(curw, curh);
+
+ if (w != curw || h != curh)
{
- S32 curw,curh;
- previewp->getSize(curw, curh);
-
- if (w != curw || h != curh)
- {
- BOOL update_ = FALSE ;
- //if to upload a snapshot, process spinner input in a special way.
-#if 0 // Don't round texture sizes; textures are commonly stretched in world, profiles, etc and need to be "squashed" during upload, not cropped here
- if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType"))
- {
- S32 spinner_increment = (S32)((LLSpinCtrl*)ctrl)->getIncrement() ;
- S32 dw = w - curw ;
- S32 dh = h - curh ;
- dw = (dw == spinner_increment) ? 1 : ((dw == -spinner_increment) ? -1 : 0) ;
- dh = (dh == spinner_increment) ? 1 : ((dh == -spinner_increment) ? -1 : 0) ;
-
- if(dw)
- {
- w = (dw > 0) ? curw << dw : curw >> -dw ;
- update_ = TRUE ;
- }
- if(dh)
- {
- h = (dh > 0) ? curh << dh : curh >> -dh ;
- update_ = TRUE ;
- }
- }
-#endif
- previewp->setMaxImageSize((S32)((LLSpinCtrl *)ctrl)->getMaxValue()) ;
-
- // Check image size changes the value of height and width
- if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize())
- || update_)
- {
- resetSnapshotSizeOnUI(view, w, h) ;
- }
+ //if to upload a snapshot, process spinner input in a special way.
+ previewp->setMaxImageSize((S32) getWidthSpinner(view)->getMaxValue()) ;
- previewp->setSize(w,h);
- checkAutoSnapshot(previewp, FALSE);
- previewp->updateSnapshot(FALSE, TRUE);
- comboSetCustom(view, "postcard_size_combo");
- comboSetCustom(view, "texture_size_combo");
- comboSetCustom(view, "local_size_combo");
- }
- }
+ updateSpinners(view, previewp, w, h, w != curw); // may change w and h
- gSavedSettings.setS32(lastSnapshotWidthName(), w);
- gSavedSettings.setS32(lastSnapshotHeightName(), h);
+ previewp->setSize(w,h);
+ checkAutoSnapshot(previewp, FALSE);
+ lldebugs << "applied custom resolution, updating thumbnail" << llendl;
+ previewp->updateSnapshot(FALSE, TRUE);
+ comboSetCustom(view, "profile_size_combo");
+ comboSetCustom(view, "postcard_size_combo");
+ comboSetCustom(view, "texture_size_combo");
+ comboSetCustom(view, "local_size_combo");
+ need_refresh = true;
+ }
+ }
- updateControls(view);
+ updateControls(view);
+ if (need_refresh)
+ {
+ setNeedRefresh(view, true); // need to do this after updateControls()
}
}
+// static
+void LLFloaterSnapshot::Impl::onSnapshotUploadFinished(bool status)
+{
+ setStatus(STATUS_FINISHED, status, "profile");
+}
+
+
+// static
+void LLFloaterSnapshot::Impl::onSendingPostcardFinished(bool status)
+{
+ setStatus(STATUS_FINISHED, status, "postcard");
+}
+
///----------------------------------------------------------------------------
/// Class LLFloaterSnapshot
///----------------------------------------------------------------------------
@@ -2105,6 +1966,10 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat
// Default constructor
LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
: LLFloater(key),
+ mRefreshBtn(NULL),
+ mRefreshLabel(NULL),
+ mSucceessLblPanel(NULL),
+ mFailureLblPanel(NULL),
impl (*(new Impl))
{
}
@@ -2112,7 +1977,7 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
// Destroys the object
LLFloaterSnapshot::~LLFloaterSnapshot()
{
- LLView::deleteViewByHandle(impl.mPreviewHandle);
+ delete impl.mPreviewHandle.get();
//unfreeze everything else
gSavedSettings.setBOOL("FreezeTime", FALSE);
@@ -2134,24 +1999,13 @@ BOOL LLFloaterSnapshot::postBuild()
LLWebSharing::instance().init();
}
- childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this);
- childSetCommitCallback("local_format_combo", Impl::onCommitSnapshotFormat, this);
-
+ mRefreshBtn = getChild<LLUICtrl>("new_snapshot_btn");
childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this);
+ mRefreshLabel = getChild<LLUICtrl>("refresh_lbl");
+ mSucceessLblPanel = getChild<LLUICtrl>("succeeded_panel");
+ mFailureLblPanel = getChild<LLUICtrl>("failed_panel");
- childSetAction("more_btn", Impl::onClickMore, this);
- childSetAction("less_btn", Impl::onClickLess, this);
-
- childSetAction("upload_btn", Impl::onClickKeep, this);
- childSetAction("send_btn", Impl::onClickKeep, this);
- childSetCommitCallback("save_btn", Impl::onCommitSave, this);
- childSetAction("discard_btn", Impl::onClickDiscard, this);
-
- childSetCommitCallback("image_quality_slider", Impl::onCommitQuality, this);
- getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
-
- childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this);
- childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this);
+ childSetAction("advanced_options_btn", Impl::onClickMore, this);
childSetCommitCallback("ui_check", Impl::onClickUICheck, this);
getChild<LLUICtrl>("ui_check")->setValue(gSavedSettings.getBOOL("RenderUIInSnapshot"));
@@ -2159,28 +2013,22 @@ BOOL LLFloaterSnapshot::postBuild()
childSetCommitCallback("hud_check", Impl::onClickHUDCheck, this);
getChild<LLUICtrl>("hud_check")->setValue(gSavedSettings.getBOOL("RenderHUDInSnapshot"));
- childSetCommitCallback("keep_open_check", Impl::onClickKeepOpenCheck, this);
- getChild<LLUICtrl>("keep_open_check")->setValue(!gSavedSettings.getBOOL("CloseSnapshotOnKeep"));
-
- childSetCommitCallback("keep_aspect_check", Impl::onClickKeepAspectCheck, this);
- getChild<LLUICtrl>("keep_aspect_check")->setValue(gSavedSettings.getBOOL("KeepAspectForSnapshot"));
+ impl.setAspectRatioCheckboxValue(this, gSavedSettings.getBOOL("KeepAspectForSnapshot"));
childSetCommitCallback("layer_types", Impl::onCommitLayerTypes, this);
getChild<LLUICtrl>("layer_types")->setValue("colors");
getChildView("layer_types")->setEnabled(FALSE);
- getChild<LLUICtrl>("snapshot_width")->setValue(gSavedSettings.getS32(lastSnapshotWidthName()));
- getChild<LLUICtrl>("snapshot_height")->setValue(gSavedSettings.getS32(lastSnapshotHeightName()));
-
getChild<LLUICtrl>("freeze_frame_check")->setValue(gSavedSettings.getBOOL("UseFreezeFrame"));
childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this);
getChild<LLUICtrl>("auto_snapshot_check")->setValue(gSavedSettings.getBOOL("AutoSnapshot"));
childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this);
- childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this);
- childSetCommitCallback("texture_size_combo", Impl::onCommitResolution, this);
- childSetCommitCallback("local_size_combo", Impl::onCommitResolution, this);
+ LLWebProfile::setImageUploadResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSnapshotUploadFinished, _1));
+ LLPostCard::setPostResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSendingPostcardFinished, _1));
+
+ sThumbnailPlaceholder = getChild<LLUICtrl>("thumbnail_placeholder");
// create preview window
LLRect full_screen_rect = getRootView()->getRect();
@@ -2217,23 +2065,69 @@ void LLFloaterSnapshot::draw()
LLFloater::draw();
- if (previewp)
+ if (previewp && !isMinimized())
{
if(previewp->getThumbnailImage())
{
- LLRect thumbnail_rect = getChild<LLUICtrl>("thumbnail_placeholder")->getRect();
+ bool working = impl.getStatus() == Impl::STATUS_WORKING;
+ const LLRect& thumbnail_rect = getThumbnailPlaceholderRect();
+ const S32 thumbnail_w = previewp->getThumbnailWidth();
+ const S32 thumbnail_h = previewp->getThumbnailHeight();
+
+ // calc preview offset within the preview rect
+ const S32 local_offset_x = (thumbnail_rect.getWidth() - thumbnail_w) / 2 ;
+ const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; // preview y pos within the preview rect
- S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ;
- S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;
+ // calc preview offset within the floater rect
+ S32 offset_x = thumbnail_rect.mLeft + local_offset_x;
+ S32 offset_y = thumbnail_rect.mBottom + local_offset_y;
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
// Apply floater transparency to the texture unless the floater is focused.
F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();
+ LLColor4 color = working ? LLColor4::grey4 : LLColor4::white;
gl_draw_scaled_image(offset_x, offset_y,
- previewp->getThumbnailWidth(), previewp->getThumbnailHeight(),
- previewp->getThumbnailImage(), LLColor4::white % alpha);
+ thumbnail_w, thumbnail_h,
+ previewp->getThumbnailImage(), color % alpha);
previewp->drawPreviewRect(offset_x, offset_y) ;
+
+ // Draw some controls on top of the preview thumbnail.
+ static const S32 PADDING = 5;
+ static const S32 REFRESH_LBL_BG_HEIGHT = 32;
+
+ // Reshape and position the posting result message panels at the top of the thumbnail.
+ // Do this regardless of current posting status (finished or not) to avoid flicker
+ // when the result message is displayed for the first time.
+ // if (impl.getStatus() == Impl::STATUS_FINISHED)
+ {
+ LLRect result_lbl_rect = mSucceessLblPanel->getRect();
+ const S32 result_lbl_h = result_lbl_rect.getHeight();
+ result_lbl_rect.setLeftTopAndSize(local_offset_x, local_offset_y + thumbnail_h, thumbnail_w - 1, result_lbl_h);
+ mSucceessLblPanel->reshape(result_lbl_rect.getWidth(), result_lbl_h);
+ mSucceessLblPanel->setRect(result_lbl_rect);
+ mFailureLblPanel->reshape(result_lbl_rect.getWidth(), result_lbl_h);
+ mFailureLblPanel->setRect(result_lbl_rect);
+ }
+
+ // Position the refresh button in the bottom left corner of the thumbnail.
+ mRefreshBtn->setOrigin(local_offset_x + PADDING, local_offset_y + PADDING);
+
+ if (impl.mNeedRefresh)
+ {
+ // Place the refresh hint text to the right of the refresh button.
+ const LLRect& refresh_btn_rect = mRefreshBtn->getRect();
+ mRefreshLabel->setOrigin(refresh_btn_rect.mLeft + refresh_btn_rect.getWidth() + PADDING, refresh_btn_rect.mBottom);
+
+ // Draw the refresh hint background.
+ LLRect refresh_label_bg_rect(offset_x, offset_y + REFRESH_LBL_BG_HEIGHT, offset_x + thumbnail_w - 1, offset_y);
+ gl_rect_2d(refresh_label_bg_rect, LLColor4::white % 0.9f, TRUE);
+ }
+
+ gGL.pushUIMatrix();
+ LLUI::translate((F32) thumbnail_rect.mLeft, (F32) thumbnail_rect.mBottom);
+ sThumbnailPlaceholder->draw();
+ gGL.popUIMatrix();
}
}
}
@@ -2243,12 +2137,16 @@ void LLFloaterSnapshot::onOpen(const LLSD& key)
LLSnapshotLivePreview* preview = LLFloaterSnapshot::Impl::getPreviewView(this);
if(preview)
{
+ lldebugs << "opened, updating snapshot" << llendl;
preview->updateSnapshot(TRUE);
}
focusFirstItem(FALSE);
gSnapshotFloaterView->setEnabled(TRUE);
gSnapshotFloaterView->setVisible(TRUE);
gSnapshotFloaterView->adjustToFitScreen(this, FALSE);
+
+ // Initialize default tab.
+ getChild<LLSideTrayPanelContainer>("panel_container")->getCurrentPanel()->onOpen(LLSD());
}
void LLFloaterSnapshot::onClose(bool app_quitting)
@@ -2256,6 +2154,62 @@ void LLFloaterSnapshot::onClose(bool app_quitting)
getParent()->setMouseOpaque(FALSE);
}
+// virtual
+S32 LLFloaterSnapshot::notify(const LLSD& info)
+{
+ // A child panel wants to change snapshot resolution.
+ if (info.has("combo-res-change"))
+ {
+ std::string combo_name = info["combo-res-change"]["control-name"].asString();
+ impl.updateResolution(getChild<LLUICtrl>(combo_name), this);
+ return 1;
+ }
+
+ if (info.has("custom-res-change"))
+ {
+ LLSD res = info["custom-res-change"];
+ impl.applyCustomResolution(this, res["w"].asInteger(), res["h"].asInteger());
+ return 1;
+ }
+
+ if (info.has("keep-aspect-change"))
+ {
+ impl.applyKeepAspectCheck(this, info["keep-aspect-change"].asBoolean());
+ return 1;
+ }
+
+ if (info.has("image-quality-change"))
+ {
+ impl.onImageQualityChange(this, info["image-quality-change"].asInteger());
+ return 1;
+ }
+
+ if (info.has("image-format-change"))
+ {
+ impl.onImageFormatChange(this);
+ return 1;
+ }
+
+ if (info.has("set-ready"))
+ {
+ impl.setStatus(Impl::STATUS_READY);
+ return 1;
+ }
+
+ if (info.has("set-working"))
+ {
+ impl.setStatus(Impl::STATUS_WORKING);
+ return 1;
+ }
+
+ if (info.has("set-finished"))
+ {
+ LLSD data = info["set-finished"];
+ impl.setStatus(Impl::STATUS_FINISHED, data["ok"].asBoolean(), data["msg"].asString());
+ return 1;
+ }
+ return 0;
+}
//static
void LLFloaterSnapshot::update()
@@ -2265,6 +2219,7 @@ void LLFloaterSnapshot::update()
return;
BOOL changed = FALSE;
+ lldebugs << "npreviews: " << LLSnapshotLivePreview::sList.size() << llendl;
for (std::set<LLSnapshotLivePreview*>::iterator iter = LLSnapshotLivePreview::sList.begin();
iter != LLSnapshotLivePreview::sList.end(); ++iter)
{
@@ -2272,10 +2227,181 @@ void LLFloaterSnapshot::update()
}
if(changed)
{
+ lldebugs << "changed" << llendl;
inst->impl.updateControls(inst);
}
}
+// static
+LLFloaterSnapshot* LLFloaterSnapshot::getInstance()
+{
+ return LLFloaterReg::getTypedInstance<LLFloaterSnapshot>("snapshot");
+}
+
+// static
+void LLFloaterSnapshot::saveTexture()
+{
+ lldebugs << "saveTexture" << llendl;
+
+ // FIXME: duplicated code
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (!instance)
+ {
+ llassert(instance != NULL);
+ return;
+ }
+ LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+ if (!previewp)
+ {
+ llassert(previewp != NULL);
+ return;
+ }
+
+ previewp->saveTexture();
+}
+
+// static
+BOOL LLFloaterSnapshot::saveLocal()
+{
+ lldebugs << "saveLocal" << llendl;
+ // FIXME: duplicated code
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (!instance)
+ {
+ llassert(instance != NULL);
+ return FALSE;
+ }
+ LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+ if (!previewp)
+ {
+ llassert(previewp != NULL);
+ return FALSE;
+ }
+
+ return previewp->saveLocal();
+}
+
+// static
+void LLFloaterSnapshot::preUpdate()
+{
+ // FIXME: duplicated code
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (instance)
+ {
+ // Disable the send/post/save buttons until snapshot is ready.
+ Impl::updateControls(instance);
+
+ // Force hiding the "Refresh to save" hint because we know we've just started refresh.
+ Impl::setNeedRefresh(instance, false);
+ }
+}
+
+// static
+void LLFloaterSnapshot::postUpdate()
+{
+ // FIXME: duplicated code
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (instance)
+ {
+ // Enable the send/post/save buttons.
+ Impl::updateControls(instance);
+
+ // We've just done refresh.
+ Impl::setNeedRefresh(instance, false);
+
+ // The refresh button is initially hidden. We show it after the first update,
+ // i.e. when preview appears.
+ if (!instance->mRefreshBtn->getVisible())
+ {
+ instance->mRefreshBtn->setVisible(true);
+ }
+ }
+}
+
+// static
+void LLFloaterSnapshot::postSave()
+{
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (!instance)
+ {
+ llassert(instance != NULL);
+ return;
+ }
+
+ instance->impl.updateControls(instance);
+ instance->impl.setStatus(Impl::STATUS_WORKING);
+}
+
+// static
+void LLFloaterSnapshot::postPanelSwitch()
+{
+ LLFloaterSnapshot* instance = getInstance();
+ instance->impl.updateControls(instance);
+
+ // Remove the success/failure indicator whenever user presses a snapshot option button.
+ instance->impl.setStatus(Impl::STATUS_READY);
+}
+
+// static
+LLPointer<LLImageFormatted> LLFloaterSnapshot::getImageData()
+{
+ // FIXME: May not work for textures.
+
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (!instance)
+ {
+ llassert(instance != NULL);
+ return NULL;
+ }
+
+ LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+ if (!previewp)
+ {
+ llassert(previewp != NULL);
+ return NULL;
+ }
+
+ LLPointer<LLImageFormatted> img = previewp->getFormattedImage();
+ if (!img.get())
+ {
+ llwarns << "Empty snapshot image data" << llendl;
+ llassert(img.get() != NULL);
+ }
+
+ return img;
+}
+
+// static
+const LLVector3d& LLFloaterSnapshot::getPosTakenGlobal()
+{
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (!instance)
+ {
+ llassert(instance != NULL);
+ return LLVector3d::zero;
+ }
+
+ LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+ if (!previewp)
+ {
+ llassert(previewp != NULL);
+ return LLVector3d::zero;
+ }
+
+ return previewp->getPosTakenGlobal();
+}
+
+// static
+void LLFloaterSnapshot::setAgentEmail(const std::string& email)
+{
+ LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+ if (instance)
+ {
+ LLSideTrayPanelContainer* panel_container = instance->getChild<LLSideTrayPanelContainer>("panel_container");
+ LLPanel* postcard_panel = panel_container->getPanelByName("panel_snapshot_postcard");
+ postcard_panel->notify(LLSD().with("agent-email", email));
+ }
+}
///----------------------------------------------------------------------------
/// Class LLSnapshotFloaterView
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
index c92d9efde5..afe135fa40 100644
--- a/indra/newview/llfloatersnapshot.h
+++ b/indra/newview/llfloatersnapshot.h
@@ -27,11 +27,15 @@
#ifndef LL_LLFLOATERSNAPSHOT_H
#define LL_LLFLOATERSNAPSHOT_H
+#include "llimage.h"
#include "llfloater.h"
+class LLSpinCtrl;
class LLFloaterSnapshot : public LLFloater
{
+ LOG_CLASS(LLFloaterSnapshot);
+
public:
typedef enum e_snapshot_format
{
@@ -47,20 +51,31 @@ public:
/*virtual*/ void draw();
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void onClose(bool app_quitting);
+ /*virtual*/ S32 notify(const LLSD& info);
static void update();
-
- static S32 getUIWinHeightLong() {return sUIWinHeightLong ;}
- static S32 getUIWinHeightShort() {return sUIWinHeightShort ;}
- static S32 getUIWinWidth() {return sUIWinWidth ;}
+
+ // TODO: create a snapshot model instead
+ static LLFloaterSnapshot* getInstance();
+ static void saveTexture();
+ static BOOL saveLocal();
+ static void preUpdate();
+ static void postUpdate();
+ static void postSave();
+ static void postPanelSwitch();
+ static LLPointer<LLImageFormatted> getImageData();
+ static const LLVector3d& getPosTakenGlobal();
+ static void setAgentEmail(const std::string& email);
+
+ static const LLRect& getThumbnailPlaceholderRect() { return sThumbnailPlaceholder->getRect(); }
private:
+ static LLUICtrl* sThumbnailPlaceholder;
+ LLUICtrl *mRefreshBtn, *mRefreshLabel;
+ LLUICtrl *mSucceessLblPanel, *mFailureLblPanel;
+
class Impl;
Impl& impl;
-
- static S32 sUIWinHeightLong ;
- static S32 sUIWinHeightShort ;
- static S32 sUIWinWidth ;
};
class LLSnapshotFloaterView : public LLFloaterView
diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
index e692f1735a..72c077d215 100644
--- a/indra/newview/llfloatersounddevices.cpp
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -28,7 +28,6 @@
#include "llfloatersounddevices.h"
-#include "llbottomtray.h"
#include "lldraghandle.h"
#include "llpanelvoicedevicesettings.h"
@@ -55,13 +54,7 @@ LLFloaterSoundDevices::~LLFloaterSoundDevices()
BOOL LLFloaterSoundDevices::postBuild()
{
LLTransientDockableFloater::postBuild();
-
- LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("flyout_btn");
- setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
- setIsChrome(TRUE);
- if (mDragHandle)
- mDragHandle->setTitleVisible(TRUE);
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel");
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
new file mode 100644
index 0000000000..324afe661f
--- /dev/null
+++ b/indra/newview/llfloatertoybox.cpp
@@ -0,0 +1,191 @@
+/**
+ * @file llfloatertoybox.cpp
+ * @brief The toybox for flexibilizing the UI.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatertoybox.h"
+
+#include "llbutton.h"
+#include "llcommandmanager.h"
+#include "llnotifications.h"
+#include "llnotificationsutil.h"
+#include "llpanel.h"
+#include "lltoolbar.h"
+#include "lltoolbarview.h"
+#include "lltrans.h"
+
+LLFloaterToybox::LLFloaterToybox(const LLSD& key)
+ : LLFloater(key)
+ , mToolBar(NULL)
+{
+ mCommitCallbackRegistrar.add("Toybox.RestoreDefaults", boost::bind(&LLFloaterToybox::onBtnRestoreDefaults, this));
+ mCommitCallbackRegistrar.add("Toybox.ClearAll", boost::bind(&LLFloaterToybox::onBtnClearAll, this));
+}
+
+LLFloaterToybox::~LLFloaterToybox()
+{
+}
+
+bool compare_localized_command_labels(LLCommand * cmd1, LLCommand * cmd2)
+{
+ std::string lab1 = LLTrans::getString(cmd1->labelRef());
+ std::string lab2 = LLTrans::getString(cmd2->labelRef());
+
+ return (lab1 < lab2);
+}
+
+BOOL LLFloaterToybox::postBuild()
+{
+ mToolBar = getChild<LLToolBar>("toybox_toolbar");
+
+ mToolBar->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+ mToolBar->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+ mToolBar->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+ mToolBar->setButtonEnterCallback(boost::bind(&LLFloaterToybox::onToolBarButtonEnter,this,_1));
+
+ //
+ // Sort commands by localized labels so they will appear alphabetized in all languages
+ //
+
+ std::list<LLCommand *> alphabetized_commands;
+
+ LLCommandManager& cmdMgr = LLCommandManager::instance();
+ for (U32 i = 0; i < cmdMgr.commandCount(); i++)
+ {
+ LLCommand * command = cmdMgr.getCommand(i);
+
+ if (command->availableInToybox())
+ {
+ alphabetized_commands.push_back(command);
+ }
+ }
+
+ alphabetized_commands.sort(compare_localized_command_labels);
+
+ //
+ // Create Buttons
+ //
+
+ for (std::list<LLCommand *>::iterator it = alphabetized_commands.begin(); it != alphabetized_commands.end(); ++it)
+ {
+ mToolBar->addCommand((*it)->id());
+ }
+
+ return TRUE;
+}
+
+void LLFloaterToybox::draw()
+{
+ llassert(gToolBarView != NULL);
+
+ const command_id_list_t& command_list = mToolBar->getCommandsList();
+
+ for (command_id_list_t::const_iterator it = command_list.begin(); it != command_list.end(); ++it)
+ {
+ const LLCommandId& id = *it;
+
+ const bool command_not_present = (gToolBarView->hasCommand(id) == LLToolBarView::TOOLBAR_NONE);
+ mToolBar->enableCommand(id, command_not_present);
+ }
+
+ LLFloater::draw();
+}
+
+static bool finish_restore_toybox(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ if (option == 0)
+ {
+ LLToolBarView::loadDefaultToolbars();
+ }
+
+ return false;
+}
+
+static bool finish_clear_all_toybox(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ if (option == 0)
+ {
+ LLToolBarView::clearAllToolbars();
+ }
+
+ return false;
+}
+
+static LLNotificationFunctorRegistration finish_restore_toybox_reg("ConfirmRestoreToybox", finish_restore_toybox);
+static LLNotificationFunctorRegistration finish_clear_all_toybox_reg("ConfirmClearAllToybox", finish_clear_all_toybox);
+
+void LLFloaterToybox::onBtnRestoreDefaults()
+{
+ LLNotificationsUtil::add("ConfirmRestoreToybox");
+}
+
+void LLFloaterToybox::onBtnClearAll()
+{
+ LLNotificationsUtil::add("ConfirmClearAllToybox");
+}
+
+BOOL LLFloaterToybox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+ S32 local_x = x - mToolBar->getRect().mLeft;
+ S32 local_y = y - mToolBar->getRect().mBottom;
+ return mToolBar->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+}
+
+void LLFloaterToybox::onToolBarButtonEnter(LLView* button)
+{
+ std::string suffix = "";
+
+ LLCommandId commandId(button->getName());
+ LLCommand* command = LLCommandManager::instance().getCommand(commandId);
+
+ if (command)
+ {
+ S32 command_loc = gToolBarView->hasCommand(commandId);
+
+ switch(command_loc)
+ {
+ case LLToolBarView::TOOLBAR_BOTTOM: suffix = LLTrans::getString("Toolbar_Bottom_Tooltip"); break;
+ case LLToolBarView::TOOLBAR_LEFT: suffix = LLTrans::getString("Toolbar_Left_Tooltip"); break;
+ case LLToolBarView::TOOLBAR_RIGHT: suffix = LLTrans::getString("Toolbar_Right_Tooltip"); break;
+
+ default:
+ break;
+ }
+ }
+
+ mToolBar->setTooltipButtonSuffix(suffix);
+}
+
+
+// eof
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
new file mode 100644
index 0000000000..10aee0e6f5
--- /dev/null
+++ b/indra/newview/llfloatertoybox.h
@@ -0,0 +1,62 @@
+/**
+ * @file llfloatertoybox.h
+ * @brief The toybox for flexibilizing the UI.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERTOYBOX_H
+#define LL_LLFLOATERTOYBOX_H
+
+#include "llfloater.h"
+
+
+class LLButton;
+class LLToolBar;
+
+
+class LLFloaterToybox : public LLFloater
+{
+public:
+ LLFloaterToybox(const LLSD& key);
+ virtual ~LLFloaterToybox();
+
+ // virtuals
+ BOOL postBuild();
+ void draw();
+ /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg);
+
+protected:
+ void onBtnClearAll();
+ void onBtnRestoreDefaults();
+
+ void onToolBarButtonEnter(LLView* button);
+
+public:
+ LLToolBar * mToolBar;
+};
+
+#endif // LL_LLFLOATERTOYBOX_H
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
new file mode 100644
index 0000000000..959edff713
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.cpp
@@ -0,0 +1,296 @@
+/**
+ * @file llfloatertranslationsettings.cpp
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatertranslationsettings.h"
+
+// Viewer includes
+#include "lltranslate.h"
+#include "llviewercontrol.h" // for gSavedSettings
+
+// Linden library includes
+#include "llbutton.h"
+#include "llcheckboxctrl.h"
+#include "llcombobox.h"
+#include "llfloaterreg.h"
+#include "lllineeditor.h"
+#include "llnotificationsutil.h"
+#include "llradiogroup.h"
+
+class EnteredKeyVerifier : public LLTranslate::KeyVerificationReceiver
+{
+public:
+ EnteredKeyVerifier(LLTranslate::EService service, bool alert)
+ : LLTranslate::KeyVerificationReceiver(service)
+ , mAlert(alert)
+ {
+ }
+
+private:
+ /*virtual*/ void setVerificationStatus(bool ok)
+ {
+ LLFloaterTranslationSettings* floater =
+ LLFloaterReg::getTypedInstance<LLFloaterTranslationSettings>("prefs_translation");
+
+ if (!floater)
+ {
+ llwarns << "Cannot find translation settings floater" << llendl;
+ return;
+ }
+
+ switch (getService())
+ {
+ case LLTranslate::SERVICE_BING:
+ floater->setBingVerified(ok, mAlert);
+ break;
+ case LLTranslate::SERVICE_GOOGLE:
+ floater->setGoogleVerified(ok, mAlert);
+ break;
+ }
+ }
+
+ bool mAlert;
+};
+
+LLFloaterTranslationSettings::LLFloaterTranslationSettings(const LLSD& key)
+: LLFloater(key)
+, mMachineTranslationCB(NULL)
+, mLanguageCombo(NULL)
+, mTranslationServiceRadioGroup(NULL)
+, mBingAPIKeyEditor(NULL)
+, mGoogleAPIKeyEditor(NULL)
+, mBingVerifyBtn(NULL)
+, mGoogleVerifyBtn(NULL)
+, mOKBtn(NULL)
+, mBingKeyVerified(false)
+, mGoogleKeyVerified(false)
+{
+}
+
+// virtual
+BOOL LLFloaterTranslationSettings::postBuild()
+{
+ mMachineTranslationCB = getChild<LLCheckBoxCtrl>("translate_chat_checkbox");
+ mLanguageCombo = getChild<LLComboBox>("translate_language_combo");
+ mTranslationServiceRadioGroup = getChild<LLRadioGroup>("translation_service_rg");
+ mBingAPIKeyEditor = getChild<LLLineEditor>("bing_api_key");
+ mGoogleAPIKeyEditor = getChild<LLLineEditor>("google_api_key");
+ mBingVerifyBtn = getChild<LLButton>("verify_bing_api_key_btn");
+ mGoogleVerifyBtn = getChild<LLButton>("verify_google_api_key_btn");
+ mOKBtn = getChild<LLButton>("ok_btn");
+
+ mMachineTranslationCB->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+ mTranslationServiceRadioGroup->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+ mOKBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnOK, this));
+ getChild<LLButton>("cancel_btn")->setClickedCallback(boost::bind(&LLFloater::closeFloater, this, false));
+ mBingVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnBingVerify, this));
+ mGoogleVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnGoogleVerify, this));
+
+ mBingAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+ mBingAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onBingKeyEdited, this), NULL);
+ mGoogleAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+ mGoogleAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onGoogleKeyEdited, this), NULL);
+
+ center();
+ return TRUE;
+}
+
+// virtual
+void LLFloaterTranslationSettings::onOpen(const LLSD& key)
+{
+ mMachineTranslationCB->setValue(gSavedSettings.getBOOL("TranslateChat"));
+ mLanguageCombo->setSelectedByValue(gSavedSettings.getString("TranslateLanguage"), TRUE);
+ mTranslationServiceRadioGroup->setSelectedByValue(gSavedSettings.getString("TranslationService"), TRUE);
+
+ std::string bing_key = gSavedSettings.getString("BingTranslateAPIKey");
+ if (!bing_key.empty())
+ {
+ mBingAPIKeyEditor->setText(bing_key);
+ mBingAPIKeyEditor->setTentative(FALSE);
+ verifyKey(LLTranslate::SERVICE_BING, bing_key, false);
+ }
+ else
+ {
+ mBingAPIKeyEditor->setTentative(TRUE);
+ mBingKeyVerified = FALSE;
+ }
+
+ std::string google_key = gSavedSettings.getString("GoogleTranslateAPIKey");
+ if (!google_key.empty())
+ {
+ mGoogleAPIKeyEditor->setText(google_key);
+ mGoogleAPIKeyEditor->setTentative(FALSE);
+ verifyKey(LLTranslate::SERVICE_GOOGLE, google_key, false);
+ }
+ else
+ {
+ mGoogleAPIKeyEditor->setTentative(TRUE);
+ mGoogleKeyVerified = FALSE;
+ }
+
+ updateControlsEnabledState();
+}
+
+void LLFloaterTranslationSettings::setBingVerified(bool ok, bool alert)
+{
+ if (alert)
+ {
+ showAlert(ok ? "bing_api_key_verified" : "bing_api_key_not_verified");
+ }
+
+ mBingKeyVerified = ok;
+ updateControlsEnabledState();
+}
+
+void LLFloaterTranslationSettings::setGoogleVerified(bool ok, bool alert)
+{
+ if (alert)
+ {
+ showAlert(ok ? "google_api_key_verified" : "google_api_key_not_verified");
+ }
+
+ mGoogleKeyVerified = ok;
+ updateControlsEnabledState();
+}
+
+std::string LLFloaterTranslationSettings::getSelectedService() const
+{
+ return mTranslationServiceRadioGroup->getSelectedValue().asString();
+}
+
+std::string LLFloaterTranslationSettings::getEnteredBingKey() const
+{
+ return mBingAPIKeyEditor->getTentative() ? LLStringUtil::null : mBingAPIKeyEditor->getText();
+}
+
+std::string LLFloaterTranslationSettings::getEnteredGoogleKey() const
+{
+ return mGoogleAPIKeyEditor->getTentative() ? LLStringUtil::null : mGoogleAPIKeyEditor->getText();
+}
+
+void LLFloaterTranslationSettings::showAlert(const std::string& msg_name) const
+{
+ LLSD args;
+ args["MESSAGE"] = getString(msg_name);
+ LLNotificationsUtil::add("GenericAlert", args);
+}
+
+void LLFloaterTranslationSettings::updateControlsEnabledState()
+{
+ // Enable/disable controls based on the checkbox value.
+ bool on = mMachineTranslationCB->getValue().asBoolean();
+ std::string service = getSelectedService();
+ bool bing_selected = service == "bing";
+ bool google_selected = service == "google";
+
+ mTranslationServiceRadioGroup->setEnabled(on);
+ mLanguageCombo->setEnabled(on);
+
+ getChild<LLTextBox>("bing_api_key_label")->setEnabled(on);
+ mBingAPIKeyEditor->setEnabled(on);
+
+ getChild<LLTextBox>("google_api_key_label")->setEnabled(on);
+ mGoogleAPIKeyEditor->setEnabled(on);
+
+ mBingAPIKeyEditor->setEnabled(on && bing_selected);
+ mGoogleAPIKeyEditor->setEnabled(on && google_selected);
+
+ mBingVerifyBtn->setEnabled(on && bing_selected &&
+ !mBingKeyVerified && !getEnteredBingKey().empty());
+ mGoogleVerifyBtn->setEnabled(on && google_selected &&
+ !mGoogleKeyVerified && !getEnteredGoogleKey().empty());
+
+ mOKBtn->setEnabled(
+ !on || (
+ (bing_selected && mBingKeyVerified) ||
+ (google_selected && mGoogleKeyVerified)
+ ));
+}
+
+void LLFloaterTranslationSettings::verifyKey(int service, const std::string& key, bool alert)
+{
+ LLTranslate::KeyVerificationReceiverPtr receiver =
+ new EnteredKeyVerifier((LLTranslate::EService) service, alert);
+ LLTranslate::verifyKey(receiver, key);
+}
+
+void LLFloaterTranslationSettings::onEditorFocused(LLFocusableElement* control)
+{
+ LLLineEditor* editor = dynamic_cast<LLLineEditor*>(control);
+ if (editor && editor->hasTabStop()) // if enabled. getEnabled() doesn't work
+ {
+ if (editor->getTentative())
+ {
+ editor->setText(LLStringUtil::null);
+ editor->setTentative(FALSE);
+ }
+ }
+}
+
+void LLFloaterTranslationSettings::onBingKeyEdited()
+{
+ if (mBingAPIKeyEditor->isDirty())
+ {
+ setBingVerified(false, false);
+ }
+}
+
+void LLFloaterTranslationSettings::onGoogleKeyEdited()
+{
+ if (mGoogleAPIKeyEditor->isDirty())
+ {
+ setGoogleVerified(false, false);
+ }
+}
+
+void LLFloaterTranslationSettings::onBtnBingVerify()
+{
+ std::string key = getEnteredBingKey();
+ if (!key.empty())
+ {
+ verifyKey(LLTranslate::SERVICE_BING, key);
+ }
+}
+
+void LLFloaterTranslationSettings::onBtnGoogleVerify()
+{
+ std::string key = getEnteredGoogleKey();
+ if (!key.empty())
+ {
+ verifyKey(LLTranslate::SERVICE_GOOGLE, key);
+ }
+}
+
+void LLFloaterTranslationSettings::onBtnOK()
+{
+ gSavedSettings.setBOOL("TranslateChat", mMachineTranslationCB->getValue().asBoolean());
+ gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
+ gSavedSettings.setString("TranslationService", getSelectedService());
+ gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());
+ gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey());
+ closeFloater(false);
+}
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
new file mode 100644
index 0000000000..9b47ad72ed
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -0,0 +1,76 @@
+/**
+ * @file llfloatertranslationsettings.h
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERTRANSLATIONSETTINGS_H
+#define LL_LLFLOATERTRANSLATIONSETTINGS_H
+
+#include "llfloater.h"
+
+class LLButton;
+class LLCheckBoxCtrl;
+class LLComboBox;
+class LLLineEditor;
+class LLRadioGroup;
+
+class LLFloaterTranslationSettings : public LLFloater
+{
+public:
+ LLFloaterTranslationSettings(const LLSD& key);
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+ void setBingVerified(bool ok, bool alert);
+ void setGoogleVerified(bool ok, bool alert);
+
+private:
+ std::string getSelectedService() const;
+ std::string getEnteredBingKey() const;
+ std::string getEnteredGoogleKey() const;
+ void showAlert(const std::string& msg_name) const;
+ void updateControlsEnabledState();
+ void verifyKey(int service, const std::string& key, bool alert = true);
+
+ void onEditorFocused(LLFocusableElement* control);
+ void onBingKeyEdited();
+ void onGoogleKeyEdited();
+ void onBtnBingVerify();
+ void onBtnGoogleVerify();
+ void onBtnOK();
+
+ LLCheckBoxCtrl* mMachineTranslationCB;
+ LLComboBox* mLanguageCombo;
+ LLLineEditor* mBingAPIKeyEditor;
+ LLLineEditor* mGoogleAPIKeyEditor;
+ LLRadioGroup* mTranslationServiceRadioGroup;
+ LLButton* mBingVerifyBtn;
+ LLButton* mGoogleVerifyBtn;
+ LLButton* mOKBtn;
+
+ bool mBingKeyVerified;
+ bool mGoogleKeyVerified;
+};
+
+#endif // LL_LLFLOATERTRANSLATIONSETTINGS_H
diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index 2c9a736aff..3b5c3663fb 100644
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -48,13 +48,24 @@ LLFloaterWebContent::_Params::_Params()
show_chrome("show_chrome", true),
allow_address_entry("allow_address_entry", true),
preferred_media_size("preferred_media_size"),
- trusted_content("trusted_content", false)
+ trusted_content("trusted_content", false),
+ show_page_title("show_page_title", true)
{}
LLFloaterWebContent::LLFloaterWebContent( const Params& params )
: LLFloater( params ),
LLInstanceTracker<LLFloaterWebContent, std::string>(params.id()),
- mUUID(params.id())
+ mWebBrowser(NULL),
+ mAddressCombo(NULL),
+ mSecureLockIcon(NULL),
+ mStatusBarText(NULL),
+ mStatusBarProgress(NULL),
+ mBtnBack(NULL),
+ mBtnForward(NULL),
+ mBtnReload(NULL),
+ mBtnStop(NULL),
+ mUUID(params.id()),
+ mShowPageTitle(params.show_page_title)
{
mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
@@ -72,11 +83,16 @@ BOOL LLFloaterWebContent::postBuild()
mStatusBarText = getChild< LLTextBox >( "statusbartext" );
mStatusBarProgress = getChild<LLProgressBar>("statusbarprogress" );
+ mBtnBack = getChildView( "back" );
+ mBtnForward = getChildView( "forward" );
+ mBtnReload = getChildView( "reload" );
+ mBtnStop = getChildView( "stop" );
+
// observe browser events
mWebBrowser->addObserver( this );
// these buttons are always enabled
- getChildView("reload")->setEnabled( true );
+ mBtnReload->setEnabled( true );
getChildView("popexternal")->setEnabled( true );
// cache image for secure browsing
@@ -88,20 +104,6 @@ BOOL LLFloaterWebContent::postBuild()
return TRUE;
}
-bool LLFloaterWebContent::matchesKey(const LLSD& key)
-{
- LLUUID id = key["id"];
- if (id.notNull())
- {
- return id == mKey["id"].asUUID();
- }
- else
- {
- return key["target"].asString() == mKey["target"].asString();
- }
-}
-
-
void LLFloaterWebContent::initializeURLHistory()
{
// start with an empty list
@@ -123,56 +125,31 @@ void LLFloaterWebContent::initializeURLHistory()
}
}
-//static
-LLFloater* LLFloaterWebContent::create( Params p)
+bool LLFloaterWebContent::matchesKey(const LLSD& key)
{
- lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id() << llendl;
-
- if (!p.id.isProvided())
+ Params p(mKey);
+ Params other_p(key);
+ if (!other_p.target().empty() && other_p.target() != "_blank")
{
- p.id = LLUUID::generateNewID().asString();
+ return other_p.target() == p.target();
}
-
- if(p.target().empty() || p.target() == "_blank")
- {
- p.target = p.id();
- }
-
- S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit");
-
- LLSD sd;
- sd["target"] = p.target;
- if(LLFloaterReg::findInstance(p.window_class, sd) != NULL)
- {
- // There's already a web browser for this tag, so we won't be opening a new window.
- }
- else if(browser_window_limit != 0)
+ else
{
- // showInstance will open a new window. Figure out how many web browsers are already open,
- // and close the least recently opened one if this will put us over the limit.
-
- LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList(p.window_class);
- lldebugs << "total instance count is " << instances.size() << llendl;
-
- for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
- {
- lldebugs << " " << (*iter)->getKey()["target"] << llendl;
- }
-
- if(instances.size() >= (size_t)browser_window_limit)
- {
- // Destroy the least recently opened instance
- (*instances.begin())->closeFloater();
- }
+ return other_p.id() == p.id();
}
+}
- return LLFloaterReg::showInstance(p.window_class, p);
+//static
+LLFloater* LLFloaterWebContent::create( Params p)
+{
+ preCreate(p);
+ return new LLFloaterWebContent(p);
}
//static
void LLFloaterWebContent::closeRequest(const std::string &uuid)
{
- LLFloaterWebContent* floaterp = getInstance(uuid);
+ LLFloaterWebContent* floaterp = instance_tracker_t::getInstance(uuid);
if (floaterp)
{
floaterp->closeFloater(false);
@@ -182,7 +159,7 @@ void LLFloaterWebContent::closeRequest(const std::string &uuid)
//static
void LLFloaterWebContent::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height)
{
- LLFloaterWebContent* floaterp = getInstance(uuid);
+ LLFloaterWebContent* floaterp = instance_tracker_t::getInstance(uuid);
if (floaterp)
{
floaterp->geometryChanged(x, y, width, height);
@@ -216,6 +193,43 @@ void LLFloaterWebContent::geometryChanged(S32 x, S32 y, S32 width, S32 height)
setShape(new_rect);
}
+// static
+void LLFloaterWebContent::preCreate(LLFloaterWebContent::Params& p)
+{
+ lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id() << llendl;
+
+ if (!p.id.isProvided())
+ {
+ p.id = LLUUID::generateNewID().asString();
+ }
+
+ if(p.target().empty() || p.target() == "_blank")
+ {
+ p.target = p.id();
+ }
+
+ S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit");
+ if(browser_window_limit != 0)
+ {
+ // showInstance will open a new window. Figure out how many web browsers are already open,
+ // and close the least recently opened one if this will put us over the limit.
+
+ LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList(p.window_class);
+ lldebugs << "total instance count is " << instances.size() << llendl;
+
+ for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
+ {
+ lldebugs << " " << (*iter)->getKey()["target"] << llendl;
+ }
+
+ if(instances.size() >= (size_t)browser_window_limit)
+ {
+ // Destroy the least recently opened instance
+ (*instances.begin())->closeFloater();
+ }
+ }
+}
+
void LLFloaterWebContent::open_media(const Params& p)
{
// Specifying a mime type of text/html here causes the plugin system to skip the MIME type probe and just open a browser plugin.
@@ -281,8 +295,8 @@ void LLFloaterWebContent::onClose(bool app_quitting)
void LLFloaterWebContent::draw()
{
// this is asynchronous so we need to keep checking
- getChildView( "back" )->setEnabled( mWebBrowser->canNavigateBack() );
- getChildView( "forward" )->setEnabled( mWebBrowser->canNavigateForward() );
+ mBtnBack->setEnabled( mWebBrowser->canNavigateBack() );
+ mBtnForward->setEnabled( mWebBrowser->canNavigateForward() );
LLFloater::draw();
}
@@ -302,12 +316,12 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
else if(event == MEDIA_EVENT_NAVIGATE_BEGIN)
{
// flags are sent with this event
- getChildView("back")->setEnabled( self->getHistoryBackAvailable() );
- getChildView("forward")->setEnabled( self->getHistoryForwardAvailable() );
+ mBtnBack->setEnabled( self->getHistoryBackAvailable() );
+ mBtnForward->setEnabled( self->getHistoryForwardAvailable() );
// toggle visibility of these buttons based on browser state
- getChildView("reload")->setVisible( false );
- getChildView("stop")->setVisible( true );
+ mBtnReload->setVisible( false );
+ mBtnStop->setVisible( true );
// turn "on" progress bar now we're about to start loading
mStatusBarProgress->setVisible( true );
@@ -315,12 +329,12 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
{
// flags are sent with this event
- getChildView("back")->setEnabled( self->getHistoryBackAvailable() );
- getChildView("forward")->setEnabled( self->getHistoryForwardAvailable() );
+ mBtnBack->setEnabled( self->getHistoryBackAvailable() );
+ mBtnForward->setEnabled( self->getHistoryForwardAvailable() );
// toggle visibility of these buttons based on browser state
- getChildView("reload")->setVisible( true );
- getChildView("stop")->setVisible( false );
+ mBtnReload->setVisible( true );
+ mBtnStop->setVisible( false );
// turn "off" progress bar now we're loaded
mStatusBarProgress->setVisible( false );
@@ -366,10 +380,13 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
{
std::string page_title = self->getMediaName();
// simulate browser behavior - title is empty, use the current URL
- if ( page_title.length() > 0 )
- setTitle( page_title );
- else
- setTitle( mCurrentURL );
+ if (mShowPageTitle)
+ {
+ if ( page_title.length() > 0 )
+ setTitle( page_title );
+ else
+ setTitle( mCurrentURL );
+ }
}
else if(event == MEDIA_EVENT_LINK_HOVERED )
{
@@ -423,8 +440,8 @@ void LLFloaterWebContent::onClickStop()
// still should happen when we catch the navigate complete event
// but sometimes (don't know why) that event isn't sent from Qt
// and we ghetto a point where the stop button stays active.
- getChildView("reload")->setVisible( true );
- getChildView("stop")->setVisible( false );
+ mBtnReload->setVisible( true );
+ mBtnStop->setVisible( false );
}
void LLFloaterWebContent::onEnterAddress()
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
index 36e214b7a9..cfc87e9015 100644
--- a/indra/newview/llfloaterwebcontent.h
+++ b/indra/newview/llfloaterwebcontent.h
@@ -43,6 +43,7 @@ class LLFloaterWebContent :
public LLInstanceTracker<LLFloaterWebContent, std::string>
{
public:
+ typedef LLInstanceTracker<LLFloaterWebContent, std::string> instance_tracker_t;
LOG_CLASS(LLFloaterWebContent);
struct _Params : public LLInitParam::Block<_Params>
@@ -53,7 +54,8 @@ public:
id;
Optional<bool> show_chrome,
allow_address_entry,
- trusted_content;
+ trusted_content,
+ show_page_title;
Optional<LLRect> preferred_media_size;
_Params();
@@ -88,16 +90,24 @@ protected:
void onEnterAddress();
void onPopExternal();
+ static void preCreate(Params& p);
void open_media(const Params& );
void set_current_url(const std::string& url);
- LLMediaCtrl* mWebBrowser;
- LLComboBox* mAddressCombo;
- LLIconCtrl *mSecureLockIcon;
- LLTextBox* mStatusBarText;
- LLProgressBar* mStatusBarProgress;
- std::string mCurrentURL;
- std::string mUUID;
+ LLMediaCtrl* mWebBrowser;
+ LLComboBox* mAddressCombo;
+ LLIconCtrl* mSecureLockIcon;
+ LLTextBox* mStatusBarText;
+ LLProgressBar* mStatusBarProgress;
+
+ LLView* mBtnBack;
+ LLView* mBtnForward;
+ LLView* mBtnReload;
+ LLView* mBtnStop;
+
+ std::string mCurrentURL;
+ std::string mUUID;
+ bool mShowPageTitle;
};
#endif // LL_LLFLOATERWEBCONTENT_H
diff --git a/indra/newview/llfloaterwebprofile.cpp b/indra/newview/llfloaterwebprofile.cpp
new file mode 100644
index 0000000000..c41f6f148f
--- /dev/null
+++ b/indra/newview/llfloaterwebprofile.cpp
@@ -0,0 +1,79 @@
+/**
+ * @file llfloaterwebprofile.cpp
+ * @brief Avatar profile floater.
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterwebprofile.h"
+
+#include "llviewercontrol.h"
+
+LLFloaterWebProfile::LLFloaterWebProfile(const Params& key) :
+ LLFloaterWebContent(key)
+{
+}
+
+void LLFloaterWebProfile::onOpen(const LLSD& key)
+{
+ Params p(key);
+ p.show_chrome(false).
+ window_class("profile");
+ LLFloaterWebContent::onOpen(p);
+ applyPreferredRect();
+}
+
+// virtual
+void LLFloaterWebProfile::handleReshape(const LLRect& new_rect, bool by_user)
+{
+ lldebugs << "handleReshape: " << new_rect << llendl;
+
+ if (by_user && !isMinimized())
+ {
+ lldebugs << "Storing new rect" << llendl;
+ gSavedSettings.setRect("WebProfileFloaterRect", new_rect);
+ }
+
+ LLFloaterWebContent::handleReshape(new_rect, by_user);
+}
+
+LLFloater* LLFloaterWebProfile::create(const LLSD& key)
+{
+ LLFloaterWebContent::Params p(key);
+ preCreate(p);
+ return new LLFloaterWebProfile(p);
+}
+
+void LLFloaterWebProfile::applyPreferredRect()
+{
+ const LLRect preferred_rect = gSavedSettings.getRect("WebProfileFloaterRect");
+ lldebugs << "Applying preferred rect: " << preferred_rect << llendl;
+
+ // Don't override position that may have been set by floater stacking code.
+ LLRect new_rect = getRect();
+ new_rect.setLeftTopAndSize(
+ new_rect.mLeft, new_rect.mTop,
+ preferred_rect.getWidth(), preferred_rect.getHeight());
+ setShape(new_rect);
+}
diff --git a/indra/newview/llfloaterwebprofile.h b/indra/newview/llfloaterwebprofile.h
new file mode 100644
index 0000000000..4c355e401b
--- /dev/null
+++ b/indra/newview/llfloaterwebprofile.h
@@ -0,0 +1,59 @@
+/**
+ * @file llfloaterwebprofile.h
+ * @brief Avatar profile floater.
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERWEBPROFILE_H
+#define LL_LLFLOATERWEBPROFILE_H
+
+#include "llfloaterwebcontent.h"
+#include "llviewermediaobserver.h"
+
+#include <string>
+
+class LLMediaCtrl;
+
+/**
+ * Displays avatar profile web page.
+ */
+class LLFloaterWebProfile
+: public LLFloaterWebContent
+{
+ LOG_CLASS(LLFloaterWebProfile);
+public:
+ typedef LLFloaterWebContent::Params Params;
+
+ LLFloaterWebProfile(const Params& key);
+
+ /*virtual*/ void onOpen(const LLSD& key);
+ /*virtual*/ void handleReshape(const LLRect& new_rect, bool by_user = false);
+
+ static LLFloater* create(const LLSD& key);
+
+private:
+ void applyPreferredRect();
+};
+
+#endif // LL_LLFLOATERWEBPROFILE_H
+
diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp
index a70f2af11a..ec161018b8 100644
--- a/indra/newview/llfloaterwindowsize.cpp
+++ b/indra/newview/llfloaterwindowsize.cpp
@@ -58,33 +58,12 @@ bool extractWindowSizeFromString(const std::string& instr, U32 *width, U32 *heig
}
-///----------------------------------------------------------------------------
-/// Class LLFloaterWindowSize
-///----------------------------------------------------------------------------
-class LLFloaterWindowSize
-: public LLFloater
-{
- friend class LLFloaterReg;
-private:
- LLFloaterWindowSize(const LLSD& key);
- virtual ~LLFloaterWindowSize();
-
-public:
- /*virtual*/ BOOL postBuild();
- void initWindowSizeControls();
- void onClickSet();
- void onClickCancel();
-};
-
-
LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key)
: LLFloater(key)
-{
-}
+{}
LLFloaterWindowSize::~LLFloaterWindowSize()
-{
-}
+{}
BOOL LLFloaterWindowSize::postBuild()
{
@@ -145,13 +124,3 @@ void LLFloaterWindowSize::onClickCancel()
{
closeFloater();
}
-
-///----------------------------------------------------------------------------
-/// LLFloaterWindowSizeUtil
-///----------------------------------------------------------------------------
-void LLFloaterWindowSizeUtil::registerFloater()
-{
- LLFloaterReg::add("window_size", "floater_window_size.xml",
- &LLFloaterReg::build<LLFloaterWindowSize>);
-
-}
diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h
index 40f1a25bb3..a71e5e273c 100644
--- a/indra/newview/llfloaterwindowsize.h
+++ b/indra/newview/llfloaterwindowsize.h
@@ -26,10 +26,24 @@
#ifndef LLFLOATERWINDOWSIZE_H
#define LLFLOATERWINDOWSIZE_H
-// Allow user to set the window size for filming tutorials, machinima, etc
-namespace LLFloaterWindowSizeUtil
+#include "llfloater.h"
+
+///----------------------------------------------------------------------------
+/// Class LLFloaterWindowSize
+///----------------------------------------------------------------------------
+class LLFloaterWindowSize
+ : public LLFloater
{
- void registerFloater();
-}
+ friend class LLFloaterReg;
+private:
+ LLFloaterWindowSize(const LLSD& key);
+ virtual ~LLFloaterWindowSize();
+
+public:
+ /*virtual*/ BOOL postBuild();
+ void initWindowSizeControls();
+ void onClickSet();
+ void onClickCancel();
+};
#endif
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 9ba5f827e2..6ec2598e44 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -299,7 +299,7 @@ LLFolderView::~LLFolderView( void )
mAutoOpenItems.removeAllNodes();
gIdleCallbacks.deleteFunction(idle, this);
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mAutoOpenItems.removeAllNodes();
clearSelection();
@@ -1969,7 +1969,7 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFolderView::deleteAllChildren()
{
closeRenamer();
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mPopupMenuHandle = LLHandle<LLView>();
mScrollContainer = NULL;
mRenameItem = NULL;
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 622dcfe8dd..f27fd035db 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -658,7 +658,7 @@ LLViewerInventoryItem * LLFolderViewItem::getInventoryItem(void)
return gInventory.getItem(getListener()->getUUID());
}
-std::string LLFolderViewItem::getName( void ) const
+const std::string& LLFolderViewItem::getName( void ) const
{
if(mListener)
{
@@ -1173,8 +1173,8 @@ BOOL LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder, LLFolderView* r
return folder->addFolder(this);
}
-// Finds width and height of this object and it's children. Also
-// makes sure that this view and it's children are the right size.
+// Finds width and height of this object and its children. Also
+// makes sure that this view and its children are the right size.
S32 LLFolderViewFolder::arrange( S32* width, S32* height, S32 filter_generation)
{
// sort before laying out contents
diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h
index 676eaf825d..3433e3f7f3 100644
--- a/indra/newview/llfolderviewitem.h
+++ b/indra/newview/llfolderviewitem.h
@@ -267,7 +267,7 @@ public:
// This method returns the actual name of the thing being
// viewed. This method will ask the viewed object itself.
- std::string getName( void ) const;
+ const std::string& getName( void ) const;
const std::string& getSearchableLabel( void ) const;
@@ -556,6 +556,10 @@ public:
folders_t::const_iterator getFoldersBegin() const { return mFolders.begin(); }
folders_t::const_iterator getFoldersEnd() const { return mFolders.end(); }
folders_t::size_type getFoldersCount() const { return mFolders.size(); }
+
+ items_t::const_iterator getItemsBegin() const { return mItems.begin(); }
+ items_t::const_iterator getItemsEnd() const { return mItems.end(); }
+ items_t::size_type getItemsCount() const { return mItems.size(); }
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index fa3f546157..1208c9378e 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -115,7 +115,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
S32 center_y = (top + bottom) / 2;
// save drawing mode
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
BOOL limit_select_distance = gSavedSettings.getBOOL("LimitSelectDistance");
@@ -230,9 +230,9 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
}
// restore drawing mode
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
// restore camera
LLViewerCamera::getInstance()->setFar(old_far_plane);
@@ -240,7 +240,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
gViewerWindow->setup3DRender();
}
-const F32 WIND_ALTITUDE = 180.f;
+const F32 WIND_RELATIVE_ALTITUDE = 25.f;
void LLWind::renderVectors()
{
@@ -254,13 +254,13 @@ void LLWind::renderVectors()
gGL.pushMatrix();
LLVector3 origin_agent;
origin_agent = gAgent.getPosAgentFromGlobal(mOriginGlobal);
- gGL.translatef(origin_agent.mV[VX], origin_agent.mV[VY], WIND_ALTITUDE);
+ gGL.translatef(origin_agent.mV[VX], origin_agent.mV[VY], gAgent.getPositionAgent().mV[VZ] + WIND_RELATIVE_ALTITUDE);
for (j = 0; j < mSize; j++)
{
for (i = 0; i < mSize; i++)
{
- x = mCloudVelX[i + j*mSize] * WIND_SCALE_HACK;
- y = mCloudVelY[i + j*mSize] * WIND_SCALE_HACK;
+ x = mVelX[i + j*mSize] * WIND_SCALE_HACK;
+ y = mVelY[i + j*mSize] * WIND_SCALE_HACK;
gGL.pushMatrix();
gGL.translatef((F32)i * region_width_meters/mSize, (F32)j * region_width_meters/mSize, 0.0);
gGL.color3f(0,1,0);
@@ -777,13 +777,17 @@ void LLViewerObjectList::renderObjectBeacons()
LLGLSUIDefault gls_ui;
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
S32 last_line_width = -1;
// gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width)
- BOOL flush = FALSE;
for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter)
{
const LLDebugBeacon &debug_beacon = *iter;
@@ -792,18 +796,14 @@ void LLViewerObjectList::renderObjectBeacons()
S32 line_width = debug_beacon.mLineWidth;
if (line_width != last_line_width)
{
- if (flush)
- {
- gGL.end();
- }
- flush = TRUE;
gGL.flush();
glLineWidth( (F32)line_width );
last_line_width = line_width;
- gGL.begin(LLRender::LINES);
}
const LLVector3 &thisline = debug_beacon.mPositionAgent;
+
+ gGL.begin(LLRender::LINES);
gGL.color4fv(color.mV);
gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] - 50.f);
gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] + 50.f);
@@ -813,8 +813,9 @@ void LLViewerObjectList::renderObjectBeacons()
gGL.vertex3f(thisline.mV[VX],thisline.mV[VY] + 2.f,thisline.mV[VZ]);
draw_line_cube(0.10f, thisline);
+
+ gGL.end();
}
- gGL.end();
}
{
@@ -824,7 +825,6 @@ void LLViewerObjectList::renderObjectBeacons()
S32 last_line_width = -1;
// gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width)
- BOOL flush = FALSE;
for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter)
{
const LLDebugBeacon &debug_beacon = *iter;
@@ -832,18 +832,13 @@ void LLViewerObjectList::renderObjectBeacons()
S32 line_width = debug_beacon.mLineWidth;
if (line_width != last_line_width)
{
- if (flush)
- {
- gGL.end();
- }
- flush = TRUE;
gGL.flush();
glLineWidth( (F32)line_width );
last_line_width = line_width;
- gGL.begin(LLRender::LINES);
}
const LLVector3 &thisline = debug_beacon.mPositionAgent;
+ gGL.begin(LLRender::LINES);
gGL.color4fv(debug_beacon.mColor.mV);
gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] - 0.5f);
gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] + 0.5f);
@@ -853,9 +848,10 @@ void LLViewerObjectList::renderObjectBeacons()
gGL.vertex3f(thisline.mV[VX],thisline.mV[VY] + 0.5f,thisline.mV[VZ]);
draw_line_cube(0.10f, thisline);
+
+ gGL.end();
}
- gGL.end();
gGL.flush();
glLineWidth(1.f);
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 97fa551441..623ebb76f2 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -34,10 +34,10 @@
#include "llagent.h"
#include "llcommandhandler.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgroupmgr.h"
#include "llimview.h" // for gIMMgr
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "llstatusbar.h" // can_afford_transaction()
#include "llimfloater.h"
#include "groupchatlistener.h"
@@ -83,7 +83,7 @@ public:
{
LLSD params;
params["people_panel_tab_name"] = "groups_panel";
- LLSideTray::getInstance()->showPanel("panel_people", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", params);
return true;
}
return false;
@@ -243,7 +243,7 @@ static bool isGroupUIVisible()
{
static LLPanel* panel = 0;
if(!panel)
- panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+ panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
if(!panel)
return false;
return panel->isInVisibleChain();
@@ -265,7 +265,7 @@ void LLGroupActions::show(const LLUUID& group_id)
params["group_id"] = group_id;
params["open_tab_name"] = "panel_group_info_sidetray";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
void LLGroupActions::refresh_notices()
@@ -278,7 +278,7 @@ void LLGroupActions::refresh_notices()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh_notices";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -292,7 +292,7 @@ void LLGroupActions::refresh(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -303,7 +303,7 @@ void LLGroupActions::createGroup()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "create";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -317,7 +317,7 @@ void LLGroupActions::closeGroup(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "close";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index c3e6e1c2dc..f7ed1116cb 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -95,7 +95,7 @@ LLGroupList::LLGroupList(const Params& p)
LLGroupList::~LLGroupList()
{
gAgent.removeListener(this);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mContextMenuHandle.get();
}
// virtual
diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp
index 37b7b2e75d..8abad3d292 100644
--- a/indra/newview/llhudeffectbeam.cpp
+++ b/indra/newview/llhudeffectbeam.cpp
@@ -295,13 +295,13 @@ void LLHUDEffectBeam::render()
F32 alpha = mFadeInterp.getCurVal()*mColor.mV[3];
alpha *= mInterpFade[i].getCurVal();
coloru.mV[3] = (U8)alpha;
- glColor4ubv(coloru.mV);
+ gGL.color4ubv(coloru.mV);
- glPushMatrix();
- glTranslatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
- glScalef(scale, scale, scale);
- gSphere.render(0);
- glPopMatrix();
+ gGL.pushMatrix();
+ gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
+ gGL.scalef(scale, scale, scale);
+ gSphere.render();
+ gGL.popMatrix();
}
}
diff --git a/indra/newview/llhudeffectblob.cpp b/indra/newview/llhudeffectblob.cpp
index d8687eed8d..c909551b51 100644
--- a/indra/newview/llhudeffectblob.cpp
+++ b/indra/newview/llhudeffectblob.cpp
@@ -44,12 +44,20 @@ LLHUDEffectBlob::~LLHUDEffectBlob()
{
}
+void LLHUDEffectBlob::markDead()
+{
+ mImage = NULL;
+
+ LLHUDEffect::markDead();
+}
+
void LLHUDEffectBlob::render()
{
F32 time = mTimer.getElapsedTimeF32();
if (mDuration < time)
{
markDead();
+ return;
}
LLVector3 pos_agent = gAgent.getPosAgentFromGlobal(mPositionGlobal);
diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h
index f4c1691108..ce3e8500fc 100644
--- a/indra/newview/llhudeffectblob.h
+++ b/indra/newview/llhudeffectblob.h
@@ -35,6 +35,8 @@ class LLHUDEffectBlob : public LLHUDEffect
public:
friend class LLHUDObject;
+ void markDead();
+
void setPixelSize(S32 pixels) { mPixelSize = pixels; }
protected:
diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp
index b380b3fe20..bc3b220dc0 100644
--- a/indra/newview/llhudeffectlookat.cpp
+++ b/indra/newview/llhudeffectlookat.cpp
@@ -498,10 +498,10 @@ void LLHUDEffectLookAt::render()
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLVector3 target = mTargetPos + ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->mHeadp->getWorldPosition();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
gGL.translatef(target.mV[VX], target.mV[VY], target.mV[VZ]);
- glScalef(0.3f, 0.3f, 0.3f);
+ gGL.scalef(0.3f, 0.3f, 0.3f);
gGL.begin(LLRender::LINES);
{
LLColor3 color = (*mAttentions)[mTargetType].mColor;
diff --git a/indra/newview/llhudeffectpointat.cpp b/indra/newview/llhudeffectpointat.cpp
index 28fe8e1c01..114a633821 100644
--- a/indra/newview/llhudeffectpointat.cpp
+++ b/indra/newview/llhudeffectpointat.cpp
@@ -327,7 +327,7 @@ void LLHUDEffectPointAt::render()
LLVector3 target = mTargetPos + mSourceObject->getRenderPosition();
gGL.pushMatrix();
gGL.translatef(target.mV[VX], target.mV[VY], target.mV[VZ]);
- glScalef(0.3f, 0.3f, 0.3f);
+ gGL.scalef(0.3f, 0.3f, 0.3f);
gGL.begin(LLRender::LINES);
{
gGL.color3f(1.f, 0.f, 0.f);
diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp
index 1156e764a1..122711a86d 100644
--- a/indra/newview/llhudrender.cpp
+++ b/indra/newview/llhudrender.cpp
@@ -107,14 +107,24 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
viewport[1] = world_view_rect.mBottom;
viewport[2] = world_view_rect.getWidth();
viewport[3] = world_view_rect.getHeight();
+
+ F64 mdlv[16];
+ F64 proj[16];
+
+ for (U32 i = 0; i < 16; i++)
+ {
+ mdlv[i] = (F64) gGLModelView[i];
+ proj[i] = (F64) gGLProjection[i];
+ }
+
gluProject(render_pos.mV[0], render_pos.mV[1], render_pos.mV[2],
- gGLModelView, gGLProjection, (GLint*) viewport,
+ mdlv, proj, (GLint*) viewport,
&winX, &winY, &winZ);
//fonts all render orthographically, set up projection``
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
LLUI::pushMatrix();
@@ -124,7 +134,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
winX -= world_view_rect.mLeft;
winY -= world_view_rect.mBottom;
LLUI::loadIdentity();
- glLoadIdentity();
+ gGL.loadIdentity();
LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f));
F32 right_x;
@@ -133,7 +143,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
LLUI::popMatrix();
gGL.popMatrix();
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 50a9c56518..f5cda52d44 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -34,9 +34,9 @@
#include "llappviewer.h"
#include "llavatarnamecache.h"
#include "llbutton.h"
-#include "llbottomtray.h"
#include "llchannelmanager.h"
#include "llchiclet.h"
+#include "llchicletbar.h"
#include "llfloaterreg.h"
#include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container
#include "llinventoryfunctions.h"
@@ -55,15 +55,9 @@
#include "llinventorymodel.h"
#include "llrootview.h"
#include "llspeakers.h"
-#include "llsidetray.h"
#include "llviewerchat.h"
-static const S32 RECT_PADDING_NOT_INIT = -1;
-static const S32 RECT_PADDING_NEED_RECALC = -2;
-
-S32 LLIMFloater::sAllowedRectRightPadding = RECT_PADDING_NOT_INIT;
-
LLIMFloater::LLIMFloater(const LLUUID& session_id)
: LLTransientDockableFloater(NULL, true, session_id),
mControlPanel(NULL),
@@ -123,14 +117,14 @@ void LLIMFloater::onFocusLost()
{
LLIMModel::getInstance()->resetActiveSessionID();
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
}
void LLIMFloater::onFocusReceived()
{
LLIMModel::getInstance()->setActiveSessionID(mSessionID);
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
if (getVisible())
{
@@ -450,7 +444,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
if (floater->getDockControl() == NULL)
{
LLChiclet* chiclet =
- LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(
+ LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(
session_id);
if (chiclet == NULL)
{
@@ -458,11 +452,11 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+ LLChicletBar::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
}
floater->setDockControl(new LLDockControl(chiclet, floater, floater->getDockTongue(),
- LLDockControl::TOP, boost::bind(&LLIMFloater::getAllowedRect, floater, _1)));
+ LLDockControl::BOTTOM));
}
// window is positioned, now we can show it.
@@ -472,43 +466,6 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
return floater;
}
-//static
-bool LLIMFloater::resetAllowedRectPadding()
-{
- //reset allowed rect right padding if "SidebarCameraMovement" option
- //or sidebar state changed
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC ;
- return true;
-}
-
-void LLIMFloater::getAllowedRect(LLRect& rect)
-{
- if (sAllowedRectRightPadding == RECT_PADDING_NOT_INIT) //wasn't initialized
- {
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLIMFloater::resetAllowedRectPadding));
-
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLIMFloater::resetAllowedRectPadding));
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC;
- }
-
- rect = gViewerWindow->getWorldViewRectScaled();
- if (sAllowedRectRightPadding == RECT_PADDING_NEED_RECALC) //recalc allowed rect right padding
- {
- LLPanel* side_bar_tabs =
- gViewerWindow->getRootView()->getChild<LLPanel> (
- "side_bar_tabs");
- sAllowedRectRightPadding = side_bar_tabs->getRect().getWidth();
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
-
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- sAllowedRectRightPadding += LLSideTray::getInstance()->getVisibleWidth();
- }
- }
- rect.mRight -= sAllowedRectRightPadding;
-}
-
void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
{
// update notification channel state
@@ -560,7 +517,7 @@ void LLIMFloater::setVisible(BOOL visible)
if(!visible)
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
if(chiclet)
{
chiclet->setToggleState(false);
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 5158f6c1f7..f7cd35b5eb 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -145,8 +145,6 @@ private:
static void* createPanelIMControl(void* userdata);
static void* createPanelGroupControl(void* userdata);
static void* createPanelAdHocControl(void* userdata);
- // gets a rect that bounds possible positions for the LLIMFloater on a screen (EXT-1111)
- void getAllowedRect(LLRect& rect);
// Add the "User is typing..." indicator.
void addTypingIndicator(const LLIMInfo* im_info);
@@ -156,10 +154,6 @@ private:
static void closeHiddenIMToasts();
- static bool resetAllowedRectPadding();
- //need to keep this static for performance issues
- static S32 sAllowedRectRightPadding;
-
static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);
LLPanelChatControlPanel* mControlPanel;
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 33cb3a54a7..c8e48b0d42 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -47,12 +47,13 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
LLIMFloaterContainer::~LLIMFloaterContainer()
{
+ mNewMessageConnection.disconnect();
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
}
BOOL LLIMFloaterContainer::postBuild()
{
- LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
+ mNewMessageConnection = 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;
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 53dfcd78ff..892ecef48d 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -62,7 +62,7 @@ public:
private:
typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
avatarID_panel_map_t mSessions;
-
+ boost::signals2::connection mNewMessageConnection;
void onNewMessageReceived(const LLSD& data);
};
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index b3b0c93b99..0250af6a0e 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -41,7 +41,6 @@
#include "llagent.h"
#include "llbutton.h"
-#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llchannelmanager.h"
#include "llchat.h"
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 4de6976534..a856bd0bdc 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -46,7 +46,6 @@
#include "llagentui.h"
#include "llappviewer.h"
#include "llavatariconctrl.h"
-#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llchat.h"
#include "llimfloater.h"
@@ -61,6 +60,7 @@
#include "llnearbychat.h"
#include "llspeakers.h" //for LLIMSpeakerMgr
#include "lltextbox.h"
+#include "lltoolbarview.h"
#include "llviewercontrol.h"
#include "llviewerparcelmgr.h"
@@ -1675,27 +1675,48 @@ LLCallDialog::~LLCallDialog()
LLUI::removePopup(this);
}
-void LLCallDialog::getAllowedRect(LLRect& rect)
+BOOL LLCallDialog::postBuild()
{
- rect = gViewerWindow->getWorldViewRectScaled();
+ if (!LLDockableFloater::postBuild() || !gToolBarView)
+ return FALSE;
+
+ dockToToolbarButton("speak");
+
+ return TRUE;
}
-BOOL LLCallDialog::postBuild()
+void LLCallDialog::dockToToolbarButton(const std::string& toolbarButtonName)
{
- if (!LLDockableFloater::postBuild())
- return FALSE;
+ LLDockControl::DocAt dock_pos = getDockControlPos(toolbarButtonName);
+ LLView *anchor_panel = gToolBarView->findChildView(toolbarButtonName);
- // dock the dialog to the Speak Button, where other sys messages appear
- LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_panel");
+ setUseTongue(anchor_panel);
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP,
- boost::bind(&LLCallDialog::getAllowedRect, this, _1)));
+ setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(dock_pos), dock_pos));
+}
- return TRUE;
+LLDockControl::DocAt LLCallDialog::getDockControlPos(const std::string& toolbarButtonName)
+{
+ LLCommandId command_id(toolbarButtonName);
+ S32 toolbar_loc = gToolBarView->hasCommand(command_id);
+
+ LLDockControl::DocAt doc_at = LLDockControl::TOP;
+
+ switch (toolbar_loc)
+ {
+ case LLToolBarView::TOOLBAR_LEFT:
+ doc_at = LLDockControl::RIGHT;
+ break;
+
+ case LLToolBarView::TOOLBAR_RIGHT:
+ doc_at = LLDockControl::LEFT;
+ break;
+ }
+
+ return doc_at;
}
+
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLOutgoingCallDialog
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -2382,15 +2403,6 @@ void LLIMMgr::addMessage(
bool link_name) // If this is true, then we insert the name and link it to a profile
{
LLUUID other_participant_id = target_id;
-
- // don't process muted IMs
- if (LLMuteList::getInstance()->isMuted(
- other_participant_id,
- LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from))
- {
- return;
- }
-
LLUUID new_session_id = session_id;
if (new_session_id.isNull())
{
@@ -2431,10 +2443,25 @@ void LLIMMgr::addMessage(
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
}
+ // Logically it would make more sense to reject the session sooner, in another area of the
+ // code, but the session has to be established inside the server before it can be left.
+ if (LLMuteList::getInstance()->isMuted(other_participant_id) && !LLMuteList::getInstance()->isLinden(from))
+ {
+ llwarns << "Leaving IM session from initiating muted resident " << from << llendl;
+ if(!gIMMgr->leaveSession(new_session_id))
+ {
+ llinfos << "Session " << new_session_id << " does not exist." << llendl;
+ }
+ return;
+ }
+
make_ui_sound("UISndNewIncomingIMSession");
}
- LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
+ if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat))
+ {
+ LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
+ }
}
void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
@@ -2449,8 +2476,10 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
LLChat chat(message);
chat.mSourceType = CHAT_SOURCE_SYSTEM;
+
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
if(nearby_chat)
{
nearby_chat->addMessage(chat);
@@ -2638,18 +2667,15 @@ void LLIMMgr::inviteToSession(
const std::string& session_handle,
const std::string& session_uri)
{
- //ignore invites from muted residents
- if (LLMuteList::getInstance()->isMuted(caller_id))
- {
- return;
- }
-
std::string notify_box_type;
// voice invite question is different from default only for group call (EXT-7118)
std::string question_type = "VoiceInviteQuestionDefault";
BOOL ad_hoc_invite = FALSE;
BOOL voice_invite = FALSE;
+ bool is_linden = LLMuteList::getInstance()->isLinden(caller_name);
+
+
if(type == IM_SESSION_P2P_INVITE)
{
//P2P is different...they only have voice invitations
@@ -2688,7 +2714,18 @@ void LLIMMgr::inviteToSession(
payload["session_uri"] = session_uri;
payload["notify_box_type"] = notify_box_type;
payload["question_type"] = question_type;
-
+
+ //ignore invites from muted residents
+ if (LLMuteList::getInstance()->isMuted(caller_id) && !is_linden)
+ {
+ if (voice_invite && "VoiceInviteQuestionDefault" == question_type)
+ {
+ llinfos << "Rejecting voice call from initiating muted resident " << caller_name << llendl;
+ LLIncomingCallDialog::processCallResponse(1, payload);
+ }
+ return;
+ }
+
LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id);
if (channelp && channelp->callStarted())
{
@@ -3211,7 +3248,7 @@ public:
chat.mFromID = from_id;
chat.mFromName = name;
- if (!is_linden && (is_busy || is_muted))
+ if (!is_linden && is_busy)
{
return;
}
@@ -3243,6 +3280,11 @@ public:
ll_vector3_from_sd(message_params["position"]),
true);
+ if (LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat))
+ {
+ return;
+ }
+
//K now we want to accept the invitation
std::string url = gAgent.getRegion()->getCapability(
"ChatSessionRequest");
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 0ee56c8070..b1be26a169 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -491,14 +491,16 @@ class LLCallDialog : public LLDockableFloater
{
public:
LLCallDialog(const LLSD& payload);
- ~LLCallDialog();
+ virtual ~LLCallDialog();
virtual BOOL postBuild();
+ void dockToToolbarButton(const std::string& toolbarButtonName);
+
// check timer state
/*virtual*/ void draw();
/*virtual*/ void onOpen(const LLSD& key);
-
+
protected:
// lifetime timer for a notification
LLTimer mLifetimeTimer;
@@ -508,8 +510,6 @@ protected:
virtual bool lifetimeHasExpired();
virtual void onLifetimeExpired();
- virtual void getAllowedRect(LLRect& rect);
-
/**
* Sets icon depend on session.
*
@@ -521,6 +521,9 @@ protected:
void setIcon(const LLSD& session_id, const LLSD& participant_id);
LLSD mPayload;
+
+private:
+ LLDockControl::DocAt getDockControlPos(const std::string& toolbarButtonName);
};
class LLIncomingCallDialog : public LLCallDialog
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index ee076f68ea..acc139c569 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -28,6 +28,7 @@
#include "llinspectobject.h"
// Viewer
+#include "llfloatersidepanelcontainer.h"
#include "llinspect.h"
#include "llmediaentry.h"
#include "llnotificationsutil.h" // *TODO: Eliminate, add LLNotificationsUtil wrapper
@@ -45,7 +46,6 @@
#include "llmenubutton.h"
#include "llresmgr.h" // getMonetaryString
#include "llsafehandle.h"
-#include "llsidetray.h"
#include "lltextbox.h" // for description truncation
#include "lltoggleablemenu.h"
#include "lltrans.h"
@@ -640,7 +640,7 @@ void LLInspectObject::onClickMoreInfo()
{
LLSD key;
key["task"] = "task";
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("inventory", key);
closeFloater();
}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 5e2d2fa3f2..0c092e9a56 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -39,6 +39,7 @@
#include "llavataractions.h"
#include "llfloateropenobject.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llfolderview.h"
#include "llfriendcard.h"
@@ -59,7 +60,6 @@
#include "llpreviewtexture.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewerassettype.h"
#include "llviewerfoldertype.h"
@@ -1185,7 +1185,7 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
std::string buffer;
asset_id.toString(buffer);
- gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer));
+ gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(buffer));
return;
}
else if ("copy" == action)
@@ -2027,7 +2027,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
#endif
}
}
- if (move_is_into_outbox && !move_is_from_outbox)
+ else if (move_is_into_outbox && !move_is_from_outbox)
{
dropFolderToOutbox(inv_cat);
}
@@ -3544,10 +3544,12 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
// because they must contain only links to wearable items.
accept = !(move_is_into_current_outfit || move_is_into_outfit);
- if(drop)
+ if(accept && drop)
{
- copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(),
- LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
+ copy_inventory_from_notecard(mUUID, // Drop to the chosen destination folder
+ LLToolDragAndDrop::getInstance()->getObjectID(),
+ LLToolDragAndDrop::getInstance()->getSourceID(),
+ inv_item);
}
}
else if(LLToolDragAndDrop::SOURCE_LIBRARY == source)
@@ -3852,7 +3854,7 @@ void LLLandmarkBridge::performAction(LLInventoryModel* model, std::string action
key["type"] = "landmark";
key["id"] = item->getUUID();
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
}
else
@@ -4781,7 +4783,7 @@ void remove_inventory_category_from_avatar( LLInventoryCategory* category )
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit editor should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 516b47e616..d54bce4619 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -36,6 +36,7 @@
#include "llviewercontrol.h"
#include "llfolderview.h"
#include "llinventorybridge.h"
+#include "llviewerfoldertype.h"
// linden library includes
#include "lltrans.h"
@@ -117,7 +118,7 @@ bool LLInventoryFilter::checkFolder(const LLFolderViewFolder* folder)
const LLFolderViewEventListener* listener = folder->getListener();
const LLUUID folder_id = listener->getUUID();
-
+
if (mFilterOps.mFilterTypes & FILTERTYPE_CATEGORY)
{
// Can only filter categories for items in your inventory
@@ -206,6 +207,23 @@ BOOL LLInventoryFilter::checkAgainstFilterType(const LLFolderViewItem* item) con
}
}
+ ////////////////////////////////////////////////////////////////////////////////
+ // FILTERTYPE_EMPTYFOLDERS
+ // Pass if this item is a folder and is not a system folder that should be hidden
+ if (filterTypes & FILTERTYPE_EMPTYFOLDERS)
+ {
+ if (object_type == LLInventoryType::IT_CATEGORY)
+ {
+ bool is_hidden_if_empty = LLViewerFolderType::lookupIsHiddenIfEmpty(listener->getPreferredType());
+ if (is_hidden_if_empty)
+ {
+ // Force the fetching of those folders so they are hidden iff they really are empty...
+ gInventory.fetchDescendentsOf(object_id);
+ return FALSE;
+ }
+ }
+ }
+
return TRUE;
}
@@ -343,6 +361,11 @@ void LLInventoryFilter::setFilterWearableTypes(U64 types)
mFilterOps.mFilterTypes |= FILTERTYPE_WEARABLE;
}
+void LLInventoryFilter::setFilterEmptySystemFolders()
+{
+ mFilterOps.mFilterTypes |= FILTERTYPE_EMPTYFOLDERS;
+}
+
void LLInventoryFilter::setFilterUUID(const LLUUID& object_id)
{
if (mFilterOps.mFilterUUID == LLUUID::null)
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index f9460822f7..bba24ac652 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -57,7 +57,8 @@ public:
FILTERTYPE_CATEGORY = 0x1 << 1, // search by folder type
FILTERTYPE_UUID = 0x1 << 2, // find the object with UUID and any links to it
FILTERTYPE_DATE = 0x1 << 3, // search by date range
- FILTERTYPE_WEARABLE = 0x1 << 4 // search by wearable type
+ FILTERTYPE_WEARABLE = 0x1 << 4, // search by wearable type
+ FILTERTYPE_EMPTYFOLDERS = 0x1 << 5 // pass if folder is not a system folder to be hidden if empty
};
enum EFilterLink
@@ -88,6 +89,7 @@ public:
void setFilterCategoryTypes(U64 types);
void setFilterUUID(const LLUUID &object_id);
void setFilterWearableTypes(U64 types);
+ void setFilterEmptySystemFolders();
void updateFilterTypes(U64 types, U64& current_types);
void setFilterSubString(const std::string& string);
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 0af013fde5..5fb3f15cd5 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -47,6 +47,7 @@
#include "llappviewer.h"
//#include "llfirstuse.h"
#include "llfloaterinventory.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "llfolderview.h"
#include "llgesturemgr.h"
@@ -70,7 +71,6 @@
#include "llscrollbar.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llsidepanelinventory.h"
#include "lltabcontainer.h"
#include "lltooldraganddrop.h"
@@ -459,22 +459,28 @@ BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id)
void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id)
{
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", item_uuid).with("object", object_id));
+ LLFloaterSidePanelContainer::showPanel("inventory", LLSD().with("id", item_uuid).with("object", object_id));
}
void show_item_profile(const LLUUID& item_uuid)
{
LLUUID linked_uuid = gInventory.getLinkedItemID(item_uuid);
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", linked_uuid));
+ LLFloaterSidePanelContainer::showPanel("inventory", LLSD().with("id", linked_uuid));
}
void show_item_original(const LLUUID& item_uuid)
{
+ LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+ if (!floater_inventory)
+ {
+ llwarns << "Could not find My Inventory floater" << llendl;
+ return;
+ }
+
//sidetray inventory panel
- LLSidepanelInventory *sidepanel_inventory =
- dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
- bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");
+ bool reset_inventory_filter = !floater_inventory->isInVisibleChain();
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
if (!active_panel)
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index e86c427ae2..dc25689fa3 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2528,9 +2528,9 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)
{
LLPointer<LLViewerInventoryCategory> tfolder = new LLViewerInventoryCategory(gAgent.getID());
tfolder->unpackMessage(msg, _PREHASH_FolderData, i);
- //llinfos << "unpaked folder '" << tfolder->getName() << "' ("
- // << tfolder->getUUID() << ") in " << tfolder->getParentUUID()
- // << llendl;
+ llinfos << "unpacked folder '" << tfolder->getName() << "' ("
+ << tfolder->getUUID() << ") in " << tfolder->getParentUUID()
+ << llendl;
if(tfolder->getUUID().notNull())
{
folders.push_back(tfolder);
@@ -2570,8 +2570,8 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)
{
LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
titem->unpackMessage(msg, _PREHASH_ItemData, i);
- //llinfos << "unpaked item '" << titem->getName() << "' in "
- // << titem->getParentUUID() << llendl;
+ llinfos << "unpaked item '" << titem->getName() << "' in "
+ << titem->getParentUUID() << llendl;
U32 callback_id;
msg->getU32Fast(_PREHASH_ItemData, _PREHASH_CallbackID, callback_id);
if(titem->getUUID().notNull())
@@ -2879,40 +2879,62 @@ BOOL LLInventoryModel::getIsFirstTimeInViewer2()
return sFirstTimeInViewer2;
}
-static LLInventoryModel::item_array_t::iterator find_item_iter_by_uuid(LLInventoryModel::item_array_t& items, const LLUUID& id)
+LLInventoryModel::item_array_t::iterator LLInventoryModel::findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
{
- LLInventoryModel::item_array_t::iterator result = items.end();
+ LLInventoryModel::item_array_t::iterator curr_item = items.begin();
- for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+ while (curr_item != items.end())
{
- if ((*i)->getUUID() == id)
+ if ((*curr_item)->getUUID() == id)
{
- result = i;
break;
}
+ ++curr_item;
}
- return result;
+ return curr_item;
}
// static
// * @param[in, out] items - vector with items to be updated. It should be sorted in a right way
// * before calling this method.
// * @param src_item_id - LLUUID of inventory item to be moved in new position
-// * @param dest_item_id - LLUUID of inventory item before which source item should be placed.
-void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id)
+// * @param dest_item_id - LLUUID of inventory item before (or after) which source item should
+// * be placed.
+// * @param insert_before - bool indicating if src_item_id should be placed before or after
+// * dest_item_id. Default is true.
+void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id, bool insert_before)
{
- LLInventoryModel::item_array_t::iterator it_src = find_item_iter_by_uuid(items, src_item_id);
- LLInventoryModel::item_array_t::iterator it_dest = find_item_iter_by_uuid(items, dest_item_id);
+ LLInventoryModel::item_array_t::iterator it_src = findItemIterByUUID(items, src_item_id);
+ LLInventoryModel::item_array_t::iterator it_dest = findItemIterByUUID(items, dest_item_id);
- if (it_src == items.end() || it_dest == items.end()) return;
+ // If one of the passed UUID is not in the item list, bail out
+ if ((it_src == items.end()) || (it_dest == items.end()))
+ return;
+ // Erase the source element from the list, keep a copy before erasing.
LLViewerInventoryItem* src_item = *it_src;
items.erase(it_src);
- // target iterator can not be valid because the container was changed, so update it.
- it_dest = find_item_iter_by_uuid(items, dest_item_id);
- items.insert(it_dest, src_item);
+ // Note: Target iterator is not valid anymore because the container was changed, so update it.
+ it_dest = findItemIterByUUID(items, dest_item_id);
+
+ // Go to the next element if one wishes to insert after the dest element
+ if (!insert_before)
+ {
+ ++it_dest;
+ }
+
+ // Reinsert the source item in the right place
+ if (it_dest != items.end())
+ {
+ items.insert(it_dest, src_item);
+ }
+ else
+ {
+ // Append to the list if it_dest reached the end
+ items.push_back(src_item);
+ }
}
//* @param[in] items vector of items in order to be saved.
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index e0e81f1006..340c1b0c22 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -332,11 +332,16 @@ protected:
//--------------------------------------------------------------------
public:
// Changes items order by insertion of the item identified by src_item_id
- // before the item identified by dest_item_id. Both items must exist in items array.
- // Sorting is stored after method is finished. Only src_item_id is moved before dest_item_id.
+ // before (or after) the item identified by dest_item_id. Both items must exist in items array.
+ // Sorting is stored after method is finished. Only src_item_id is moved before (or after) dest_item_id.
+ // The parameter "insert_before" controls on which side of dest_item_id src_item_id gets rensinserted.
static void updateItemsOrder(LLInventoryModel::item_array_t& items,
const LLUUID& src_item_id,
- const LLUUID& dest_item_id);
+ const LLUUID& dest_item_id,
+ bool insert_before = true);
+ // Gets an iterator on an item vector knowing only the item UUID.
+ // Returns end() of the vector if not found.
+ static LLInventoryModel::item_array_t::iterator findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
// Saves current order of the passed items using inventory item sort field.
// Resets 'items' sort fields and saves them on server.
@@ -406,7 +411,7 @@ public:
// Return (yes/no/maybe) child status of category children.
EHasChildren categoryHasChildren(const LLUUID& cat_id) const;
- // Returns true iff category version is known and theoretical
+ // Returns true if category version is known and theoretical
// descendents == actual descendents.
bool isCategoryComplete(const LLUUID& cat_id) const;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 615d3aefde..d06374d232 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -35,6 +35,7 @@
#include "llavataractions.h"
#include "llfloaterinventory.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llimfloater.h"
#include "llimview.h"
@@ -42,7 +43,6 @@
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "llviewerattachmenu.h"
#include "llviewerfoldertype.h"
#include "llvoavatarself.h"
@@ -240,6 +240,12 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)
getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX));
getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX));
+ // set the filter for the empty folder if the debug setting is on
+ if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders"))
+ {
+ getFilter()->setFilterEmptySystemFolders();
+ }
+
// Initialize base class params.
LLPanel::initFromParams(params);
}
@@ -697,7 +703,10 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id)
if (new_listener)
{
LLFolderViewFolder* folderp = createFolderViewFolder(new_listener);
- folderp->setItemSortOrder(mFolderRoot->getSortOrder());
+ if (folderp)
+ {
+ folderp->setItemSortOrder(mFolderRoot->getSortOrder());
+ }
itemp = folderp;
}
}
@@ -1077,10 +1086,9 @@ void LLInventoryPanel::dumpSelectionInformation(void* user_data)
BOOL is_inventorysp_active()
{
- if (!LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")) return FALSE;
- LLSidepanelInventory *inventorySP = dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- if (!inventorySP) return FALSE;
- return inventorySP->isMainInventoryPanelActive();
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (!sidepanel_inventory || !sidepanel_inventory->isInVisibleChain()) return FALSE;
+ return sidepanel_inventory->isMainInventoryPanelActive();
}
// static
@@ -1090,34 +1098,24 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
LLInventoryPanel* res = NULL;
LLFloater* active_inv_floaterp = NULL;
- // A. If the inventory side panel is open, use that preferably.
- if (is_inventorysp_active())
+ LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+ if (!floater_inventory)
{
- LLSidepanelInventory *inventorySP = dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- if (inventorySP)
- {
- return inventorySP->getActivePanel();
- }
+ llwarns << "Could not find My Inventory floater" << llendl;
+ return FALSE;
}
- // or if it is in floater undocked from sidetray get it and remember z order of floater to later compare it
- // with other inventory floaters order.
- else if (!LLSideTray::getInstance()->isTabAttached("sidebar_inventory"))
+
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+
+ // A. If the inventory side panel floater is open, use that preferably.
+ if (is_inventorysp_active())
{
- LLSidepanelInventory *inventorySP =
- dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- LLFloater* inv_floater = LLFloaterReg::findInstance("side_bar_tab", LLSD("sidebar_inventory"));
- if (inventorySP && inv_floater)
- {
- res = inventorySP->getActivePanel();
- z_min = gFloaterView->getZOrder(inv_floater);
- active_inv_floaterp = inv_floater;
- }
- else
- {
- llwarns << "Inventory tab is detached from sidetray, but either panel or floater were not found!" << llendl;
- }
+ // Get the floater's z order to compare it to other inventory floaters' order later.
+ res = sidepanel_inventory->getActivePanel();
+ z_min = gFloaterView->getZOrder(floater_inventory);
+ active_inv_floaterp = floater_inventory;
}
-
+
// B. Iterate through the inventory floaters and return whichever is on top.
LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
@@ -1139,24 +1137,78 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
{
// Make sure the floater is not minimized (STORM-438).
if (active_inv_floaterp && active_inv_floaterp->isMinimized())
+ {
active_inv_floaterp->setMinimized(FALSE);
+ }
+ }
+ else if (auto_open)
+ {
+ floater_inventory->openFloater();
- return res;
+ res = sidepanel_inventory->getActivePanel();
}
-
- // C. If no panels are open and we don't want to force open a panel, then just abort out.
- if (!auto_open) return NULL;
-
- // D. Open the inventory side panel and use that.
- LLSD key;
- LLSidepanelInventory *sidepanel_inventory =
- dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->showPanel("sidepanel_inventory", key));
- if (sidepanel_inventory)
+
+ return res;
+}
+
+//static
+void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id)
+{
+ LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
+
+ if (active_panel)
{
- return sidepanel_inventory->getActivePanel();
- }
+ LL_DEBUGS("Messaging") << "Highlighting" << obj_id << LL_ENDL;
+
+ LLViewerInventoryItem * item = gInventory.getItem(obj_id);
+ LLViewerInventoryCategory * cat = gInventory.getCategory(obj_id);
+
+ bool in_inbox = false;
+ bool in_outbox = false;
+
+ LLViewerInventoryCategory * parent_cat = NULL;
+
+ if (item)
+ {
+ parent_cat = gInventory.getCategory(item->getParentUUID());
+ }
+ else if (cat)
+ {
+ parent_cat = gInventory.getCategory(cat->getParentUUID());
+ }
+
+ if (parent_cat)
+ {
+ in_inbox = (LLFolderType::FT_INBOX == parent_cat->getPreferredType());
+ in_outbox = (LLFolderType::FT_OUTBOX == parent_cat->getPreferredType());
+ }
+
+ if (in_inbox || in_outbox)
+ {
+ LLSidepanelInventory * sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ LLInventoryPanel * inventory_panel = NULL;
+
+ if (in_inbox)
+ {
+ sidepanel_inventory->openInbox();
+ inventory_panel = sidepanel_inventory->getInboxPanel();
+ }
+ else
+ {
+ sidepanel_inventory->openOutbox();
+ inventory_panel = sidepanel_inventory->getOutboxPanel();
+ }
- return NULL;
+ if (inventory_panel)
+ {
+ inventory_panel->setSelection(obj_id, TAKE_FOCUS_YES);
+ }
+ }
+ else
+ {
+ active_panel->setSelection(obj_id, TAKE_FOCUS_YES);
+ }
+ }
}
void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type)
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 8635ebc5c8..2a24327115 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -175,6 +175,8 @@ public:
// Find whichever inventory panel is active / on top.
// "Auto_open" determines if we open an inventory panel if none are open.
static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE);
+
+ static void openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id);
protected:
void openStartFolderOrMyInventory(); // open the first level of inventory
diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp
index f2aec20611..6625a194fb 100644
--- a/indra/newview/lllandmarkactions.cpp
+++ b/indra/newview/lllandmarkactions.cpp
@@ -413,7 +413,7 @@ void LLLandmarkActions::copySLURLtoClipboard(const LLUUID& landmarkInventoryItem
void copy_slurl_to_clipboard_callback(const std::string& slurl)
{
- gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(slurl));
+ gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(slurl));
LLSD args;
args["SLURL"] = slurl;
LLNotificationsUtil::add("CopySLURL", args);
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 1c8f6b6c98..025181ead5 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -44,11 +44,11 @@
// newview includes
#include "llagent.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryobserver.h"
#include "lllandmarkactions.h"
#include "lllandmarklist.h"
#include "llteleporthistory.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h" // getHealth()
#include "lltrans.h"
@@ -600,7 +600,7 @@ void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent
void LLLocationInputCtrl::onInfoButtonClicked()
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
}
void LLLocationInputCtrl::onForSaleButtonClicked()
@@ -618,11 +618,11 @@ void LLLocationInputCtrl::onAddLandmarkButtonClicked()
key["type"] = "landmark";
key["id"] = landmark->getUUID();
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
}
@@ -1087,12 +1087,12 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
if(!landmark)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+
}
}
else if (item == "cut")
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index f00d6087f9..419641d23c 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -561,15 +561,7 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia
//send this info to login.cgi for stats gathering
//since viewerstats isn't reliable enough
- if (gSavedSettings.getString("SessionSettingsFile").empty())
- {
- requested_options.append("advanced-mode");
- }
- else
- {
- requested_options.append("basic-mode");
- //requested_options.append("inventory-basic");
- }
+ requested_options.append("advanced-mode");
#endif
requested_options.append("max-agent-groups");
diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp
index 85e0043651..6e0f360cbc 100644
--- a/indra/newview/llmanip.cpp
+++ b/indra/newview/llmanip.cpp
@@ -372,14 +372,14 @@ void LLManip::renderGuidelines(BOOL draw_x, BOOL draw_y, BOOL draw_z)
//LLVector3 center_agent = LLSelectMgr::getInstance()->getBBoxOfSelection().getCenterAgent();
LLVector3 center_agent = getPivotPoint();
- glPushMatrix();
+ gGL.pushMatrix();
{
- glTranslatef(center_agent.mV[VX], center_agent.mV[VY], center_agent.mV[VZ]);
+ gGL.translatef(center_agent.mV[VX], center_agent.mV[VY], center_agent.mV[VZ]);
F32 angle_radians, x, y, z;
grid_rot.getAngleAxis(&angle_radians, &x, &y, &z);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
F32 region_size = LLWorld::getInstance()->getRegionWidthInMeters();
@@ -416,7 +416,7 @@ void LLManip::renderGuidelines(BOOL draw_x, BOOL draw_y, BOOL draw_z)
}
LLUI::setLineWidth(1.0f);
}
- glPopMatrix();
+ gGL.popMatrix();
}
void LLManip::renderXYZ(const LLVector3 &vec)
@@ -466,11 +466,11 @@ void LLManip::renderXYZ(const LLVector3 &vec)
feedback_string = llformat("X: %.3f", vec.mV[VX]);
hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -102.f, (F32)vertical_offset, LLColor4(1.f, 0.5f, 0.5f, 1.f), FALSE);
- glColor3f(0.5f, 1.f, 0.5f);
+ gGL.diffuseColor3f(0.5f, 1.f, 0.5f);
feedback_string = llformat("Y: %.3f", vec.mV[VY]);
hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -27.f, (F32)vertical_offset, LLColor4(0.5f, 1.f, 0.5f, 1.f), FALSE);
- glColor3f(0.5f, 0.5f, 1.f);
+ gGL.diffuseColor3f(0.5f, 0.5f, 1.f);
feedback_string = llformat("Z: %.3f", vec.mV[VZ]);
hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 48.f, (F32)vertical_offset, LLColor4(0.5f, 0.5f, 1.f, 1.f), FALSE);
}
@@ -481,8 +481,8 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
const LLFontGL* big_fontp = LLFontGL::getFontSansSerif();
BOOL hud_selection = mObjectSelection->getSelectType() == SELECT_TYPE_HUD;
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
LLVector3 render_pos = pos;
if (hud_selection)
{
@@ -490,7 +490,7 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
F32 inv_zoom_amt = 1.f / zoom_amt;
// scale text back up to counter-act zoom level
render_pos = pos * zoom_amt;
- glScalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
+ gGL.scalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
}
// render shadow first
@@ -501,7 +501,7 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
gViewerWindow->setup3DViewport();
hud_render_utf8text(text, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD);
- glPopMatrix();
+ gGL.popMatrix();
}
void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string& suffix, const LLColor4 &color)
@@ -539,8 +539,8 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
}
BOOL hud_selection = mObjectSelection->getSelectType() == SELECT_TYPE_HUD;
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
LLVector3 render_pos = pos;
if (hud_selection)
{
@@ -548,7 +548,7 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
F32 inv_zoom_amt = 1.f / zoom_amt;
// scale text back up to counter-act zoom level
render_pos = pos * zoom_amt;
- glScalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
+ gGL.scalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
}
LLColor4 shadow_color = LLColor4::black;
@@ -573,7 +573,7 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
gViewerWindow->setup3DViewport();
hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection);
}
- glPopMatrix();
+ gGL.popMatrix();
}
LLColor4 LLManip::setupSnapGuideRenderPass(S32 pass)
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 6ee095475f..a8da94f75e 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -53,6 +53,7 @@
#include "llviewercamera.h"
#include "llviewerobject.h"
#include "llviewerobject.h"
+#include "llviewershadermgr.h"
#include "llviewerwindow.h"
#include "llworld.h"
#include "pipeline.h"
@@ -113,7 +114,7 @@ void LLManipRotate::handleSelect()
void LLManipRotate::render()
{
LLGLSUIDefault gls_ui;
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+ gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep);
LLGLDepthTest gls_depth(GL_TRUE);
LLGLEnable gl_blend(GL_BLEND);
LLGLEnable gls_alpha_test(GL_ALPHA_TEST);
@@ -130,12 +131,12 @@ void LLManipRotate::render()
return;
}
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
{
F32 zoom = gAgentCamera.mHUDCurZoom;
- glScalef(zoom, zoom, zoom);
+ gGL.scalef(zoom, zoom, zoom);
}
@@ -145,8 +146,9 @@ void LLManipRotate::render()
LLColor4 highlight_inside( 0.7f, 0.7f, 0.f, 0.5f );
F32 width_meters = WIDTH_PIXELS * mRadiusMeters / RADIUS_PIXELS;
- glPushMatrix();
+ gGL.pushMatrix();
{
+
// are we in the middle of a constrained drag?
if (mManipPart >= LL_ROT_X && mManipPart <= LL_ROT_Z)
{
@@ -154,13 +156,18 @@ void LLManipRotate::render()
}
else
{
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gDebugProgram.bind();
+ }
+
LLGLEnable cull_face(GL_CULL_FACE);
LLGLDepthTest gls_depth(GL_FALSE);
- glPushMatrix();
+ gGL.pushMatrix();
{
// Draw "sphere" (intersection of sphere with tangent cone that has apex at camera)
- glTranslatef( mCenterToProfilePlane.mV[VX], mCenterToProfilePlane.mV[VY], mCenterToProfilePlane.mV[VZ] );
- glTranslatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
+ gGL.translatef( mCenterToProfilePlane.mV[VX], mCenterToProfilePlane.mV[VY], mCenterToProfilePlane.mV[VZ] );
+ gGL.translatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
// Inverse change of basis vectors
LLVector3 forward = mCenterToCamNorm;
@@ -177,35 +184,41 @@ void LLManipRotate::render()
LLMatrix4 mat;
mat.initRows(a, b, c, LLVector4(0.f, 0.f, 0.f, 1.f));
- glMultMatrixf( &mat.mMatrix[0][0] );
+ gGL.multMatrix( &mat.mMatrix[0][0] );
- glRotatef( -90, 0.f, 1.f, 0.f);
+ gGL.rotatef( -90, 0.f, 1.f, 0.f);
LLColor4 color;
if (mManipPart == LL_ROT_ROLL || mHighlightedPart == LL_ROT_ROLL)
{
color.setVec(0.8f, 0.8f, 0.8f, 0.8f);
- glScalef(mManipulatorScales.mV[VW], mManipulatorScales.mV[VW], mManipulatorScales.mV[VW]);
+ gGL.scalef(mManipulatorScales.mV[VW], mManipulatorScales.mV[VW], mManipulatorScales.mV[VW]);
}
else
{
color.setVec( 0.7f, 0.7f, 0.7f, 0.6f );
}
+ gGL.diffuseColor4fv(color.mV);
gl_washer_2d(mRadiusMeters + width_meters, mRadiusMeters, CIRCLE_STEPS, color, color);
if (mManipPart == LL_NO_PART)
{
gGL.color4f( 0.7f, 0.7f, 0.7f, 0.3f );
+ gGL.diffuseColor4f(0.7f, 0.7f, 0.7f, 0.3f);
gl_circle_2d( 0, 0, mRadiusMeters, CIRCLE_STEPS, TRUE );
}
- GLdouble plane_eqn[] = { 0, 0, 1, 0 };
- glClipPlane( GL_CLIP_PLANE0, plane_eqn );
+ gGL.flush();
}
- glPopMatrix();
- }
+ gGL.popMatrix();
- glTranslatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+ }
+
+ gGL.translatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
LLQuaternion rot;
F32 angle_radians, x, y, z;
@@ -217,41 +230,46 @@ void LLManipRotate::render()
LLSelectMgr::getInstance()->getGrid(grid_origin, grid_rotation, grid_scale);
grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gDebugProgram.bind();
+ }
+
if (mManipPart == LL_ROT_Z)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, SELECTED_MANIPULATOR_SCALE, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
- glPushMatrix();
+ gGL.pushMatrix();
{
// selected part
- glScalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
+ gGL.scalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
renderActiveRing( mRadiusMeters, width_meters, LLColor4( 0.f, 0.f, 1.f, 1.f) , LLColor4( 0.f, 0.f, 1.f, 0.3f ));
}
- glPopMatrix();
+ gGL.popMatrix();
}
else if (mManipPart == LL_ROT_Y)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, SELECTED_MANIPULATOR_SCALE, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
- glPushMatrix();
+ gGL.pushMatrix();
{
- glRotatef( 90.f, 1.f, 0.f, 0.f );
- glScalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
+ gGL.rotatef( 90.f, 1.f, 0.f, 0.f );
+ gGL.scalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
renderActiveRing( mRadiusMeters, width_meters, LLColor4( 0.f, 1.f, 0.f, 1.f), LLColor4( 0.f, 1.f, 0.f, 0.3f));
}
- glPopMatrix();
+ gGL.popMatrix();
}
else if (mManipPart == LL_ROT_X)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(SELECTED_MANIPULATOR_SCALE, 1.f, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
- glPushMatrix();
+ gGL.pushMatrix();
{
- glRotatef( 90.f, 0.f, 1.f, 0.f );
- glScalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
+ gGL.rotatef( 90.f, 0.f, 1.f, 0.f );
+ gGL.scalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
renderActiveRing( mRadiusMeters, width_meters, LLColor4( 1.f, 0.f, 0.f, 1.f), LLColor4( 1.f, 0.f, 0.f, 0.3f));
}
- glPopMatrix();
+ gGL.popMatrix();
}
else if (mManipPart == LL_ROT_ROLL)
{
@@ -271,12 +289,13 @@ void LLManipRotate::render()
// First pass: centers. Second pass: sides.
for( S32 i=0; i<2; i++ )
{
- glPushMatrix();
+
+ gGL.pushMatrix();
{
if (mHighlightedPart == LL_ROT_Z)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, SELECTED_MANIPULATOR_SCALE, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
- glScalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
+ gGL.scalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
// hovering over part
gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 0.f, 1.f, 1.f ), LLColor4( 0.f, 0.f, 1.f, 0.5f ), CIRCLE_STEPS, i);
}
@@ -286,15 +305,15 @@ void LLManipRotate::render()
gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 0.f, 0.8f, 0.8f ), LLColor4( 0.f, 0.f, 0.8f, 0.4f ), CIRCLE_STEPS, i);
}
}
- glPopMatrix();
-
- glPushMatrix();
+ gGL.popMatrix();
+
+ gGL.pushMatrix();
{
- glRotatef( 90.f, 1.f, 0.f, 0.f );
+ gGL.rotatef( 90.f, 1.f, 0.f, 0.f );
if (mHighlightedPart == LL_ROT_Y)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, SELECTED_MANIPULATOR_SCALE, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
- glScalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
+ gGL.scalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
// hovering over part
gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 1.f, 0.f, 1.f ), LLColor4( 0.f, 1.f, 0.f, 0.5f ), CIRCLE_STEPS, i);
}
@@ -304,15 +323,15 @@ void LLManipRotate::render()
gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 0.8f, 0.f, 0.8f ), LLColor4( 0.f, 0.8f, 0.f, 0.4f ), CIRCLE_STEPS, i);
}
}
- glPopMatrix();
+ gGL.popMatrix();
- glPushMatrix();
+ gGL.pushMatrix();
{
- glRotatef( 90.f, 0.f, 1.f, 0.f );
+ gGL.rotatef( 90.f, 0.f, 1.f, 0.f );
if (mHighlightedPart == LL_ROT_X)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(SELECTED_MANIPULATOR_SCALE, 1.f, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
- glScalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
+ gGL.scalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
// hovering over part
gl_ring( mRadiusMeters, width_meters, LLColor4( 1.f, 0.f, 0.f, 1.f ), LLColor4( 1.f, 0.f, 0.f, 0.5f ), CIRCLE_STEPS, i);
@@ -323,17 +342,26 @@ void LLManipRotate::render()
gl_ring( mRadiusMeters, width_meters, LLColor4( 0.8f, 0.f, 0.f, 0.8f ), LLColor4( 0.8f, 0.f, 0.f, 0.4f ), CIRCLE_STEPS, i);
}
}
- glPopMatrix();
+ gGL.popMatrix();
if (mHighlightedPart == LL_ROT_ROLL)
{
mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, 1.f, SELECTED_MANIPULATOR_SCALE), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
}
+
}
+
}
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
}
- glPopMatrix();
- glPopMatrix();
+ gGL.popMatrix();
+ gGL.popMatrix();
+
LLVector3 euler_angles;
LLQuaternion object_rot = first_object->getRotationEdit();
@@ -796,14 +824,14 @@ void LLManipRotate::renderSnapGuides()
for (S32 pass = 0; pass < 3; pass++)
{
// render snap guide ring
- glPushMatrix();
+ gGL.pushMatrix();
LLQuaternion snap_guide_rot;
F32 angle_radians, x, y, z;
snap_guide_rot.shortestArc(LLVector3::z_axis, getConstraintAxis());
snap_guide_rot.getAngleAxis(&angle_radians, &x, &y, &z);
- glTranslatef(center.mV[VX], center.mV[VY], center.mV[VZ]);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.translatef(center.mV[VX], center.mV[VY], center.mV[VZ]);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
LLColor4 line_color = setupSnapGuideRenderPass(pass);
@@ -826,7 +854,7 @@ void LLManipRotate::renderSnapGuides()
{
gl_circle_2d(0.f, 0.f, mRadiusMeters * SNAP_GUIDE_INNER_RADIUS, CIRCLE_STEPS, FALSE);
}
- glPopMatrix();
+ gGL.popMatrix();
for (S32 i = 0; i < 64; i++)
{
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 4eb94dfb8e..f6df4cdfbf 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -217,12 +217,12 @@ void LLManipScale::render()
if( canAffectSelection() )
{
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
{
F32 zoom = gAgentCamera.mHUDCurZoom;
- glScalef(zoom, zoom, zoom);
+ gGL.scalef(zoom, zoom, zoom);
}
////////////////////////////////////////////////////////////////////////
@@ -274,14 +274,14 @@ void LLManipScale::render()
LLVector3 pos_agent = bbox.getPositionAgent();
LLQuaternion rot = bbox.getRotation();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
{
- glTranslatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ]);
+ gGL.translatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ]);
F32 angle_radians, x, y, z;
rot.getAngleAxis(&angle_radians, &x, &y, &z);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
{
@@ -303,13 +303,13 @@ void LLManipScale::render()
glPolygonOffset( 0.f, 0.f);
}
}
- glPopMatrix();
+ gGL.popMatrix();
if (mManipPart != LL_NO_PART)
{
renderSnapGuides(bbox);
}
- glPopMatrix();
+ gGL.popMatrix();
renderXYZ(bbox.getExtentLocal());
}
@@ -719,17 +719,17 @@ void LLManipScale::renderEdges( const LLBBox& bbox )
LLVector3 direction = edgeToUnitVector( part );
LLVector3 center_to_edge = unitVectorToLocalBBoxExtent( direction, bbox );
- glPushMatrix();
+ gGL.pushMatrix();
{
- glTranslatef( center_to_edge.mV[0], center_to_edge.mV[1], center_to_edge.mV[2] );
+ gGL.translatef( center_to_edge.mV[0], center_to_edge.mV[1], center_to_edge.mV[2] );
conditionalHighlight( part );
- glScalef(
+ gGL.scalef(
direction.mV[0] ? edge_width : extent.mV[VX],
direction.mV[1] ? edge_width : extent.mV[VY],
direction.mV[2] ? edge_width : extent.mV[VZ] );
gBox.render();
}
- glPopMatrix();
+ gGL.popMatrix();
}
}
@@ -766,13 +766,13 @@ void LLManipScale::renderBoxHandle( F32 x, F32 y, F32 z )
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLGLDepthTest gls_depth(GL_FALSE);
- glPushMatrix();
+ gGL.pushMatrix();
{
- glTranslatef( x, y, z );
- glScalef( mScaledBoxHandleSize, mScaledBoxHandleSize, mScaledBoxHandleSize );
+ gGL.translatef( x, y, z );
+ gGL.scalef( mScaledBoxHandleSize, mScaledBoxHandleSize, mScaledBoxHandleSize );
gBox.render();
}
- glPopMatrix();
+ gGL.popMatrix();
}
@@ -788,16 +788,16 @@ void LLManipScale::renderAxisHandle( const LLVector3& start, const LLVector3& en
LLVector3 delta = end - offset_start;
LLVector3 pos = offset_start + 0.5f * delta;
- glPushMatrix();
+ gGL.pushMatrix();
{
- glTranslatef( pos.mV[VX], pos.mV[VY], pos.mV[VZ] );
- glScalef(
+ gGL.translatef( pos.mV[VX], pos.mV[VY], pos.mV[VZ] );
+ gGL.scalef(
mBoxHandleSize + llabs(delta.mV[VX]),
mBoxHandleSize + llabs(delta.mV[VY]),
mBoxHandleSize + llabs(delta.mV[VZ]));
gBox.render();
}
- glPopMatrix();
+ gGL.popMatrix();
}
else
{
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index f871df0c36..3a88fbd96d 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -1066,12 +1066,12 @@ BOOL LLManipTranslate::handleMouseUp(S32 x, S32 y, MASK mask)
void LLManipTranslate::render()
{
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
{
F32 zoom = gAgentCamera.mHUDCurZoom;
- glScalef(zoom, zoom, zoom);
+ gGL.scalef(zoom, zoom, zoom);
}
{
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
@@ -1515,11 +1515,12 @@ void LLManipTranslate::renderSnapGuides()
F32 x,y,z,angle_radians;
grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
gGL.translatef(selection_center.mV[VX], selection_center.mV[VY], selection_center.mV[VZ]);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
F32 sz = mGridSizeMeters;
F32 tiles = sz;
- glMatrixMode(GL_TEXTURE);
+
+ gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.pushMatrix();
usc = 1.0f/usc;
vsc = 1.0f/vsc;
@@ -1533,7 +1534,7 @@ void LLManipTranslate::renderSnapGuides()
vsc *= 0.5f;
}
- glScalef(usc, vsc, 1.0f);
+ gGL.scalef(usc, vsc, 1.0f);
gGL.translatef(u, v, 0);
float a = line_alpha;
@@ -1566,7 +1567,7 @@ void LLManipTranslate::renderSnapGuides()
renderGrid(u,v,tiles,1,1,1,a);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
}
@@ -1665,7 +1666,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
glStencilFunc(GL_ALWAYS, 0, stencil_mask);
gGL.setColorMask(false, false);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glColor4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
//setup clip plane
normal = normal * grid_rotation;
@@ -1723,7 +1724,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
F32 x,y,z,angle_radians;
grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
gGL.translatef(selection_center.mV[VX], selection_center.mV[VY], selection_center.mV[VZ]);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
F32 sz = mGridSizeMeters;
F32 tiles = sz;
@@ -1852,7 +1853,7 @@ void LLManipTranslate::renderTranslationHandles()
mGridSizeMeters = gSavedSettings.getF32("GridDrawSize");
mConeSize = mArrowLengthMeters / 4.f;
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
{
gGL.translatef(selection_center.mV[VX], selection_center.mV[VY], selection_center.mV[VZ]);
@@ -1860,7 +1861,7 @@ void LLManipTranslate::renderTranslationHandles()
F32 angle_radians, x, y, z;
grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
- glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+ gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
LLQuaternion invRotation = grid_rotation;
invRotation.conjQuat();
@@ -1908,9 +1909,9 @@ void LLManipTranslate::renderTranslationHandles()
{
// render YZ plane manipulator
gGL.pushMatrix();
- glScalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
+ gGL.scalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
gGL.translatef(0.f, mPlaneManipOffsetMeters, mPlaneManipOffsetMeters);
- glScalef(mPlaneScales.mV[VX], mPlaneScales.mV[VX], mPlaneScales.mV[VX]);
+ gGL.scalef(mPlaneScales.mV[VX], mPlaneScales.mV[VX], mPlaneScales.mV[VX]);
if (mHighlightedPart == LL_YZ_PLANE)
{
color1.setVec(0.f, 1.f, 0.f, 1.f);
@@ -1962,9 +1963,9 @@ void LLManipTranslate::renderTranslationHandles()
{
// render XZ plane manipulator
gGL.pushMatrix();
- glScalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
+ gGL.scalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
gGL.translatef(mPlaneManipOffsetMeters, 0.f, mPlaneManipOffsetMeters);
- glScalef(mPlaneScales.mV[VY], mPlaneScales.mV[VY], mPlaneScales.mV[VY]);
+ gGL.scalef(mPlaneScales.mV[VY], mPlaneScales.mV[VY], mPlaneScales.mV[VY]);
if (mHighlightedPart == LL_XZ_PLANE)
{
color1.setVec(0.f, 0.f, 1.f, 1.f);
@@ -2018,7 +2019,7 @@ void LLManipTranslate::renderTranslationHandles()
{
// render XY plane manipulator
gGL.pushMatrix();
- glScalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
+ gGL.scalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
/* Y
^
@@ -2043,7 +2044,7 @@ void LLManipTranslate::renderTranslationHandles()
v2 = LLVector3(mPlaneManipOffsetMeters * ( PLANE_TICK_SIZE * 0.25f), mPlaneManipOffsetMeters * ( PLANE_TICK_SIZE * 0.25f), 0.f);
v3 = LLVector3(mPlaneManipOffsetMeters * (-PLANE_TICK_SIZE * 0.75f), mPlaneManipOffsetMeters * ( PLANE_TICK_SIZE * 0.25f), 0.f);
#endif
- glScalef(mPlaneScales.mV[VZ], mPlaneScales.mV[VZ], mPlaneScales.mV[VZ]);
+ gGL.scalef(mPlaneScales.mV[VZ], mPlaneScales.mV[VZ], mPlaneScales.mV[VZ]);
if (mHighlightedPart == LL_XY_PLANE)
{
color1.setVec(1.f, 0.f, 0.f, 1.f);
@@ -2215,7 +2216,7 @@ void LLManipTranslate::renderArrow(S32 which_arrow, S32 selected_arrow, F32 box_
}
gGL.translatef(vec.mV[0], vec.mV[1], vec.mV[2]);
- glScalef(handle_size, handle_size, handle_size);
+ gGL.scalef(handle_size, handle_size, handle_size);
F32 rot = 0.0f;
LLVector3 axis;
@@ -2239,11 +2240,11 @@ void LLManipTranslate::renderArrow(S32 which_arrow, S32 selected_arrow, F32 box_
break;
}
- glColor4fv(color.mV);
- glRotatef(rot, axis.mV[0], axis.mV[1], axis.mV[2]);
- glScalef(mArrowScales.mV[index], mArrowScales.mV[index], mArrowScales.mV[index] * 1.5f);
+ gGL.diffuseColor4fv(color.mV);
+ gGL.rotatef(rot, axis.mV[0], axis.mV[1], axis.mV[2]);
+ gGL.scalef(mArrowScales.mV[index], mArrowScales.mV[index], mArrowScales.mV[index] * 1.5f);
- gCone.render(CONE_LOD_HIGHEST);
+ gCone.render();
gGL.popMatrix();
}
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 0bdeb114f5..74fa5d350a 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -57,7 +57,6 @@
#include "llcheckboxctrl.h"
#include "llnotifications.h"
#include "lllineeditor.h"
-#include "llfloatermediabrowser.h"
#include "llfloaterwebcontent.h"
#include "llwindowshade.h"
@@ -68,7 +67,6 @@ static LLDefaultChildRegistry::Register<LLMediaCtrl> r("web_browser");
LLMediaCtrl::Params::Params()
: start_url("start_url"),
border_visible("border_visible", true),
- ignore_ui_scale("ignore_ui_scale", true),
decouple_texture_size("decouple_texture_size", false),
texture_width("texture_width", 1024),
texture_height("texture_height", 1024),
@@ -89,7 +87,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
mFrequentUpdates( true ),
mForceUpdate( false ),
mHomePageUrl( "" ),
- mIgnoreUIScale( true ),
mAlwaysRefresh( false ),
mMediaSource( 0 ),
mTakeFocusOnClick( p.focus_on_click ),
@@ -112,8 +109,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
setCaretColor( (unsigned int)color.mV[0], (unsigned int)color.mV[1], (unsigned int)color.mV[2] );
}
- setIgnoreUIScale(p.ignore_ui_scale);
-
setHomePageUrl(p.start_url, p.initial_mime_type);
setBorderVisible(p.border_visible);
@@ -124,10 +119,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
if(!getDecoupleTextureSize())
{
- S32 screen_width = mIgnoreUIScale ?
- llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]) : getRect().getWidth();
- S32 screen_height = mIgnoreUIScale ?
- llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]) : getRect().getHeight();
+ S32 screen_width = llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]);
+ S32 screen_height = llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]);
setTextureSize(screen_width, screen_height);
}
@@ -471,8 +464,8 @@ void LLMediaCtrl::reshape( S32 width, S32 height, BOOL called_from_parent )
{
if(!getDecoupleTextureSize())
{
- S32 screen_width = mIgnoreUIScale ? llround((F32)width * LLUI::sGLScaleFactor.mV[VX]) : width;
- S32 screen_height = mIgnoreUIScale ? llround((F32)height * LLUI::sGLScaleFactor.mV[VY]) : height;
+ S32 screen_width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
+ S32 screen_height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
// when floater is minimized, these sizes are negative
if ( screen_height > 0 && screen_width > 0 )
@@ -689,6 +682,8 @@ bool LLMediaCtrl::ensureMediaSourceExists()
mMediaSource->addObserver( this );
mMediaSource->setBackgroundColor( getBackgroundColor() );
mMediaSource->setTrustedBrowser(mTrusted);
+ mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+
if(mClearCache)
{
mMediaSource->clearCache();
@@ -770,15 +765,7 @@ void LLMediaCtrl::draw()
{
gGL.pushUIMatrix();
{
- if (mIgnoreUIScale)
- {
- gGL.loadUIIdentity();
- // font system stores true screen origin, need to scale this by UI scale factor
- // to get render origin for this view (with unit scale)
- gGL.translateUI(floorf(LLFontGL::sCurOrigin.mX * LLUI::sGLScaleFactor.mV[VX]),
- floorf(LLFontGL::sCurOrigin.mY * LLUI::sGLScaleFactor.mV[VY]),
- LLFontGL::sCurOrigin.mZ);
- }
+ mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
// scale texture to fit the space using texture coords
gGL.getTexUnit(0)->bind(media_texture);
@@ -826,14 +813,6 @@ void LLMediaCtrl::draw()
x_offset = (r.getWidth() - width) / 2;
y_offset = (r.getHeight() - height) / 2;
- if(mIgnoreUIScale)
- {
- x_offset = llround((F32)x_offset * LLUI::sGLScaleFactor.mV[VX]);
- y_offset = llround((F32)y_offset * LLUI::sGLScaleFactor.mV[VY]);
- width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
- height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
- }
-
// draw the browser
gGL.begin( LLRender::QUADS );
if (! media_plugin->getTextureCoordsOpenGL())
@@ -900,14 +879,14 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y)
coords_opengl = mMediaSource->getMediaPlugin()->getTextureCoordsOpenGL();
}
- x = mIgnoreUIScale ? llround((F32)x * LLUI::sGLScaleFactor.mV[VX]) : x;
+ x = llround((F32)x * LLUI::sGLScaleFactor.mV[VX]);
if ( ! coords_opengl )
{
- y = mIgnoreUIScale ? llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]) : y;
+ y = llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]);
}
else
{
- y = mIgnoreUIScale ? llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]) : getRect().getHeight() - y;
+ y = llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]);
};
}
@@ -1102,36 +1081,7 @@ void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response)
{
if (response["open"])
{
- // name of default floater to open
- std::string floater_name = "media_browser";
-
- // look for parent floater name
- if ( gFloaterView )
- {
- if ( gFloaterView->getParentFloater(this) )
- {
- floater_name = gFloaterView->getParentFloater(this)->getInstanceName();
- }
- else
- {
- lldebugs << "No gFloaterView->getParentFloater(this) for onPopuup()" << llendl;
- };
- }
- else
- {
- lldebugs << "No gFloaterView for onPopuup()" << llendl;
- };
-
- // (for now) open web content floater if that's our parent, otherwise, open the current media floater
- // (this will change soon)
- if ( floater_name == "web_content" )
- {
- LLWeb::loadWebURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
- }
- else
- {
- LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
- }
+ LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
}
else
{
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 3c0436e27a..7f2a5e1642 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -51,7 +51,6 @@ public:
Optional<std::string> start_url;
Optional<bool> border_visible,
- ignore_ui_scale,
hide_loading,
decouple_texture_size,
trusted_content,
@@ -125,9 +124,6 @@ public:
bool getFrequentUpdates() { return mFrequentUpdates; };
void setFrequentUpdates( bool frequentUpdatesIn ) { mFrequentUpdates = frequentUpdatesIn; };
- void setIgnoreUIScale(bool ignore) { mIgnoreUIScale = ignore; }
- bool getIgnoreUIScale() { return mIgnoreUIScale; }
-
void setAlwaysRefresh(bool refresh) { mAlwaysRefresh = refresh; }
bool getAlwaysRefresh() { return mAlwaysRefresh; }
@@ -181,28 +177,29 @@ public:
const S32 mTextureDepthBytes;
LLUUID mMediaTextureID;
LLViewBorder* mBorder;
- bool mFrequentUpdates;
- bool mForceUpdate;
- bool mTrusted;
- std::string mHomePageUrl;
- std::string mHomePageMimeType;
- std::string mCurrentNavUrl;
- std::string mErrorPageURL;
- std::string mTarget;
- bool mIgnoreUIScale;
- bool mAlwaysRefresh;
+ bool mFrequentUpdates,
+ mForceUpdate,
+ mTrusted,
+ mAlwaysRefresh,
+ mTakeFocusOnClick,
+ mStretchToFill,
+ mMaintainAspectRatio,
+ mHideLoading,
+ mHidingInitialLoad,
+ mClearCache,
+ mHoverTextChanged,
+ mDecoupleTextureSize;
+
+ std::string mHomePageUrl,
+ mHomePageMimeType,
+ mCurrentNavUrl,
+ mErrorPageURL,
+ mTarget;
viewer_media_t mMediaSource;
- bool mTakeFocusOnClick;
- bool mStretchToFill;
- bool mMaintainAspectRatio;
- bool mHideLoading;
- bool mHidingInitialLoad;
- bool mDecoupleTextureSize;
- S32 mTextureWidth;
- S32 mTextureHeight;
- bool mClearCache;
+ S32 mTextureWidth,
+ mTextureHeight;
+
class LLWindowShade* mWindowShade;
- bool mHoverTextChanged;
LLContextMenu* mContextMenu;
};
diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp
deleted file mode 100644
index 4b7f9432e3..0000000000
--- a/indra/newview/llmenucommands.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * @file llmenucommands.cpp
- * @brief Implementations of menu commands.
- *
- * $LicenseInfo:firstyear=2003&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llmenucommands.h"
-
-#include "imageids.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llrect.h"
-#include "llerror.h"
-#include "llstring.h"
-#include "message.h"
-
-#include "llagentcamera.h"
-#include "llcallingcard.h"
-#include "llviewercontrol.h"
-//#include "llfirstuse.h"
-#include "llfloaterworldmap.h"
-#include "lllineeditor.h"
-#include "llstatusbar.h"
-#include "llimview.h"
-#include "lltextbox.h"
-#include "llui.h"
-#include "llviewergesture.h" // for triggering gestures
-#include "llviewermessage.h"
-#include "llviewerparceloverlay.h"
-#include "llviewerregion.h"
-#include "llviewerstats.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "llworld.h"
-#include "llworldmap.h"
-#include "llfocusmgr.h"
-#include "llnearbychatbar.h"
-
-void handle_mouselook(void*)
-{
- gAgentCamera.changeCameraToMouselook();
-}
-
-
-void handle_chat(void*)
-{
- // give focus to chatbar if it's open but not focused
- if (gSavedSettings.getBOOL("ChatVisible") &&
- gFocusMgr.childHasKeyboardFocus(LLNearbyChatBar::getInstance()->getChatBox()))
- {
- LLNearbyChatBar::stopChat();
- }
- else
- {
- LLNearbyChatBar::startChat(NULL);
- }
-}
-
-void handle_slash_key(void*)
-{
- // LLBottomTray::startChat("/");
- //
- // Don't do this, it results in a double-slash in the input field.
- // Another "/" will be automatically typed for us, because the WM_KEYDOWN event
- // that generated the menu accelerator call (and hence puts focus in
- // the chat edtior) will be followed by a "/" WM_CHAR character message,
- // which will type the slash. Yes, it's weird. It only matters for
- // menu accelerators that put input focus into a field. And Mac works
- // the same way. JC
-
- LLNearbyChatBar::startChat(NULL);
-}
diff --git a/indra/newview/llmenucommands.h b/indra/newview/llmenucommands.h
deleted file mode 100644
index fa845c6f02..0000000000
--- a/indra/newview/llmenucommands.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file llmenucommands.h
- * @brief Implementations of menu commands.
- *
- * $LicenseInfo:firstyear=2003&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLMENUCOMMANDS_H
-#define LL_LLMENUCOMMANDS_H
-
-class LLUUID;
-
-void handle_mouselook(void*);
-void handle_chat(void*);
-void handle_return_key(void*);
-void handle_slash_key(void*);
-
-#endif
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 142ee40cc8..c3d8b91d67 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -37,7 +37,6 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llvoavatarself.h" // to check gAgentAvatarp->isSitting()
-#include "llbottomtray.h"
#include "llbutton.h"
#include "llfirstuse.h"
#include "llfloaterreg.h"
@@ -46,7 +45,8 @@
#include "lluictrlfactory.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
-#include "llselectmgr.h"
+#include "llselectmgr.h"
+#include "lltoolbarview.h"
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
#include "lltooltip.h"
@@ -59,15 +59,13 @@ const F32 MOVE_BUTTON_DELAY = 0.0f;
const F32 YAW_NUDGE_RATE = 0.05f; // fraction of normal speed
const F32 NUDGE_TIME = 0.25f; // in seconds
-const std::string BOTTOM_TRAY_BUTTON_NAME = "movement_btn";
-
//
// Member functions
//
// protected
LLFloaterMove::LLFloaterMove(const LLSD& key)
-: LLTransientDockableFloater(NULL, true, key),
+: LLFloater(key),
mForwardButton(NULL),
mBackwardButton(NULL),
mTurnLeftButton(NULL),
@@ -92,12 +90,8 @@ LLFloaterMove::~LLFloaterMove()
// virtual
BOOL LLFloaterMove::postBuild()
{
- setIsChrome(TRUE);
- setTitleVisible(TRUE); // restore title visibility after chrome applying
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
- LLDockableFloater::postBuild();
-
// Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
mForwardButton = getChild<LLJoystickAgentTurn>("forward btn");
@@ -155,10 +149,10 @@ BOOL LLFloaterMove::postBuild()
// virtual
void LLFloaterMove::setVisible(BOOL visible)
{
- // Do nothing with Stand/Stop Flying panel in excessive calls of this method (from LLTransientFloaterMgr?).
+ // Do nothing with Stand/Stop Flying panel in excessive calls of this method.
if (getVisible() == visible)
{
- LLTransientDockableFloater::setVisible(visible);
+ LLFloater::setVisible(visible);
return;
}
@@ -177,7 +171,7 @@ void LLFloaterMove::setVisible(BOOL visible)
LLPanelStandStopFlying::getInstance()->reparent(NULL);
}
- LLTransientDockableFloater::setVisible(visible);
+ LLFloater::setVisible(visible);
}
// static
@@ -441,30 +435,6 @@ void LLFloaterMove::setModeTitle(const EMovementMode mode)
setTitle(title);
}
-/**
- * Updates position of the floater to be center aligned with Move button.
- */
-void LLFloaterMove::updatePosition()
-{
- LLBottomTray* tray = LLBottomTray::getInstance();
- if (!tray) return;
-
- LLButton* movement_btn = tray->findChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
-
- if (movement_btn)
- {
- //align centers of a button and a floater
- S32 x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
-
- S32 y = 0;
- if (!mModeActionsPanel->getVisible())
- {
- y = mModeActionsPanel->getRect().getHeight();
- }
- setOrigin(x, y);
- }
-}
-
//static
void LLFloaterMove::sUpdateFlyingStatus()
{
@@ -499,8 +469,6 @@ void LLFloaterMove::enableInstance(BOOL bEnable)
void LLFloaterMove::onOpen(const LLSD& key)
{
- LLButton *anchor_panel = LLBottomTray::getInstance()->getChild<LLButton>("movement_btn");
-
if (gAgent.getFlying())
{
setFlyingMode(TRUE);
@@ -513,19 +481,9 @@ void LLFloaterMove::onOpen(const LLSD& key)
showModeButtons(FALSE);
}
- setDockControl(new LLDockControl(
- anchor_panel, this,
- getDockTongue(), LLDockControl::TOP));
-
sUpdateFlyingStatus();
}
-//virtual
-void LLFloaterMove::setDocked(bool docked, bool pop_on_undock/* = true*/)
-{
- LLTransientDockableFloater::setDocked(docked, pop_on_undock);
-}
-
void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
{
llassert_always(mModeControlButtonMap.end() != mModeControlButtonMap.find(mode));
@@ -736,23 +694,30 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()
*/
void LLPanelStandStopFlying::updatePosition()
{
- LLBottomTray* tray = LLBottomTray::getInstance();
- if (!tray || mAttached) return;
+ if (mAttached) return;
- LLButton* movement_btn = tray->findChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
+ S32 y_pos = 0;
+ S32 bottom_tb_center = 0;
+ if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom"))
+ {
+ y_pos = toolbar_bottom->getRect().getHeight();
+ bottom_tb_center = toolbar_bottom->getRect().getCenterX();
+ }
- S32 x = 0;
- if (movement_btn)
+ S32 left_tb_width = 0;
+ if (LLToolBar* toolbar_left = gToolBarView->getChild<LLToolBar>("toolbar_left"))
{
- // Align centers of the button and the panel.
- x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+ left_tb_width = toolbar_left->getRect().getWidth();
}
- else
+
+ if(LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container"))
{
- x = tray->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+ panel_ssf_container->setOrigin(0, y_pos);
}
- setOrigin(x, 0);
-}
+ S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width;
+
+ setOrigin( x_pos, 0);
+}
// EOF
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index 1b87864651..744dd866d4 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -28,7 +28,7 @@
#define LL_LLMOVEVIEW_H
// Library includes
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
class LLButton;
class LLJoystickAgentTurn;
@@ -38,7 +38,7 @@ class LLJoystickAgentSlide;
// Classes
//
class LLFloaterMove
-: public LLTransientDockableFloater
+: public LLFloater
{
LOG_CLASS(LLFloaterMove);
friend class LLFloaterReg;
@@ -58,7 +58,6 @@ public:
static void setSittingMode(BOOL bSitting);
static void enableInstance(BOOL bEnable);
/*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
static void sUpdateFlyingStatus();
@@ -87,7 +86,6 @@ private:
void initModeButtonMap();
void setModeButtonToggleState(const EMovementMode mode);
void updateButtonsWithMovementMode(const EMovementMode newMode);
- void updatePosition();
void showModeButtons(BOOL bShow);
public:
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index d64fdbe6a5..ca9956dc53 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -61,7 +61,7 @@ public:
{}
};
- struct NameColumn : public LLInitParam::Choice<NameColumn>
+ struct NameColumn : public LLInitParam::ChoiceBlock<NameColumn>
{
Alternative<S32> column_index;
Alternative<std::string> column_name;
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 9d54ad7463..2a08cb1845 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -45,7 +45,6 @@
#include "llpaneltopinfobar.h"
#include "llteleporthistory.h"
#include "llsearchcombobox.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llurlregistry.h"
#include "llurldispatcher.h"
@@ -55,7 +54,6 @@
#include "llworldmapmessage.h"
#include "llappviewer.h"
#include "llviewercontrol.h"
-#include "llfloatermediabrowser.h"
#include "llweb.h"
#include "llhints.h"
@@ -269,7 +267,6 @@ LLNavigationBar::LLNavigationBar()
mBtnForward(NULL),
mBtnHome(NULL),
mCmbLocation(NULL),
- mSearchComboBox(NULL),
mPurgeTPHistoryItems(false),
mSaveToLocationHistory(false)
{
@@ -291,10 +288,7 @@ BOOL LLNavigationBar::postBuild()
mBtnForward = getChild<LLPullButton>("forward_btn");
mBtnHome = getChild<LLButton>("home_btn");
- mCmbLocation= getChild<LLLocationInputCtrl>("location_combo");
- mSearchComboBox = getChild<LLSearchComboBox>("search_combo_box");
-
- fillSearchComboBox();
+ mCmbLocation= getChild<LLLocationInputCtrl>("location_combo");
mBtnBack->setEnabled(FALSE);
mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
@@ -309,8 +303,6 @@ BOOL LLNavigationBar::postBuild()
mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
mCmbLocation->setCommitCallback(boost::bind(&LLNavigationBar::onLocationSelection, this));
-
- mSearchComboBox->setCommitCallback(boost::bind(&LLNavigationBar::onSearchCommit, this));
mTeleportFinishConnection = LLViewerParcelMgr::getInstance()->
setTeleportFinishedCallback(boost::bind(&LLNavigationBar::onTeleportFinished, this, _1));
@@ -325,7 +317,7 @@ BOOL LLNavigationBar::postBuild()
LLTeleportHistory::getInstance()->setHistoryChangedCallback(
boost::bind(&LLNavigationBar::onTeleportHistoryChanged, this));
- LLHints::registerHintTarget("nav_bar", LLView::getHandle());
+ LLHints::registerHintTarget("nav_bar", getHandle());
return TRUE;
}
@@ -344,26 +336,6 @@ void LLNavigationBar::setVisible(BOOL visible)
}
}
-
-void LLNavigationBar::fillSearchComboBox()
-{
- if(!mSearchComboBox)
- {
- return;
- }
-
- LLSearchHistory::getInstance()->load();
-
- LLSearchHistory::search_history_list_t search_list =
- LLSearchHistory::getInstance()->getSearchHistoryList();
- LLSearchHistory::search_history_list_t::const_iterator it = search_list.begin();
- for( ; search_list.end() != it; ++it)
- {
- LLSearchHistory::LLSearchHistoryItem item = *it;
- mSearchComboBox->add(item.search_query);
- }
-}
-
void LLNavigationBar::draw()
{
if(mPurgeTPHistoryItems)
@@ -416,16 +388,6 @@ void LLNavigationBar::onHomeButtonClicked()
gAgent.teleportHome();
}
-void LLNavigationBar::onSearchCommit()
-{
- std::string search_query = mSearchComboBox->getSimple();
- if(!search_query.empty())
- {
- LLSearchHistory::getInstance()->addEntry(search_query);
- }
- invokeSearch(search_query);
-}
-
void LLNavigationBar::onTeleportHistoryMenuItemClicked(const LLSD& userdata)
{
int idx = userdata.asInteger();
@@ -736,151 +698,3 @@ int LLNavigationBar::getDefFavBarHeight()
{
return mDefaultFpRect.getHeight();
}
-
-void LLNavigationBar::showNavigationPanel(BOOL visible)
-{
- bool fpVisible = gSavedSettings.getBOOL("ShowNavbarFavoritesPanel");
-
- LLFavoritesBarCtrl* fb = getChild<LLFavoritesBarCtrl>("favorite");
- LLPanel* navPanel = getChild<LLPanel>("navigation_panel");
-
- LLRect nbRect(getRect());
- LLRect fbRect(fb->getRect());
-
- navPanel->setVisible(visible);
-
- if (visible)
- {
- if (fpVisible)
- {
- // Navigation Panel must be shown. Favorites Panel is visible.
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), mDefaultNbRect.getHeight());
- fbRect.setLeftTopAndSize(fbRect.mLeft, mDefaultFpRect.mTop, fbRect.getWidth(), fbRect.getHeight());
-
- // this is duplicated in 'else' section because it should be called BEFORE fb->reshape
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- // propagate size to parent container
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
- fb->reshape(fbRect.getWidth(), fbRect.getHeight());
- fb->setRect(fbRect);
- }
- else
- {
- // Navigation Panel must be shown. Favorites Panel is hidden.
-
- S32 height = mDefaultNbRect.getHeight() - mDefaultFpRect.getHeight() - FAVBAR_TOP_PADDING;
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), height);
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
- }
- }
- else
- {
- if (fpVisible)
- {
- // Navigation Panel must be hidden. Favorites Panel is visible.
-
- S32 fpHeight = mDefaultFpRect.getHeight() + FAVBAR_TOP_PADDING;
- S32 fpTop = fpHeight - (mDefaultFpRect.getHeight() / 2) + 1;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), fpHeight);
- fbRect.setLeftTopAndSize(fbRect.mLeft, fpTop, fbRect.getWidth(), mDefaultFpRect.getHeight());
-
- // this is duplicated in 'else' section because it should be called BEFORE fb->reshape
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
- fb->reshape(fbRect.getWidth(), fbRect.getHeight());
- fb->setRect(fbRect);
- }
- else
- {
- // Navigation Panel must be hidden. Favorites Panel is hidden.
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), 0);
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
- }
- }
-
- getChildView("bg_icon")->setVisible( visible && fpVisible);
- getChildView("bg_icon_no_fav_bevel")->setVisible( visible && !fpVisible);
- getChildView("bg_icon_no_nav_bevel")->setVisible( !visible && fpVisible);
-}
-
-void LLNavigationBar::showFavoritesPanel(BOOL visible)
-{
- bool npVisible = gSavedSettings.getBOOL("ShowNavbarNavigationPanel");
-
- LLFavoritesBarCtrl* fb = getChild<LLFavoritesBarCtrl>("favorite");
-
- LLRect nbRect(getRect());
- LLRect fbRect(fb->getRect());
-
- if (visible)
- {
- if (npVisible)
- {
- // Favorites Panel must be shown. Navigation Panel is visible.
-
- S32 fbHeight = fbRect.getHeight();
- S32 newHeight = nbRect.getHeight() + fbHeight + FAVBAR_TOP_PADDING;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), newHeight);
- fbRect.setLeftTopAndSize(mDefaultFpRect.mLeft, mDefaultFpRect.mTop, fbRect.getWidth(), fbRect.getHeight());
- }
- else
- {
- // Favorites Panel must be shown. Navigation Panel is hidden.
-
- S32 fpHeight = mDefaultFpRect.getHeight() + FAVBAR_TOP_PADDING;
- S32 fpTop = fpHeight - (mDefaultFpRect.getHeight() / 2) + 1;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), fpHeight);
- fbRect.setLeftTopAndSize(fbRect.mLeft, fpTop, fbRect.getWidth(), mDefaultFpRect.getHeight());
- }
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
- fb->reshape(fbRect.getWidth(), fbRect.getHeight());
- fb->setRect(fbRect);
- }
- else
- {
- if (npVisible)
- {
- // Favorites Panel must be hidden. Navigation Panel is visible.
-
- S32 fbHeight = fbRect.getHeight();
- S32 newHeight = nbRect.getHeight() - fbHeight - FAVBAR_TOP_PADDING;
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), newHeight);
- }
- else
- {
- // Favorites Panel must be hidden. Navigation Panel is hidden.
-
- nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), 0);
- }
-
- reshape(nbRect.getWidth(), nbRect.getHeight());
- setRect(nbRect);
- getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
- }
-
- getChildView("bg_icon")->setVisible( npVisible && visible);
- getChildView("bg_icon_no_fav_bevel")->setVisible( npVisible && !visible);
- getChildView("bg_icon_no_nav_bevel")->setVisible( !npVisible && visible);
-
- fb->setVisible(visible);
-}
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 3c9f8a762d..e4ce9e3998 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -98,9 +98,6 @@ public:
void handleLoginComplete();
void clearHistoryCache();
- void showNavigationPanel(BOOL visible);
- void showFavoritesPanel(BOOL visible);
-
int getDefNavBarHeight();
int getDefFavBarHeight();
@@ -121,7 +118,6 @@ private:
void onHomeButtonClicked();
void onLocationSelection();
void onLocationPrearrange(const LLSD& data);
- void onSearchCommit();
void onTeleportFinished(const LLVector3d& global_agent_pos);
void onTeleportFailed();
void onRegionNameResponse(
@@ -131,8 +127,6 @@ private:
U64 region_handle, const std::string& url,
const LLUUID& snapshot_id, bool teleport);
- void fillSearchComboBox();
-
static void destroyClass()
{
if (LLNavigationBar::instanceExists())
@@ -145,7 +139,6 @@ private:
LLPullButton* mBtnBack;
LLPullButton* mBtnForward;
LLButton* mBtnHome;
- LLSearchComboBox* mSearchComboBox;
LLLocationInputCtrl* mCmbLocation;
LLRect mDefaultNbRect;
LLRect mDefaultFpRect;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 03ebc344f1..a7303ad035 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -32,8 +32,9 @@
#include "llrootview.h"
//#include "llchatitemscontainerctrl.h"
#include "lliconctrl.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
+#include "lllogchat.h"
#include "llresizebar.h"
#include "llresizehandle.h"
#include "llmenugl.h"
@@ -50,21 +51,18 @@
#include "lldraghandle.h"
-#include "llbottomtray.h"
#include "llnearbychatbar.h"
#include "llfloaterreg.h"
#include "lltrans.h"
static const S32 RESIZE_BAR_THICKNESS = 3;
-LLNearbyChat::LLNearbyChat(const LLSD& key)
- : LLDockableFloater(NULL, false, false, key)
- ,mChatHistory(NULL)
-{
-
-}
-LLNearbyChat::~LLNearbyChat()
+static LLRegisterPanelClassWrapper<LLNearbyChat> t_panel_nearby_chat("panel_nearby_chat");
+
+LLNearbyChat::LLNearbyChat(const LLNearbyChat::Params& p)
+: LLPanel(p),
+ mChatHistory(NULL)
{
}
@@ -86,54 +84,12 @@ BOOL LLNearbyChat::postBuild()
mChatHistory = getChild<LLChatHistory>("chat_history");
- if(!LLDockableFloater::postBuild())
+ if(!LLPanel::postBuild())
return false;
-
- if (getDockControl() == NULL)
- {
- setDockControl(new LLDockControl(
- LLBottomTray::getInstance()->getNearbyChatBar(), this,
- getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
- }
-
- //fix for EXT-4621
- //chrome="true" prevents floater from stilling capture
- setIsChrome(true);
- //chrome="true" hides floater caption
- if (mDragHandle)
- mDragHandle->setTitleVisible(TRUE);
-
+
return true;
}
-
-void LLNearbyChat::applySavedVariables()
-{
- if (mRectControl.size() > 1)
- {
- const LLRect& rect = LLFloater::getControlGroup()->getRect(mRectControl);
- if(!rect.isEmpty() && rect.isValid())
- {
- reshape(rect.getWidth(), rect.getHeight());
- setRect(rect);
- }
- }
-
-
- if(!LLFloater::getControlGroup()->controlExists(mDocStateControl))
- {
- setDocked(true);
- }
- else
- {
- if (mDocStateControl.size() > 1)
- {
- bool dockState = LLFloater::getControlGroup()->getBOOL(mDocStateControl);
- setDocked(dockState);
- }
- }
-}
-
std::string appendTime()
{
time_t utc_time;
@@ -203,7 +159,7 @@ void LLNearbyChat::onNearbySpeakers()
{
LLSD param;
param["people_panel_tab_name"] = "nearby_panel";
- LLSideTray::getInstance()->showPanel("panel_people",param);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param);
}
@@ -218,30 +174,26 @@ bool LLNearbyChat::onNearbyChatCheckContextMenuItem(const LLSD& userdata)
return false;
}
-void LLNearbyChat::setVisible(BOOL visible)
+void LLNearbyChat::removeScreenChat()
{
- if(visible)
+ LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
+ if(chat_channel)
{
- LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
- if(chat_channel)
- {
- chat_channel->removeToastsFromChannel();
- }
+ chat_channel->removeToastsFromChannel();
}
-
- LLDockableFloater::setVisible(visible);
}
-void LLNearbyChat::onOpen(const LLSD& key )
+void LLNearbyChat::setVisible(BOOL visible)
{
- LLDockableFloater::onOpen(key);
-}
+ if(visible)
+ {
+ removeScreenChat();
+ }
-void LLNearbyChat::setRect (const LLRect &rect)
-{
- LLDockableFloater::setRect(rect);
+ LLPanel::setVisible(visible);
}
+
void LLNearbyChat::getAllowedRect(LLRect& rect)
{
rect = gViewerWindow->getWorldViewRectScaled();
@@ -263,7 +215,8 @@ void LLNearbyChat::updateChatHistoryStyle()
//static
void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
if(nearby_chat)
nearby_chat->updateChatHistoryStyle();
}
@@ -339,7 +292,8 @@ void LLNearbyChat::loadHistory()
//static
LLNearbyChat* LLNearbyChat::getInstance()
{
- return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ return chat_bar->findChild<LLNearbyChat>("nearby_chat");
}
////////////////////////////////////////////////////////////////////////////////
@@ -367,7 +321,7 @@ BOOL LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
if(mChatHistory)
mChatHistory->setFocus(TRUE);
- return LLDockableFloater::handleMouseDown(x, y, mask);
+ return LLPanel::handleMouseDown(x, y, mask);
}
void LLNearbyChat::draw()
@@ -380,5 +334,5 @@ void LLNearbyChat::draw()
setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE);
}
- LLDockableFloater::draw();
+ LLPanel::draw();
}
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 2ea79797f8..7c5975cbc5 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -1,4 +1,4 @@
-/**
+ /**
* @file llnearbychat.h
* @brief nearby chat history scrolling panel implementation
*
@@ -27,18 +27,17 @@
#ifndef LL_LLNEARBYCHAT_H_
#define LL_LLNEARBYCHAT_H_
-#include "lldockablefloater.h"
#include "llscrollbar.h"
#include "llviewerchat.h"
+#include "llfloater.h"
class LLResizeBar;
class LLChatHistory;
-class LLNearbyChat: public LLDockableFloater
+class LLNearbyChat: public LLPanel
{
public:
- LLNearbyChat(const LLSD& key);
- ~LLNearbyChat();
+ LLNearbyChat(const Params& p = LLPanel::getDefaultParams());
BOOL postBuild ();
@@ -54,12 +53,8 @@ public:
/*virtual*/ void onFocusLost();
/*virtual*/ void onFocusReceived();
- /*virtual*/ void onOpen (const LLSD& key);
-
/*virtual*/ void setVisible(BOOL visible);
-
- virtual void setRect (const LLRect &rect);
-
+
virtual void updateChatHistoryStyle();
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
@@ -67,14 +62,14 @@ public:
void loadHistory();
static LLNearbyChat* getInstance();
+ void removeScreenChat();
private:
- virtual void applySavedVariables();
void getAllowedRect (LLRect& rect);
void onNearbySpeakers ();
-
+
private:
LLHandle<LLView> mPopupMenuHandle;
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4b961db5f9..183063f1db 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -34,7 +34,6 @@
#include "llfirstuse.h"
#include "llnearbychatbar.h"
-#include "llbottomtray.h"
#include "llagent.h"
#include "llgesturemgr.h"
#include "llmultigesture.h"
@@ -48,14 +47,19 @@
#include "llviewerwindow.h"
#include "llrootview.h"
#include "llviewerchat.h"
+#include "llnearbychat.h"
+
+#include "llresizehandle.h"
S32 LLNearbyChatBar::sLastSpecialChatChannel = 0;
+const S32 EXPANDED_HEIGHT = 300;
+const S32 COLLAPSED_HEIGHT = 60;
+const S32 EXPANDED_MIN_HEIGHT = 150;
+
// legacy callback glue
void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel);
-static LLDefaultChildRegistry::Register<LLGestureComboList> r("gesture_combo_list");
-
struct LLChatTypeTrigger {
std::string name;
EChatType type;
@@ -66,353 +70,13 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
{ "/shout" , CHAT_TYPE_SHOUT}
};
-//ext-7367
-//Problem: gesture list control (actually LLScrollListCtrl) didn't actually process mouse wheel message.
-// introduce new gesture list subclass to "eat" mouse wheel messages (and probably some other messages)
-class LLGestureScrollListCtrl: public LLScrollListCtrl
-{
-protected:
- friend class LLUICtrlFactory;
- LLGestureScrollListCtrl(const LLScrollListCtrl::Params& params)
- :LLScrollListCtrl(params)
- {
- }
-public:
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks)
- {
- LLScrollListCtrl::handleScrollWheel( x, y, clicks );
- return TRUE;
- }
- //See EXT-6598
- //Mouse hover over separator will result in not processing tooltip message
- //So eat this message
- BOOL handleToolTip(S32 x, S32 y, MASK mask)
- {
- LLScrollListCtrl::handleToolTip( x, y, mask );
- return TRUE;
- }
-};
-
-LLGestureComboList::Params::Params()
-: combo_button("combo_button"),
- combo_list("combo_list"),
- get_more("get_more", true),
- view_all("view_all", true)
-{
-}
-
-LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
-: LLUICtrl(p),
- mLabel(p.label),
- mViewAllItemIndex(-1),
- mGetMoreItemIndex(-1),
- mShowViewAll(p.view_all),
- mShowGetMore(p.get_more)
-{
- LLBottomtrayButton::Params button_params = p.combo_button;
- button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT);
-
- mButton = LLUICtrlFactory::create<LLBottomtrayButton>(button_params);
- mButton->reshape(getRect().getWidth(),getRect().getHeight());
- mButton->setCommitCallback(boost::bind(&LLGestureComboList::onButtonCommit, this));
-
- addChild(mButton);
-
- LLGestureScrollListCtrl::Params params(p.combo_list);
-
- params.name("GestureComboList");
- params.commit_callback.function(boost::bind(&LLGestureComboList::onItemSelected, this, _2));
- params.visible(false);
- params.commit_on_keyboard_movement(false);
-
- mList = LLUICtrlFactory::create<LLGestureScrollListCtrl>(params);
- addChild(mList);
-
- //****************************Gesture Part********************************/
-
- setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));
-
- // now register us as observer since we have a place to put the results
- LLGestureMgr::instance().addObserver(this);
-
- // refresh list from current active gestures
- refreshGestures();
-
- setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this));
-}
-
-BOOL LLGestureComboList::handleKeyHere(KEY key, MASK mask)
-{
- BOOL handled = FALSE;
-
- if (key == KEY_ESCAPE && mask == MASK_NONE )
- {
- hideList();
- handled = TRUE;
- }
- else
- {
- handled = mList->handleKeyHere(key, mask);
- }
-
- return handled;
-}
-
-void LLGestureComboList::draw()
-{
- LLUICtrl::draw();
-
- if(mButton->getToggleState())
- {
- showList();
- }
-}
-
-void LLGestureComboList::showList()
-{
- LLRect rect = mList->getRect();
- LLRect button_rect = mButton->getRect();
-
- // Calculating amount of space between the navigation bar and gestures combo
- LLNavigationBar* nb = LLNavigationBar::getInstance();
-
- S32 x, nb_bottom;
- nb->localPointToOtherView(0, 0, &x, &nb_bottom, this);
-
- S32 max_height = nb_bottom - button_rect.mTop;
- mList->calcColumnWidths();
- rect.setOriginAndSize(button_rect.mLeft, button_rect.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
- mList->setRect(rect);
- mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
- gFocusMgr.setKeyboardFocus(this);
-
- // Show the list and push the button down
- mButton->setToggleState(TRUE);
- mList->setVisible(TRUE);
- sendChildToFront(mList);
- LLUI::addPopup(mList);
-}
-
-void LLGestureComboList::onButtonCommit()
-{
- if (!mList->getVisible())
- {
- // highlight the last selected item from the original selection before potentially selecting a new item
- // as visual cue to original value of combo box
- LLScrollListItem* last_selected_item = mList->getLastSelectedItem();
- if (last_selected_item)
- {
- mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item));
- }
-
- if (mList->getItemCount() != 0)
- {
- showList();
- }
- }
- else
- {
- hideList();
- }
-}
-
-void LLGestureComboList::hideList()
-{
- if (mList->getVisible())
- {
- mButton->setToggleState(FALSE);
- mList->setVisible(FALSE);
- mList->mouseOverHighlightNthItem(-1);
- LLUI::removePopup(mList);
- gFocusMgr.setKeyboardFocus(NULL);
- }
-}
-
-S32 LLGestureComboList::getCurrentIndex() const
-{
- LLScrollListItem* item = mList->getFirstSelected();
- if( item )
- {
- return mList->getItemIndex( item );
- }
- return -1;
-}
-
-void LLGestureComboList::onItemSelected(const LLSD& data)
-{
- const std::string name = mList->getSelectedItemLabel();
-
- S32 cur_id = getCurrentIndex();
- mLastSelectedIndex = cur_id;
- if (cur_id != mList->getItemCount()-1 && cur_id != -1)
- {
- mButton->setLabel(name);
- }
-
- // hiding the list reasserts the old value stored in the text editor/dropdown button
- hideList();
-
- // commit does the reverse, asserting the value in the list
- onCommit();
-}
-
-void LLGestureComboList::sortByName(bool ascending)
-{
- mList->sortOnce(0, ascending);
-}
-
-LLSD LLGestureComboList::getValue() const
-{
- LLScrollListItem* item = mList->getFirstSelected();
- if( item )
- {
- return item->getValue();
- }
- else
- {
- return LLSD();
- }
-}
-
-void LLGestureComboList::refreshGestures()
-{
- //store current selection so we can maintain it
- LLSD cur_gesture = getValue();
-
- mList->selectFirstItem();
- mList->clearRows();
- mGestures.clear();
-
- LLGestureMgr::item_map_t::const_iterator it;
- const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();
- LLSD::Integer idx(0);
- for (it = active_gestures.begin(); it != active_gestures.end(); ++it)
- {
- LLMultiGesture* gesture = (*it).second;
- if (gesture)
- {
- mList->addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx));
- mGestures.push_back(gesture);
- idx++;
- }
- }
-
- sortByName();
-
- // store indices for Get More and View All items (idx is the index followed by the last added Gesture)
- if (mShowGetMore)
- {
- mGetMoreItemIndex = idx;
- mList->addSimpleElement(LLTrans::getString("GetMoreGestures"), ADD_BOTTOM, LLSD(mGetMoreItemIndex));
- }
- if (mShowViewAll)
- {
- mViewAllItemIndex = idx + 1;
- mList->addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex));
- }
-
- // Insert label after sorting, at top, with separator below it
- mList->addSeparator(ADD_TOP);
- mList->addSimpleElement(mLabel, ADD_TOP);
-
- if (cur_gesture.isDefined())
- {
- mList->selectByValue(cur_gesture);
-
- }
- else
- {
- mList->selectFirstItem();
- }
-
- LLCtrlListInterface* gestures = getListInterface();
- LLMultiGesture* gesture = NULL;
-
- if (gestures)
- {
- S32 sel_index = gestures->getFirstSelectedIndex();
- if (sel_index != 0)
- {
- S32 index = gestures->getSelectedValue().asInteger();
- if (index<0 || index >= (S32)mGestures.size())
- {
- llwarns << "out of range gesture access" << llendl;
- }
- else
- {
- gesture = mGestures.at(index);
- }
- }
- }
-
- if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture))
- {
- return;
- }
-
- mButton->setLabel(mLabel);
-}
-
-void LLGestureComboList::onCommitGesture()
-{
- LLCtrlListInterface* gestures = getListInterface();
- if (gestures)
- {
- S32 sel_index = gestures->getFirstSelectedIndex();
- if (sel_index == 0)
- {
- return;
- }
-
- S32 index = gestures->getSelectedValue().asInteger();
-
- if (mViewAllItemIndex == index)
- {
- // The same behavior as Ctrl+G. EXT-823
- LLFloaterReg::toggleInstance("gestures");
- gestures->selectFirstItem();
- return;
- }
-
- if (mGetMoreItemIndex == index)
- {
- LLWeb::loadURLExternal(gSavedSettings.getString("GesturesMarketplaceURL"));
- return;
- }
-
- if (index<0 || index >= (S32)mGestures.size())
- {
- llwarns << "out of range gesture index" << llendl;
- }
- else
- {
- LLMultiGesture* gesture = mGestures.at(index);
- if(gesture)
- {
- LLGestureMgr::instance().playGesture(gesture);
- if(!gesture->mReplaceText.empty())
- {
- LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE);
- }
- }
- }
- }
-}
-
-LLGestureComboList::~LLGestureComboList()
-{
- LLGestureMgr::instance().removeObserver(this);
-}
-
-LLCtrlListInterface* LLGestureComboList::getListInterface()
-{
- return mList;
-}
-
-LLNearbyChatBar::LLNearbyChatBar()
-: mChatBox(NULL)
+LLNearbyChatBar::LLNearbyChatBar(const LLSD& key)
+: LLFloater(key),
+ mChatBox(NULL),
+ mNearbyChat(NULL),
+ mOutputMonitor(NULL),
+ mSpeakerMgr(NULL),
+ mExpandedHeight(COLLAPSED_HEIGHT + EXPANDED_HEIGHT)
{
mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
}
@@ -436,15 +100,40 @@ BOOL LLNearbyChatBar::postBuild()
mChatBox->setEnableLineHistory(TRUE);
mChatBox->setFont(LLViewerChat::getChatFont());
+ mNearbyChat = getChildView("nearby_chat");
+
+ LLUICtrl* show_btn = getChild<LLUICtrl>("show_nearby_chat");
+ show_btn->setCommitCallback(boost::bind(&LLNearbyChatBar::onToggleNearbyChatPanel, this));
+
mOutputMonitor = getChild<LLOutputMonitorCtrl>("chat_zone_indicator");
mOutputMonitor->setVisible(FALSE);
// Register for font change notifications
LLViewerChat::setFontChangedCallback(boost::bind(&LLNearbyChatBar::onChatFontChange, this, _1));
+ enableResizeCtrls(true, true, false);
+
return TRUE;
}
+bool LLNearbyChatBar::applyRectControl()
+{
+ bool rect_controlled = LLFloater::applyRectControl();
+
+ if (!mNearbyChat->getVisible())
+ {
+ reshape(getRect().getWidth(), getMinHeight());
+ enableResizeCtrls(true, true, false);
+ }
+ else
+ {
+ enableResizeCtrls(true);
+ setResizeLimits(getMinWidth(), EXPANDED_MIN_HEIGHT);
+ }
+
+ return rect_controlled;
+}
+
void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
{
// Update things with the new font whohoo
@@ -457,19 +146,23 @@ void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
//static
LLNearbyChatBar* LLNearbyChatBar::getInstance()
{
- return LLBottomTray::getInstance() ? LLBottomTray::getInstance()->getNearbyChatBar() : NULL;
+ return LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar");
}
-//static
-bool LLNearbyChatBar::instanceExists()
+void LLNearbyChatBar::showHistory()
{
- return LLBottomTray::instanceExists() && LLBottomTray::getInstance()->getNearbyChatBar() != NULL;
+ openFloater();
+
+ if (!getChildView("nearby_chat")->getVisible())
+ {
+ onToggleNearbyChatPanel();
+ }
}
void LLNearbyChatBar::draw()
{
displaySpeakingIndicator();
- LLPanel::draw();
+ LLFloater::draw();
}
std::string LLNearbyChatBar::getCurrentChat()
@@ -683,6 +376,44 @@ void LLNearbyChatBar::sendChat( EChatType type )
}
}
+
+void LLNearbyChatBar::onToggleNearbyChatPanel()
+{
+ LLView* nearby_chat = getChildView("nearby_chat");
+
+ if (nearby_chat->getVisible())
+ {
+ if (!isMinimized())
+ {
+ mExpandedHeight = getRect().getHeight();
+ }
+ setResizeLimits(getMinWidth(), COLLAPSED_HEIGHT);
+ nearby_chat->setVisible(FALSE);
+ reshape(getRect().getWidth(), COLLAPSED_HEIGHT);
+ enableResizeCtrls(true, true, false);
+ storeRectControl();
+ }
+ else
+ {
+ nearby_chat->setVisible(TRUE);
+ setResizeLimits(getMinWidth(), EXPANDED_MIN_HEIGHT);
+ reshape(getRect().getWidth(), mExpandedHeight);
+ enableResizeCtrls(true);
+ storeRectControl();
+ }
+}
+
+void LLNearbyChatBar::setMinimized(BOOL b)
+{
+ LLNearbyChat* nearby_chat = getChild<LLNearbyChat>("nearby_chat");
+ // when unminimizing with nearby chat visible, go ahead and kill off screen chats
+ if (!b && nearby_chat->getVisible())
+ {
+ nearby_chat->removeScreenChat();
+ }
+ LLFloater::setMinimized(b);
+}
+
void LLNearbyChatBar::onChatBoxCommit()
{
if (mChatBox->getText().length() > 0)
@@ -780,17 +511,13 @@ void LLNearbyChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type,
// static
void LLNearbyChatBar::startChat(const char* line)
{
- LLBottomTray *bt = LLBottomTray::getInstance();
-
- if (!bt)
- return;
-
- LLNearbyChatBar* cb = bt->getNearbyChatBar();
+ LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
if (!cb )
return;
- bt->setVisible(TRUE);
+ cb->setVisible(TRUE);
+ cb->setFocus(TRUE);
cb->mChatBox->setFocus(TRUE);
if (line)
@@ -806,12 +533,7 @@ void LLNearbyChatBar::startChat(const char* line)
// static
void LLNearbyChatBar::stopChat()
{
- LLBottomTray *bt = LLBottomTray::getInstance();
-
- if (!bt)
- return;
-
- LLNearbyChatBar* cb = bt->getNearbyChatBar();
+ LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
if (!cb)
return;
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index efddec942f..c2f57dc4ca 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -27,85 +27,25 @@
#ifndef LL_LLNEARBYCHATBAR_H
#define LL_LLNEARBYCHATBAR_H
-#include "llpanel.h"
+#include "llfloater.h"
#include "llcombobox.h"
#include "llgesturemgr.h"
#include "llchat.h"
#include "llvoiceclient.h"
#include "lloutputmonitorctrl.h"
#include "llspeakers.h"
-#include "llbottomtray.h"
-
-class LLGestureComboList
- : public LLGestureManagerObserver
- , public LLUICtrl
-{
-public:
- struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
- {
- Optional<LLBottomtrayButton::Params> combo_button;
- Optional<LLScrollListCtrl::Params> combo_list;
- Optional<bool> get_more,
- view_all;
-
- Params();
- };
-
-protected:
-
- friend class LLUICtrlFactory;
- LLGestureComboList(const Params&);
- std::vector<LLMultiGesture*> mGestures;
- std::string mLabel;
- bool mShowViewAll;
- bool mShowGetMore;
- LLSD::Integer mViewAllItemIndex;
- LLSD::Integer mGetMoreItemIndex;
-
-public:
-
- ~LLGestureComboList();
-
- LLCtrlListInterface* getListInterface();
- virtual void showList();
- virtual void hideList();
- virtual BOOL handleKeyHere(KEY key, MASK mask);
-
- virtual void draw();
-
- S32 getCurrentIndex() const;
- void onItemSelected(const LLSD& data);
- void sortByName(bool ascending = true);
- void refreshGestures();
- void onCommitGesture();
- void onButtonCommit();
- virtual LLSD getValue() const;
-
- // LLGestureManagerObserver trigger
- virtual void changed() { refreshGestures(); }
-
-private:
-
- LLButton* mButton;
- LLScrollListCtrl* mList;
- S32 mLastSelectedIndex;
-};
-
-class LLNearbyChatBar
-: public LLPanel
+class LLNearbyChatBar : public LLFloater
{
public:
// constructor for inline chat-bars (e.g. hosted in chat history window)
- LLNearbyChatBar();
+ LLNearbyChatBar(const LLSD& key);
~LLNearbyChatBar() {}
virtual BOOL postBuild();
static LLNearbyChatBar* getInstance();
- static bool instanceExists();
-
LLLineEditor* getChatBox() { return mChatBox; }
virtual void draw();
@@ -119,6 +59,9 @@ public:
static void sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate);
static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);
+ void showHistory();
+ /*virtual*/void setMinimized(BOOL b);
+
protected:
static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str);
static void onChatBoxKeystroke(LLLineEditor* caller, void* userdata);
@@ -129,6 +72,10 @@ protected:
void onChatBoxCommit();
void onChatFontChange(LLFontGL* fontp);
+ /* virtual */ bool applyRectControl();
+
+ void onToggleNearbyChatPanel();
+
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
EChatType processChatTypeTriggers(EChatType type, std::string &str);
@@ -137,9 +84,12 @@ protected:
// Which non-zero channel did we last chat on?
static S32 sLastSpecialChatChannel;
- LLLineEditor* mChatBox;
- LLOutputMonitorCtrl* mOutputMonitor;
- LLLocalSpeakerMgr* mSpeakerMgr;
+ LLLineEditor* mChatBox;
+ LLView* mNearbyChat;
+ LLOutputMonitorCtrl* mOutputMonitor;
+ LLLocalSpeakerMgr* mSpeakerMgr;
+
+ S32 mExpandedHeight;
};
#endif
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 957b6d5f94..240a7c7a35 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -29,7 +29,6 @@
#include "llagentdata.h" // for gAgentID
#include "llnearbychathandler.h"
-#include "llbottomtray.h"
#include "llchatitemscontainerctrl.h"
#include "llfirstuse.h"
#include "llfloaterscriptdebug.h"
@@ -41,6 +40,9 @@
#include "llfloaterreg.h"//for LLFloaterReg::getTypedInstance
#include "llviewerwindow.h"//for screen channel position
+#include "llnearbychatbar.h"
+#include "llrootview.h"
+#include "lllayoutstack.h"
//add LLNearbyChatHandler to LLNotificationsUI namespace
using namespace LLNotificationsUI;
@@ -61,7 +63,8 @@ public:
typedef std::vector<LLHandle<LLToast> > toast_vec_t;
typedef std::list<LLHandle<LLToast> > toast_list_t;
- LLNearbyChatScreenChannel(const LLUUID& id):LLScreenChannelBase(id)
+ LLNearbyChatScreenChannel(const Params& p)
+ : LLScreenChannelBase(p)
{
mStopProcessing = false;
@@ -80,7 +83,6 @@ public:
void addNotification (LLSD& notification);
void arrangeToasts ();
- void showToastsBottom ();
typedef boost::function<LLToastPanelBase* (void )> create_toast_panel_callback_t;
void setCreatePanelCallback(create_toast_panel_callback_t value) { m_create_toast_panel_callback_t = value;}
@@ -88,8 +90,6 @@ public:
void onToastDestroyed (LLToast* toast, bool app_quitting);
void onToastFade (LLToast* toast);
- void reshape (S32 width, S32 height, BOOL called_from_parent);
-
void redrawToasts()
{
arrangeToasts();
@@ -149,6 +149,7 @@ protected:
toast_list_t m_toast_pool;
bool mStopProcessing;
+ bool mChannelRect;
};
//-----------------------------------------------------------------------------------------------
@@ -351,27 +352,6 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)
arrangeToasts();
}
-void LLNearbyChatScreenChannel::arrangeToasts()
-{
- if(!isHovering())
- {
- showToastsBottom();
- }
-
- if (m_active_toasts.empty())
- {
- LLHints::registerHintTarget("incoming_chat", LLHandle<LLView>());
- }
- else
- {
- LLToast* toast = m_active_toasts.front().get();
- if (toast)
- {
- LLHints::registerHintTarget("incoming_chat", m_active_toasts.front().get()->LLView::getHandle());
- }
- }
-}
-
static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> second)
{
if (!first.get() || !second.get()) return false; // STORM-1352
@@ -381,16 +361,34 @@ static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> sec
return v1 > v2;
}
-void LLNearbyChatScreenChannel::showToastsBottom()
+void LLNearbyChatScreenChannel::arrangeToasts()
{
- if(mStopProcessing)
+ if(mStopProcessing || isHovering())
return;
+ if (mFloaterSnapRegion == NULL)
+ {
+ mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+ }
+
+ if (!getParent())
+ {
+ // connect to floater snap region just to get resize events, we don't care about being a proper widget
+ mFloaterSnapRegion->addChild(this);
+ setFollows(FOLLOWS_ALL);
+ }
+
LLRect toast_rect;
- updateBottom();
- S32 channel_bottom = getRect().mBottom;
+ updateRect();
+
+ LLRect channel_rect;
+ mFloaterSnapRegion->localRectToOtherView(mFloaterSnapRegion->getLocalRect(), &channel_rect, gFloaterView);
+ channel_rect.mLeft += 10;
+ channel_rect.mRight = channel_rect.mLeft + 300;
- S32 bottom = channel_bottom;
+ S32 channel_bottom = channel_rect.mBottom;
+
+ S32 bottom = channel_bottom + 80;
S32 margin = gSavedSettings.getS32("ToastGap");
//sort active toasts
@@ -409,7 +407,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
S32 toast_top = bottom + toast->getRect().getHeight() + margin;
- if(toast_top > gFloaterView->getRect().getHeight())
+ if(toast_top > channel_rect.getHeight())
{
while(it!=m_active_toasts.end())
{
@@ -420,7 +418,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
}
toast_rect = toast->getRect();
- toast_rect.setLeftTopAndSize(getRect().mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight());
+ toast_rect.setLeftTopAndSize(channel_rect.mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight());
toast->setRect(toast_rect);
bottom += toast_rect.getHeight() - toast->getTopPad() + margin;
@@ -438,15 +436,10 @@ void LLNearbyChatScreenChannel::showToastsBottom()
}
}
- }
-
-void LLNearbyChatScreenChannel::reshape (S32 width, S32 height, BOOL called_from_parent)
-{
- LLScreenChannelBase::reshape(width, height, called_from_parent);
- arrangeToasts();
}
+
//-----------------------------------------------------------------------------------------------
//LLNearbyChatHandler
//-----------------------------------------------------------------------------------------------
@@ -457,7 +450,9 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i
mType = type;
// Getting a Channel for our notifications
- LLNearbyChatScreenChannel* channel = new LLNearbyChatScreenChannel(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
+ LLNearbyChatScreenChannel::Params p;
+ p.id = LLUUID(gSavedSettings.getString("NearByChatChannelUUID"));
+ LLNearbyChatScreenChannel* channel = new LLNearbyChatScreenChannel(p);
LLNearbyChatScreenChannel::create_toast_panel_callback_t callback = createToastPanel;
@@ -473,15 +468,13 @@ LLNearbyChatHandler::~LLNearbyChatHandler()
void LLNearbyChatHandler::initChannel()
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
- LLView* chat_box = LLBottomTray::getInstance()->getChildView("chat_box");
- S32 channel_right_bound = nearby_chat->getRect().mRight;
- mChannel->init(chat_box->getRect().mLeft, channel_right_bound);
+ //LLRect snap_rect = gFloaterView->getSnapRect();
+ //mChannel->init(snap_rect.mLeft, snap_rect.mLeft + 200);
}
-void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not really const, see hack below changing chat_msg.mText
+void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
const LLSD &args)
{
if(chat_msg.mMuted == TRUE)
@@ -490,24 +483,9 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
if(chat_msg.mText.empty())
return;//don't process empty messages
- // Handle irc styled messages for toast panel
- // HACK ALERT - changes mText, stripping out IRC style "/me" prefixes
- LLChat& tmp_chat = const_cast<LLChat&>(chat_msg);
- std::string original_message = tmp_chat.mText; // Save un-modified version of chat text
- if (tmp_chat.mChatStyle == CHAT_STYLE_IRC)
- {
- if(!tmp_chat.mFromName.empty())
- tmp_chat.mText = tmp_chat.mFromName + tmp_chat.mText.substr(3);
- else
- tmp_chat.mText = tmp_chat.mText.substr(3);
- }
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
- {
- //sometimes its usefull to have no name at all...
- //if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
- // tmp_chat.mFromName = tmp_chat.mFromID.asString();
- }
+ LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
// Build notification data
LLSD notification;
@@ -551,7 +529,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
LLViewerChat::getChatColor(chat_msg,txt_color);
- LLFloaterScriptDebug::addScriptLine(original_message, // Send full message with "/me" style prefix
+ LLFloaterScriptDebug::addScriptLine(chat_msg.mText,
chat_msg.mFromName,
txt_color,
chat_msg.mFromID);
@@ -576,7 +554,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
sChatWatcher->post(notification);
- if( nearby_chat->getVisible()
+ if( !chat_bar->isMinimized()
+ && nearby_chat->isInVisibleChain()
|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
&& gSavedSettings.getBOOL("UseChatBubbles") )
|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode
@@ -604,6 +583,21 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
if(channel)
{
+ // Handle IRC styled messages.
+ std::string toast_msg;
+ if (chat_msg.mChatStyle == CHAT_STYLE_IRC)
+ {
+ if (!chat_msg.mFromName.empty())
+ {
+ toast_msg += chat_msg.mFromName;
+ }
+ toast_msg += chat_msg.mText.substr(3);
+ }
+ else
+ {
+ toast_msg = chat_msg.mText;
+ }
+
// Add a nearby chat toast.
LLUUID id;
id.generate();
@@ -615,6 +609,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
notification["text_color"] = r_color_name;
notification["color_alpha"] = r_color_alpha;
notification["font_size"] = (S32)LLViewerChat::getChatFontSize() ;
+ notification["message"] = toast_msg;
channel->addNotification(notification);
}
}
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 5fe5c9b1e8..15d5d7c162 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -172,10 +172,10 @@ void LLNetMap::draw()
LLVector3 offset = gGL.getUITranslation();
LLVector3 scale = gGL.getUIScale();
- glLoadIdentity();
+ gGL.loadIdentity();
gGL.loadUIIdentity();
- glScalef(scale.mV[0], scale.mV[1], scale.mV[2]);
+ gGL.scalef(scale.mV[0], scale.mV[1], scale.mV[2]);
gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]);
{
@@ -183,7 +183,7 @@ void LLNetMap::draw()
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
// Draw background rectangle
LLColor4 background_color = mBackgroundColor.get();
@@ -204,7 +204,7 @@ void LLNetMap::draw()
{
// rotate subsequent draws to agent rotation
rotation = atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] );
- glRotatef( rotation * RAD_TO_DEG, 0.f, 0.f, 1.f);
+ gGL.rotatef( rotation * RAD_TO_DEG, 0.f, 0.f, 1.f);
}
// figure out where agent is
@@ -492,7 +492,7 @@ void LLNetMap::draw()
// If we don't rotate the map, we have to rotate the frustum.
gGL.pushMatrix();
gGL.translatef( ctr_x, ctr_y, 0 );
- glRotatef( atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] ) * RAD_TO_DEG, 0.f, 0.f, -1.f);
+ gGL.rotatef( atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] ) * RAD_TO_DEG, 0.f, 0.f, -1.f);
gGL.begin( LLRender::TRIANGLES );
gGL.vertex2f( 0, 0 );
gGL.vertex2f( -half_width_pixels, far_clip_pixels );
diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp
index 9d824dcd59..cae7d02fed 100644
--- a/indra/newview/llnotificationalerthandler.cpp
+++ b/indra/newview/llnotificationalerthandler.cpp
@@ -44,7 +44,7 @@ LLAlertHandler::LLAlertHandler(e_notification_type type, const LLSD& id) : mIsMo
{
mType = type;
- LLChannelManager::Params p;
+ LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("AlertChannelUUID"));
p.display_toasts_always = true;
p.toast_align = NA_CENTRE;
@@ -114,7 +114,7 @@ bool LLAlertHandler::processNotification(const LLSD& notify)
// Show alert in middle of progress view (during teleport) (EXT-1093)
LLProgressView* progress = gViewerWindow->getProgressView();
LLRect rc = progress && progress->getVisible() ? progress->getRect() : gViewerWindow->getWorldViewRectScaled();
- mChannel->updatePositionAndSize(rc, rc);
+ mChannel->updatePositionAndSize(rc);
LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel);
if(channel)
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index de90023f3b..1b767e80d4 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -385,7 +385,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
// static
void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
{
LLChat chat_msg(notification->getMessage());
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 02b217fc94..fb0891c4c5 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -29,6 +29,7 @@
#include "llfloaterreg.h"
#include "llnearbychat.h"
+#include "llnearbychatbar.h"
#include "llnotificationhandler.h"
#include "llnotifications.h"
#include "lltoastnotifypanel.h"
@@ -92,9 +93,9 @@ bool LLTipHandler::processNotification(const LLSD& notify)
LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);
// don't show toast if Nearby Chat is opened
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<
- LLNearbyChat>("nearby_chat", LLSD());
- if (nearby_chat->getVisible())
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
+ LLNearbyChatBar* nearby_chat_bar = LLNearbyChatBar::getInstance();
+ if (!nearby_chat_bar->isMinimized() && nearby_chat_bar->getVisible() && nearby_chat->getVisible())
{
return false;
}
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 10887aa53a..1dc4d796ab 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -35,13 +35,13 @@
#include "llaccordionctrltab.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "lllistcontextmenu.h"
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "lltransutil.h"
#include "llviewermenu.h"
@@ -327,7 +327,7 @@ protected:
static void editOutfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
static void renameOutfit(const LLUUID& outfit_cat_id)
diff --git a/indra/newview/lloverlaybar.cpp b/indra/newview/lloverlaybar.cpp
deleted file mode 100644
index c2bbec0470..0000000000
--- a/indra/newview/lloverlaybar.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-/**
- * @file lloverlaybar.cpp
- * @brief LLOverlayBar class implementation
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-// Temporary buttons that appear at the bottom of the screen when you
-// are in a mode.
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lloverlaybar.h"
-
-#include "llaudioengine.h"
-#include "llrender.h"
-#include "llagent.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-#include "llimview.h"
-#include "llmediaremotectrl.h"
-#include "llparcel.h"
-#include "lltextbox.h"
-#include "llui.h"
-#include "llviewercontrol.h"
-#include "llviewertexturelist.h"
-#include "llviewerjoystick.h"
-#include "llviewermedia.h"
-#include "llviewermenu.h" // handle_reset_view()
-#include "llviewermedia.h"
-#include "llviewerparcelmedia.h"
-#include "llviewerparcelmgr.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "llvoiceclient.h"
-#include "llvoavatarself.h"
-#include "llvoiceremotectrl.h"
-#include "llmediactrl.h"
-#include "llselectmgr.h"
-
-//
-// Globals
-//
-
-LLOverlayBar *gOverlayBar = NULL;
-
-extern S32 MENU_BAR_HEIGHT;
-
-//
-// Functions
-//
-
-
-
-void* LLOverlayBar::createMediaRemote(void* userdata)
-{
- LLOverlayBar *self = (LLOverlayBar*)userdata;
- self->mMediaRemote = new LLMediaRemoteCtrl ();
- return self->mMediaRemote;
-}
-
-void* LLOverlayBar::createVoiceRemote(void* userdata)
-{
- LLOverlayBar *self = (LLOverlayBar*)userdata;
- self->mVoiceRemote = new LLVoiceRemoteCtrl();
- return self->mVoiceRemote;
-}
-
-LLOverlayBar::LLOverlayBar()
- : LLPanel(),
- mMediaRemote(NULL),
- mVoiceRemote(NULL),
- mMusicState(STOPPED)
-{
- setMouseOpaque(FALSE);
- setIsChrome(TRUE);
-
- mBuilt = false;
-
- mFactoryMap["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this);
- mFactoryMap["voice_remote"] = LLCallbackMap(LLOverlayBar::createVoiceRemote, this);
-
- LLUICtrlFactory::getInstance()->buildPanel(this, "panel_overlaybar.xml");
-}
-
-BOOL LLOverlayBar::postBuild()
-{
- childSetAction("Set Not Busy",onClickSetNotBusy,this);
- childSetAction("Mouselook",onClickMouselook,this);
- childSetAction("Stand Up",onClickStandUp,this);
- childSetAction("Flycam",onClickFlycam,this);
- childSetVisible("chat_bar", gSavedSettings.getBOOL("ChatVisible"));
-
- mVoiceRemote->expandOrCollapse();
- mMediaRemote->expandOrCollapse();
-
- setFocusRoot(TRUE);
- mBuilt = true;
-
- layoutButtons();
- return TRUE;
-}
-
-LLOverlayBar::~LLOverlayBar()
-{
- // LLView destructor cleans up children
-}
-
-// virtual
-void LLOverlayBar::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLView::reshape(width, height, called_from_parent);
-
- if (mBuilt)
- {
- layoutButtons();
- }
-}
-
-void LLOverlayBar::layoutButtons()
-{
- LLView* state_buttons_panel = getChildView("state_buttons");
-
- if (state_buttons_panel->getVisible())
- {
- LLViewQuery query;
- LLWidgetTypeFilter<LLButton> widget_filter;
- query.addPreFilter(LLEnabledFilter::getInstance());
- query.addPreFilter(&widget_filter);
-
- child_list_t button_list = query(state_buttons_panel);
-
- const S32 MAX_BAR_WIDTH = 600;
- S32 bar_width = llclamp(state_buttons_panel->getRect().getWidth(), 0, MAX_BAR_WIDTH);
-
- // calculate button widths
- const S32 MAX_BUTTON_WIDTH = 150;
- const S32 STATUS_BAR_PAD = 10;
- S32 segment_width = llclamp(lltrunc((F32)(bar_width) / (F32)button_list.size()), 0, MAX_BUTTON_WIDTH);
- S32 btn_width = segment_width - STATUS_BAR_PAD;
-
- // Evenly space all buttons, starting from left
- S32 left = 0;
- S32 bottom = 1;
-
- for (child_list_reverse_iter_t child_iter = button_list.rbegin();
- child_iter != button_list.rend(); ++child_iter)
- {
- LLView *view = *child_iter;
- LLRect r = view->getRect();
- r.setOriginAndSize(left, bottom, btn_width, r.getHeight());
- view->setRect(r);
- left += segment_width;
- }
- }
-}
-
-// Per-frame updates of visibility
-void LLOverlayBar::refresh()
-{
- BOOL buttons_changed = FALSE;
-
- BOOL im_received = gIMMgr->getIMReceived();
- LLButton* button = getChild<LLButton>("IM Received");
- if (button && button->getVisible() != im_received)
- {
- button->setVisible(im_received);
- sendChildToFront(button);
- moveChildToBackOfTabGroup(button);
- buttons_changed = TRUE;
- }
-
- BOOL busy = gAgent.getBusy();
- button = getChild<LLButton>("Set Not Busy");
- if (button && button->getVisible() != busy)
- {
- button->setVisible(busy);
- sendChildToFront(button);
- moveChildToBackOfTabGroup(button);
- buttons_changed = TRUE;
- }
-
- BOOL flycam = LLViewerJoystick::getInstance()->getOverrideCamera();
- button = getChild<LLButton>("Flycam");
- if (button && button->getVisible() != flycam)
- {
- button->setVisible(flycam);
- sendChildToFront(button);
- moveChildToBackOfTabGroup(button);
- buttons_changed = TRUE;
- }
-
- BOOL mouselook_grabbed;
- mouselook_grabbed = gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_DOWN_INDEX)
- || gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_UP_INDEX);
- button = getChild<LLButton>("Mouselook");
-
- if (button && button->getVisible() != mouselook_grabbed)
- {
- button->setVisible(mouselook_grabbed);
- sendChildToFront(button);
- moveChildToBackOfTabGroup(button);
- buttons_changed = TRUE;
- }
-
- BOOL sitting = FALSE;
- if (gAgent.getAvatarObject())
- {
- sitting = gAgent.getAvatarObject()->isSitting();
- }
- button = getChild<LLButton>("Stand Up");
-
- if (button && button->getVisible() != sitting)
- {
- button->setVisible(sitting);
- sendChildToFront(button);
- moveChildToBackOfTabGroup(button);
- buttons_changed = TRUE;
- }
-
-
- moveChildToBackOfTabGroup(mMediaRemote);
- moveChildToBackOfTabGroup(mVoiceRemote);
-
- // turn off the whole bar in mouselook
- if (gAgent.cameraMouselook())
- {
- childSetVisible("media_remote_container", FALSE);
- childSetVisible("voice_remote_container", FALSE);
- childSetVisible("state_buttons", FALSE);
- }
- else
- {
- // update "remotes"
- childSetVisible("media_remote_container", TRUE);
- childSetVisible("voice_remote_container", LLVoiceClient::getInstance()->voiceEnabled());
- childSetVisible("state_buttons", TRUE);
- }
-
- // always let user toggle into and out of chatbar
- childSetVisible("chat_bar", gSavedSettings.getBOOL("ChatVisible"));
-
- if (buttons_changed)
- {
- layoutButtons();
- }
-}
-
-//-----------------------------------------------------------------------
-// Static functions
-//-----------------------------------------------------------------------
-
-// static
-void LLOverlayBar::onClickSetNotBusy(void*)
-{
- gAgent.clearBusy();
-}
-
-
-// static
-void LLOverlayBar::onClickFlycam(void*)
-{
- LLViewerJoystick::getInstance()->toggleFlycam();
-}
-
-// static
-void LLOverlayBar::onClickResetView(void* data)
-{
- handle_reset_view();
-}
-
-//static
-void LLOverlayBar::onClickMouselook(void*)
-{
- gAgent.changeCameraToMouselook();
-}
-
-//static
-void LLOverlayBar::onClickStandUp(void*)
-{
- LLSelectMgr::getInstance()->deselectAllForStandingUp();
- gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// static media helpers
-// *TODO: Move this into an audio manager abstraction
-//static
-void LLOverlayBar::mediaStop(void*)
-{
- if (!gOverlayBar)
- {
- // return;
- }
- LLViewerParcelMedia::stop();
-}
-//static
-void LLOverlayBar::toggleMediaPlay(void*)
-{
- if (!gOverlayBar)
- {
- // return;
- }
-
-
- if (LLViewerParcelMedia::getStatus() == LLViewerMediaImpl::MEDIA_PAUSED)
- {
- LLViewerParcelMedia::start();
- }
- else if(LLViewerParcelMedia::getStatus() == LLViewerMediaImpl::MEDIA_PLAYING)
- {
- LLViewerParcelMedia::pause();
- }
- else
- {
- LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- if (parcel)
- {
- LLViewerParcelMedia::play(parcel);
- }
- }
-}
-
-//static
-void LLOverlayBar::toggleMusicPlay(void*)
-{
- if (gAudiop->isInternetStreamPlaying() != 1)
- {
- if (gAudiop)
- {
- LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
- if ( parcel )
- {
- // this doesn't work properly when crossing parcel boundaries - even when the
- // stream is stopped, it doesn't return the right thing - commenting out for now.
- // if ( gAudiop->isInternetStreamPlaying() == 0 )
- {
- gAudiop->startInternetStream(parcel->getMusicURL());
- }
- }
- }
- }
- //else
- //{
- // gOverlayBar->mMusicState = PAUSED; // desired state
- // if (gAudiop)
- // {
- // gAudiop->pauseInternetStream(1);
- // }
- //}
- else
- {
- if (gAudiop)
- {
- gAudiop->stopInternetStream();
- }
- }
-}
-
diff --git a/indra/newview/lloverlaybar.h b/indra/newview/lloverlaybar.h
deleted file mode 100644
index b36f5ebb73..0000000000
--- a/indra/newview/lloverlaybar.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * @file lloverlaybar.h
- * @brief LLOverlayBar class definition
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLOVERLAYBAR_H
-#define LL_LLOVERLAYBAR_H
-
-#include "llpanel.h"
-
-// "Constants" loaded from settings.xml at start time
-extern S32 STATUS_BAR_HEIGHT;
-
-class LLButton;
-class LLLineEditor;
-class LLMediaRemoteCtrl;
-class LLMessageSystem;
-class LLTextBox;
-class LLTextEditor;
-class LLUICtrl;
-class LLUUID;
-class LLFrameTimer;
-class LLStatGraph;
-class LLSlider;
-class LLVoiceRemoteCtrl;
-
-class LLOverlayBar
-: public LLPanel
-{
-public:
- LLOverlayBar();
- ~LLOverlayBar();
-
- /*virtual*/ void refresh();
- /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
- /*virtual*/ BOOL postBuild();
-
- void layoutButtons();
-
- // helpers for returning desired state
- BOOL musicPlaying() { return mMusicState == PLAYING; }
-
- static void onClickSetNotBusy(void* data);
- static void onClickMouselook(void* data);
- static void onClickStandUp(void* data);
- static void onClickResetView(void* data);
- static void onClickFlycam(void* data);
-
- //static media helper functions
- static void toggleMediaPlay(void*);
- static void toggleMusicPlay(void*);
- static void musicPause(void*);
- static void musicStop(void*);
- static void mediaStop(void*);
-
- static void toggleAudioVolumeFloater(void*);
-
-protected:
- static void* createMediaRemote(void* userdata);
- static void* createVoiceRemote(void* userdata);
-
- void enableMediaButtons();
-
-protected:
- LLMediaRemoteCtrl* mMediaRemote;
- LLVoiceRemoteCtrl* mVoiceRemote;
- bool mBuilt; // dialog constructed yet?
- enum { STOPPED=0, PLAYING=1, PAUSED=2 };
- S32 mMusicState;
-};
-
-extern LLOverlayBar* gOverlayBar;
-
-#endif
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 988e801b61..679b1bdcda 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -120,269 +120,6 @@ BOOL LLDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
static LLDefaultChildRegistry::Register<LLDropTarget> r("drop_target");
-static LLRegisterPanelClassWrapper<LLPanelAvatarProfile> t_panel_profile("panel_profile");
-static LLRegisterPanelClassWrapper<LLPanelMyProfile> t_panel_my_profile("panel_my_profile");
-static LLRegisterPanelClassWrapper<LLPanelAvatarNotes> t_panel_notes("panel_notes");
-
-//-----------------------------------------------------------------------------
-// LLPanelAvatarNotes()
-//-----------------------------------------------------------------------------
-LLPanelAvatarNotes::LLPanelAvatarNotes()
-: LLPanelProfileTab()
-{
-
-}
-
-void LLPanelAvatarNotes::updateData()
-{
- LLAvatarPropertiesProcessor::getInstance()->
- sendAvatarNotesRequest(getAvatarId());
-}
-
-BOOL LLPanelAvatarNotes::postBuild()
-{
- childSetCommitCallback("status_check", boost::bind(&LLPanelAvatarNotes::onCommitRights, this), NULL);
- childSetCommitCallback("map_check", boost::bind(&LLPanelAvatarNotes::onCommitRights, this), NULL);
- childSetCommitCallback("objects_check", boost::bind(&LLPanelAvatarNotes::onCommitRights, this), NULL);
-
- childSetCommitCallback("add_friend", boost::bind(&LLPanelAvatarNotes::onAddFriendButtonClick, this),NULL);
- childSetCommitCallback("im", boost::bind(&LLPanelAvatarNotes::onIMButtonClick, this), NULL);
- childSetCommitCallback("call", boost::bind(&LLPanelAvatarNotes::onCallButtonClick, this), NULL);
- childSetCommitCallback("teleport", boost::bind(&LLPanelAvatarNotes::onTeleportButtonClick, this), NULL);
- childSetCommitCallback("share", boost::bind(&LLPanelAvatarNotes::onShareButtonClick, this), NULL);
- childSetCommitCallback("show_on_map_btn", (boost::bind(
- &LLPanelAvatarNotes::onMapButtonClick, this)), NULL);
-
- LLTextEditor* te = getChild<LLTextEditor>("notes_edit");
- te->setCommitCallback(boost::bind(&LLPanelAvatarNotes::onCommitNotes,this));
- te->setCommitOnFocusLost(TRUE);
-
- resetControls();
- resetData();
-
- LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this);
-
- return TRUE;
-}
-
-void LLPanelAvatarNotes::onOpen(const LLSD& key)
-{
- LLPanelProfileTab::onOpen(key);
-
- fillRightsData();
-
- //Disable "Add Friend" button for friends.
- getChildView("add_friend")->setEnabled(!LLAvatarActions::isFriend(getAvatarId()));
-}
-
-void LLPanelAvatarNotes::fillRightsData()
-{
- getChild<LLUICtrl>("status_check")->setValue(FALSE);
- getChild<LLUICtrl>("map_check")->setValue(FALSE);
- getChild<LLUICtrl>("objects_check")->setValue(FALSE);
-
- const LLRelationship* relation = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
- // If true - we are viewing friend's profile, enable check boxes and set values.
- if(relation)
- {
- S32 rights = relation->getRightsGrantedTo();
-
- getChild<LLUICtrl>("status_check")->setValue(LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE);
- getChild<LLUICtrl>("map_check")->setValue(LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
- getChild<LLUICtrl>("objects_check")->setValue(LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
-
- }
-
- enableCheckboxes(NULL != relation);
-}
-
-void LLPanelAvatarNotes::onCommitNotes()
-{
- std::string notes = getChild<LLUICtrl>("notes_edit")->getValue().asString();
- LLAvatarPropertiesProcessor::getInstance()-> sendNotes(getAvatarId(),notes);
-}
-
-void LLPanelAvatarNotes::rightsConfirmationCallback(const LLSD& notification,
- const LLSD& response, S32 rights)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- if (option == 0)
- {
- LLAvatarPropertiesProcessor::getInstance()->sendFriendRights(
- getAvatarId(), rights);
- }
- else
- {
- getChild<LLUICtrl>("objects_check")->setValue(
- getChild<LLUICtrl>("objects_check")->getValue().asBoolean() ? FALSE : TRUE);
- }
-}
-
-void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights)
-{
- LLSD args;
- args["NAME"] = LLSLURL("agent", getAvatarId(), "displayname").getSLURLString();
-
- if (grant)
- {
- LLNotificationsUtil::add("GrantModifyRights", args, LLSD(),
- boost::bind(&LLPanelAvatarNotes::rightsConfirmationCallback, this,
- _1, _2, rights));
- }
- else
- {
- LLNotificationsUtil::add("RevokeModifyRights", args, LLSD(),
- boost::bind(&LLPanelAvatarNotes::rightsConfirmationCallback, this,
- _1, _2, 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(getChild<LLUICtrl>("status_check")->getValue().asBoolean())
- rights |= LLRelationship::GRANT_ONLINE_STATUS;
- if(getChild<LLUICtrl>("map_check")->getValue().asBoolean())
- rights |= LLRelationship::GRANT_MAP_LOCATION;
- if(getChild<LLUICtrl>("objects_check")->getValue().asBoolean())
- rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
-
- bool allow_modify_objects = getChild<LLUICtrl>("objects_check")->getValue().asBoolean();
-
- // if modify objects checkbox clicked
- if (buddy_relationship->isRightGrantedTo(
- LLRelationship::GRANT_MODIFY_OBJECTS) != allow_modify_objects)
- {
- confirmModifyRights(allow_modify_objects, rights);
- }
- // only one checkbox can trigger commit, so store the rest of rights
- else
- {
- LLAvatarPropertiesProcessor::getInstance()->sendFriendRights(
- getAvatarId(), rights);
- }
-}
-
-void LLPanelAvatarNotes::processProperties(void* data, EAvatarProcessorType type)
-{
- if(APT_NOTES == type)
- {
- LLAvatarNotes* avatar_notes = static_cast<LLAvatarNotes*>(data);
- if(avatar_notes && getAvatarId() == avatar_notes->target_id)
- {
- getChild<LLUICtrl>("notes_edit")->setValue(avatar_notes->notes);
- getChildView("notes edit")->setEnabled(true);
-
- LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
- }
- }
-}
-
-void LLPanelAvatarNotes::resetData()
-{
- getChild<LLUICtrl>("notes_edit")->setValue(LLStringUtil::null);
- // Default value is TRUE
- getChild<LLUICtrl>("status_check")->setValue(TRUE);
-}
-
-void LLPanelAvatarNotes::resetControls()
-{
- //Disable "Add Friend" button for friends.
- getChildView("add_friend")->setEnabled(TRUE);
-
- enableCheckboxes(false);
-}
-
-void LLPanelAvatarNotes::onAddFriendButtonClick()
-{
- LLAvatarActions::requestFriendshipDialog(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onIMButtonClick()
-{
- LLAvatarActions::startIM(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onTeleportButtonClick()
-{
- LLAvatarActions::offerTeleport(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onCallButtonClick()
-{
- LLAvatarActions::startCall(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onShareButtonClick()
-{
- //*TODO not implemented.
-}
-
-void LLPanelAvatarNotes::enableCheckboxes(bool enable)
-{
- getChildView("status_check")->setEnabled(enable);
- getChildView("map_check")->setEnabled(enable);
- getChildView("objects_check")->setEnabled(enable);
-}
-
-LLPanelAvatarNotes::~LLPanelAvatarNotes()
-{
- if(getAvatarId().notNull())
- {
- LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
- }
-
- if(LLVoiceClient::instanceExists())
- {
- LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
- }
-}
-
-// virtual, called by LLAvatarTracker
-void LLPanelAvatarNotes::changed(U32 mask)
-{
- getChildView("teleport")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
-
- // update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947.
- fillRightsData();
-}
-
-// virtual
-void LLPanelAvatarNotes::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
- if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
- {
- return;
- }
-
- getChildView("call")->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
-}
-
-void LLPanelAvatarNotes::setAvatarId(const LLUUID& id)
-{
- if(id.notNull())
- {
- if(getAvatarId().notNull())
- {
- LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
- }
- LLPanelProfileTab::setAvatarId(id);
- LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this);
- }
-}
-
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
@@ -461,449 +198,3 @@ void LLPanelProfileTab::updateButtons()
|| gAgent.isGodlike();
getChildView("show_on_map_btn")->setEnabled(enable_map_btn);
}
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-bool enable_god()
-{
- return gAgent.isGodlike();
-}
-
-LLPanelAvatarProfile::LLPanelAvatarProfile()
-: LLPanelProfileTab()
-{
-}
-
-BOOL LLPanelAvatarProfile::postBuild()
-{
- childSetCommitCallback("see_profile_btn",(boost::bind(&LLPanelAvatarProfile::onSeeProfileBtnClick,this)),NULL);
- 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);
- childSetCommitCallback("teleport",(boost::bind(&LLPanelAvatarProfile::onTeleportButtonClick,this)),NULL);
- childSetCommitCallback("share",(boost::bind(&LLPanelAvatarProfile::onShareButtonClick,this)),NULL);
- childSetCommitCallback("show_on_map_btn", (boost::bind(
- &LLPanelAvatarProfile::onMapButtonClick, this)), NULL);
-
- LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
- registrar.add("Profile.ShowOnMap", boost::bind(&LLPanelAvatarProfile::onMapButtonClick, this));
- 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));
- registrar.add("Profile.CSR", boost::bind(&LLPanelAvatarProfile::csr, this));
-
- LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable;
- enable.add("Profile.EnableShowOnMap", boost::bind(&LLPanelAvatarProfile::enableShowOnMap, this));
- 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));
-
- LLToggleableMenu* profile_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- getChild<LLMenuButton>("overflow_btn")->setMenu(profile_menu, LLMenuButton::MP_TOP_RIGHT);
-
- LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this);
-
- resetControls();
- resetData();
-
- return TRUE;
-}
-
-void LLPanelAvatarProfile::onOpen(const LLSD& key)
-{
- LLPanelProfileTab::onOpen(key);
-
- mGroups.clear();
-
- //Disable "Add Friend" button for friends.
- getChildView("add_friend")->setEnabled(!LLAvatarActions::isFriend(getAvatarId()));
-}
-
-void LLPanelAvatarProfile::updateData()
-{
- if (getAvatarId().notNull())
- {
- LLAvatarPropertiesProcessor::getInstance()->
- sendAvatarPropertiesRequest(getAvatarId());
- LLAvatarPropertiesProcessor::getInstance()->
- sendAvatarGroupsRequest(getAvatarId());
- }
-}
-
-void LLPanelAvatarProfile::resetControls()
-{
- getChildView("status_panel")->setVisible( true);
- getChildView("profile_buttons_panel")->setVisible( true);
- getChildView("title_groups_text")->setVisible( true);
- getChildView("sl_groups")->setVisible( true);
- getChildView("add_friend")->setEnabled(true);
-
- getChildView("status_me_panel")->setVisible( false);
- getChildView("profile_me_buttons_panel")->setVisible( false);
- getChildView("account_actions_panel")->setVisible( false);
-}
-
-void LLPanelAvatarProfile::resetData()
-{
- mGroups.clear();
- getChild<LLUICtrl>("2nd_life_pic")->setValue(LLUUID::null);
- getChild<LLUICtrl>("real_world_pic")->setValue(LLUUID::null);
- getChild<LLUICtrl>("online_status")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("status_message")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("sl_description_edit")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("fl_description_edit")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("sl_groups")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("homepage_edit")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("register_date")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("acc_status_text")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("partner_text")->setValue(LLStringUtil::null);
-}
-
-void LLPanelAvatarProfile::processProperties(void* data, EAvatarProcessorType type)
-{
- if(APT_PROPERTIES == type)
- {
- const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
- if(avatar_data && getAvatarId() == avatar_data->avatar_id)
- {
- processProfileProperties(avatar_data);
- }
- }
- else if(APT_GROUPS == type)
- {
- LLAvatarGroups* avatar_groups = static_cast<LLAvatarGroups*>(data);
- if(avatar_groups && getAvatarId() == avatar_groups->avatar_id)
- {
- processGroupProperties(avatar_groups);
- }
- }
-}
-
-void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_data)
-{
- fillCommonData(avatar_data);
-
- fillPartnerData(avatar_data);
-
- fillAccountStatus(avatar_data);
-}
-
-void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_groups)
-{
- // *NOTE dzaporozhan
- // Group properties may arrive in two callbacks, we need to save them across
- // different calls. We can't do that in textbox as textbox may change the text.
-
- LLAvatarGroups::group_list_t::const_iterator it = avatar_groups->group_list.begin();
- const LLAvatarGroups::group_list_t::const_iterator it_end = avatar_groups->group_list.end();
-
- for(; it_end != it; ++it)
- {
- LLAvatarGroups::LLGroupData group_data = *it;
- mGroups[group_data.group_name] = group_data.group_id;
- }
-
- // Creating string, containing group list
- std::string groups = "";
- for (group_map_t::iterator it = mGroups.begin(); it != mGroups.end(); ++it)
- {
- if (it != mGroups.begin())
- groups += ", ";
-
- std::string group_name = LLURI::escape(it->first);
- std::string group_url= it->second.notNull()
- ? "[secondlife:///app/group/" + it->second.asString() + "/about " + group_name + "]"
- : getString("no_group_text");
-
- groups += group_url;
- }
-
- getChild<LLUICtrl>("sl_groups")->setValue(groups);
-}
-
-static void got_full_name_callback( LLHandle<LLPanel> profile_panel_handle, const std::string& full_name )
-{
- if (profile_panel_handle.isDead() ) return;
-
- LLPanelAvatarProfile* profile_panel = dynamic_cast<LLPanelAvatarProfile*>(profile_panel_handle.get());
- if ( ! profile_panel ) return;
-
- LLStringUtil::format_map_t args;
-
- std::string name;
- if (LLAvatarNameCache::useDisplayNames())
- {
- name = LLCacheName::buildUsername(full_name);
- }
- else
- {
- name = full_name;
- }
-
- args["[NAME]"] = name;
-
- std::string linden_name = profile_panel->getString("name_text_args", args);
- profile_panel->getChild<LLUICtrl>("name_descr_text")->setValue(linden_name);
-}
-
-void LLPanelAvatarProfile::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
-{
- LLStringUtil::format_map_t args;
- args["[DISPLAY_NAME]"] = av_name.mDisplayName;
-
- std::string display_name = getString("display_name_text_args", args);
- getChild<LLUICtrl>("display_name_descr_text")->setValue(display_name);
-}
-
-void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
-{
- //remove avatar id from cache to get fresh info
- LLAvatarIconIDCache::getInstance()->remove(avatar_data->avatar_id);
-
- LLStringUtil::format_map_t args;
- {
- std::string birth_date = LLTrans::getString("AvatarBirthDateFormat");
- LLStringUtil::format(birth_date, LLSD().with("datetime", (S32) avatar_data->born_on.secondsSinceEpoch()));
- args["[REG_DATE]"] = birth_date;
- }
-
- // ask (asynchronously) for the avatar name
- LLHandle<LLPanel> profile_panel_handle = getHandle();
- std::string full_name;
- if (gCacheName->getFullName(avatar_data->agent_id, full_name))
- {
- // name in cache, call callback directly
- got_full_name_callback( profile_panel_handle, full_name );
- }
- else
- {
- // not in cache, lookup name
- gCacheName->get(avatar_data->agent_id, false, boost::bind( got_full_name_callback, profile_panel_handle, _2 ));
- }
-
- // get display name
- LLAvatarNameCache::get(avatar_data->avatar_id,
- boost::bind(&LLPanelAvatarProfile::onNameCache, this, _1, _2));
-
- args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());
- std::string register_date = getString("RegisterDateFormat", args);
- getChild<LLUICtrl>("register_date")->setValue(register_date );
- getChild<LLUICtrl>("sl_description_edit")->setValue(avatar_data->about_text);
- getChild<LLUICtrl>("fl_description_edit")->setValue(avatar_data->fl_about_text);
- getChild<LLUICtrl>("2nd_life_pic")->setValue(avatar_data->image_id);
- getChild<LLUICtrl>("real_world_pic")->setValue(avatar_data->fl_image_id);
- getChild<LLUICtrl>("homepage_edit")->setValue(avatar_data->profile_url);
-
- // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
- getChildView("homepage_edit")->setVisible( !avatar_data->profile_url.empty());
-}
-
-void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
-{
- LLTextBox* partner_text = getChild<LLTextBox>("partner_text");
- if (avatar_data->partner_id.notNull())
- {
- partner_text->setText(LLSLURL("agent", avatar_data->partner_id, "inspect").getSLURLString());
- }
- else
- {
- partner_text->setText(getString("no_partner_text"));
- }
-}
-
-void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data)
-{
- LLStringUtil::format_map_t args;
- args["[ACCTTYPE]"] = LLAvatarPropertiesProcessor::accountType(avatar_data);
- args["[PAYMENTINFO]"] = LLAvatarPropertiesProcessor::paymentInfo(avatar_data);
- // *NOTE: AVATAR_AGEVERIFIED not currently getting set in
- // dataserver/lldataavatar.cpp for privacy considerations
- args["[AGEVERIFICATION]"] = "";
- std::string caption_text = getString("CaptionTextAcctInfo", args);
- getChild<LLUICtrl>("acc_status_text")->setValue(caption_text);
-}
-
-void LLPanelAvatarProfile::pay()
-{
- LLAvatarActions::pay(getAvatarId());
-}
-
-void LLPanelAvatarProfile::share()
-{
- LLAvatarActions::share(getAvatarId());
-}
-
-void LLPanelAvatarProfile::toggleBlock()
-{
- LLAvatarActions::toggleBlock(getAvatarId());
-}
-
-bool LLPanelAvatarProfile::enableShowOnMap()
-{
- bool is_buddy_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId());
-
- bool enable_map_btn = (is_buddy_online && is_agent_mappable(getAvatarId()))
- || gAgent.isGodlike();
- return enable_map_btn;
-}
-
-bool LLPanelAvatarProfile::enableBlock()
-{
- return LLAvatarActions::canBlock(getAvatarId()) && !LLAvatarActions::isBlocked(getAvatarId());
-}
-
-bool LLPanelAvatarProfile::enableUnblock()
-{
- return LLAvatarActions::isBlocked(getAvatarId());
-}
-
-void LLPanelAvatarProfile::kick()
-{
- LLAvatarActions::kick(getAvatarId());
-}
-
-void LLPanelAvatarProfile::freeze()
-{
- LLAvatarActions::freeze(getAvatarId());
-}
-
-void LLPanelAvatarProfile::unfreeze()
-{
- LLAvatarActions::unfreeze(getAvatarId());
-}
-
-void LLPanelAvatarProfile::csr()
-{
- std::string name;
- gCacheName->getFullName(getAvatarId(), name);
- LLAvatarActions::csr(getAvatarId(), name);
-}
-
-void LLPanelAvatarProfile::onAddFriendButtonClick()
-{
- LLAvatarActions::requestFriendshipDialog(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onSeeProfileBtnClick()
-{
- LLAvatarActions::showProfile(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onIMButtonClick()
-{
- LLAvatarActions::startIM(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onTeleportButtonClick()
-{
- LLAvatarActions::offerTeleport(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onCallButtonClick()
-{
- LLAvatarActions::startCall(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onShareButtonClick()
-{
- //*TODO not implemented
-}
-
-LLPanelAvatarProfile::~LLPanelAvatarProfile()
-{
- if(getAvatarId().notNull())
- {
- LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
- }
-
- if(LLVoiceClient::instanceExists())
- {
- LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
- }
-}
-
-// virtual, called by LLAvatarTracker
-void LLPanelAvatarProfile::changed(U32 mask)
-{
- getChildView("teleport")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
-}
-
-// virtual
-void LLPanelAvatarProfile::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
- if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
- {
- return;
- }
-
- getChildView("call")->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
-}
-
-void LLPanelAvatarProfile::setAvatarId(const LLUUID& id)
-{
- if(id.notNull())
- {
- if(getAvatarId().notNull())
- {
- LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
- }
- LLPanelProfileTab::setAvatarId(id);
- LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLPanelMyProfile::LLPanelMyProfile()
-: LLPanelAvatarProfile()
-{
-}
-
-BOOL LLPanelMyProfile::postBuild()
-{
- LLPanelAvatarProfile::postBuild();
-
- childSetCommitCallback("status_me_message_text", boost::bind(&LLPanelMyProfile::onStatusMessageChanged, this), NULL);
-
- resetControls();
- resetData();
-
- return TRUE;
-}
-
-void LLPanelMyProfile::onOpen(const LLSD& key)
-{
- LLPanelProfileTab::onOpen(key);
-}
-
-void LLPanelMyProfile::processProfileProperties(const LLAvatarData* avatar_data)
-{
- fillCommonData(avatar_data);
-
- fillPartnerData(avatar_data);
-
- fillAccountStatus(avatar_data);
-}
-
-void LLPanelMyProfile::resetControls()
-{
- getChildView("status_panel")->setVisible( false);
- getChildView("profile_buttons_panel")->setVisible( false);
- getChildView("title_groups_text")->setVisible( false);
- getChildView("sl_groups")->setVisible( false);
- getChildView("status_me_panel")->setVisible( true);
- getChildView("profile_me_buttons_panel")->setVisible( true);
-}
-
-
-void LLPanelMyProfile::onStatusMessageChanged()
-{
- updateData();
-}
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index e95441cd58..e33a850cfa 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -36,14 +36,8 @@
class LLComboBox;
class LLLineEditor;
-enum EOnlineStatus
-{
- ONLINE_STATUS_NO = 0,
- ONLINE_STATUS_YES = 1
-};
-
/**
-* Base class for any Profile View or My Profile Panel.
+* Base class for any Profile View.
*/
class LLPanelProfileTab
: public LLPanel
@@ -111,187 +105,4 @@ private:
LLUUID mAvatarId;
};
-/**
-* Panel for displaying Avatar's first and second life related info.
-*/
-class LLPanelAvatarProfile
- : public LLPanelProfileTab
- , public LLFriendObserver
- , public LLVoiceClientStatusObserver
-{
-public:
- LLPanelAvatarProfile();
- /*virtual*/ ~LLPanelAvatarProfile();
-
- /*virtual*/ void onOpen(const LLSD& key);
-
- /**
- * LLFriendObserver trigger
- */
- virtual void changed(U32 mask);
-
- // Implements LLVoiceClientStatusObserver::onChange() to enable the call
- // button when voice is available
- /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
- /*virtual*/ void setAvatarId(const LLUUID& id);
-
- /**
- * Processes data received from server.
- */
- /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ void updateData();
-
- /*virtual*/ void resetControls();
-
- /*virtual*/ void resetData();
-
-protected:
-
- /**
- * Process profile related data received from server.
- */
- virtual void processProfileProperties(const LLAvatarData* avatar_data);
-
- /**
- * Processes group related data received from server.
- */
- virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
-
- /**
- * Fills common for Avatar profile and My Profile fields.
- */
- virtual void fillCommonData(const LLAvatarData* avatar_data);
-
- /**
- * Fills partner data.
- */
- virtual void fillPartnerData(const LLAvatarData* avatar_data);
-
- /**
- * Fills account status.
- */
- virtual void fillAccountStatus(const LLAvatarData* avatar_data);
-
- /**
- * Opens "Pay Resident" dialog.
- */
- void pay();
-
- /**
- * opens inventory and IM for sharing items
- */
- void share();
-
- /**
- * Add/remove resident to/from your block list.
- */
- void toggleBlock();
-
- void kick();
- void freeze();
- void unfreeze();
- void csr();
-
- bool enableShowOnMap();
- bool enableBlock();
- bool enableUnblock();
- bool enableGod();
-
- void onSeeProfileBtnClick();
- void onAddFriendButtonClick();
- void onIMButtonClick();
- void onCallButtonClick();
- void onTeleportButtonClick();
- void onShareButtonClick();
-
-private:
- void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
-
- typedef std::map< std::string,LLUUID> group_map_t;
- group_map_t mGroups;
-};
-
-/**
- * Panel for displaying own first and second life related info.
- */
-class LLPanelMyProfile
- : public LLPanelAvatarProfile
-{
-public:
- LLPanelMyProfile();
-
- /*virtual*/ BOOL postBuild();
-
-protected:
-
- /*virtual*/ void onOpen(const LLSD& key);
-
- /*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data);
-
- /*virtual*/ void resetControls();
-
-protected:
- void onStatusMessageChanged();
-};
-
-/**
- * Panel for displaying Avatar's notes and modifying friend's rights.
- */
-class LLPanelAvatarNotes
- : public LLPanelProfileTab
- , public LLFriendObserver
- , public LLVoiceClientStatusObserver
-{
-public:
- LLPanelAvatarNotes();
- /*virtual*/ ~LLPanelAvatarNotes();
-
- virtual void setAvatarId(const LLUUID& id);
-
- /**
- * LLFriendObserver trigger
- */
- virtual void changed(U32 mask);
-
- // Implements LLVoiceClientStatusObserver::onChange() to enable the call
- // button when voice is available
- /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
- /*virtual*/ void onOpen(const LLSD& key);
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
-
- /*virtual*/ void updateData();
-
-protected:
-
- /*virtual*/ void resetControls();
-
- /*virtual*/ void resetData();
-
- /**
- * Fills rights data for friends.
- */
- void fillRightsData();
-
- void rightsConfirmationCallback(const LLSD& notification,
- const LLSD& response, S32 rights);
- void confirmModifyRights(bool grant, S32 rights);
- void onCommitRights();
- void onCommitNotes();
-
- void onAddFriendButtonClick();
- void onIMButtonClick();
- void onCallButtonClick();
- void onTeleportButtonClick();
- void onShareButtonClick();
- void enableCheckboxes(bool enable);
-};
-
#endif // LL_LLPANELAVATAR_H
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 81e199d85b..5c85ec438c 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -37,7 +37,7 @@
// project include
#include "llfloateravatarpicker.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llsidetraypanelcontainer.h"
static LLRegisterPanelClassWrapper<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");
@@ -99,7 +99,7 @@ void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
{
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
}
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 76b85d5bec..ae217958f0 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -29,6 +29,7 @@
// Library includes
#include "llbutton.h"
+#include "llfloatersidepanelcontainer.h"
#include "lltabcontainer.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
@@ -49,7 +50,6 @@
#include "llpanelgroupnotices.h"
#include "llpanelgroupgeneral.h"
-#include "llsidetray.h"
#include "llaccordionctrltab.h"
#include "llaccordionctrl.h"
@@ -597,7 +597,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
//static
void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
if(!panel)
return;
panel->setGroupID(group_id);
@@ -612,7 +612,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
const std::string& inventory_name,
LLOfferInfo* inventory_offer)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
if(!panel)
return;
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index eddd6e554d..e66dd5690c 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1431,22 +1431,23 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
LLSD substitution;
// We don't do time zone corrections of the calculated number of seconds
// because we don't have a full time stamp, only a date.
- substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", start_date);
+ substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%Y-%m-%d", start_date);
LLStringUtil::format (time_str, substitution);
text.append(time_str);
+ text.append(". ");
if (current_interval == 0)
{
text.append(LLTrans::getString("NextStipendDay"));
time_str = date_format_str;
- substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", next_stipend_date);
+ substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%Y-%m-%d", next_stipend_date);
LLStringUtil::format (time_str, substitution);
text.append(time_str);
- text.append("\n\n");
- text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
+ text.append(".\n\n");
+ text.append(llformat("%-23sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
text.append(1, '\n');
}
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index e370f2f622..0295ad151f 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -40,7 +40,6 @@
#include "llparticipantlist.h"
#include "llimview.h"
#include "llvoicechannel.h"
-#include "llsidetray.h"
#include "llspeakers.h"
#include "lltrans.h"
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index a9cc247d1b..c7454e85a9 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -42,6 +42,7 @@
#include "llagentui.h"
#include "llcallbacklist.h"
#include "lldndbutton.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llfolderviewitem.h"
#include "llinventorymodelbackgroundfetch.h"
@@ -51,7 +52,6 @@
#include "llmenubutton.h"
#include "llplacesinventorybridge.h"
#include "llplacesinventorypanel.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewermenu.h"
#include "llviewerregion.h"
@@ -367,7 +367,7 @@ void LLLandmarksPanel::onSelectorButtonClicked()
key["type"] = "landmark";
key["id"] = listenerp->getUUID();
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
}
@@ -786,7 +786,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
}
else if ("category" == command_name)
@@ -1309,7 +1309,13 @@ void LLLandmarksPanel::doProcessParcelInfo(LLLandmark* landmark,
landmark->getGlobalPos(landmark_global_pos);
// let's toggle pick panel into panel places
- LLPanel* panel_places = LLSideTray::getInstance()->getPanel("panel_places");//-> sidebar_places
+ LLPanel* panel_places = NULL;
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>("places");
+ if (floaterp)
+ {
+ panel_places = floaterp->findChild<LLPanel>("main_panel");
+ }
+
if (!panel_places)
{
llassert(NULL != panel_places);
@@ -1393,10 +1399,6 @@ static void filter_list(LLPlacesInventoryPanel* inventory_list, const std::strin
inventory_list->restoreFolderState();
}
- // Open the immediate children of the root folder, since those
- // are invisible in the UI and thus must always be open.
- inventory_list->getRootFolder()->openTopLevelFolders();
-
if (inventory_list->getFilterSubString().empty() && string.empty())
{
// current filter and new filter empty, do nothing
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index db7d836799..058d1ad6bc 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -154,10 +154,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
}
updateLocationCombo(false);
- LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
- mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
- mode_combo.setCommitCallback(boost::bind(&LLPanelLogin::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
-
LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo");
server_choice_combo->setCommitCallback(onSelectServer, NULL);
server_choice_combo->setFocusLostCallback(boost::bind(onServerComboLostFocus, _1));
@@ -287,15 +283,15 @@ LLPanelLogin::~LLPanelLogin()
// virtual
void LLPanelLogin::draw()
{
- glPushMatrix();
+ gGL.pushMatrix();
{
F32 image_aspect = 1.333333f;
F32 view_aspect = (F32)getRect().getWidth() / (F32)getRect().getHeight();
// stretch image to maintain aspect ratio
if (image_aspect > view_aspect)
{
- glTranslatef(-0.5f * (image_aspect / view_aspect - 1.f) * getRect().getWidth(), 0.f, 0.f);
- glScalef(image_aspect / view_aspect, 1.f, 1.f);
+ gGL.translatef(-0.5f * (image_aspect / view_aspect - 1.f) * getRect().getWidth(), 0.f, 0.f);
+ gGL.scalef(image_aspect / view_aspect, 1.f, 1.f);
}
S32 width = getRect().getWidth();
@@ -310,7 +306,7 @@ void LLPanelLogin::draw()
mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
};
}
- glPopMatrix();
+ gGL.popMatrix();
LLPanel::draw();
}
@@ -1025,32 +1021,6 @@ void LLPanelLogin::updateLoginPanelLinks()
sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
}
-void LLPanelLogin::onModeChange(const LLSD& original_value, const LLSD& new_value)
-{
- if (original_value.asString() != new_value.asString())
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLPanelLogin::onModeChangeConfirm, this, original_value, new_value, _1, _2));
- }
-}
-
-void LLPanelLogin::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
- LLAppViewer::instance()->requestQuit();
- break;
- case 1:
- // revert to original value
- getChild<LLUICtrl>("mode_combo")->setValue(original_value);
- break;
- default:
- break;
- }
-}
-
std::string canonicalize_username(const std::string& name)
{
std::string cname = name;
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index be9de884d1..a439c4ff6b 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -87,8 +87,6 @@ private:
void reshapeBrowser();
void addFavoritesToStartLocation();
void addUsersWithFavoritesToUsername();
- void onModeChange(const LLSD& original_value, const LLSD& new_value);
- void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
static void onClickConnect(void*);
static void onClickNewAccount(void*);
static void onClickVersion(void*);
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 858f5cf575..9944b51902 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -38,6 +38,7 @@
#include "llinventorymodelbackgroundfetch.h"
#include "llinventorypanel.h"
#include "llfiltereditor.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterreg.h"
#include "llmenubutton.h"
#include "lloutfitobserver.h"
@@ -51,7 +52,6 @@
#include "llviewermenu.h"
#include "llviewertexturelist.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
const std::string FILTERS_FILENAME("filters.xml");
@@ -111,7 +111,7 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));
- mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
+ //mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this));
mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));
@@ -579,8 +579,13 @@ void LLPanelMainInventory::updateItemcountText()
void LLPanelMainInventory::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (!sidepanel_inventory)
+ {
+ llwarns << "Could not find Inventory Panel in My Inventory floater" << llendl;
+ return;
+ }
+
sidepanel_inventory->clearSelections(false, true, true);
}
@@ -1164,7 +1169,7 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "share")
{
- LLSidepanelInventory* parent = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory* parent = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
return parent ? parent->canShare() : FALSE;
}
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index 0579ecbb90..7cb4bbf891 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -32,6 +32,7 @@
#include "llappviewer.h"
#include "llbutton.h"
#include "llinventorypanel.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llsidepanelinventory.h"
#include "llviewercontrol.h"
@@ -58,8 +59,6 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()
// virtual
BOOL LLPanelMarketplaceInbox::postBuild()
{
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLPanelMarketplaceInbox::handleLoginComplete, this));
-
LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceInbox::onFocusReceived, this));
return TRUE;
@@ -67,18 +66,12 @@ BOOL LLPanelMarketplaceInbox::postBuild()
void LLPanelMarketplaceInbox::onSelectionChange()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
sidepanel_inventory->updateVerbs();
}
-void LLPanelMarketplaceInbox::handleLoginComplete()
-{
- // Set us up as the class to drive the badge value for the sidebar_inventory button
- LLSideTray::getInstance()->setTabButtonBadgeDriver("sidebar_inventory", this);
-}
-
LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
{
LLView * inbox_inventory_placeholder = getChild<LLView>("inbox_inventory_placeholder");
@@ -113,9 +106,11 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
void LLPanelMarketplaceInbox::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
- sidepanel_inventory->clearSelections(true, false, true);
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->clearSelections(true, false, true);
+ }
gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
}
@@ -156,6 +151,20 @@ U32 LLPanelMarketplaceInbox::getFreshItemCount() const
fresh_item_count++;
}
}
+
+ LLFolderViewFolder::items_t::const_iterator items_it = inbox_folder->getItemsBegin();
+ LLFolderViewFolder::items_t::const_iterator items_end = inbox_folder->getItemsEnd();
+
+ for (; items_it != items_end; ++items_it)
+ {
+ const LLFolderViewItem * item_view = *items_it;
+ const LLInboxFolderViewItem * inbox_item_view = dynamic_cast<const LLInboxFolderViewItem*>(item_view);
+
+ if (inbox_item_view && inbox_item_view->isFresh())
+ {
+ fresh_item_count++;
+ }
+ }
}
}
@@ -176,6 +185,7 @@ U32 LLPanelMarketplaceInbox::getTotalItemCount() const
if (inbox_folder)
{
item_count += inbox_folder->getFoldersCount();
+ item_count += inbox_folder->getItemsCount();
}
}
@@ -186,9 +196,10 @@ std::string LLPanelMarketplaceInbox::getBadgeString() const
{
std::string item_count_str("");
+ LLPanel *inventory_panel = LLFloaterSidePanelContainer::getPanel("inventory");
+
// If the inbox is visible, and the side panel is collapsed or expanded and not the inventory panel
- if (getParent()->getVisible() &&
- (LLSideTray::getInstance()->getCollapsed() || !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")))
+ if (getParent()->getVisible() && inventory_panel && !inventory_panel->isInVisibleChain())
{
U32 item_count = getFreshItemCount();
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
index 705a095cf0..3531518e51 100644
--- a/indra/newview/llpanelmarketplaceinbox.h
+++ b/indra/newview/llpanelmarketplaceinbox.h
@@ -28,11 +28,10 @@
#define LL_LLPANELMARKETPLACEINBOX_H
#include "llpanel.h"
-#include "llsidetray.h"
class LLInventoryPanel;
-class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver
+class LLPanelMarketplaceInbox : public LLPanel
{
public:
@@ -61,7 +60,6 @@ public:
std::string getBadgeString() const;
private:
- void handleLoginComplete();
void onSelectionChange();
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 2e4bf55d51..678e4f2843 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -45,6 +45,7 @@
static LLDefaultChildRegistry::Register<LLInboxInventoryPanel> r1("inbox_inventory_panel");
static LLDefaultChildRegistry::Register<LLInboxFolderViewFolder> r2("inbox_folder_view_folder");
+static LLDefaultChildRegistry::Register<LLInboxFolderViewItem> r3("inbox_folder_view_item");
//
@@ -137,7 +138,7 @@ LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge
LLFolderViewItem * LLInboxInventoryPanel::createFolderViewItem(LLInvFVBridge * bridge)
{
- LLFolderViewItem::Params params;
+ LLInboxFolderViewItem::Params params;
params.name = bridge->getDisplayName();
params.icon = bridge->getIcon();
@@ -171,10 +172,6 @@ LLInboxFolderViewFolder::LLInboxFolderViewFolder(const Params& p)
#endif
}
-LLInboxFolderViewFolder::~LLInboxFolderViewFolder()
-{
-}
-
// virtual
void LLInboxFolderViewFolder::draw()
{
@@ -190,6 +187,20 @@ void LLInboxFolderViewFolder::draw()
LLFolderViewFolder::draw();
}
+void LLInboxFolderViewFolder::selectItem()
+{
+ deFreshify();
+
+ LLFolderViewFolder::selectItem();
+}
+
+void LLInboxFolderViewFolder::toggleOpen()
+{
+ deFreshify();
+
+ LLFolderViewFolder::toggleOpen();
+}
+
void LLInboxFolderViewFolder::computeFreshness()
{
const U32 last_expansion_utc = gSavedPerAccountSettings.getU32("LastInventoryInboxActivity");
@@ -218,20 +229,6 @@ void LLInboxFolderViewFolder::deFreshify()
gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
}
-void LLInboxFolderViewFolder::selectItem()
-{
- LLFolderViewFolder::selectItem();
-
- deFreshify();
-}
-
-void LLInboxFolderViewFolder::toggleOpen()
-{
- LLFolderViewFolder::toggleOpen();
-
- deFreshify();
-}
-
void LLInboxFolderViewFolder::setCreationDate(time_t creation_date_utc)
{
mCreationDate = creation_date_utc;
@@ -246,9 +243,87 @@ void LLInboxFolderViewFolder::setCreationDate(time_t creation_date_utc)
// LLInboxFolderViewItem Implementation
//
+LLInboxFolderViewItem::LLInboxFolderViewItem(const Params& p)
+ : LLFolderViewItem(p)
+ , LLBadgeOwner(getHandle())
+ , mFresh(false)
+{
+#if SUPPORTING_FRESH_ITEM_COUNT
+ initBadgeParams(p.new_badge());
+#endif
+}
+
+BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder, LLFolderView* root)
+{
+ BOOL retval = LLFolderViewItem::addToFolder(folder, root);
+
+#if SUPPORTING_FRESH_ITEM_COUNT
+ // Compute freshness if our parent is the root folder for the inbox
+ if (mParentFolder == mRoot)
+ {
+ computeFreshness();
+ }
+#endif
+
+ return retval;
+}
+
BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
{
- return TRUE;
+ deFreshify();
+
+ return LLFolderViewItem::handleDoubleClick(x, y, mask);
+}
+
+// virtual
+void LLInboxFolderViewItem::draw()
+{
+#if SUPPORTING_FRESH_ITEM_COUNT
+ if (!badgeHasParent())
+ {
+ addBadgeToParentPanel();
+ }
+
+ setBadgeVisibility(mFresh);
+#endif
+
+ LLFolderViewItem::draw();
+}
+
+void LLInboxFolderViewItem::selectItem()
+{
+ deFreshify();
+
+ LLFolderViewItem::selectItem();
+}
+
+void LLInboxFolderViewItem::computeFreshness()
+{
+ const U32 last_expansion_utc = gSavedPerAccountSettings.getU32("LastInventoryInboxActivity");
+
+ if (last_expansion_utc > 0)
+ {
+ mFresh = (mCreationDate > last_expansion_utc);
+
+#if DEBUGGING_FRESHNESS
+ if (mFresh)
+ {
+ llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion_utc << llendl;
+ }
+#endif
+ }
+ else
+ {
+ mFresh = true;
+ }
+}
+
+void LLInboxFolderViewItem::deFreshify()
+{
+ mFresh = false;
+
+ gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
}
+
// eof
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index 46eeb9ea7f..d6b827ee3e 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -69,16 +69,15 @@ public:
};
LLInboxFolderViewFolder(const Params& p);
- ~LLInboxFolderViewFolder();
-
+
void draw();
- void computeFreshness();
- void deFreshify();
-
void selectItem();
void toggleOpen();
+ void computeFreshness();
+ void deFreshify();
+
bool isFresh() const { return mFresh; }
protected:
@@ -88,15 +87,35 @@ protected:
};
-class LLInboxFolderViewItem : public LLFolderViewItem
+class LLInboxFolderViewItem : public LLFolderViewItem, public LLBadgeOwner
{
public:
- LLInboxFolderViewItem(const Params& p)
- : LLFolderViewItem(p)
+ struct Params : public LLInitParam::Block<Params, LLFolderViewItem::Params>
{
- }
+ Optional<LLBadge::Params> new_badge;
+
+ Params()
+ : new_badge("new_badge")
+ {
+ }
+ };
+ LLInboxFolderViewItem(const Params& p);
+
+ BOOL addToFolder(LLFolderViewFolder* folder, LLFolderView* root);
BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+
+ void draw();
+
+ void selectItem();
+
+ void computeFreshness();
+ void deFreshify();
+
+ bool isFresh() const { return mFresh; }
+
+protected:
+ bool mFresh;
};
#endif //LL_INBOXINVENTORYPANEL_H
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index 73fb92ff72..12960fd0d6 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -33,13 +33,13 @@
#include "llbutton.h"
#include "llcoros.h"
#include "lleventcoro.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventorypanel.h"
#include "llloadingindicator.h"
#include "llnotificationsutil.h"
#include "llpanelmarketplaceinbox.h"
#include "llsdutil.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "lltimer.h"
#include "llviewernetwork.h"
#include "llagent.h"
@@ -89,16 +89,20 @@ void LLPanelMarketplaceOutbox::handleLoginComplete()
void LLPanelMarketplaceOutbox::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
- sidepanel_inventory->clearSelections(true, true, false);
+ LLSidepanelInventory * sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->clearSelections(true, true, false);
+ }
}
void LLPanelMarketplaceOutbox::onSelectionChange()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->updateVerbs();
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->updateVerbs();
+ }
}
LLInventoryPanel * LLPanelMarketplaceOutbox::setupInventoryPanel()
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 1347a02a52..a9af56f750 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -37,7 +37,6 @@
#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llhints.h"
-#include "llsidetray.h"
#include "llviewercontrol.h"
#include "llviewerdisplayname.h"
@@ -49,16 +48,10 @@
#include "lltabcontainer.h"
#include "lltexturectrl.h"
-#define PICKER_SECOND_LIFE "2nd_life_pic"
-#define PICKER_FIRST_LIFE "real_world_pic"
-#define PANEL_PROFILE "panel_profile"
-
-static LLRegisterPanelClassWrapper<LLPanelMyProfileEdit> t_panel_me_profile_edit("edit_profile_panel");
static LLRegisterPanelClassWrapper<LLPanelMe> t_panel_me_profile("panel_me");
LLPanelMe::LLPanelMe(void)
: LLPanelProfile()
- , mEditPanel(NULL)
{
setAvatarId(gAgent.getID());
}
@@ -73,342 +66,4 @@ BOOL LLPanelMe::postBuild()
void LLPanelMe::onOpen(const LLSD& key)
{
LLPanelProfile::onOpen(key);
-
- // Removed this action as per SOCIAL-431 The first time a new resident opens the profile tab
- // in the sidebar, they see the old profile editing panel
- //
- //// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
- //bool opened = gSavedSettings.getBOOL("MePanelOpened");
- //// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
- //// is the last time onOpen() is called
- //if( !opened && !LLSideTray::getInstance()->getCollapsed() )
- //{
- // buildEditPanel();
- // openPanel(mEditPanel, getAvatarId());
- // gSavedSettings.setBOOL("MePanelOpened", true);
- //}
-}
-
-bool LLPanelMe::notifyChildren(const LLSD& info)
-{
- if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")
- {
- // Implement task panel tri-state behavior.
- //
- // When the button of an active open task panel is clicked, side tray
- // calls notifyChildren() on the panel, passing task-panel-action=>handle-tri-state as an argument.
- // The task panel is supposed to handle this by reverting to the default view,
- // i.e. closing any dependent panels like "pick info" or "profile edit".
-
- bool on_default_view = true;
-
- const LLRect& task_panel_rect = getRect();
- for (LLView* child = getFirstChild(); child; child = findNextSibling(child))
- {
- LLPanel* panel = dynamic_cast<LLPanel*>(child);
- if (!panel)
- continue;
-
- // *HACK: implement panel stack instead (e.g. me->pick_info->pick_edit).
- if (panel->getRect().getWidth() == task_panel_rect.getWidth() &&
- panel->getRect().getHeight() == task_panel_rect.getHeight() &&
- panel->getVisible())
- {
- panel->setVisible(FALSE);
- on_default_view = false;
- }
- }
-
- if (on_default_view)
- LLSideTray::getInstance()->collapseSideBar();
-
- return true; // this notification is only supposed to be handled by task panels
- }
-
- return LLPanel::notifyChildren(info);
-}
-
-void LLPanelMe::buildEditPanel()
-{
- if (NULL == mEditPanel)
- {
- mEditPanel = new LLPanelMyProfileEdit();
-
- // Note: Remove support for editing profile through this method.
- // All profile editing should go through the web.
- //mEditPanel->childSetAction("save_btn", boost::bind(&LLPanelMe::onSaveChangesClicked, this), this);
-
- mEditPanel->childSetAction("cancel_btn", boost::bind(&LLPanelMe::onCancelClicked, this), this);
- }
-}
-
-
-void LLPanelMe::onEditProfileClicked()
-{
- buildEditPanel();
- togglePanel(mEditPanel, getAvatarId()); // open
-}
-
-void LLPanelMe::onCancelClicked()
-{
- togglePanel(mEditPanel); // close
-}
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLPanelMyProfileEdit::LLPanelMyProfileEdit()
- : LLPanelMyProfile()
-{
- buildFromFile( "panel_edit_profile.xml");
-
- setAvatarId(gAgent.getID());
-
- LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLPanelMyProfileEdit::onAvatarNameChanged, this));
-}
-
-void LLPanelMyProfileEdit::onOpen(const LLSD& key)
-{
- resetData();
-
- // Disable editing until data is loaded, or edited fields will be overwritten when data
- // is loaded.
- enableEditing(false);
-
- // force new avatar name fetch so we have latest update time
- LLAvatarNameCache::fetch(gAgent.getID());
- LLPanelMyProfile::onOpen(getAvatarId());
-
- LLAvatarName av_name;
- if (LLAvatarNameCache::useDisplayNames())
- {
- if (LLAvatarNameCache::get(gAgent.getID(), &av_name) && av_name.mIsDisplayNameDefault)
- {
- LLFirstUse::setDisplayName();
- }
- else
- {
- LLFirstUse::setDisplayName(false);
- }
- }
-
- if (LLAvatarNameCache::useDisplayNames())
- {
- getChild<LLUICtrl>("user_label")->setVisible( true );
- getChild<LLUICtrl>("user_slid")->setVisible( true );
- getChild<LLUICtrl>("display_name_label")->setVisible( true );
- getChild<LLUICtrl>("set_name")->setVisible( true );
- getChild<LLUICtrl>("set_name")->setEnabled( true );
- getChild<LLUICtrl>("solo_user_name")->setVisible( false );
- getChild<LLUICtrl>("solo_username_label")->setVisible( false );
- }
- else
- {
- getChild<LLUICtrl>("user_label")->setVisible( false );
- getChild<LLUICtrl>("user_slid")->setVisible( false );
- getChild<LLUICtrl>("display_name_label")->setVisible( false );
- getChild<LLUICtrl>("set_name")->setVisible( false );
- getChild<LLUICtrl>("set_name")->setEnabled( false );
- getChild<LLUICtrl>("solo_user_name")->setVisible( true );
- getChild<LLUICtrl>("solo_username_label")->setVisible( true );
- }
-}
-
-void LLPanelMyProfileEdit::onClose(const LLSD& key)
-{
- if (LLAvatarNameCache::useDisplayNames())
- {
- LLFirstUse::setDisplayName(false);
- }
-}
-
-void LLPanelMyProfileEdit::processProperties(void* data, EAvatarProcessorType type)
-{
- if(APT_PROPERTIES == type)
- {
- const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
- if(avatar_data && getAvatarId() == avatar_data->avatar_id)
- {
- // *TODO dzaporozhan
- // Workaround for ticket EXT-1099, waiting for fix for ticket EXT-1128
- enableEditing(true);
- processProfileProperties(avatar_data);
- LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
- }
- }
-}
-
-void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_data)
-{
- fillCommonData(avatar_data);
-
- // 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix EXT-4734
- // Show 'Home page' in Edit My Profile (EXT-4873)
- getChildView("homepage_edit")->setVisible( true);
-
- fillPartnerData(avatar_data);
-
- fillAccountStatus(avatar_data);
-
- getChild<LLUICtrl>("show_in_search_checkbox")->setValue((BOOL)(avatar_data->flags & AVATAR_ALLOW_PUBLISH));
-
- LLAvatarNameCache::get(avatar_data->avatar_id,
- boost::bind(&LLPanelMyProfileEdit::onNameCache, this, _1, _2));
-}
-
-void LLPanelMyProfileEdit::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
-{
- getChild<LLUICtrl>("user_name")->setValue( av_name.mDisplayName );
- getChild<LLUICtrl>("user_slid")->setValue( av_name.mUsername );
- getChild<LLUICtrl>("user_name_small")->setValue( av_name.mDisplayName );
- getChild<LLUICtrl>("solo_user_name")->setValue( av_name.mDisplayName );
-
-
- if (LLAvatarNameCache::useDisplayNames())
- {
- getChild<LLUICtrl>("user_label")->setVisible( true );
- getChild<LLUICtrl>("user_slid")->setVisible( true );
- getChild<LLUICtrl>("display_name_label")->setVisible( true );
- getChild<LLUICtrl>("set_name")->setVisible( true );
- getChild<LLUICtrl>("set_name")->setEnabled( true );
-
- getChild<LLUICtrl>("solo_user_name")->setVisible( false );
- getChild<LLUICtrl>("solo_username_label")->setVisible( false );
-
- // show smaller display name if too long to display in regular size
- if (getChild<LLTextBox>("user_name")->getTextPixelWidth() > getChild<LLTextBox>("user_name")->getRect().getWidth())
- {
- getChild<LLUICtrl>("user_name_small")->setVisible( true );
- getChild<LLUICtrl>("user_name")->setVisible( false );
- }
- else
- {
- getChild<LLUICtrl>("user_name_small")->setVisible( false );
- getChild<LLUICtrl>("user_name")->setVisible( true );
- }
- }
- else
- {
- getChild<LLUICtrl>("user_label")->setVisible( false );
- getChild<LLUICtrl>("user_slid")->setVisible( false );
- getChild<LLUICtrl>("display_name_label")->setVisible( false );
- getChild<LLUICtrl>("set_name")->setVisible( false );
- getChild<LLUICtrl>("set_name")->setEnabled( false );
-
- getChild<LLUICtrl>("solo_user_name")->setVisible( true );
- getChild<LLUICtrl>("user_name_small")->setVisible( false );
- getChild<LLUICtrl>("user_name")->setVisible( false );
- getChild<LLUICtrl>("solo_username_label")->setVisible( true );
- }
-}
-
-
-void LLPanelMyProfileEdit::onAvatarNameChanged()
-{
- LLAvatarNameCache::get(getAvatarId(),
- boost::bind(&LLPanelMyProfileEdit::onNameCache, this, _1, _2));
-}
-
-BOOL LLPanelMyProfileEdit::postBuild()
-{
- initTexturePickerMouseEvents();
-
- getChild<LLUICtrl>("partner_edit_link")->setTextArg("[URL]", getString("partner_edit_link_url"));
- getChild<LLUICtrl>("my_account_link")->setTextArg("[URL]", getString("my_account_link_url"));
-
- getChild<LLUICtrl>("set_name")->setCommitCallback(
- boost::bind(&LLPanelMyProfileEdit::onClickSetName, this));
-
- LLHints::registerHintTarget("set_display_name", getChild<LLUICtrl>("set_name")->getHandle());
- LLViewerDisplayName::addNameChangedCallback(boost::bind(&LLPanelMyProfileEdit::onAvatarNameChanged, this));
- return LLPanelAvatarProfile::postBuild();
-}
-/**
- * Inits map with texture picker and appropriate edit icon.
- * Sets callbacks of Mouse Enter and Mouse Leave signals of Texture Pickers
- */
-void LLPanelMyProfileEdit::initTexturePickerMouseEvents()
-{
- LLTextureCtrl* text_pic = getChild<LLTextureCtrl>(PICKER_SECOND_LIFE);
- LLIconCtrl* text_icon = getChild<LLIconCtrl>("2nd_life_edit_icon");
- mTextureEditIconMap[text_pic->getName()] = text_icon;
- text_pic->setMouseEnterCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseEnter, this, _1));
- text_pic->setMouseLeaveCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseLeave, this, _1));
- text_icon->setVisible(FALSE);
-
- text_pic = getChild<LLTextureCtrl>(PICKER_FIRST_LIFE);
- text_icon = getChild<LLIconCtrl>("real_world_edit_icon");
- mTextureEditIconMap[text_pic->getName()] = text_icon;
- text_pic->setMouseEnterCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseEnter, this, _1));
- text_pic->setMouseLeaveCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseLeave, this, _1));
- text_icon->setVisible(FALSE);
-}
-
-void LLPanelMyProfileEdit::resetData()
-{
- LLPanelMyProfile::resetData();
-
- //childSetTextArg("name_text", "[FIRST]", LLStringUtil::null);
- //childSetTextArg("name_text", "[LAST]", LLStringUtil::null);
- getChild<LLUICtrl>("user_name")->setValue( LLSD() );
- getChild<LLUICtrl>("user_slid")->setValue( LLSD() );
- getChild<LLUICtrl>("solo_user_name")->setValue( LLSD() );
- getChild<LLUICtrl>("user_name_small")->setValue( LLSD() );
-}
-
-void LLPanelMyProfileEdit::onTexturePickerMouseEnter(LLUICtrl* ctrl)
-{
- mTextureEditIconMap[ctrl->getName()]->setVisible(TRUE);
-}
-void LLPanelMyProfileEdit::onTexturePickerMouseLeave(LLUICtrl* ctrl)
-{
- mTextureEditIconMap[ctrl->getName()]->setVisible(FALSE);
-}
-
-void LLPanelMyProfileEdit::onClickSetName()
-{
- LLAvatarNameCache::get(getAvatarId(),
- boost::bind(&LLPanelMyProfileEdit::onAvatarNameCache,
- this, _1, _2));
-
- LLFirstUse::setDisplayName(false);
-}
-
-void LLPanelMyProfileEdit::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
-{
- if (av_name.mDisplayName.empty())
- {
- // something is wrong, tell user to try again later
- LLNotificationsUtil::add("SetDisplayNameFailedGeneric");
- return;
- }
-
- llinfos << "name-change now " << LLDate::now() << " next_update "
- << LLDate(av_name.mNextUpdate) << llendl;
- F64 now_secs = LLDate::now().secondsSinceEpoch();
-
- if (now_secs < av_name.mNextUpdate)
- {
- // if the update time is more than a year in the future, it means updates have been blocked
- // show a more general message
- const int YEAR = 60*60*24*365;
- if (now_secs + YEAR < av_name.mNextUpdate)
- {
- LLNotificationsUtil::add("SetDisplayNameBlocked");
- return;
- }
- }
-
- LLFloaterReg::showInstance("display_name");
-}
-
-void LLPanelMyProfileEdit::enableEditing(bool enable)
-{
- getChildView("2nd_life_pic")->setEnabled(enable);
- getChildView("real_world_pic")->setEnabled(enable);
- getChildView("sl_description_edit")->setEnabled(enable);
- getChildView("fl_description_edit")->setEnabled(enable);
- getChildView("homepage_edit")->setEnabled(enable);
- getChildView("show_in_search_checkbox")->setEnabled(enable);
}
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
index f27f5a268e..60e9d4317d 100644
--- a/indra/newview/llpanelme.h
+++ b/indra/newview/llpanelme.h
@@ -30,15 +30,9 @@
#include "llpanel.h"
#include "llpanelprofile.h"
-class LLAvatarName;
-class LLPanelMyProfileEdit;
-class LLPanelProfile;
-class LLIconCtrl;
-
/**
-* Panel for displaying Agent's profile, it consists of two sub panels - Profile
-* and Picks.
-* LLPanelMe allows user to edit his profile and picks.
+* Panel for displaying Agent's Picks and Classifieds panel.
+* LLPanelMe allows user to edit his picks and classifieds.
*/
class LLPanelMe : public LLPanelProfile
{
@@ -49,64 +43,8 @@ public:
LLPanelMe();
/*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ bool notifyChildren(const LLSD& info);
/*virtual*/ BOOL postBuild();
-
-private:
-
- void buildEditPanel();
-
- void onEditProfileClicked();
- void onCancelClicked();
-
- LLPanelMyProfileEdit * mEditPanel;
-
-};
-
-class LLPanelMyProfileEdit : public LLPanelMyProfile
-{
- LOG_CLASS(LLPanelMyProfileEdit);
-
-public:
-
- LLPanelMyProfileEdit();
-
- /*virtual*/void processProperties(void* data, EAvatarProcessorType type);
-
- /*virtual*/BOOL postBuild();
-
- /*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ void onClose(const LLSD& key);
-
- void onAvatarNameChanged();
-
-protected:
-
- /*virtual*/void resetData();
-
- void processProfileProperties(const LLAvatarData* avatar_data);
- void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
-
-private:
- void initTexturePickerMouseEvents();
- void onTexturePickerMouseEnter(LLUICtrl* ctrl);
- void onTexturePickerMouseLeave(LLUICtrl* ctrl);
- void onClickSetName();
- void onAvatarNameCache(const LLUUID& id, const LLAvatarName& av_name);
-
- /**
- * Enabled/disables controls to prevent overwriting edited data upon receiving
- * current data from server.
- */
- void enableEditing(bool enable);
-
-
-
-private:
- // map TexturePicker name => Edit Icon pointer should be visible while hovering Texture Picker
- typedef std::map<std::string, LLIconCtrl*> texture_edit_icon_map_t;
- texture_edit_icon_map_t mTextureEditIconMap;
};
#endif // LL_LLPANELMEPROFILE_H
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 2bbd15ae11..c01adc3c35 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -52,6 +52,7 @@
#include "llvovolume.h"
#include "llstatusbar.h"
#include "llsdutil.h"
+#include "llvieweraudio.h"
#include "llfloaterreg.h"
#include "llfloaterpreference.h" // for the gear icon
@@ -807,14 +808,26 @@ bool LLPanelNearByMedia::setDisabled(const LLUUID &row_id, bool disabled)
{
if (row_id == PARCEL_AUDIO_LIST_ITEM_UUID)
{
- if (disabled) onClickParcelAudioStop();
- else onClickParcelAudioStart();
+ if (disabled)
+ {
+ onClickParcelAudioStop();
+ }
+ else
+ {
+ onClickParcelAudioPlay();
+ }
return true;
}
else if (row_id == PARCEL_MEDIA_LIST_ITEM_UUID)
{
- if (disabled) onClickDisableParcelMedia();
- else onClickEnableParcelMedia();
+ if (disabled)
+ {
+ onClickDisableParcelMedia();
+ }
+ else
+ {
+ onClickEnableParcelMedia();
+ }
return true;
}
else {
@@ -857,24 +870,11 @@ 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;
@@ -883,8 +883,9 @@ void LLPanelNearByMedia::onClickParcelAudioPlay()
// 'false' means unpause
gAudiop->pauseInternetStream(false);
}
- else {
- gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+ else
+ {
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLViewerMedia::getParcelAudioURL());
}
}
@@ -894,11 +895,10 @@ void LLPanelNearByMedia::onClickParcelAudioStop()
// re-start audio when i.e. they move to another parcel, until
// they explicitly start it again.
mParcelAudioAutoStart = false;
-
if (!gAudiop)
return;
- gAudiop->stopInternetStream();
+ LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
}
void LLPanelNearByMedia::onClickParcelAudioPause()
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index be4d313743..c3634de9b4 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -115,7 +115,6 @@ private:
void onClickParcelMediaPause();
void onClickParcelAudioPlay();
void onClickParcelAudioStop();
- void onClickParcelAudioStart();
void onClickParcelAudioPause();
void onCheckAutoPlay();
void onAdvancedButtonClick();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 44364b5831..98ea680504 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -57,7 +57,6 @@
#include "llpreviewtexture.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltooldraganddrop.h"
#include "lltrans.h"
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index a90f864ae2..f90236f6f2 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -31,6 +31,7 @@
#include "llnotificationsutil.h"
#include "lltabcontainer.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llagentwearables.h"
@@ -40,7 +41,6 @@
#include "llpanelwearing.h"
#include "llsaveoutfitcombobtn.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerfoldertype.h"
static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";
@@ -222,7 +222,7 @@ void LLPanelOutfitsInventory::onSave()
//static
LLPanelOutfitsInventory* LLPanelOutfitsInventory::findInstance()
{
- return dynamic_cast<LLPanelOutfitsInventory*>(LLSideTray::getInstance()->getPanel("panel_outfits_inventory"));
+ return dynamic_cast<LLPanelOutfitsInventory*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfits_inventory"));
}
//////////////////////////////////////////////////////////////////////////////////
@@ -319,8 +319,7 @@ void LLPanelOutfitsInventory::onWearablesLoading()
// static
LLSidepanelAppearance* LLPanelOutfitsInventory::getAppearanceSP()
{
- static LLSidepanelAppearance* panel_appearance =
- dynamic_cast<LLSidepanelAppearance*>
- (LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance* panel_appearance =
+ dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
return panel_appearance;
}
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e3a7b749ea..d5e289e6e6 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -29,6 +29,7 @@
// libs
#include "llavatarname.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmenubutton.h"
#include "llmenugl.h"
#include "llnotificationsutil.h"
@@ -56,7 +57,6 @@
#include "llinventoryobserver.h"
#include "llnetmap.h"
#include "llpanelpeoplemenus.h"
-#include "llsidetray.h"
#include "llsidetraypanelcontainer.h"
#include "llrecentpeople.h"
#include "llviewercontrol.h" // for gSavedSettings
@@ -526,11 +526,11 @@ LLPanelPeople::~LLPanelPeople()
LLVoiceClient::getInstance()->removeObserver(this);
}
- LLView::deleteViewByHandle(mGroupPlusMenuHandle);
- LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
- LLView::deleteViewByHandle(mFriendsViewSortMenuHandle);
- LLView::deleteViewByHandle(mGroupsViewSortMenuHandle);
- LLView::deleteViewByHandle(mRecentViewSortMenuHandle);
+ delete mGroupPlusMenuHandle.get();
+ delete mNearbyViewSortMenuHandle.get();
+ delete mFriendsViewSortMenuHandle.get();
+ delete mGroupsViewSortMenuHandle.get();
+ delete mRecentViewSortMenuHandle.get();
}
@@ -1283,6 +1283,10 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
mAllFriendList->showPermissions(show_permissions);
mOnlineFriendList->showPermissions(show_permissions);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
void LLPanelPeople::onGroupsViewSortMenuItemClicked(const LLSD& userdata)
@@ -1315,6 +1319,10 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata)
{
setSortOrder(mNearbyList, E_SORT_BY_DISTANCE);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata)
@@ -1348,6 +1356,10 @@ void LLPanelPeople::onRecentViewSortMenuItemClicked(const LLSD& userdata)
{
mRecentList->toggleIcons();
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata)
@@ -1439,7 +1451,7 @@ bool LLPanelPeople::notifyChildren(const LLSD& info)
container->onOpen(LLSD().with(LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME, getName()));
}
else
- LLSideTray::getInstance()->collapseSideBar();
+ LLFloaterReg::hideInstance("people");
return true; // this notification is only supposed to be handled by task panels
}
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index ddce83c616..cfbc8f1a94 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -35,6 +35,7 @@
#include "lldispatcher.h"
#include "llflatlistview.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llnotificationsutil.h"
#include "lltexturectrl.h"
@@ -48,11 +49,11 @@
#include "llaccordionctrl.h"
#include "llaccordionctrltab.h"
#include "llavatarpropertiesprocessor.h"
+#include "llfloatersidepanelcontainer.h"
#include "llpanelavatar.h"
#include "llpanelprofile.h"
#include "llpanelpick.h"
#include "llpanelclassified.h"
-#include "llsidetray.h"
static const std::string XML_BTN_NEW = "new_btn";
static const std::string XML_BTN_DELETE = "trash_btn";
@@ -129,11 +130,14 @@ public:
void createPick()
{
- LLSD params;
- params["id"] = gAgent.getID();
- params["open_tab_name"] = "panel_picks";
- params["show_tab_panel"] = "create_pick";
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ // open the new pick panel on the Picks floater
+ LLFloater* picks_floater = LLFloaterReg::showInstance("picks");
+
+ LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks");
+ if (picks)
+ {
+ picks->createNewPick();
+ }
}
void editPick(LLPickData* pick_info)
@@ -146,8 +150,7 @@ public:
params["snapshot_id"] = pick_info->snapshot_id;
params["pick_name"] = pick_info->name;
params["pick_desc"] = pick_info->desc;
-
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("picks", params);
}
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)
@@ -247,12 +250,14 @@ public:
void createClassified()
{
- // open the new classified panel on the Me > Picks sidetray
- LLSD params;
- params["id"] = gAgent.getID();
- params["open_tab_name"] = "panel_picks";
- params["show_tab_panel"] = "create_classified";
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ // open the new classified panel on the Picks floater
+ LLFloater* picks_floater = LLFloaterReg::showInstance("picks");
+
+ LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks");
+ if (picks)
+ {
+ picks->createNewClassified();
+ }
}
void openClassified(LLAvatarClassifiedInfo* c_info)
@@ -270,7 +275,7 @@ public:
params["classified_name"] = c_info->name;
params["classified_desc"] = c_info->description;
params["from_search"] = true;
- LLSideTray::getInstance()->showPanel("panel_profile_view", params);
+ LLFloaterSidePanelContainer::showPanel("picks", params);
}
else if (mRequestVerb == "edit")
{
@@ -283,7 +288,7 @@ public:
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "edit_classified";
params["classified_id"] = c_info->classified_id;
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
else
{
@@ -1043,13 +1048,10 @@ void LLPanelPicks::createPickInfoPanel()
void LLPanelPicks::createClassifiedInfoPanel()
{
- if(!mPanelClassifiedInfo)
- {
- mPanelClassifiedInfo = LLPanelClassifiedInfo::create();
- mPanelClassifiedInfo->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedInfo));
- mPanelClassifiedInfo->setEditClassifiedCallback(boost::bind(&LLPanelPicks::onPanelClassifiedEdit, this));
- mPanelClassifiedInfo->setVisible(FALSE);
- }
+ mPanelClassifiedInfo = LLPanelClassifiedInfo::create();
+ mPanelClassifiedInfo->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedInfo));
+ mPanelClassifiedInfo->setEditClassifiedCallback(boost::bind(&LLPanelPicks::onPanelClassifiedEdit, this));
+ mPanelClassifiedInfo->setVisible(FALSE);
}
void LLPanelPicks::createClassifiedEditPanel(LLPanelClassifiedEdit** panel)
@@ -1067,14 +1069,11 @@ void LLPanelPicks::createClassifiedEditPanel(LLPanelClassifiedEdit** panel)
void LLPanelPicks::createPickEditPanel()
{
- if(!mPanelPickEdit)
- {
- mPanelPickEdit = LLPanelPickEdit::create();
- mPanelPickEdit->setExitCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
- mPanelPickEdit->setSaveCallback(boost::bind(&LLPanelPicks::onPanelPickSave, this, mPanelPickEdit));
- mPanelPickEdit->setCancelCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
- mPanelPickEdit->setVisible(FALSE);
- }
+ mPanelPickEdit = LLPanelPickEdit::create();
+ mPanelPickEdit->setExitCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
+ mPanelPickEdit->setSaveCallback(boost::bind(&LLPanelPicks::onPanelPickSave, this, mPanelPickEdit));
+ mPanelPickEdit->setCancelCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
+ mPanelPickEdit->setVisible(FALSE);
}
// void LLPanelPicks::openPickEditPanel(LLPickItem* pick)
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 29db110523..3bb7413ac3 100755
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -82,6 +82,9 @@ public:
// parent panels failed to work (picks related code was in my profile panel)
void setProfilePanel(LLPanelProfile* profile_panel);
+ void createNewPick();
+ void createNewClassified();
+
protected:
/*virtual*/void updateButtons();
@@ -115,9 +118,6 @@ private:
bool onEnableMenuItem(const LLSD& user_data);
- void createNewPick();
- void createNewClassified();
-
void openPickInfo();
void openClassifiedInfo();
void openClassifiedInfo(const LLSD& params);
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 1e510a2d7b..6d321d4716 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -39,6 +39,7 @@
#include "llfiltereditor.h"
#include "llfirstuse.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "lltabcontainer.h"
@@ -64,7 +65,6 @@
#include "llpanelplaceprofile.h"
#include "llpanelteleporthistory.h"
#include "llremoteparcelrequest.h"
-#include "llsidetray.h"
#include "llteleporthistorystorage.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
@@ -82,6 +82,7 @@ static const std::string CREATE_LANDMARK_INFO_TYPE = "create_landmark";
static const std::string LANDMARK_INFO_TYPE = "landmark";
static const std::string REMOTE_PLACE_INFO_TYPE = "remote_place";
static const std::string TELEPORT_HISTORY_INFO_TYPE = "teleport_history";
+static const std::string LANDMARK_TAB_INFO_TYPE = "open_landmark_tab";
// Support for secondlife:///app/parcel/{UUID}/about SLapps
class LLParcelHandler : public LLCommandHandler
@@ -115,7 +116,7 @@ public:
LLSD key;
key["type"] = "remote_place";
key["id"] = parcel_id;
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
return true;
}
}
@@ -151,18 +152,16 @@ class LLPlacesInventoryObserver : public LLInventoryAddedObserver
{
public:
LLPlacesInventoryObserver(LLPanelPlaces* places_panel) :
- mPlaces(places_panel),
- mTabsCreated(false)
+ mPlaces(places_panel)
{}
/*virtual*/ void changed(U32 mask)
{
LLInventoryAddedObserver::changed(mask);
- if (!mTabsCreated && mPlaces)
+ if (mPlaces && !mPlaces->tabsCreated())
{
mPlaces->createTabs();
- mTabsCreated = true;
}
}
@@ -175,7 +174,6 @@ protected:
private:
LLPanelPlaces* mPlaces;
- bool mTabsCreated;
};
class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver
@@ -244,7 +242,8 @@ LLPanelPlaces::LLPanelPlaces()
mPlaceMenu(NULL),
mLandmarkMenu(NULL),
mPosGlobal(),
- isLandmarkEditModeOn(false)
+ isLandmarkEditModeOn(false),
+ mTabsCreated(false)
{
mParcelObserver = new LLPlacesParcelObserver(this);
mInventoryObserver = new LLPlacesInventoryObserver(this);
@@ -252,7 +251,7 @@ LLPanelPlaces::LLPanelPlaces()
gInventory.addObserver(mInventoryObserver);
- LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
+ mAgentParcelChangedConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLPanelPlaces::updateVerbs, this));
//buildFromFile( "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
@@ -268,6 +267,11 @@ LLPanelPlaces::~LLPanelPlaces()
delete mInventoryObserver;
delete mParcelObserver;
delete mRemoteParcelObserver;
+
+ if (mAgentParcelChangedConnection.connected())
+ {
+ mAgentParcelChangedConnection.disconnect();
+ }
}
BOOL LLPanelPlaces::postBuild()
@@ -349,6 +353,9 @@ BOOL LLPanelPlaces::postBuild()
LLComboBox* folder_combo = mLandmarkInfo->getChild<LLComboBox>("folder_combo");
folder_combo->setCommitCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this));
+ createTabs();
+ updateVerbs();
+
return TRUE;
}
@@ -359,83 +366,104 @@ void LLPanelPlaces::onOpen(const LLSD& key)
if (key.size() != 0)
{
- mFilterEditor->clear();
- onFilterEdit("", false);
-
- mPlaceInfoType = key["type"].asString();
- mPosGlobal.setZero();
- mItem = NULL;
- isLandmarkEditModeOn = false;
- togglePlaceInfoPanel(TRUE);
-
- if (mPlaceInfoType == AGENT_INFO_TYPE)
+ std::string key_type = key["type"].asString();
+ if (key_type == LANDMARK_TAB_INFO_TYPE)
{
- mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT);
+ // Small hack: We need to toggle twice. The first toggle moves from the Landmark
+ // or Teleport History info panel to the Landmark or Teleport History list panel.
+ // For this first toggle, the mPlaceInfoType should be the one previously used so
+ // that the state can be corretly set.
+ // The second toggle forces the list to be set to Landmark.
+ // This avoids extracting and duplicating all the state logic from togglePlaceInfoPanel()
+ // here or some specific private method
+ togglePlaceInfoPanel(FALSE);
+ mPlaceInfoType = key_type;
+ togglePlaceInfoPanel(FALSE);
+ // Update the active tab
+ onTabSelected();
+ // Update the buttons at the bottom of the panel
+ updateVerbs();
}
- else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
+ else
{
- mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);
+ mFilterEditor->clear();
+ onFilterEdit("", false);
- if (key.has("x") && key.has("y") && key.has("z"))
+ mPlaceInfoType = key_type;
+ mPosGlobal.setZero();
+ mItem = NULL;
+ isLandmarkEditModeOn = false;
+ togglePlaceInfoPanel(TRUE);
+
+ if (mPlaceInfoType == AGENT_INFO_TYPE)
{
- mPosGlobal = LLVector3d(key["x"].asReal(),
- key["y"].asReal(),
- key["z"].asReal());
+ mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT);
}
- else
+ else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
{
- mPosGlobal = gAgent.getPositionGlobal();
+ mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);
+
+ if (key.has("x") && key.has("y") && key.has("z"))
+ {
+ mPosGlobal = LLVector3d(key["x"].asReal(),
+ key["y"].asReal(),
+ key["z"].asReal());
+ }
+ else
+ {
+ mPosGlobal = gAgent.getPositionGlobal();
+ }
+
+ mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal);
+
+ mSaveBtn->setEnabled(FALSE);
}
-
- mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal);
-
- mSaveBtn->setEnabled(FALSE);
- }
- else if (mPlaceInfoType == LANDMARK_INFO_TYPE)
- {
- mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
-
- LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());
- if (!item)
- return;
-
- setItem(item);
- }
- else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)
- {
- if (key.has("id"))
+ else if (mPlaceInfoType == LANDMARK_INFO_TYPE)
{
- LLUUID parcel_id = key["id"].asUUID();
- mPlaceProfile->setParcelID(parcel_id);
+ mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
- // query the server to get the global 3D position of this
- // parcel - we need this for teleport/mapping functions.
- mRemoteParcelObserver->setParcelID(parcel_id);
+ LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());
+ if (!item)
+ return;
+
+ setItem(item);
}
- else
+ else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)
{
- mPosGlobal = LLVector3d(key["x"].asReal(),
- key["y"].asReal(),
- key["z"].asReal());
- mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+ if (key.has("id"))
+ {
+ LLUUID parcel_id = key["id"].asUUID();
+ mPlaceProfile->setParcelID(parcel_id);
+
+ // query the server to get the global 3D position of this
+ // parcel - we need this for teleport/mapping functions.
+ mRemoteParcelObserver->setParcelID(parcel_id);
+ }
+ else
+ {
+ mPosGlobal = LLVector3d(key["x"].asReal(),
+ key["y"].asReal(),
+ key["z"].asReal());
+ mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+ }
+
+ mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE);
}
+ else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
+ {
+ S32 index = key["id"].asInteger();
- mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE);
- }
- else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
- {
- S32 index = key["id"].asInteger();
+ const LLTeleportHistoryStorage::slurl_list_t& hist_items =
+ LLTeleportHistoryStorage::getInstance()->getItems();
- const LLTeleportHistoryStorage::slurl_list_t& hist_items =
- LLTeleportHistoryStorage::getInstance()->getItems();
+ mPosGlobal = hist_items[index].mGlobalPos;
- mPosGlobal = hist_items[index].mGlobalPos;
+ mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY);
+ mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+ }
- mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY);
- mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+ updateVerbs();
}
-
- updateVerbs();
}
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
@@ -936,7 +964,8 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
}
}
else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE ||
- mPlaceInfoType == LANDMARK_INFO_TYPE)
+ mPlaceInfoType == LANDMARK_INFO_TYPE ||
+ mPlaceInfoType == LANDMARK_TAB_INFO_TYPE)
{
mLandmarkInfo->setVisible(visible);
@@ -954,13 +983,15 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
{
LLLandmarksPanel* landmarks_panel =
dynamic_cast<LLLandmarksPanel*>(mTabContainer->getPanelByName("Landmarks"));
- if (landmarks_panel && mItem.notNull())
+ if (landmarks_panel)
{
// If a landmark info is being closed we open the landmarks tab
// and set this landmark selected.
mTabContainer->selectTabPanel(landmarks_panel);
-
- landmarks_panel->setItemSelected(mItem->getUUID(), TRUE);
+ if (mItem.notNull())
+ {
+ landmarks_panel->setItemSelected(mItem->getUUID(), TRUE);
+ }
}
}
}
@@ -1025,7 +1056,7 @@ void LLPanelPlaces::changedParcelSelection()
void LLPanelPlaces::createTabs()
{
- if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance()))
+ if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance() && !mTabsCreated))
return;
LLLandmarksPanel* landmarks_panel = new LLLandmarksPanel();
@@ -1059,6 +1090,8 @@ void LLPanelPlaces::createTabs()
// Filter applied to show all items.
if (mActivePanel)
mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());
+
+ mTabsCreated = true;
}
void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
@@ -1155,7 +1188,8 @@ LLPanelPlaceInfo* LLPanelPlaces::getCurrentInfoPanel()
return mPlaceProfile;
}
else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE ||
- mPlaceInfoType == LANDMARK_INFO_TYPE)
+ mPlaceInfoType == LANDMARK_INFO_TYPE ||
+ mPlaceInfoType == LANDMARK_TAB_INFO_TYPE)
{
return mLandmarkInfo;
}
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index b335f88a48..85bdc2c4e1 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -77,6 +77,8 @@ public:
std::string getPlaceInfoType() { return mPlaceInfoType; }
+ bool tabsCreated() { return mTabsCreated;}
+
/*virtual*/ S32 notifyParent(const LLSD& info);
private:
@@ -146,7 +148,12 @@ private:
bool isLandmarkEditModeOn;
+ // Holds info whether "My Landmarks" and "Teleport History" tabs have been created.
+ bool mTabsCreated;
+
LLSafeHandle<LLParcelSelection> mParcel;
+
+ boost::signals2::connection mAgentParcelChangedConnection;
};
#endif //LL_LLPANELPLACES_H
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index fd5c3362bb..b1eeabb028 100755
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -38,7 +38,6 @@
#include "llviewernetwork.h"
static const std::string PANEL_PICKS = "panel_picks";
-static const std::string PANEL_PROFILE = "panel_profile";
std::string getProfileURL(const std::string& agent_name)
{
@@ -72,7 +71,7 @@ public:
std::string agent_name = params[0];
llinfos << "Profile, agent_name " << agent_name << llendl;
std::string url = getProfileURL(agent_name);
- LLWeb::loadWebURLInternal(url);
+ LLWeb::loadURLInternal(url);
return true;
}
@@ -168,6 +167,23 @@ LLPanelProfile::ChildStack::ChildStack()
{
}
+LLPanelProfile::ChildStack::~ChildStack()
+{
+ while (mStack.size() != 0)
+ {
+ view_list_t& top = mStack.back();
+ for (view_list_t::const_iterator it = top.begin(); it != top.end(); ++it)
+ {
+ LLView* viewp = *it;
+ if (viewp)
+ {
+ delete viewp;
+ }
+ }
+ mStack.pop_back();
+ }
+}
+
void LLPanelProfile::ChildStack::setParent(LLPanel* parent)
{
llassert_always(parent != NULL);
@@ -261,7 +277,6 @@ void LLPanelProfile::ChildStack::dump()
LLPanelProfile::LLPanelProfile()
: LLPanel()
- , mTabCtrl(NULL)
, mAvatarId(LLUUID::null)
{
mChildStack.setParent(this);
@@ -269,15 +284,10 @@ LLPanelProfile::LLPanelProfile()
BOOL LLPanelProfile::postBuild()
{
- mTabCtrl = getChild<LLTabContainer>("tabs");
-
- getTabCtrl()->setCommitCallback(boost::bind(&LLPanelProfile::onTabSelected, this, _2));
-
LLPanelPicks* panel_picks = findChild<LLPanelPicks>(PANEL_PICKS);
panel_picks->setProfilePanel(this);
getTabContainer()[PANEL_PICKS] = panel_picks;
- getTabContainer()[PANEL_PROFILE] = findChild<LLPanelAvatarProfile>(PANEL_PROFILE);
return TRUE;
}
@@ -293,18 +303,7 @@ void LLPanelProfile::reshape(S32 width, S32 height, BOOL called_from_parent)
void LLPanelProfile::onOpen(const LLSD& key)
{
- // open the desired panel
- if (key.has("open_tab_name"))
- {
- getTabContainer()[PANEL_PICKS]->onClosePanel();
-
- // onOpen from selected panel will be called from onTabSelected callback
- getTabCtrl()->selectTabByName(key["open_tab_name"]);
- }
- else
- {
- getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
- }
+ getTabContainer()[PANEL_PICKS]->onOpen(getAvatarId());
// support commands to open further pieces of UI
if (key.has("show_tab_panel"))
@@ -362,23 +361,6 @@ void LLPanelProfile::onOpen(const LLSD& key)
}
}
-void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
-{
- // TRUE - we need to open/expand "panel"
- bool expand = getChildList()->front() != panel; // mTabCtrl->getVisible();
-
- if (expand)
- {
- openPanel(panel, key);
- }
- else
- {
- closePanel(panel);
-
- getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
- }
-}
-
void LLPanelProfile::onTabSelected(const LLSD& param)
{
std::string tab_name = param.asString();
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index fca359f51e..d97f60ed22 100755
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -46,8 +46,6 @@ public:
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void onOpen(const LLSD& key);
- virtual void togglePanel(LLPanel*, const LLSD& key = LLSD());
-
virtual void openPanel(LLPanel* panel, const LLSD& params);
virtual void closePanel(LLPanel* panel);
@@ -60,8 +58,6 @@ protected:
virtual void onTabSelected(const LLSD& param);
- LLTabContainer* getTabCtrl() { return mTabCtrl; }
-
const LLUUID& getAvatarId() { return mAvatarId; }
void setAvatarId(const LLUUID& avatar_id) { mAvatarId = avatar_id; }
@@ -78,6 +74,7 @@ private:
LOG_CLASS(LLPanelProfile::ChildStack);
public:
ChildStack();
+ ~ChildStack();
void setParent(LLPanel* parent);
bool push();
@@ -97,7 +94,6 @@ private:
};
//-- ChildStack ends ------------------------------------------------------
- LLTabContainer* mTabCtrl;
profile_tabs_t mTabContainer;
ChildStack mChildStack;
LLUUID mAvatarId;
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
deleted file mode 100644
index 7635aedf58..0000000000
--- a/indra/newview/llpanelprofileview.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
-* @file llpanelprofileview.cpp
-* @brief Side tray "Profile View" panel
-*
-* $LicenseInfo:firstyear=2009&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llpanelprofileview.h"
-
-#include "llavatarconstants.h"
-#include "llavatarnamecache.h" // IDEVO
-#include "llclipboard.h"
-#include "lluserrelations.h"
-
-#include "llavatarpropertiesprocessor.h"
-#include "llcallingcard.h"
-#include "llpanelavatar.h"
-#include "llpanelpicks.h"
-#include "llpanelprofile.h"
-#include "llsidetraypanelcontainer.h"
-
-static LLRegisterPanelClassWrapper<LLPanelProfileView> t_panel_target_profile("panel_profile_view");
-
-static std::string PANEL_NOTES = "panel_notes";
-static const std::string PANEL_PROFILE = "panel_profile";
-static const std::string PANEL_PICKS = "panel_picks";
-
-
-class AvatarStatusObserver : public LLAvatarPropertiesObserver
-{
-public:
- AvatarStatusObserver(LLPanelProfileView* profile_view)
- {
- mProfileView = profile_view;
- }
-
- void processProperties(void* data, EAvatarProcessorType type)
- {
- if(APT_PROPERTIES != type) return;
- const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
- if(avatar_data && mProfileView->getAvatarId() == avatar_data->avatar_id)
- {
- mProfileView->processOnlineStatus(avatar_data->flags & AVATAR_ONLINE);
- LLAvatarPropertiesProcessor::instance().removeObserver(mProfileView->getAvatarId(), this);
- }
- }
-
- void subscribe()
- {
- LLAvatarPropertiesProcessor::instance().addObserver(mProfileView->getAvatarId(), this);
- }
-
-private:
- LLPanelProfileView* mProfileView;
-};
-
-LLPanelProfileView::LLPanelProfileView()
-: LLPanelProfile()
-, mStatusText(NULL)
-, mAvatarStatusObserver(NULL)
-{
- mAvatarStatusObserver = new AvatarStatusObserver(this);
-}
-
-LLPanelProfileView::~LLPanelProfileView(void)
-{
- delete mAvatarStatusObserver;
-}
-
-/*virtual*/
-void LLPanelProfileView::onOpen(const LLSD& key)
-{
- LLUUID id;
- if(key.has("id"))
- {
- id = key["id"];
- }
-
- if(id.notNull() && getAvatarId() != id)
- {
- setAvatarId(id);
-
- // clear name fields, which might have old data
- getChild<LLUICtrl>("user_name")->setValue( LLSD() );
- getChild<LLUICtrl>("user_slid")->setValue( LLSD() );
- }
-
- // Update the avatar name.
- LLAvatarNameCache::get(getAvatarId(),
- boost::bind(&LLPanelProfileView::onAvatarNameCache, this, _1, _2));
-
- updateOnlineStatus();
-
-
- LLPanelProfile::onOpen(key);
-}
-
-BOOL LLPanelProfileView::postBuild()
-{
- LLPanelProfile::postBuild();
-
- getTabContainer()[PANEL_NOTES] = findChild<LLPanelAvatarNotes>(PANEL_NOTES);
-
- //*TODO remove this, according to style guide we don't use status combobox
- getTabContainer()[PANEL_PROFILE]->getChildView("online_me_status_text")->setVisible( FALSE);
- getTabContainer()[PANEL_PROFILE]->getChildView("status_combo")->setVisible( FALSE);
-
- mStatusText = getChild<LLTextBox>("status");
- mStatusText->setVisible(false);
-
- childSetCommitCallback("back",boost::bind(&LLPanelProfileView::onBackBtnClick,this),NULL);
- childSetCommitCallback("copy_to_clipboard",boost::bind(&LLPanelProfileView::onCopyToClipboard,this),NULL);
-
- return TRUE;
-}
-
-
-//private
-
-void LLPanelProfileView::onBackBtnClick()
-{
- // Set dummy value to make picks panel dirty,
- // This will make Picks reload on next open.
- getTabContainer()[PANEL_PICKS]->setValue(LLSD());
-
- LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
- if(parent)
- {
- parent->openPreviousPanel();
- }
-}
-
-void LLPanelProfileView::onCopyToClipboard()
-{
- std::string name = getChild<LLUICtrl>("user_name")->getValue().asString() + " (" + getChild<LLUICtrl>("user_slid")->getValue().asString() + ")";
- gClipboard.copyFromString(utf8str_to_wstring(name));
-}
-
-bool LLPanelProfileView::isGrantedToSeeOnlineStatus()
-{
- const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
- if (NULL == relationship)
- return false;
-
- // *NOTE: GRANT_ONLINE_STATUS is always set to false while changing any other status.
- // When avatar disallow me to see her online status processOfflineNotification Message is received by the viewer
- // see comments for ChangeUserRights template message. EXT-453.
- // If GRANT_ONLINE_STATUS flag is changed it will be applied when viewer restarts. EXT-3880
- return relationship->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS);
-}
-
-// method was disabled according to EXT-2022. Re-enabled & improved according to EXT-3880
-void LLPanelProfileView::updateOnlineStatus()
-{
- // set text box visible to show online status for non-friends who has not set in Preferences
- // "Only Friends & Groups can see when I am online"
- mStatusText->setVisible(TRUE);
-
- const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
- if (NULL == relationship)
- {
- // this is non-friend avatar. Status will be updated from LLAvatarPropertiesProcessor.
- // in LLPanelProfileView::processOnlineStatus()
-
- // subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself.
- // do not subscribe for friend avatar because online status can be wrong overridden
- // via LLAvatarData::flags if Preferences: "Only Friends & Groups can see when I am online" is set.
- mAvatarStatusObserver->subscribe();
- return;
- }
- // For friend let check if he allowed me to see his status
-
- // status should only show if viewer has permission to view online/offline. EXT-453, EXT-3880
- mStatusText->setVisible(isGrantedToSeeOnlineStatus());
-
- bool online = relationship->isOnline();
- processOnlineStatus(online);
-}
-
-void LLPanelProfileView::processOnlineStatus(bool online)
-{
- std::string status = getString(online ? "status_online" : "status_offline");
-
- mStatusText->setValue(status);
-}
-
-void LLPanelProfileView::onAvatarNameCache(const LLUUID& agent_id,
- const LLAvatarName& av_name)
-{
- getChild<LLUICtrl>("user_name")->setValue( av_name.mDisplayName );
- getChild<LLUICtrl>("user_name_small")->setValue( av_name.mDisplayName );
- getChild<LLUICtrl>("user_slid")->setValue( av_name.mUsername );
-
- // show smaller display name if too long to display in regular size
- if (getChild<LLTextBox>("user_name")->getTextPixelWidth() > getChild<LLTextBox>("user_name")->getRect().getWidth())
- {
- getChild<LLUICtrl>("user_name_small")->setVisible( true );
- getChild<LLUICtrl>("user_name")->setVisible( false );
- }
- else
- {
- getChild<LLUICtrl>("user_name_small")->setVisible( false );
- getChild<LLUICtrl>("user_name")->setVisible( true );
- }
-
- if (LLAvatarNameCache::useDisplayNames())
- {
- getChild<LLUICtrl>("user_label")->setVisible( true );
- getChild<LLUICtrl>("user_slid")->setVisible( true );
- getChild<LLUICtrl>("display_name_label")->setVisible( true );
- getChild<LLUICtrl>("copy_to_clipboard")->setVisible( true );
- getChild<LLUICtrl>("copy_to_clipboard")->setEnabled( true );
- getChild<LLUICtrl>("solo_username_label")->setVisible( false );
- }
- else
- {
- getChild<LLUICtrl>("user_label")->setVisible( false );
- getChild<LLUICtrl>("user_slid")->setVisible( false );
- getChild<LLUICtrl>("display_name_label")->setVisible( false );
- getChild<LLUICtrl>("copy_to_clipboard")->setVisible( false );
- getChild<LLUICtrl>("copy_to_clipboard")->setEnabled( false );
- getChild<LLUICtrl>("solo_username_label")->setVisible( true );
- }
-}
-
-// EOF
diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h
deleted file mode 100644
index c6d921fdc4..0000000000
--- a/indra/newview/llpanelprofileview.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
-* @file llpanelprofileview.h
-* @brief Side tray "Profile View" panel
-*
-* $LicenseInfo:firstyear=2009&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#ifndef LL_LLPANELPROFILEVIEW_H
-#define LL_LLPANELPROFILEVIEW_H
-
-#include "llpanel.h"
-#include "llpanelprofile.h"
-#include "llavatarpropertiesprocessor.h"
-#include "llagent.h"
-#include "lltooldraganddrop.h"
-
-class LLAvatarName;
-class LLPanelProfile;
-class LLPanelProfileTab;
-class LLTextBox;
-class AvatarStatusObserver;
-
-/**
-* Panel for displaying Avatar's profile. It consists of three sub panels - Profile,
-* Picks and Notes.
-*/
-class LLPanelProfileView : public LLPanelProfile
-{
- LOG_CLASS(LLPanelProfileView);
- friend class LLUICtrlFactory;
- friend class AvatarStatusObserver;
-
-public:
-
- LLPanelProfileView();
-
- /*virtual*/ ~LLPanelProfileView();
-
- /*virtual*/ void onOpen(const LLSD& key);
-
- /*virtual*/ BOOL postBuild();
-
- BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
- BOOL drop, EDragAndDropType cargo_type,
- void *cargo_data, EAcceptance *accept,
- std::string& tooltip_msg)
- {
- LLToolDragAndDrop::handleGiveDragAndDrop(getAvatarId(), gAgent.getSessionID(), drop,
- cargo_type, cargo_data, accept);
-
- return TRUE;
- }
-
-
-protected:
-
- void onBackBtnClick();
- void onCopyToClipboard();
- bool isGrantedToSeeOnlineStatus();
-
- /**
- * Displays avatar's online status if possible.
- *
- * Requirements from EXT-3880:
- * For friends:
- * - Online when online and privacy settings allow to show
- * - Offline when offline and privacy settings allow to show
- * - Else: nothing
- * For other avatars:
- * - Online when online and was not set in Preferences/"Only Friends & Groups can see when I am online"
- * - Else: Offline
- */
- void updateOnlineStatus();
- void processOnlineStatus(bool online);
-
-private:
- // LLCacheName will call this function when avatar name is loaded from server.
- // This is required to display names that have not been cached yet.
-// void onNameCache(
-// const LLUUID& id,
-// const std::string& full_name,
-// bool is_group);
- void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
-
- LLTextBox* mStatusText;
- AvatarStatusObserver* mAvatarStatusObserver;
-};
-
-#endif //LL_LLPANELPROFILEVIEW_H
diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp
new file mode 100644
index 0000000000..2f29e758c6
--- /dev/null
+++ b/indra/newview/llpanelsnapshot.cpp
@@ -0,0 +1,201 @@
+/**
+ * @file llpanelsnapshot.cpp
+ * @brief Snapshot panel base class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llpanelsnapshot.h"
+
+// libs
+#include "llcombobox.h"
+#include "llsliderctrl.h"
+#include "llspinctrl.h"
+#include "lltrans.h"
+
+// newview
+#include "llsidetraypanelcontainer.h"
+#include "llviewercontrol.h" // gSavedSettings
+
+// virtual
+BOOL LLPanelSnapshot::postBuild()
+{
+ getChild<LLUICtrl>(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onResolutionComboCommit, this, _1));
+ getChild<LLUICtrl>(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onCustomResolutionCommit, this));
+ getChild<LLUICtrl>(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onCustomResolutionCommit, this));
+ getChild<LLUICtrl>(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onKeepAspectRatioCommit, this, _1));
+
+ updateControls(LLSD());
+ return TRUE;
+}
+
+// virtual
+void LLPanelSnapshot::onOpen(const LLSD& key)
+{
+ S32 old_format = gSavedSettings.getS32("SnapshotFormat");
+ S32 new_format = (S32) getImageFormat();
+
+ gSavedSettings.setS32("SnapshotFormat", new_format);
+ setCtrlsEnabled(true);
+
+ // Switching panels will likely change image format.
+ // Not updating preview right away may lead to errors,
+ // e.g. attempt to send a large BMP image by email.
+ if (old_format != new_format)
+ {
+ LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true));
+ }
+
+ updateCustomResControls();
+}
+
+LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const
+{
+ return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
+}
+
+void LLPanelSnapshot::enableControls(BOOL enable)
+{
+ setCtrlsEnabled(enable);
+ if (enable)
+ {
+ // Make sure only relevant controls are enabled/shown.
+ updateCustomResControls();
+ }
+}
+
+LLSpinCtrl* LLPanelSnapshot::getWidthSpinner()
+{
+ return getChild<LLSpinCtrl>(getWidthSpinnerName());
+}
+
+LLSpinCtrl* LLPanelSnapshot::getHeightSpinner()
+{
+ return getChild<LLSpinCtrl>(getHeightSpinnerName());
+}
+
+S32 LLPanelSnapshot::getTypedPreviewWidth() const
+{
+ return getChild<LLUICtrl>(getWidthSpinnerName())->getValue().asInteger();
+}
+
+S32 LLPanelSnapshot::getTypedPreviewHeight() const
+{
+ return getChild<LLUICtrl>(getHeightSpinnerName())->getValue().asInteger();
+}
+
+void LLPanelSnapshot::enableAspectRatioCheckbox(BOOL enable)
+{
+ getChild<LLUICtrl>(getAspectRatioCBName())->setEnabled(enable);
+}
+
+LLSideTrayPanelContainer* LLPanelSnapshot::getParentContainer()
+{
+ LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
+ if (!parent)
+ {
+ llwarns << "Cannot find panel container" << llendl;
+ return NULL;
+ }
+
+ return parent;
+}
+
+// virtual
+void LLPanelSnapshot::updateCustomResControls()
+{
+ // Only show width/height spinners and the aspect ratio checkbox
+ // when a custom resolution is chosen.
+ LLComboBox* combo = getChild<LLComboBox>(getImageSizeComboName());
+ const bool show = combo->getFirstSelectedIndex() == (combo->getItemCount() - 1);
+ getChild<LLUICtrl>(getImageSizePanelName())->setVisible(show);
+}
+
+void LLPanelSnapshot::updateImageQualityLevel()
+{
+ LLSliderCtrl* quality_slider = getChild<LLSliderCtrl>("image_quality_slider");
+ S32 quality_val = llfloor((F32) quality_slider->getValue().asReal());
+
+ std::string quality_lvl;
+
+ if (quality_val < 20)
+ {
+ quality_lvl = LLTrans::getString("snapshot_quality_very_low");
+ }
+ else if (quality_val < 40)
+ {
+ quality_lvl = LLTrans::getString("snapshot_quality_low");
+ }
+ else if (quality_val < 60)
+ {
+ quality_lvl = LLTrans::getString("snapshot_quality_medium");
+ }
+ else if (quality_val < 80)
+ {
+ quality_lvl = LLTrans::getString("snapshot_quality_high");
+ }
+ else
+ {
+ quality_lvl = LLTrans::getString("snapshot_quality_very_high");
+ }
+
+ getChild<LLTextBox>("image_quality_level")->setTextArg("[QLVL]", quality_lvl);
+}
+
+void LLPanelSnapshot::goBack()
+{
+ LLSideTrayPanelContainer* parent = getParentContainer();
+ if (parent)
+ {
+ parent->openPreviousPanel();
+ parent->getCurrentPanel()->onOpen(LLSD());
+ }
+}
+
+void LLPanelSnapshot::cancel()
+{
+ goBack();
+ LLFloaterSnapshot::getInstance()->notify(LLSD().with("set-ready", true));
+}
+
+void LLPanelSnapshot::onCustomResolutionCommit()
+{
+ LLSD info;
+ info["w"] = getChild<LLUICtrl>(getWidthSpinnerName())->getValue().asInteger();
+ info["h"] = getChild<LLUICtrl>(getHeightSpinnerName())->getValue().asInteger();
+ LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info));
+}
+
+void LLPanelSnapshot::onResolutionComboCommit(LLUICtrl* ctrl)
+{
+ updateCustomResControls();
+
+ LLSD info;
+ info["combo-res-change"]["control-name"] = ctrl->getName();
+ LLFloaterSnapshot::getInstance()->notify(info);
+}
+
+void LLPanelSnapshot::onKeepAspectRatioCommit(LLUICtrl* ctrl)
+{
+ LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean()));
+}
diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h
new file mode 100644
index 0000000000..f3274cf594
--- /dev/null
+++ b/indra/newview/llpanelsnapshot.h
@@ -0,0 +1,71 @@
+/**
+ * @file llpanelsnapshot.h
+ * @brief Snapshot panel base class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELSNAPSHOT_H
+#define LL_LLPANELSNAPSHOT_H
+
+#include "llfloatersnapshot.h"
+
+class LLSideTrayPanelContainer;
+
+/**
+ * Snapshot panel base class.
+ */
+class LLPanelSnapshot: public LLPanel
+{
+public:
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+ virtual std::string getWidthSpinnerName() const = 0;
+ virtual std::string getHeightSpinnerName() const = 0;
+ virtual std::string getAspectRatioCBName() const = 0;
+ virtual std::string getImageSizeComboName() const = 0;
+ virtual std::string getImageSizePanelName() const = 0;
+
+ virtual S32 getTypedPreviewWidth() const;
+ virtual S32 getTypedPreviewHeight() const;
+ virtual LLSpinCtrl* getWidthSpinner();
+ virtual LLSpinCtrl* getHeightSpinner();
+ virtual void enableAspectRatioCheckbox(BOOL enable);
+ virtual LLFloaterSnapshot::ESnapshotFormat getImageFormat() const;
+ virtual void updateControls(const LLSD& info) = 0; ///< Update controls from saved settings
+ void enableControls(BOOL enable);
+
+protected:
+ LLSideTrayPanelContainer* getParentContainer();
+ virtual void updateCustomResControls();
+ void updateImageQualityLevel();
+ void goBack(); ///< Switch to the default (Snapshot Options) panel
+ void cancel();
+
+ // common UI callbacks
+ void onCustomResolutionCommit();
+ void onResolutionComboCommit(LLUICtrl* ctrl);
+ void onKeepAspectRatioCommit(LLUICtrl* ctrl);
+};
+
+#endif // LL_LLPANELSNAPSHOT_H
diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp
new file mode 100644
index 0000000000..381c11348d
--- /dev/null
+++ b/indra/newview/llpanelsnapshotinventory.cpp
@@ -0,0 +1,109 @@
+/**
+ * @file llpanelsnapshotinventory.cpp
+ * @brief The panel provides UI for saving snapshot as an inventory texture.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llcombobox.h"
+#include "lleconomy.h"
+#include "llsidetraypanelcontainer.h"
+#include "llspinctrl.h"
+
+#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model
+#include "llpanelsnapshot.h"
+#include "llviewercontrol.h" // gSavedSettings
+
+/**
+ * The panel provides UI for saving snapshot as an inventory texture.
+ */
+class LLPanelSnapshotInventory
+: public LLPanelSnapshot
+{
+ LOG_CLASS(LLPanelSnapshotInventory);
+
+public:
+ LLPanelSnapshotInventory();
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+private:
+ /*virtual*/ void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox)
+ /*virtual*/ std::string getWidthSpinnerName() const { return "inventory_snapshot_width"; }
+ /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; }
+ /*virtual*/ std::string getAspectRatioCBName() const { return "inventory_keep_aspect_check"; }
+ /*virtual*/ std::string getImageSizeComboName() const { return "texture_size_combo"; }
+ /*virtual*/ std::string getImageSizePanelName() const { return LLStringUtil::null; }
+ /*virtual*/ void updateControls(const LLSD& info);
+
+ void onSend();
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotInventory> panel_class("llpanelsnapshotinventory");
+
+LLPanelSnapshotInventory::LLPanelSnapshotInventory()
+{
+ mCommitCallbackRegistrar.add("Inventory.Save", boost::bind(&LLPanelSnapshotInventory::onSend, this));
+ mCommitCallbackRegistrar.add("Inventory.Cancel", boost::bind(&LLPanelSnapshotInventory::cancel, this));
+}
+
+// virtual
+BOOL LLPanelSnapshotInventory::postBuild()
+{
+ getChild<LLSpinCtrl>(getWidthSpinnerName())->setAllowEdit(FALSE);
+ getChild<LLSpinCtrl>(getHeightSpinnerName())->setAllowEdit(FALSE);
+ getChild<LLUICtrl>(getAspectRatioCBName())->setVisible(FALSE); // we don't keep aspect ratio for inventory textures
+ return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotInventory::onOpen(const LLSD& key)
+{
+ getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload()));
+ LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+void LLPanelSnapshotInventory::updateCustomResControls()
+{
+ LLComboBox* combo = getChild<LLComboBox>(getImageSizeComboName());
+ S32 selected_idx = combo->getFirstSelectedIndex();
+ const bool show = selected_idx == (combo->getItemCount() - 1); // Custom selected
+
+ getChild<LLUICtrl>(getWidthSpinnerName())->setVisible(show);
+ getChild<LLUICtrl>(getHeightSpinnerName())->setVisible(show);
+}
+
+// virtual
+void LLPanelSnapshotInventory::updateControls(const LLSD& info)
+{
+ const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+ getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot);
+}
+
+void LLPanelSnapshotInventory::onSend()
+{
+ LLFloaterSnapshot::saveTexture();
+ LLFloaterSnapshot::postSave();
+}
diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp
new file mode 100644
index 0000000000..d153ff598d
--- /dev/null
+++ b/indra/newview/llpanelsnapshotlocal.cpp
@@ -0,0 +1,168 @@
+/**
+ * @file llpanelsnapshotlocal.cpp
+ * @brief The panel provides UI for saving snapshot to a local folder.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llcombobox.h"
+#include "llsidetraypanelcontainer.h"
+#include "llsliderctrl.h"
+#include "llspinctrl.h"
+
+#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model
+#include "llpanelsnapshot.h"
+#include "llviewercontrol.h" // gSavedSettings
+#include "llviewerwindow.h"
+
+/**
+ * The panel provides UI for saving snapshot to a local folder.
+ */
+class LLPanelSnapshotLocal
+: public LLPanelSnapshot
+{
+ LOG_CLASS(LLPanelSnapshotLocal);
+
+public:
+ LLPanelSnapshotLocal();
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+private:
+ /*virtual*/ std::string getWidthSpinnerName() const { return "local_snapshot_width"; }
+ /*virtual*/ std::string getHeightSpinnerName() const { return "local_snapshot_height"; }
+ /*virtual*/ std::string getAspectRatioCBName() const { return "local_keep_aspect_check"; }
+ /*virtual*/ std::string getImageSizeComboName() const { return "local_size_combo"; }
+ /*virtual*/ std::string getImageSizePanelName() const { return "local_image_size_lp"; }
+ /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const;
+ /*virtual*/ void updateControls(const LLSD& info);
+
+ void onFormatComboCommit(LLUICtrl* ctrl);
+ void onQualitySliderCommit(LLUICtrl* ctrl);
+ void onSaveFlyoutCommit(LLUICtrl* ctrl);
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal");
+
+LLPanelSnapshotLocal::LLPanelSnapshotLocal()
+{
+ mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::cancel, this));
+}
+
+// virtual
+BOOL LLPanelSnapshotLocal::postBuild()
+{
+ getChild<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1));
+ getChild<LLUICtrl>("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1));
+ getChild<LLUICtrl>("save_btn")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onSaveFlyoutCommit, this, _1));
+
+ return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotLocal::onOpen(const LLSD& key)
+{
+ LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshotLocal::getImageFormat() const
+{
+ LLFloaterSnapshot::ESnapshotFormat fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG;
+
+ LLComboBox* local_format_combo = getChild<LLComboBox>("local_format_combo");
+ const std::string id = local_format_combo->getValue().asString();
+ if (id == "PNG")
+ {
+ fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG;
+ }
+ else if (id == "JPEG")
+ {
+ fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
+ }
+ else if (id == "BMP")
+ {
+ fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP;
+ }
+
+ return fmt;
+}
+
+// virtual
+void LLPanelSnapshotLocal::updateControls(const LLSD& info)
+{
+ LLFloaterSnapshot::ESnapshotFormat fmt =
+ (LLFloaterSnapshot::ESnapshotFormat) gSavedSettings.getS32("SnapshotFormat");
+ getChild<LLComboBox>("local_format_combo")->selectNthItem((S32) fmt);
+
+ const bool show_quality_ctrls = (fmt == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG);
+ getChild<LLUICtrl>("image_quality_slider")->setVisible(show_quality_ctrls);
+ getChild<LLUICtrl>("image_quality_level")->setVisible(show_quality_ctrls);
+
+ getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
+ updateImageQualityLevel();
+
+ const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+ getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot);
+}
+
+void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl)
+{
+ // will call updateControls()
+ LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true));
+}
+
+void LLPanelSnapshotLocal::onQualitySliderCommit(LLUICtrl* ctrl)
+{
+ updateImageQualityLevel();
+
+ LLSliderCtrl* slider = (LLSliderCtrl*)ctrl;
+ S32 quality_val = llfloor((F32)slider->getValue().asReal());
+ LLSD info;
+ info["image-quality-change"] = quality_val;
+ LLFloaterSnapshot::getInstance()->notify(info);
+}
+
+void LLPanelSnapshotLocal::onSaveFlyoutCommit(LLUICtrl* ctrl)
+{
+ if (ctrl->getValue().asString() == "save as")
+ {
+ gViewerWindow->resetSnapshotLoc();
+ }
+
+ LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance();
+
+ floater->notify(LLSD().with("set-working", true));
+ BOOL saved = LLFloaterSnapshot::saveLocal();
+ if (saved)
+ {
+ LLFloaterSnapshot::postSave();
+ goBack();
+ floater->notify(LLSD().with("set-finished", LLSD().with("ok", true).with("msg", "local")));
+ }
+ else
+ {
+ cancel();
+ }
+}
diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp
new file mode 100644
index 0000000000..554fabe5b3
--- /dev/null
+++ b/indra/newview/llpanelsnapshotoptions.cpp
@@ -0,0 +1,120 @@
+/**
+ * @file llpanelsnapshotoptions.cpp
+ * @brief Snapshot posting options panel.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lleconomy.h"
+#include "llpanel.h"
+#include "llsidetraypanelcontainer.h"
+
+#include "llfloatersnapshot.h" // FIXME: create a snapshot model
+
+/**
+ * Provides several ways to save a snapshot.
+ */
+class LLPanelSnapshotOptions
+: public LLPanel
+, public LLEconomyObserver
+{
+ LOG_CLASS(LLPanelSnapshotOptions);
+
+public:
+ LLPanelSnapshotOptions();
+ ~LLPanelSnapshotOptions();
+ /*virtual*/ void onOpen(const LLSD& key);
+ /*virtual*/ void onEconomyDataChange() { updateUploadCost(); }
+
+private:
+ void updateUploadCost();
+ void openPanel(const std::string& panel_name);
+ void onSaveToProfile();
+ void onSaveToEmail();
+ void onSaveToInventory();
+ void onSaveToComputer();
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotOptions> panel_class("llpanelsnapshotoptions");
+
+LLPanelSnapshotOptions::LLPanelSnapshotOptions()
+{
+ mCommitCallbackRegistrar.add("Snapshot.SaveToProfile", boost::bind(&LLPanelSnapshotOptions::onSaveToProfile, this));
+ mCommitCallbackRegistrar.add("Snapshot.SaveToEmail", boost::bind(&LLPanelSnapshotOptions::onSaveToEmail, this));
+ mCommitCallbackRegistrar.add("Snapshot.SaveToInventory", boost::bind(&LLPanelSnapshotOptions::onSaveToInventory, this));
+ mCommitCallbackRegistrar.add("Snapshot.SaveToComputer", boost::bind(&LLPanelSnapshotOptions::onSaveToComputer, this));
+
+ LLGlobalEconomy::Singleton::getInstance()->addObserver(this);
+}
+
+LLPanelSnapshotOptions::~LLPanelSnapshotOptions()
+{
+ LLGlobalEconomy::Singleton::getInstance()->removeObserver(this);
+}
+
+// virtual
+void LLPanelSnapshotOptions::onOpen(const LLSD& key)
+{
+ updateUploadCost();
+}
+
+void LLPanelSnapshotOptions::updateUploadCost()
+{
+ S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
+ getChild<LLUICtrl>("save_to_inventory_btn")->setLabelArg("[AMOUNT]", llformat("%d", upload_cost));
+}
+
+void LLPanelSnapshotOptions::openPanel(const std::string& panel_name)
+{
+ LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
+ if (!parent)
+ {
+ llwarns << "Cannot find panel container" << llendl;
+ return;
+ }
+
+ parent->openPanel(panel_name);
+ parent->getCurrentPanel()->onOpen(LLSD());
+ LLFloaterSnapshot::postPanelSwitch();
+}
+
+void LLPanelSnapshotOptions::onSaveToProfile()
+{
+ openPanel("panel_snapshot_profile");
+}
+
+void LLPanelSnapshotOptions::onSaveToEmail()
+{
+ openPanel("panel_snapshot_postcard");
+}
+
+void LLPanelSnapshotOptions::onSaveToInventory()
+{
+ openPanel("panel_snapshot_inventory");
+}
+
+void LLPanelSnapshotOptions::onSaveToComputer()
+{
+ openPanel("panel_snapshot_local");
+}
diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp
new file mode 100644
index 0000000000..f2bb8f530b
--- /dev/null
+++ b/indra/newview/llpanelsnapshotpostcard.cpp
@@ -0,0 +1,270 @@
+/**
+ * @file llpanelsnapshotpostcard.cpp
+ * @brief Postcard sending panel.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llcombobox.h"
+#include "llnotificationsutil.h"
+#include "llsidetraypanelcontainer.h"
+#include "llsliderctrl.h"
+#include "llspinctrl.h"
+#include "lltexteditor.h"
+
+#include "llagent.h"
+#include "llagentui.h"
+#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model
+#include "llpanelsnapshot.h"
+#include "llpostcard.h"
+#include "llviewercontrol.h" // gSavedSettings
+#include "llviewerwindow.h"
+
+#include <boost/regex.hpp>
+
+/**
+ * Sends postcard via email.
+ */
+class LLPanelSnapshotPostcard
+: public LLPanelSnapshot
+{
+ LOG_CLASS(LLPanelSnapshotPostcard);
+
+public:
+ LLPanelSnapshotPostcard();
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+ /*virtual*/ S32 notify(const LLSD& info);
+
+private:
+ /*virtual*/ std::string getWidthSpinnerName() const { return "postcard_snapshot_width"; }
+ /*virtual*/ std::string getHeightSpinnerName() const { return "postcard_snapshot_height"; }
+ /*virtual*/ std::string getAspectRatioCBName() const { return "postcard_keep_aspect_check"; }
+ /*virtual*/ std::string getImageSizeComboName() const { return "postcard_size_combo"; }
+ /*virtual*/ std::string getImageSizePanelName() const { return "postcard_image_size_lp"; }
+ /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; }
+ /*virtual*/ void updateControls(const LLSD& info);
+
+ bool missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response);
+ void sendPostcard();
+
+ void onMsgFormFocusRecieved();
+ void onFormatComboCommit(LLUICtrl* ctrl);
+ void onQualitySliderCommit(LLUICtrl* ctrl);
+ void onTabButtonPress(S32 btn_idx);
+ void onSend();
+
+ bool mHasFirstMsgFocus;
+ std::string mAgentEmail;
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotPostcard> panel_class("llpanelsnapshotpostcard");
+
+LLPanelSnapshotPostcard::LLPanelSnapshotPostcard()
+: mHasFirstMsgFocus(false)
+{
+ mCommitCallbackRegistrar.add("Postcard.Send", boost::bind(&LLPanelSnapshotPostcard::onSend, this));
+ mCommitCallbackRegistrar.add("Postcard.Cancel", boost::bind(&LLPanelSnapshotPostcard::cancel, this));
+ mCommitCallbackRegistrar.add("Postcard.Message", boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress, this, 0));
+ mCommitCallbackRegistrar.add("Postcard.Settings", boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress, this, 1));
+
+}
+
+// virtual
+BOOL LLPanelSnapshotPostcard::postBuild()
+{
+ // pick up the user's up-to-date email address
+ gAgent.sendAgentUserInfoRequest();
+
+ std::string name_string;
+ LLAgentUI::buildFullname(name_string);
+ getChild<LLUICtrl>("name_form")->setValue(LLSD(name_string));
+
+ // For the first time a user focuses to .the msg box, all text will be selected.
+ getChild<LLUICtrl>("msg_form")->setFocusChangedCallback(boost::bind(&LLPanelSnapshotPostcard::onMsgFormFocusRecieved, this));
+
+ getChild<LLUICtrl>("to_form")->setFocus(TRUE);
+
+ getChild<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onQualitySliderCommit, this, _1));
+
+ getChild<LLButton>("message_btn")->setToggleState(TRUE);
+
+ return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotPostcard::onOpen(const LLSD& key)
+{
+ LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+S32 LLPanelSnapshotPostcard::notify(const LLSD& info)
+{
+ if (!info.has("agent-email"))
+ {
+ llassert(info.has("agent-email"));
+ return 0;
+ }
+
+ if (mAgentEmail.empty())
+ {
+ mAgentEmail = info["agent-email"].asString();
+ }
+
+ return 1;
+}
+
+// virtual
+void LLPanelSnapshotPostcard::updateControls(const LLSD& info)
+{
+ getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
+ updateImageQualityLevel();
+
+ const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+ getChild<LLUICtrl>("send_btn")->setEnabled(have_snapshot);
+}
+
+bool LLPanelSnapshotPostcard::missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if(0 == option)
+ {
+ // User clicked OK
+ if((getChild<LLUICtrl>("subject_form")->getValue().asString()).empty())
+ {
+ // Stuff the subject back into the form.
+ getChild<LLUICtrl>("subject_form")->setValue(getString("default_subject"));
+ }
+
+ if (!mHasFirstMsgFocus)
+ {
+ // The user never switched focus to the message window.
+ // Using the default string.
+ getChild<LLUICtrl>("msg_form")->setValue(getString("default_message"));
+ }
+
+ sendPostcard();
+ }
+ return false;
+}
+
+
+void LLPanelSnapshotPostcard::sendPostcard()
+{
+ std::string to(getChild<LLUICtrl>("to_form")->getValue().asString());
+ std::string subject(getChild<LLUICtrl>("subject_form")->getValue().asString());
+
+ LLSD postcard = LLSD::emptyMap();
+ postcard["pos-global"] = LLFloaterSnapshot::getPosTakenGlobal().getValue();
+ postcard["to"] = to;
+ postcard["from"] = mAgentEmail;
+ postcard["name"] = getChild<LLUICtrl>("name_form")->getValue().asString();
+ postcard["subject"] = subject;
+ postcard["msg"] = getChild<LLUICtrl>("msg_form")->getValue().asString();
+ LLPostCard::send(LLFloaterSnapshot::getImageData(), postcard);
+
+ // Give user feedback of the event.
+ gViewerWindow->playSnapshotAnimAndSound();
+
+ LLFloaterSnapshot::postSave();
+}
+
+void LLPanelSnapshotPostcard::onMsgFormFocusRecieved()
+{
+ LLTextEditor* msg_form = getChild<LLTextEditor>("msg_form");
+ if (msg_form->hasFocus() && !mHasFirstMsgFocus)
+ {
+ mHasFirstMsgFocus = true;
+ msg_form->setText(LLStringUtil::null);
+ }
+}
+
+void LLPanelSnapshotPostcard::onFormatComboCommit(LLUICtrl* ctrl)
+{
+ // will call updateControls()
+ LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true));
+}
+
+void LLPanelSnapshotPostcard::onQualitySliderCommit(LLUICtrl* ctrl)
+{
+ updateImageQualityLevel();
+
+ LLSliderCtrl* slider = (LLSliderCtrl*)ctrl;
+ S32 quality_val = llfloor((F32)slider->getValue().asReal());
+ LLSD info;
+ info["image-quality-change"] = quality_val;
+ LLFloaterSnapshot::getInstance()->notify(info); // updates the "SnapshotQuality" setting
+}
+
+void LLPanelSnapshotPostcard::onTabButtonPress(S32 btn_idx)
+{
+ LLButton* buttons[2] = {
+ getChild<LLButton>("message_btn"),
+ getChild<LLButton>("settings_btn"),
+ };
+
+ // Switch between Message and Settings tabs.
+ LLButton* clicked_btn = buttons[btn_idx];
+ LLButton* other_btn = buttons[!btn_idx];
+ LLSideTrayPanelContainer* container =
+ getChild<LLSideTrayPanelContainer>("postcard_panel_container");
+
+ container->selectTab(clicked_btn->getToggleState() ? btn_idx : !btn_idx);
+ //clicked_btn->setEnabled(FALSE);
+ other_btn->toggleState();
+ //other_btn->setEnabled(TRUE);
+
+ lldebugs << "Button #" << btn_idx << " (" << clicked_btn->getName() << ") clicked" << llendl;
+}
+
+void LLPanelSnapshotPostcard::onSend()
+{
+ // Validate input.
+ std::string to(getChild<LLUICtrl>("to_form")->getValue().asString());
+
+ boost::regex email_format("[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}(,[ \t]*[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,})*");
+
+ if (to.empty() || !boost::regex_match(to, email_format))
+ {
+ LLNotificationsUtil::add("PromptRecipientEmail");
+ return;
+ }
+
+ if (mAgentEmail.empty() || !boost::regex_match(mAgentEmail, email_format))
+ {
+ LLNotificationsUtil::add("PromptSelfEmail");
+ return;
+ }
+
+ std::string subject(getChild<LLUICtrl>("subject_form")->getValue().asString());
+ if(subject.empty() || !mHasFirstMsgFocus)
+ {
+ LLNotificationsUtil::add("PromptMissingSubjMsg", LLSD(), LLSD(), boost::bind(&LLPanelSnapshotPostcard::missingSubjMsgAlertCallback, this, _1, _2));
+ return;
+ }
+
+ // Send postcard.
+ sendPostcard();
+}
diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp
new file mode 100644
index 0000000000..a706318369
--- /dev/null
+++ b/indra/newview/llpanelsnapshotprofile.cpp
@@ -0,0 +1,101 @@
+/**
+ * @file llpanelsnapshotprofile.cpp
+ * @brief Posts a snapshot to My Profile feed.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+// libs
+#include "llcombobox.h"
+#include "llfloaterreg.h"
+#include "llpanel.h"
+#include "llspinctrl.h"
+
+// newview
+#include "llfloatersnapshot.h"
+#include "llpanelsnapshot.h"
+#include "llsidetraypanelcontainer.h"
+#include "llwebprofile.h"
+
+/**
+ * Posts a snapshot to My Profile feed.
+ */
+class LLPanelSnapshotProfile
+: public LLPanelSnapshot
+{
+ LOG_CLASS(LLPanelSnapshotProfile);
+
+public:
+ LLPanelSnapshotProfile();
+
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+private:
+ /*virtual*/ std::string getWidthSpinnerName() const { return "profile_snapshot_width"; }
+ /*virtual*/ std::string getHeightSpinnerName() const { return "profile_snapshot_height"; }
+ /*virtual*/ std::string getAspectRatioCBName() const { return "profile_keep_aspect_check"; }
+ /*virtual*/ std::string getImageSizeComboName() const { return "profile_size_combo"; }
+ /*virtual*/ std::string getImageSizePanelName() const { return "profile_image_size_lp"; }
+ /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; }
+ /*virtual*/ void updateControls(const LLSD& info);
+
+ void onSend();
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotProfile> panel_class("llpanelsnapshotprofile");
+
+LLPanelSnapshotProfile::LLPanelSnapshotProfile()
+{
+ mCommitCallbackRegistrar.add("PostToProfile.Send", boost::bind(&LLPanelSnapshotProfile::onSend, this));
+ mCommitCallbackRegistrar.add("PostToProfile.Cancel", boost::bind(&LLPanelSnapshotProfile::cancel, this));
+}
+
+// virtual
+BOOL LLPanelSnapshotProfile::postBuild()
+{
+ return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotProfile::onOpen(const LLSD& key)
+{
+ LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+void LLPanelSnapshotProfile::updateControls(const LLSD& info)
+{
+ const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+ getChild<LLUICtrl>("post_btn")->setEnabled(have_snapshot);
+}
+
+void LLPanelSnapshotProfile::onSend()
+{
+ std::string caption = getChild<LLUICtrl>("caption")->getValue().asString();
+ bool add_location = getChild<LLUICtrl>("add_location_cb")->getValue().asBoolean();
+
+ LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location);
+ LLFloaterSnapshot::postSave();
+}
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 9b35e78134..d3543daff0 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -31,7 +31,6 @@
#include "llfloaterworldmap.h"
#include "llpanelteleporthistory.h"
-#include "llsidetray.h"
#include "llworldmap.h"
#include "llteleporthistorystorage.h"
#include "lltextutil.h"
@@ -39,6 +38,7 @@
#include "llaccordionctrl.h"
#include "llaccordionctrltab.h"
#include "llflatlistview.h"
+#include "llfloatersidepanelcontainer.h"
#include "llnotificationsutil.h"
#include "lltextbox.h"
#include "lltoggleablemenu.h"
@@ -221,7 +221,7 @@ void LLTeleportHistoryFlatItem::showPlaceInfoPanel(S32 index)
params["id"] = index;
params["type"] = "teleport_history";
- LLSideTray::getInstance()->showPanel("panel_places", params);
+ LLFloaterSidePanelContainer::showPanel("places", params);
}
void LLTeleportHistoryFlatItem::onProfileBtnClick()
@@ -388,7 +388,8 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
LLTeleportHistoryPanel::~LLTeleportHistoryPanel()
{
LLTeleportHistoryFlatItemStorage::instance().purge();
- LLView::deleteViewByHandle(mGearMenuHandle);
+ delete mGearMenuHandle.get();
+ mTeleportHistoryChangedConnection.disconnect();
}
BOOL LLTeleportHistoryPanel::postBuild()
@@ -396,7 +397,7 @@ BOOL LLTeleportHistoryPanel::postBuild()
mTeleportHistory = LLTeleportHistoryStorage::getInstance();
if (mTeleportHistory)
{
- mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::onTeleportHistoryChange, this, _1));
+ mTeleportHistoryChangedConnection = mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::onTeleportHistoryChange, this, _1));
}
mHistoryAccordion = getChild<LLAccordionCtrl>("history_accordion");
@@ -679,29 +680,32 @@ void LLTeleportHistoryPanel::refresh()
// tab_boundary_date would be earliest possible date for this tab
S32 tab_idx = 0;
getNextTab(date, tab_idx, tab_boundary_date);
-
- LLAccordionCtrlTab* tab = mItemContainers.get(mItemContainers.size() - 1 - tab_idx);
- tab->setVisible(true);
-
- // Expand all accordion tabs when filtering
- if(!sFilterSubString.empty())
+ tab_idx = mItemContainers.size() - 1 - tab_idx;
+ if (tab_idx >= 0)
{
- //store accordion tab state when filter is not empty
- tab->notifyChildren(LLSD().with("action","store_state"));
-
- tab->setDisplayChildren(true);
- }
- // Restore each tab's expand state when not filtering
- else
- {
- bool collapsed = isAccordionCollapsedByUser(tab);
- tab->setDisplayChildren(!collapsed);
+ LLAccordionCtrlTab* tab = mItemContainers.get(tab_idx);
+ tab->setVisible(true);
+
+ // Expand all accordion tabs when filtering
+ if(!sFilterSubString.empty())
+ {
+ //store accordion tab state when filter is not empty
+ tab->notifyChildren(LLSD().with("action","store_state"));
- //restore accordion state after all those accodrion tabmanipulations
- tab->notifyChildren(LLSD().with("action","restore_state"));
- }
+ tab->setDisplayChildren(true);
+ }
+ // Restore each tab's expand state when not filtering
+ else
+ {
+ bool collapsed = isAccordionCollapsedByUser(tab);
+ tab->setDisplayChildren(!collapsed);
+
+ //restore accordion state after all those accodrion tabmanipulations
+ tab->notifyChildren(LLSD().with("action","restore_state"));
+ }
- curr_flat_view = getFlatListViewFromTab(tab);
+ curr_flat_view = getFlatListViewFromTab(tab);
+ }
}
if (curr_flat_view)
@@ -760,7 +764,12 @@ void LLTeleportHistoryPanel::onTeleportHistoryChange(S32 removed_index)
void LLTeleportHistoryPanel::replaceItem(S32 removed_index)
{
// Flat list for 'Today' (mItemContainers keeps accordion tabs in reverse order)
- LLFlatListView* fv = getFlatListViewFromTab(mItemContainers[mItemContainers.size() - 1]);
+ LLFlatListView* fv = NULL;
+
+ if (mItemContainers.size() > 0)
+ {
+ fv = getFlatListViewFromTab(mItemContainers[mItemContainers.size() - 1]);
+ }
// Empty flat list for 'Today' means that other flat lists are empty as well,
// so all items from teleport history should be added.
@@ -828,19 +837,27 @@ void LLTeleportHistoryPanel::showTeleportHistory()
// Starting to add items from last one, in reverse order,
// since TeleportHistory keeps most recent item at the end
+ if (!mTeleportHistory)
+ {
+ mTeleportHistory = LLTeleportHistoryStorage::getInstance();
+ }
+
mCurrentItem = mTeleportHistory->getItems().size() - 1;
for (S32 n = mItemContainers.size() - 1; n >= 0; --n)
{
LLAccordionCtrlTab* tab = mItemContainers.get(n);
- tab->setVisible(false);
-
- LLFlatListView* fv = getFlatListViewFromTab(tab);
- if (fv)
+ if (tab)
{
- // Detached panels are managed by LLTeleportHistoryFlatItemStorage
- std::vector<LLPanel*> detached_items;
- fv->detachItems(detached_items);
+ tab->setVisible(false);
+
+ LLFlatListView* fv = getFlatListViewFromTab(tab);
+ if (fv)
+ {
+ // Detached panels are managed by LLTeleportHistoryFlatItemStorage
+ std::vector<LLPanel*> detached_items;
+ fv->detachItems(detached_items);
+ }
}
}
}
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 3d29454d15..47b607a2f4 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -119,6 +119,8 @@ private:
LLContextMenu* mAccordionTabMenu;
LLHandle<LLView> mGearMenuHandle;
LLMenuButton* mMenuGearButton;
+
+ boost::signals2::connection mTeleportHistoryChangedConnection;
};
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 7087541fc8..eb4c7572d4 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -31,11 +31,11 @@
#include "llagent.h"
#include "llagentui.h"
#include "llclipboard.h"
+#include "llfloatersidepanelcontainer.h"
#include "lllandmarkactions.h"
#include "lllocationinputctrl.h"
#include "llnotificationsutil.h"
#include "llparcel.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h"
#include "lltrans.h"
@@ -203,6 +203,11 @@ void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show)
gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset);
}
+boost::signals2::connection LLPanelTopInfoBar::setResizeCallback( const resize_signal_t::slot_type& cb )
+{
+ return mResizeSignal.connect(cb);
+}
+
void LLPanelTopInfoBar::draw()
{
updateParcelInfoText();
@@ -224,6 +229,7 @@ void LLPanelTopInfoBar::buildLocationString(std::string& loc_str, bool show_coor
void LLPanelTopInfoBar::setParcelInfoText(const std::string& new_text)
{
+ LLRect old_rect = getRect();
const LLFontGL* font = mParcelInfoText->getDefaultFont();
S32 new_text_width = font->getWidth(new_text);
@@ -235,6 +241,11 @@ void LLPanelTopInfoBar::setParcelInfoText(const std::string& new_text)
mParcelInfoText->reshape(rect.getWidth(), rect.getHeight(), TRUE);
mParcelInfoText->setRect(rect);
layoutParcelIcons();
+
+ if (old_rect != getRect())
+ {
+ mResizeSignal();
+ }
}
void LLPanelTopInfoBar::update()
@@ -342,6 +353,8 @@ void LLPanelTopInfoBar::updateHealth()
void LLPanelTopInfoBar::layoutParcelIcons()
{
+ LLRect old_rect = getRect();
+
// TODO: remove hard-coded values and read them as xml parameters
static const int FIRST_ICON_HPAD = 32;
static const int LAST_ICON_HPAD = 11;
@@ -358,6 +371,11 @@ void LLPanelTopInfoBar::layoutParcelIcons()
LLRect rect = getRect();
rect.set(rect.mLeft, rect.mTop, left + LAST_ICON_HPAD, rect.mBottom);
setRect(rect);
+
+ if (old_rect != getRect())
+ {
+ mResizeSignal();
+ }
}
S32 LLPanelTopInfoBar::layoutWidget(LLUICtrl* ctrl, S32 left)
@@ -436,12 +454,11 @@ void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item)
if(landmark == NULL)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
}
else
{
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID()));
}
}
else if (item == "copy")
@@ -456,5 +473,5 @@ void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item)
void LLPanelTopInfoBar::onInfoButtonClicked()
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
}
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 583e91d15e..d58d95be90 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -41,6 +41,8 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
friend class LLDestroyClass<LLPanelTopInfoBar>;
public:
+ typedef boost::signals2::signal<void ()> resize_signal_t;
+
LLPanelTopInfoBar();
~LLPanelTopInfoBar();
@@ -57,6 +59,8 @@ public:
*/
void onVisibilityChange(const LLSD& show);
+ boost::signals2::connection setResizeCallback( const resize_signal_t::slot_type& cb );
+
private:
class LLParcelChangeObserver;
@@ -148,7 +152,7 @@ private:
void setParcelInfoText(const std::string& new_text);
/**
- * Implementation of LLDestroyClass<LLSideTray>
+ * Implementation of LLDestroyClass<T>
*/
static void destroyClass()
{
@@ -167,6 +171,8 @@ private:
boost::signals2::connection mParcelPropsCtrlConnection;
boost::signals2::connection mShowCoordsCtrlConnection;
boost::signals2::connection mParcelMgrConnection;
+
+ resize_signal_t mResizeSignal;
};
#endif /* LLPANELTOPINFOBAR_H_ */
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index f19b54c1d4..e2801c09bd 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -31,11 +31,11 @@
#include "lltoggleablemenu.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llmenubutton.h"
-#include "llsidetray.h"
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llsdserialize.h"
@@ -44,7 +44,7 @@
// Context menu and Gear menu helper.
static void edit_outfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
//////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index fb1153980a..5c95e805ce 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -468,7 +468,7 @@ void LLParticipantList::setValidateSpeakerCallback(validate_speaker_callback_t c
void LLParticipantList::updateRecentSpeakersOrder()
{
- if (E_SORT_BY_RECENT_SPEAKERS == getSortOrder())
+ if (E_SORT_BY_RECENT_SPEAKERS == getSortOrder() && !isHovered())
{
// Need to update speakers to sort list correctly
mSpeakerMgr->update(true);
@@ -477,6 +477,13 @@ void LLParticipantList::updateRecentSpeakersOrder()
}
}
+bool LLParticipantList::isHovered()
+{
+ S32 x, y;
+ LLUI::getMousePositionScreen(&x, &y);
+ return mAvatarList->calcScreenRect().pointInRect(x, y);
+}
+
bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
LLUUID uu_id = event->getValue().asUUID();
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index e0b3d42c25..a001d29b67 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -251,6 +251,8 @@ private:
*/
void adjustParticipant(const LLUUID& speaker_id);
+ bool isHovered();
+
LLSpeakerMgr* mSpeakerMgr;
LLAvatarList* mAvatarList;
diff --git a/indra/newview/llpostcard.cpp b/indra/newview/llpostcard.cpp
new file mode 100644
index 0000000000..4f2d6da7e5
--- /dev/null
+++ b/indra/newview/llpostcard.cpp
@@ -0,0 +1,155 @@
+/**
+ * @file llpostcard.cpp
+ * @brief Sending postcards.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llpostcard.h"
+
+#include "llvfile.h"
+#include "llvfs.h"
+#include "llviewerregion.h"
+
+#include "message.h"
+
+#include "llagent.h"
+#include "llassetuploadresponders.h"
+
+///////////////////////////////////////////////////////////////////////////////
+// misc
+
+static void postcard_upload_callback(const LLUUID& asset_id, void *user_data, S32 result, LLExtStat ext_status)
+{
+ LLSD* postcard_data = (LLSD*)user_data;
+
+ if (result)
+ {
+ // TODO: display the error messages in UI
+ llwarns << "Failed to send postcard: " << LLAssetStorage::getErrorString(result) << llendl;
+ LLPostCard::reportPostResult(false);
+ }
+ else
+ {
+ // only create the postcard once the upload succeeds
+
+ // request the postcard
+ const LLSD& data = *postcard_data;
+ LLMessageSystem* msg = gMessageSystem;
+ msg->newMessage("SendPostcard");
+ msg->nextBlock("AgentData");
+ msg->addUUID("AgentID", gAgent.getID());
+ msg->addUUID("SessionID", gAgent.getSessionID());
+ msg->addUUID("AssetID", data["asset-id"].asUUID());
+ msg->addVector3d("PosGlobal", LLVector3d(data["pos-global"]));
+ msg->addString("To", data["to"]);
+ msg->addString("From", data["from"]);
+ msg->addString("Name", data["name"]);
+ msg->addString("Subject", data["subject"]);
+ msg->addString("Msg", data["msg"]);
+ msg->addBOOL("AllowPublish", FALSE);
+ msg->addBOOL("MaturePublish", FALSE);
+ gAgent.sendReliableMessage();
+
+ LLPostCard::reportPostResult(true);
+ }
+
+ delete postcard_data;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// LLPostcardSendResponder
+
+class LLPostcardSendResponder : public LLAssetUploadResponder
+{
+ LOG_CLASS(LLPostcardSendResponder);
+
+public:
+ LLPostcardSendResponder(const LLSD &post_data,
+ const LLUUID& vfile_id,
+ LLAssetType::EType asset_type):
+ LLAssetUploadResponder(post_data, vfile_id, asset_type)
+ {
+ }
+
+ /*virtual*/ void uploadComplete(const LLSD& content)
+ {
+ llinfos << "Postcard sent" << llendl;
+ LL_DEBUGS("Snapshots") << "content: " << content << llendl;
+ LLPostCard::reportPostResult(true);
+ }
+
+ /*virtual*/ void uploadFailure(const LLSD& content)
+ {
+ llwarns << "Sending postcard failed: " << content << llendl;
+ LLPostCard::reportPostResult(false);
+ }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// LLPostCard
+
+LLPostCard::result_callback_t LLPostCard::mResultCallback;
+
+// static
+void LLPostCard::send(LLPointer<LLImageFormatted> image, const LLSD& postcard_data)
+{
+ LLTransactionID transaction_id;
+ LLAssetID asset_id;
+
+ transaction_id.generate();
+ asset_id = transaction_id.makeAssetID(gAgent.getSecureSessionID());
+ LLVFile::writeFile(image->getData(), image->getDataSize(), gVFS, asset_id, LLAssetType::AT_IMAGE_JPEG);
+
+ // upload the image
+ std::string url = gAgent.getRegion()->getCapability("SendPostcard");
+ if (!url.empty())
+ {
+ llinfos << "Sending postcard via capability" << llendl;
+ // the capability already encodes: agent ID, region ID
+ LL_DEBUGS("Snapshots") << "url: " << url << llendl;
+ LL_DEBUGS("Snapshots") << "body: " << postcard_data << llendl;
+ LL_DEBUGS("Snapshots") << "data size: " << image->getDataSize() << llendl;
+ LLHTTPClient::post(url, postcard_data,
+ new LLPostcardSendResponder(postcard_data, asset_id, LLAssetType::AT_IMAGE_JPEG));
+ }
+ else
+ {
+ llinfos << "Sending postcard" << llendl;
+ LLSD* data = new LLSD(postcard_data);
+ (*data)["asset-id"] = asset_id;
+ gAssetStorage->storeAssetData(transaction_id, LLAssetType::AT_IMAGE_JPEG,
+ &postcard_upload_callback, (void *)data, FALSE);
+ }
+}
+
+// static
+void LLPostCard::reportPostResult(bool ok)
+{
+ if (mResultCallback)
+ {
+ mResultCallback(ok);
+ }
+}
diff --git a/indra/newview/llpostcard.h b/indra/newview/llpostcard.h
new file mode 100644
index 0000000000..0eb118b906
--- /dev/null
+++ b/indra/newview/llpostcard.h
@@ -0,0 +1,48 @@
+/**
+ * @file llpostcard.h
+ * @brief Sending postcards.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPOSTCARD_H
+#define LL_LLPOSTCARD_H
+
+#include "llimage.h"
+#include "lluuid.h"
+
+class LLPostCard
+{
+ LOG_CLASS(LLPostCard);
+
+public:
+ typedef boost::function<void(bool ok)> result_callback_t;
+
+ static void send(LLPointer<LLImageFormatted> image, const LLSD& postcard_data);
+ static void setPostResultCallback(result_callback_t cb) { mResultCallback = cb; }
+ static void reportPostResult(bool ok);
+
+private:
+ static result_callback_t mResultCallback;
+};
+
+#endif // LL_LLPOSTCARD_H
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 119fc95cf0..18626e3273 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -363,8 +363,10 @@ void LLPreview::onBtnCopyToInv(void* userdata)
// Copy to inventory
if (self->mNotecardInventoryID.notNull())
{
- copy_inventory_from_notecard(self->mNotecardObjectID,
- self->mNotecardInventoryID, item);
+ copy_inventory_from_notecard(LLUUID::null,
+ self->mNotecardObjectID,
+ self->mNotecardInventoryID,
+ item);
}
else
{
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 18d6731fcb..3ff5a05d81 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -169,7 +169,7 @@ void LLPreviewTexture::draw()
saveAs();
}
// Draw the texture
- glColor3f( 1.f, 1.f, 1.f );
+ gGL.diffuseColor3f( 1.f, 1.f, 1.f );
gl_draw_scaled_image(interior.mLeft,
interior.mBottom,
interior.getWidth(),
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index a1f38f1854..5d7a5b1c59 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -187,7 +187,7 @@ void LLProgressView::setVisible(BOOL visible)
void LLProgressView::drawStartTexture(F32 alpha)
{
- glPushMatrix();
+ gGL.pushMatrix();
if (gStartTexture)
{
LLGLSUIDefault gls_ui;
@@ -200,13 +200,13 @@ void LLProgressView::drawStartTexture(F32 alpha)
// stretch image to maintain aspect ratio
if (image_aspect > view_aspect)
{
- glTranslatef(-0.5f * (image_aspect / view_aspect - 1.f) * width, 0.f, 0.f);
- glScalef(image_aspect / view_aspect, 1.f, 1.f);
+ gGL.translatef(-0.5f * (image_aspect / view_aspect - 1.f) * width, 0.f, 0.f);
+ gGL.scalef(image_aspect / view_aspect, 1.f, 1.f);
}
else
{
- glTranslatef(0.f, -0.5f * (view_aspect / image_aspect - 1.f) * height, 0.f);
- glScalef(1.f, view_aspect / image_aspect, 1.f);
+ gGL.translatef(0.f, -0.5f * (view_aspect / image_aspect - 1.f) * height, 0.f);
+ gGL.scalef(1.f, view_aspect / image_aspect, 1.f);
}
gl_rect_2d_simple_tex( getRect().getWidth(), getRect().getHeight() );
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -217,7 +217,7 @@ void LLProgressView::drawStartTexture(F32 alpha)
gGL.color4f(0.f, 0.f, 0.f, 1.f);
gl_rect_2d(getRect());
}
- glPopMatrix();
+ gGL.popMatrix();
}
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e3bc67a414..5301955964 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -41,7 +41,7 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
-#include "llsidetray.h"
+#include "llrootview.h"
#include <algorithm>
@@ -49,72 +49,101 @@ using namespace LLNotificationsUI;
bool LLScreenChannel::mWasStartUpToastShown = false;
+LLFastTimer::DeclareTimer FTM_GET_CHANNEL_RECT("Calculate Notification Channel Region");
+LLRect LLScreenChannelBase::getChannelRect()
+{
+ LLFastTimer _(FTM_GET_CHANNEL_RECT);
+
+ if (mFloaterSnapRegion == NULL)
+ {
+ mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+ }
+
+ if (mChicletRegion == NULL)
+ {
+ mChicletRegion = gViewerWindow->getRootView()->getChildView("chiclet_container");
+ }
+
+ LLRect channel_rect;
+ LLRect chiclet_rect;
+
+ mFloaterSnapRegion->localRectToScreen(mFloaterSnapRegion->getLocalRect(), &channel_rect);
+ mChicletRegion->localRectToScreen(mChicletRegion->getLocalRect(), &chiclet_rect);
+
+ channel_rect.mTop = chiclet_rect.mBottom;
+ return channel_rect;
+}
+
+
//--------------------------------------------------------------------------
//////////////////////
// LLScreenChannelBase
//////////////////////
-LLScreenChannelBase::LLScreenChannelBase(const LLUUID& id) :
- mToastAlignment(NA_BOTTOM)
- ,mCanStoreToasts(true)
- ,mHiddenToastsNum(0)
- ,mHoveredToast(NULL)
- ,mControlHovering(false)
- ,mShowToasts(true)
-{
- mID = id;
- mWorldViewRectConnection = gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLScreenChannelBase::updatePositionAndSize, this, _1, _2));
+LLScreenChannelBase::LLScreenChannelBase(const Params& p)
+: LLUICtrl(p),
+ mToastAlignment(p.toast_align),
+ mCanStoreToasts(true),
+ mHiddenToastsNum(0),
+ mHoveredToast(NULL),
+ mControlHovering(false),
+ mShowToasts(true),
+ mID(p.id),
+ mDisplayToastsAlways(p.display_toasts_always),
+ mChannelAlignment(p.channel_align),
+ mFloaterSnapRegion(NULL),
+ mChicletRegion(NULL)
+{
+ mID = p.id;
setMouseOpaque( false );
setVisible(FALSE);
}
-LLScreenChannelBase::~LLScreenChannelBase()
-{
- mWorldViewRectConnection.disconnect();
-}
-bool LLScreenChannelBase::isHovering()
+BOOL LLScreenChannelBase::postBuild()
{
- if (!mHoveredToast)
+ if (mFloaterSnapRegion == NULL)
{
- return false;
+ mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region");
}
-
- return mHoveredToast->isHovered();
+
+ if (mChicletRegion == NULL)
+ {
+ mChicletRegion = gViewerWindow->getRootView()->getChildView("chiclet_container");
+ }
+
+ return TRUE;
}
-void LLScreenChannelBase::resetPositionAndSize()
+void LLScreenChannelBase::reshape(S32 width, S32 height, BOOL called_from_parent)
{
- LLRect rc = gViewerWindow->getWorldViewRectScaled();
- updatePositionAndSize(rc, rc);
+ redrawToasts();
}
-void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
+bool LLScreenChannelBase::isHovering()
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
+ if (!mHoveredToast)
{
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
+ return false;
}
+ return mHoveredToast->isHovered();
+}
- S32 top_delta = old_world_rect.mTop - new_world_rect.mTop;
+void LLScreenChannelBase::updatePositionAndSize(LLRect rect)
+{
LLRect this_rect = getRect();
- this_rect.mTop -= top_delta;
+ this_rect.mTop = rect.mTop;
switch(mChannelAlignment)
{
case CA_LEFT :
break;
case CA_CENTRE :
- this_rect.setCenterAndSize( (new_world_rect.getWidth() - world_rect_padding) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
+ this_rect.setCenterAndSize( (rect.getWidth()) / 2, rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
break;
case CA_RIGHT :
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
@@ -126,45 +155,38 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
{
- if(LLSideTray::instanceCreated())
- {
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this));
- }
-
- // top and bottom set by updateBottom()
+ // top and bottom set by updateRect()
setRect(LLRect(channel_left, 0, channel_right, 0));
- updateBottom();
+ updateRect();
setVisible(TRUE);
}
-void LLScreenChannelBase::updateBottom()
+void LLScreenChannelBase::updateRect()
{
- S32 channel_top = gViewerWindow->getWorldViewRectScaled().getHeight();
- S32 channel_bottom = gSavedSettings.getS32("ChannelBottomPanelMargin");
+ S32 channel_top = getChannelRect().mTop;
+ S32 channel_bottom = getChannelRect().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");
S32 channel_left = getRect().mLeft;
S32 channel_right = getRect().mRight;
setRect(LLRect(channel_left, channel_top, channel_right, channel_bottom));
}
-
//--------------------------------------------------------------------------
//////////////////////
// LLScreenChannel
//////////////////////
//--------------------------------------------------------------------------
-LLScreenChannel::LLScreenChannel(LLUUID& id):
-LLScreenChannelBase(id)
-,mStartUpToastPanel(NULL)
-{
+LLScreenChannel::LLScreenChannel(const Params& p)
+: LLScreenChannelBase(p),
+ mStartUpToastPanel(NULL)
+{
}
//--------------------------------------------------------------------------
void LLScreenChannel::init(S32 channel_left, S32 channel_right)
{
LLScreenChannelBase::init(channel_left, channel_right);
- LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
- updatePositionAndSize(world_rect, world_rect);
+ LLRect channel_rect = getChannelRect();
+ updatePositionAndSize(channel_rect);
}
//--------------------------------------------------------------------------
@@ -201,19 +223,8 @@ std::list<LLToast*> LLScreenChannel::findToasts(const Matcher& matcher)
}
//--------------------------------------------------------------------------
-void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
+void LLScreenChannel::updatePositionAndSize(LLRect new_world_rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
LLRect this_rect = getRect();
switch(mChannelAlignment)
@@ -222,11 +233,11 @@ void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_wo
this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
break;
case CA_CENTRE :
- LLScreenChannelBase::updatePositionAndSize(old_world_rect, new_world_rect);
+ LLScreenChannelBase::updatePositionAndSize(new_world_rect);
return;
case CA_RIGHT :
this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
@@ -488,6 +499,13 @@ void LLScreenChannel::modifyToastByNotificationID(LLUUID id, LLPanel* panel)
//--------------------------------------------------------------------------
void LLScreenChannel::redrawToasts()
{
+ if (!getParent())
+ {
+ // connect to floater snap region just to get resize events, we don't care about being a proper widget
+ mFloaterSnapRegion->addChild(this);
+ setFollows(FOLLOWS_ALL);
+ }
+
if(mToastList.size() == 0)
return;
@@ -514,7 +532,7 @@ void LLScreenChannel::showToastsBottom()
S32 toast_margin = 0;
std::vector<ToastElem>::reverse_iterator it;
- updateBottom();
+ updateRect();
LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
@@ -546,9 +564,9 @@ void LLScreenChannel::showToastsBottom()
(*it).toast->translate(0, shift);
}
- LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
+ LLRect channel_rect = getChannelRect();
// don't show toasts if there is not enough space
- if(toast_rect.mTop > world_rect.mTop)
+ if(toast_rect.mTop > channel_rect.mTop)
{
break;
}
@@ -619,11 +637,103 @@ void LLScreenChannel::showToastsCentre()
//--------------------------------------------------------------------------
void LLScreenChannel::showToastsTop()
{
+ LLRect channel_rect = getChannelRect();
+
+ LLRect toast_rect;
+ S32 top = channel_rect.mTop;
+ S32 toast_margin = 0;
+ std::vector<ToastElem>::reverse_iterator it;
+
+ updateRect();
+
+ LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
+
+ for(it = mToastList.rbegin(); it != mToastList.rend(); ++it)
+ {
+ if(it != mToastList.rbegin())
+ {
+ LLToast* toast = (*(it-1)).toast;
+ top = toast->getRect().mBottom - toast->getTopPad();
+ toast_margin = gSavedSettings.getS32("ToastGap");
+ }
+
+ toast_rect = (*it).toast->getRect();
+ toast_rect.setLeftTopAndSize(channel_rect.mRight - toast_rect.getWidth(),
+ top, toast_rect.getWidth(),
+ toast_rect.getHeight());
+ (*it).toast->setRect(toast_rect);
+
+ if(floater && floater->overlapsScreenChannel())
+ {
+ if(it == mToastList.rbegin())
+ {
+ // move first toast above docked floater
+ S32 shift = -floater->getRect().getHeight();
+ if(floater->getDockControl())
+ {
+ shift -= floater->getDockControl()->getTongueHeight();
+ }
+ (*it).toast->translate(0, shift);
+ }
+
+ LLRect channel_rect = getChannelRect();
+ // don't show toasts if there is not enough space
+ if(toast_rect.mBottom < channel_rect.mBottom)
+ {
+ break;
+ }
+ }
+
+ bool stop_showing_toasts = (*it).toast->getRect().mBottom < channel_rect.mBottom;
+
+ if(!stop_showing_toasts)
+ {
+ if( it != mToastList.rend()-1)
+ {
+ S32 toast_bottom = (*it).toast->getRect().mBottom - gSavedSettings.getS32("ToastGap");
+ stop_showing_toasts = toast_bottom < channel_rect.mBottom;
+ }
+ }
+
+ // at least one toast should be visible
+ if(it == mToastList.rbegin())
+ {
+ stop_showing_toasts = false;
+ }
+
+ if(stop_showing_toasts)
+ break;
+
+ if( !(*it).toast->getVisible() )
+ {
+ // HACK
+ // EXT-2653: it is necessary to prevent overlapping for secondary showed toasts
+ (*it).toast->setVisible(TRUE);
+ }
+ if(!(*it).toast->hasFocus())
+ {
+ // Fixing Z-order of toasts (EXT-4862)
+ // Next toast will be positioned under this one.
+ gFloaterView->sendChildToBack((*it).toast);
+ }
+ }
+
+ // Dismiss toasts we don't have space for (STORM-391).
+ if(it != mToastList.rend())
+ {
+ mHiddenToastsNum = 0;
+ for(; it != mToastList.rend(); it++)
+ {
+ (*it).toast->hide();
+ }
+ }
}
//--------------------------------------------------------------------------
void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
{
+ LLScreenChannelBase::updateRect();
+
LLRect toast_rect;
LLToast::Params p;
p.lifetime_secs = timer;
@@ -646,13 +756,10 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
text_box->setValue(text);
text_box->setVisible(TRUE);
- S32 old_height = text_box->getRect().getHeight();
text_box->reshapeToFitText();
text_box->setOrigin(text_box->getRect().mLeft, (wrapper_panel->getRect().getHeight() - text_box->getRect().getHeight())/2);
- S32 new_height = text_box->getRect().getHeight();
- S32 height_delta = new_height - old_height;
- toast_rect.setLeftTopAndSize(0, toast_rect.getHeight() + height_delta +gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+ toast_rect.setLeftTopAndSize(0, getRect().getHeight() - gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
mStartUpToastPanel->setRect(toast_rect);
addChild(mStartUpToastPanel);
@@ -848,7 +955,7 @@ void LLScreenChannel::updateShowToastsState()
return;
}
- updateBottom();
+ updateRect();
}
//--------------------------------------------------------------------------
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index d207d13981..c9f8855fe6 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -53,22 +53,34 @@ class LLScreenChannelBase : public LLUICtrl
{
friend class LLChannelManager;
public:
- LLScreenChannelBase(const LLUUID& id);
- ~LLScreenChannelBase();
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+ {
+ Mandatory<LLUUID> id;
+ Optional<bool> display_toasts_always;
+ Optional<EToastAlignment> toast_align;
+ Optional<EChannelAlignment> channel_align;
+
+ Params()
+ : id("id", LLUUID("")),
+ display_toasts_always("display_toasts_always", false),
+ toast_align("toast_align", NA_BOTTOM),
+ channel_align("channel_align", CA_LEFT)
+ {}
+ };
+
+ LLScreenChannelBase(const Params&);
+
+ BOOL postBuild();
+
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
// Channel's outfit-functions
// update channel's size and position in the World View
- virtual void updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
- void resetPositionAndSize();
+ virtual void updatePositionAndSize(LLRect rect);
// initialization of channel's shape and position
virtual void init(S32 channel_left, S32 channel_right);
-
- virtual void setToastAlignment(EToastAlignment align) {mToastAlignment = align;}
-
- virtual void setChannelAlignment(EChannelAlignment align) {mChannelAlignment = align;}
-
// kill or modify a toast by its ID
virtual void killToastByNotificationID(LLUUID id) {};
virtual void modifyToastNotificationByID(LLUUID id, LLSD data) {};
@@ -91,7 +103,6 @@ public:
void setCanStoreToasts(bool store) { mCanStoreToasts = store; }
- void setDisplayToastsAlways(bool display_toasts) { mDisplayToastsAlways = display_toasts; }
bool getDisplayToastsAlways() { return mDisplayToastsAlways; }
// get number of hidden notifications from a channel
@@ -106,17 +117,20 @@ public:
// get ID of a channel
LLUUID getChannelID() { return mID; }
+ LLHandle<LLScreenChannelBase> getHandle() { mRootHandle.bind(this); return mRootHandle; }
protected:
- void updateBottom();
+ void updateRect();
+ LLRect getChannelRect();
// Channel's flags
bool mControlHovering;
- LLToast* mHoveredToast;
+ LLToast* mHoveredToast;
bool mCanStoreToasts;
bool mDisplayToastsAlways;
// controls whether a channel shows toasts or not
bool mShowToasts;
+ LLRootHandle<LLScreenChannelBase> mRootHandle;
//
EToastAlignment mToastAlignment;
EChannelAlignment mChannelAlignment;
@@ -125,9 +139,9 @@ protected:
// channel's ID
LLUUID mID;
-
- // store a connection to prevent futher crash that is caused by sending a signal to a destroyed channel
- boost::signals2::connection mWorldViewRectConnection;
+
+ LLView* mFloaterSnapRegion;
+ LLView* mChicletRegion;
};
@@ -138,7 +152,7 @@ class LLScreenChannel : public LLScreenChannelBase
{
friend class LLChannelManager;
public:
- LLScreenChannel(LLUUID& id);
+ LLScreenChannel(const Params&);
virtual ~LLScreenChannel();
class Matcher
@@ -153,7 +167,7 @@ public:
// Channel's outfit-functions
// update channel's size and position in the World View
- void updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
+ void updatePositionAndSize(LLRect new_rect);
// initialization of channel's shape and position
void init(S32 channel_left, S32 channel_right);
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 170e23e4c5..85a7e75271 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -28,9 +28,9 @@
#include "llscriptfloater.h"
#include "llagentcamera.h"
-#include "llbottomtray.h"
#include "llchannelmanager.h"
#include "llchiclet.h"
+#include "llchicletbar.h"
#include "llfloaterreg.h"
#include "lllslconstants.h"
#include "llnotifications.h"
@@ -95,7 +95,7 @@ bool LLScriptFloater::toggle(const LLUUID& notification_id)
show(notification_id);
}
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
return true;
}
@@ -131,11 +131,6 @@ void LLScriptFloater::setNotificationId(const LLUUID& id)
mObjectId = notification_id_to_object_id(id);
}
-void LLScriptFloater::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
void LLScriptFloater::createForm(const LLUUID& notification_id)
{
// delete old form
@@ -211,7 +206,7 @@ void LLScriptFloater::setVisible(BOOL visible)
if(!visible)
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
if(chiclet)
{
chiclet->setToggleState(false);
@@ -224,7 +219,7 @@ void LLScriptFloater::onMouseDown()
if(getNotificationId().notNull())
{
// Remove new message icon
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
if (chiclet == NULL)
{
llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
@@ -267,7 +262,7 @@ void LLScriptFloater::onFocusLost()
{
if(getNotificationId().notNull())
{
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
}
}
@@ -276,7 +271,7 @@ void LLScriptFloater::onFocusReceived()
// first focus will be received before setObjectId() call - don't toggle chiclet
if(getNotificationId().notNull())
{
- LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
+ LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
}
}
@@ -284,7 +279,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
{
if (getDockControl() == NULL)
{
- LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
+ LLChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
if (chiclet == NULL)
{
llwarns << "Dock chiclet for LLScriptFloater doesn't exist" << llendl;
@@ -292,7 +287,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+ LLChicletBar::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
}
// Stop saving position while we dock floater
@@ -300,7 +295,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
setSavePosition(false);
setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
- LLDockControl::TOP, boost::bind(&LLScriptFloater::getAllowedRect, this, _1)));
+ LLDockControl::BOTTOM));
setDocked(dock);
@@ -352,7 +347,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
if(it != mNotifications.end())
{
- LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
+ LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
if(chiclet)
{
// Pass the new_message icon state further.
@@ -375,11 +370,11 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
// Create inventory offer chiclet for offer type notifications
if( OBJ_GIVE_INVENTORY == obj_type )
{
- LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
+ LLChicletBar::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
}
else
{
- LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
+ LLChicletBar::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
}
LLIMWellWindow::getInstance()->addObjectRow(notification_id, set_new_message);
@@ -413,7 +408,7 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
}
// remove related chiclet
- LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(notification_id);
+ LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id);
LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index 8e959a3d0e..70451194b3 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -185,8 +185,6 @@ protected:
*/
void createForm(const LLUUID& object_id);
- /*virtual*/ void getAllowedRect(LLRect& rect);
-
/**
* Hide all notification toasts.
*/
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 733902ad30..5d0d1ef9a3 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -89,6 +89,7 @@
#include "llvoavatarself.h"
#include "llvovolume.h"
#include "pipeline.h"
+#include "llviewershadermgr.h"
#include "llglheaders.h"
@@ -4837,7 +4838,7 @@ void LLSelectMgr::processForceObjectSelect(LLMessageSystem* msg, void**)
LLSelectMgr::getInstance()->highlightObjectAndFamily(objects);
}
-extern LLGLdouble gGLModelView[16];
+extern F32 gGLModelView[16];
void LLSelectMgr::updateSilhouettes()
{
@@ -5133,20 +5134,20 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
F32 cur_zoom = gAgentCamera.mHUDCurZoom;
// set up transform to encompass bounding box of HUD
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
F32 depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);
- glOrtho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
+ gGL.ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
gGL.pushUIMatrix();
gGL.loadUIIdentity();
- glLoadIdentity();
- glLoadMatrixf(OGL_TO_CFR_ROTATION); // Load Cory's favorite reference frame
- glTranslatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
- glScalef(cur_zoom, cur_zoom, cur_zoom);
+ gGL.loadIdentity();
+ gGL.loadMatrix(OGL_TO_CFR_ROTATION); // Load Cory's favorite reference frame
+ gGL.translatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
+ gGL.scalef(cur_zoom, cur_zoom, cur_zoom);
}
if (mSelectedObjects->getNumNodes())
{
@@ -5239,10 +5240,10 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
if (isAgentAvatarValid() && for_hud)
{
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
gGL.popUIMatrix();
stop_glerror();
@@ -5566,12 +5567,11 @@ void pushWireframe(LLDrawable* drawable)
{
LLVertexBuffer::unbind();
gGL.pushMatrix();
- glMultMatrixf((F32*) vobj->getRelativeXform().mMatrix);
+ gGL.multMatrix((F32*) vobj->getRelativeXform().mMatrix);
for (S32 i = 0; i < rigged_volume->getNumVolumeFaces(); ++i)
{
const LLVolumeFace& face = rigged_volume->getVolumeFace(i);
- glVertexPointer(3, GL_FLOAT, 16, face.mPositions);
- glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);
+ LLVertexBuffer::drawElements(LLRender::TRIANGLES, face.mPositions, face.mTexCoords, face.mNumIndices, face.mIndices);
}
gGL.popMatrix();
}
@@ -5584,7 +5584,7 @@ void pushWireframe(LLDrawable* drawable)
LLFace* face = drawable->getFace(i);
if (face->verify())
{
- pushVerts(face, LLVertexBuffer::MAP_VERTEX);
+ pushVerts(face, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0);
}
}
}
@@ -5604,22 +5604,29 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
return;
}
- glMatrixMode(GL_MODELVIEW);
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+ if (shader)
+ {
+ gHighlightProgram.bind();
+ }
+
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
BOOL is_hud_object = objectp->isHUDAttachment();
if (drawable->isActive())
{
- glLoadMatrixd(gGLModelView);
- glMultMatrixf((F32*) objectp->getRenderMatrix().mMatrix);
+ gGL.loadMatrix(gGLModelView);
+ gGL.multMatrix((F32*) objectp->getRenderMatrix().mMatrix);
}
else if (!is_hud_object)
{
- glLoadIdentity();
- glMultMatrixd(gGLModelView);
+ gGL.loadIdentity();
+ gGL.multMatrix(gGLModelView);
LLVector3 trans = objectp->getRegion()->getOriginAgent();
- glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
+ gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
}
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
@@ -5627,26 +5634,35 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
if (LLSelectMgr::sRenderHiddenSelections) // && gFloaterTools && gFloaterTools->getVisible())
{
gGL.blendFunc(LLRender::BF_SOURCE_COLOR, LLRender::BF_ONE);
- LLGLEnable fog(GL_FOG);
- glFogi(GL_FOG_MODE, GL_LINEAR);
- float d = (LLViewerCamera::getInstance()->getPointOfInterest()-LLViewerCamera::getInstance()->getOrigin()).magVec();
- LLColor4 fogCol = color * (F32)llclamp((LLSelectMgr::getInstance()->getSelectionCenterGlobal()-gAgentCamera.getCameraPositionGlobal()).magVec()/(LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal().magVec()*4), 0.0, 1.0);
- glFogf(GL_FOG_START, d);
- glFogf(GL_FOG_END, d*(1 + (LLViewerCamera::getInstance()->getView() / LLViewerCamera::getInstance()->getDefaultFOV())));
- glFogfv(GL_FOG_COLOR, fogCol.mV);
-
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GEQUAL);
- gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ if (shader)
{
- glColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
+ gGL.diffuseColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
pushWireframe(drawable);
}
+ else
+ {
+ LLGLEnable fog(GL_FOG);
+ glFogi(GL_FOG_MODE, GL_LINEAR);
+ float d = (LLViewerCamera::getInstance()->getPointOfInterest()-LLViewerCamera::getInstance()->getOrigin()).magVec();
+ LLColor4 fogCol = color * (F32)llclamp((LLSelectMgr::getInstance()->getSelectionCenterGlobal()-gAgentCamera.getCameraPositionGlobal()).magVec()/(LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal().magVec()*4), 0.0, 1.0);
+ glFogf(GL_FOG_START, d);
+ glFogf(GL_FOG_END, d*(1 + (LLViewerCamera::getInstance()->getView() / LLViewerCamera::getInstance()->getDefaultFOV())));
+ glFogfv(GL_FOG_COLOR, fogCol.mV);
+
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ {
+ gGL.diffuseColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
+ pushWireframe(drawable);
+ }
+ }
}
gGL.flush();
gGL.setSceneBlendType(LLRender::BT_ALPHA);
- glColor4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2);
+ gGL.diffuseColor4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2);
+
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(3.f, 3.f);
glLineWidth(3.f);
@@ -5654,6 +5670,11 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
glLineWidth(1.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
gGL.popMatrix();
+
+ if (shader)
+ {
+ shader->bind();
+ }
}
//-----------------------------------------------------------------------------
@@ -5692,21 +5713,29 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
return;
}
- glMatrixMode(GL_MODELVIEW);
+
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+ if (shader)
+ { //switch to "solid color" program for SH-2690 -- works around driver bug causing bad triangles when rendering silhouettes
+ gSolidColorProgram.bind();
+ }
+
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
gGL.pushUIMatrix();
gGL.loadUIIdentity();
if (!is_hud_object)
{
- glLoadIdentity();
- glMultMatrixd(gGLModelView);
+ gGL.loadIdentity();
+ gGL.multMatrix(gGLModelView);
}
if (drawable->isActive())
{
- glMultMatrixf((F32*) objectp->getRenderMatrix().mMatrix);
+ gGL.multMatrix((F32*) objectp->getRenderMatrix().mMatrix);
}
LLVolume *volume = objectp->getVolume();
@@ -5814,6 +5843,11 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
}
gGL.popMatrix();
gGL.popUIMatrix();
+
+ if (shader)
+ {
+ shader->bind();
+ }
}
//
@@ -6503,7 +6537,7 @@ F32 LLObjectSelection::getSelectedObjectStreamingCost(S32* total_bytes, S32* vis
return cost;
}
-U32 LLObjectSelection::getSelectedObjectTriangleCount()
+U32 LLObjectSelection::getSelectedObjectTriangleCount(S32* vcount)
{
U32 count = 0;
for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter)
@@ -6513,7 +6547,7 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount()
if (object)
{
- count += object->getTriangleCount();
+ count += object->getTriangleCount(vcount);
}
}
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 166616e13e..87ada5ac6b 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -286,7 +286,7 @@ public:
S32 getSelectedObjectRenderCost();
F32 getSelectedObjectStreamingCost(S32* total_bytes = NULL, S32* visible_bytes = NULL);
- U32 getSelectedObjectTriangleCount();
+ U32 getSelectedObjectTriangleCount(S32* vcount = NULL);
S32 getTECount();
S32 getRootObjectCount();
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 28ec11d1c7..853656905c 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -32,6 +32,7 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llinventorypanel.h"
#include "llfiltereditor.h"
@@ -41,7 +42,6 @@
#include "lloutfitobserver.h"
#include "llpaneleditwearable.h"
#include "llpaneloutfitsinventory.h"
-#include "llsidetray.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
@@ -163,7 +163,6 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
else
{
// Switch to the requested panel.
- // *TODO: replace this crap with LLSideTrayPanelContainer
std::string type = key["type"].asString();
if (type == "my_outfits")
{
@@ -456,7 +455,7 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
//static
void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch)
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance");
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
if (panel)
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index bd62b5c101..9d069c3996 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -34,6 +34,7 @@
#include "llbutton.h"
#include "lldate.h"
#include "llfirstuse.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfoldertype.h"
#include "llhttpclient.h"
#include "llinventorybridge.h"
@@ -112,21 +113,13 @@ public:
switch (added_category_type)
{
case LLFolderType::FT_INBOX:
+ mSidepanelInventory->enableInbox(true);
mSidepanelInventory->observeInboxModifications(added_category->getUUID());
break;
case LLFolderType::FT_OUTBOX:
+ mSidepanelInventory->enableOutbox(true);
mSidepanelInventory->observeOutboxModifications(added_category->getUUID());
break;
- case LLFolderType::FT_NONE:
- // HACK until sim update to properly create folder with system type
- if (added_category->getName() == "Received Items")
- {
- mSidepanelInventory->observeInboxModifications(added_category->getUUID());
- }
- else if (added_category->getName() == "Merchant Outbox")
- {
- mSidepanelInventory->observeOutboxModifications(added_category->getUUID());
- }
default:
break;
}
@@ -172,16 +165,20 @@ LLSidepanelInventory::~LLSidepanelInventory()
void handleInventoryDisplayInboxChanged()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+ }
}
void handleInventoryDisplayOutboxChanged()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+ }
}
BOOL LLSidepanelInventory::postBuild()
@@ -277,16 +274,19 @@ BOOL LLSidepanelInventory::postBuild()
enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
// Trigger callback for after login so we can setup to track inbox and outbox changes after initial inventory load
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::handleLoginComplete, this));
+ LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::updateInboxOutbox, this));
}
gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged));
+ // Update the verbs buttons state.
+ updateVerbs();
+
return TRUE;
}
-void LLSidepanelInventory::handleLoginComplete()
+void LLSidepanelInventory::updateInboxOutbox()
{
//
// Track inbox and outbox folder changes
@@ -307,20 +307,20 @@ void LLSidepanelInventory::handleLoginComplete()
// Set up observer for inbox changes, if we have an inbox already
if (!inbox_id.isNull())
{
- observeInboxModifications(inbox_id);
-
// Enable the display of the inbox if it exists
enableInbox(true);
+
+ observeInboxModifications(inbox_id);
}
#if ENABLE_MERCHANT_OUTBOX_PANEL
// Set up observer for outbox changes, if we have an outbox already
if (!outbox_id.isNull())
{
- observeOutboxModifications(outbox_id);
-
// Enable the display of the outbox if it exists
enableOutbox(true);
+
+ observeOutboxModifications(outbox_id);
}
#endif
}
@@ -450,6 +450,24 @@ void LLSidepanelInventory::enableOutbox(bool enabled)
}
}
+void LLSidepanelInventory::openInbox()
+{
+ if (mInboxEnabled)
+ {
+ getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true);
+ onToggleInboxBtn();
+ }
+}
+
+void LLSidepanelInventory::openOutbox()
+{
+ if (mOutboxEnabled)
+ {
+ getChild<LLButton>(OUTBOX_BUTTON_NAME)->setToggleState(true);
+ onToggleOutboxBtn();
+ }
+}
+
void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)
{
// Trigger a load of the entire inbox so we always know the contents and their creation dates for sorting
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index b7d11f7f9b..2c6f807013 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -47,7 +47,7 @@ public:
virtual ~LLSidepanelInventory();
private:
- void handleLoginComplete();
+ void updateInboxOutbox();
public:
void observeInboxOutboxCreation();
@@ -58,6 +58,9 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
LLInventoryPanel* getActivePanel(); // Returns an active inventory panel, if any.
+ LLInventoryPanel* getInboxPanel() const { return mInventoryPanelInbox; }
+ LLInventoryPanel* getOutboxPanel() const { return mInventoryPanelOutbox; }
+
LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }
BOOL isMainInventoryPanelActive() const;
@@ -77,6 +80,9 @@ public:
void enableInbox(bool enabled);
void enableOutbox(bool enabled);
+ void openInbox();
+ void openOutbox();
+
bool isInboxEnabled() const { return mInboxEnabled; }
bool isOutboxEnabled() const { return mOutboxEnabled; }
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 8774482acd..24cb559fd0 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -117,6 +117,42 @@ BOOL LLSidepanelTaskInfo::postBuild()
childSetCommitCallback("checkbox next owner can transfer", &LLSidepanelTaskInfo::onCommitNextOwnerTransfer,this);
childSetCommitCallback("clickaction", &LLSidepanelTaskInfo::onCommitClickAction,this);
childSetCommitCallback("search_check", &LLSidepanelTaskInfo::onCommitIncludeInSearch,this);
+
+ mDAPermModify = getChild<LLUICtrl>("perm_modify");
+ mDACreator = getChildView("Creator:");
+ mDACreatorName = getChild<LLUICtrl>("Creator Name");
+ mDAOwner = getChildView("Owner:");
+ mDAOwnerName = getChild<LLUICtrl>("Owner Name");
+ mDAGroup = getChildView("Group:");
+ mDAGroupName = getChild<LLUICtrl>("Group Name");
+ mDAButtonSetGroup = getChildView("button set group");
+ mDAObjectName = getChild<LLUICtrl>("Object Name");
+ mDAName = getChildView("Name:");
+ mDADescription = getChildView("Description:");
+ mDAObjectDescription = getChild<LLUICtrl>("Object Description");
+ mDAPermissions = getChildView("Permissions:");
+ mDACheckboxShareWithGroup = getChild<LLUICtrl>("checkbox share with group");
+ mDAButtonDeed = getChildView("button deed");
+ mDACheckboxAllowEveryoneMove = getChild<LLUICtrl>("checkbox allow everyone move");
+ mDACheckboxAllowEveryoneCopy = getChild<LLUICtrl>("checkbox allow everyone copy");
+ mDANextOwnerCan = getChildView("Next owner can:");
+ mDACheckboxNextOwnerCanModify = getChild<LLUICtrl>("checkbox next owner can modify");
+ mDACheckboxNextOwnerCanCopy = getChild<LLUICtrl>("checkbox next owner can copy");
+ mDACheckboxNextOwnerCanTransfer = getChild<LLUICtrl>("checkbox next owner can transfer");
+ mDACheckboxForSale = getChild<LLUICtrl>("checkbox for sale");
+ mDASearchCheck = getChild<LLUICtrl>("search_check");
+ mDAComboSaleType = getChild<LLComboBox>("sale type");
+ mDACost = getChild<LLUICtrl>("Cost");
+ mDAEditCost = getChild<LLUICtrl>("Edit Cost");
+ mDALabelClickAction = getChildView("label click action");
+ mDAComboClickAction = getChild<LLComboBox>("clickaction");
+ mDAB = getChildView("B:");
+ mDAO = getChildView("O:");
+ mDAG = getChildView("G:");
+ mDAE = getChildView("E:");
+ mDAN = getChildView("N:");
+ mDAF = getChildView("F:");
+
return TRUE;
}
@@ -138,81 +174,80 @@ BOOL LLSidepanelTaskInfo::postBuild()
void LLSidepanelTaskInfo::disableAll()
{
- getChildView("perm_modify")->setEnabled(FALSE);
- getChild<LLUICtrl>("perm_modify")->setValue(LLStringUtil::null);
-
- getChildView("Creator:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Creator Name")->setValue(LLStringUtil::null);
- getChildView("Creator Name")->setEnabled(FALSE);
-
- getChildView("Owner:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Owner Name")->setValue(LLStringUtil::null);
- getChildView("Owner Name")->setEnabled(FALSE);
-
- getChildView("Group:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
- getChildView("Group Name")->setEnabled(FALSE);
- getChildView("button set group")->setEnabled(FALSE);
-
- getChild<LLUICtrl>("Object Name")->setValue(LLStringUtil::null);
- getChildView("Object Name")->setEnabled(FALSE);
- getChildView("Name:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
- getChildView("Group Name")->setEnabled(FALSE);
- getChildView("Description:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Object Description")->setValue(LLStringUtil::null);
- getChildView("Object Description")->setEnabled(FALSE);
-
- getChildView("Permissions:")->setEnabled(FALSE);
+ mDAPermModify->setEnabled(FALSE);
+ mDAPermModify->setValue(LLStringUtil::null);
+
+ mDACreator->setEnabled(FALSE);
+ mDACreatorName->setValue(LLStringUtil::null);
+ mDACreatorName->setEnabled(FALSE);
+
+ mDAOwner->setEnabled(FALSE);
+ mDAOwnerName->setValue(LLStringUtil::null);
+ mDAOwnerName->setEnabled(FALSE);
+
+ mDAGroup->setEnabled(FALSE);
+ mDAGroupName->setValue(LLStringUtil::null);
+ mDAGroupName->setEnabled(FALSE);
+ mDAButtonSetGroup->setEnabled(FALSE);
+
+ mDAObjectName->setValue(LLStringUtil::null);
+ mDAObjectName->setEnabled(FALSE);
+ mDAName->setEnabled(FALSE);
+ mDAGroupName->setValue(LLStringUtil::null);
+ mDAGroupName->setEnabled(FALSE);
+ mDADescription->setEnabled(FALSE);
+ mDAObjectDescription->setValue(LLStringUtil::null);
+ mDAObjectDescription->setEnabled(FALSE);
+
+ mDAPermissions->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox share with group")->setValue(FALSE);
- getChildView("checkbox share with group")->setEnabled(FALSE);
- getChildView("button deed")->setEnabled(FALSE);
+ mDACheckboxShareWithGroup->setValue(FALSE);
+ mDACheckboxShareWithGroup->setEnabled(FALSE);
+ mDAButtonDeed->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(FALSE);
- getChildView("checkbox allow everyone move")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(FALSE);
- getChildView("checkbox allow everyone copy")->setEnabled(FALSE);
+ mDACheckboxAllowEveryoneMove->setValue(FALSE);
+ mDACheckboxAllowEveryoneMove->setEnabled(FALSE);
+ mDACheckboxAllowEveryoneCopy->setValue(FALSE);
+ mDACheckboxAllowEveryoneCopy->setEnabled(FALSE);
//Next owner can:
- getChildView("Next owner can:")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(FALSE);
- getChildView("checkbox next owner can modify")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(FALSE);
- getChildView("checkbox next owner can copy")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(FALSE);
- getChildView("checkbox next owner can transfer")->setEnabled(FALSE);
+ mDANextOwnerCan->setEnabled(FALSE);
+ mDACheckboxNextOwnerCanModify->setValue(FALSE);
+ mDACheckboxNextOwnerCanModify->setEnabled(FALSE);
+ mDACheckboxNextOwnerCanCopy->setValue(FALSE);
+ mDACheckboxNextOwnerCanCopy->setEnabled(FALSE);
+ mDACheckboxNextOwnerCanTransfer->setValue(FALSE);
+ mDACheckboxNextOwnerCanTransfer->setEnabled(FALSE);
//checkbox for sale
- getChild<LLUICtrl>("checkbox for sale")->setValue(FALSE);
- getChildView("checkbox for sale")->setEnabled(FALSE);
+ mDACheckboxForSale->setValue(FALSE);
+ mDACheckboxForSale->setEnabled(FALSE);
//checkbox include in search
- getChild<LLUICtrl>("search_check")->setValue(FALSE);
- getChildView("search_check")->setEnabled(FALSE);
+ mDASearchCheck->setValue(FALSE);
+ mDASearchCheck->setEnabled(FALSE);
- LLComboBox* combo_sale_type = getChild<LLComboBox>("sale type");
- combo_sale_type->setValue(LLSaleInfo::FS_COPY);
- combo_sale_type->setEnabled(FALSE);
+ mDAComboSaleType->setValue(LLSaleInfo::FS_COPY);
+ mDAComboSaleType->setEnabled(FALSE);
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ mDACost->setEnabled(FALSE);
+ mDACost->setValue(getString("Cost Default"));
+ mDAEditCost->setValue(LLStringUtil::null);
+ mDAEditCost->setEnabled(FALSE);
- getChildView("label click action")->setEnabled(FALSE);
- LLComboBox* combo_click_action = getChild<LLComboBox>("clickaction");
- if (combo_click_action)
+ mDALabelClickAction->setEnabled(FALSE);
+ if (mDAComboClickAction)
{
- combo_click_action->setEnabled(FALSE);
- combo_click_action->clear();
+ mDAComboClickAction->setEnabled(FALSE);
+ mDAComboClickAction->clear();
}
- getChildView("B:")->setVisible( FALSE);
- getChildView("O:")->setVisible( FALSE);
- getChildView("G:")->setVisible( FALSE);
- getChildView("E:")->setVisible( FALSE);
- getChildView("N:")->setVisible( FALSE);
- getChildView("F:")->setVisible( FALSE);
+
+ mDAB->setVisible(FALSE);
+ mDAO->setVisible(FALSE);
+ mDAG->setVisible(FALSE);
+ mDAE->setVisible(FALSE);
+ mDAN->setVisible(FALSE);
+ mDAF->setVisible(FALSE);
mOpenBtn->setEnabled(FALSE);
mPayBtn->setEnabled(FALSE);
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index 384bc479d6..be0fee2127 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -37,8 +37,9 @@
// Panel for permissions of an object.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLNameBox;
class LLCheckBoxCtrl;
+class LLComboBox;
+class LLNameBox;
class LLViewerObject;
class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
@@ -118,6 +119,43 @@ private:
LLPointer<LLViewerObject> mObject;
LLObjectSelectionHandle mObjectSelection;
static LLSidepanelTaskInfo* sActivePanel;
+
+private:
+ // Pointers cached here to speed up the "disableAll" function which gets called on idle
+ LLUICtrl* mDAPermModify;
+ LLView* mDACreator;
+ LLUICtrl* mDACreatorName;
+ LLView* mDAOwner;
+ LLUICtrl* mDAOwnerName;
+ LLView* mDAGroup;
+ LLUICtrl* mDAGroupName;
+ LLView* mDAButtonSetGroup;
+ LLUICtrl* mDAObjectName;
+ LLView* mDAName;
+ LLView* mDADescription;
+ LLUICtrl* mDAObjectDescription;
+ LLView* mDAPermissions;
+ LLUICtrl* mDACheckboxShareWithGroup;
+ LLView* mDAButtonDeed;
+ LLUICtrl* mDACheckboxAllowEveryoneMove;
+ LLUICtrl* mDACheckboxAllowEveryoneCopy;
+ LLView* mDANextOwnerCan;
+ LLUICtrl* mDACheckboxNextOwnerCanModify;
+ LLUICtrl* mDACheckboxNextOwnerCanCopy;
+ LLUICtrl* mDACheckboxNextOwnerCanTransfer;
+ LLUICtrl* mDACheckboxForSale;
+ LLUICtrl* mDASearchCheck;
+ LLComboBox* mDAComboSaleType;
+ LLUICtrl* mDACost;
+ LLUICtrl* mDAEditCost;
+ LLView* mDALabelClickAction;
+ LLComboBox* mDAComboClickAction;
+ LLView* mDAB;
+ LLView* mDAO;
+ LLView* mDAG;
+ LLView* mDAE;
+ LLView* mDAN;
+ LLView* mDAF;
};
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
deleted file mode 100644
index 50ecad92dd..0000000000
--- a/indra/newview/llsidetray.cpp
+++ /dev/null
@@ -1,1488 +0,0 @@
-/**
- * @file llsidetray.cpp
- * @brief SideBar implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lltextbox.h"
-
-#include "llagentcamera.h"
-#include "llappviewer.h"
-#include "llbadge.h"
-#include "llbottomtray.h"
-#include "llfloaterreg.h"
-#include "llfirstuse.h"
-#include "llhints.h"
-#include "llsidetray.h"
-#include "llviewerwindow.h"
-#include "llaccordionctrl.h"
-#include "llfocusmgr.h"
-#include "llrootview.h"
-#include "llnavigationbar.h"
-#include "llpanelmarketplaceinbox.h"
-
-#include "llaccordionctrltab.h"
-
-#include "llfloater.h" //for gFloaterView
-#include "lliconctrl.h"//for OpenClose tab icon
-#include "llsidetraypanelcontainer.h"
-#include "llscreenchannel.h"
-#include "llchannelmanager.h"
-#include "llwindow.h"//for SetCursor
-#include "lltransientfloatermgr.h"
-
-#include "llsidepanelappearance.h"
-
-#include "llsidetraylistener.h"
-
-//#include "llscrollcontainer.h"
-
-using namespace std;
-using namespace LLNotificationsUI;
-
-class LLSideTrayButton;
-
-static LLRootViewRegistry::Register<LLSideTray> t1("side_tray");
-static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab");
-
-static const S32 BOTTOM_BAR_PAD = 5;
-
-static const std::string COLLAPSED_NAME = "<<";
-static const std::string EXPANDED_NAME = ">>";
-
-static const std::string TAB_PANEL_CAPTION_NAME = "sidetray_tab_panel";
-static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title";
-
-LLSideTray* LLSideTray::sInstance = 0;
-
-static LLSideTrayListener sSideTrayListener(LLSideTray::getInstance);
-
-// static
-LLSideTray* LLSideTray::getInstance()
-{
- if (!sInstance)
- {
- sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance());
- sInstance->setXMLFilename("panel_side_tray.xml");
- }
-
- return sInstance;
-}
-
-// static
-bool LLSideTray::instanceCreated ()
-{
- return sInstance!=0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayTab
-// Represents a single tab in the side tray, only used by LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayTab: public LLPanel
-{
- LOG_CLASS(LLSideTrayTab);
- friend class LLUICtrlFactory;
- friend class LLSideTray;
-public:
-
- struct Params
- : public LLInitParam::Block<Params, LLPanel::Params>
- {
- // image name
- Optional<std::string> image;
- Optional<std::string> image_selected;
- Optional<std::string> tab_title;
- Optional<std::string> description;
- Optional<LLBadge::Params> badge;
-
- Params()
- : image("image"),
- image_selected("image_selected"),
- tab_title("tab_title","no title"),
- description("description","no description"),
- badge("badge")
- {};
- };
-protected:
- LLSideTrayTab(const Params& params);
-
- void dock(LLFloater* floater_tab);
- void undock(LLFloater* floater_tab);
-
- LLSideTray* getSideTray();
-
-public:
- virtual ~LLSideTrayTab();
-
- /*virtual*/ BOOL postBuild ();
- /*virtual*/ bool addChild (LLView* view, S32 tab_group);
-
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static LLSideTrayTab* createInstance ();
-
- const std::string& getDescription () const { return mDescription;}
-
- void onOpen (const LLSD& key);
-
- void toggleTabDocked(bool toggle_floater = true);
- void setDocked(bool dock);
- bool isDocked() const;
-
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
-
- LLPanel* getPanel();
-
- LLButton* createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback);
-
-private:
- std::string mTabTitle;
- std::string mImage;
- std::string mImageSelected;
- std::string mDescription;
-
- LLView* mMainPanel;
-
- bool mHasBadge;
- LLBadge::Params mBadgeParams;
- LLSideTrayButton* mSideTrayButton;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayButton
-// Side Tray tab button with "tear off" handling.
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayButton : public LLButton
-{
-public:
- /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask)
- {
- // Route future Mouse messages here preemptively. (Release on mouse up.)
- // No handler needed for focus lost since this class has no state that depends on it.
- gFocusMgr.setMouseCapture(this);
-
- localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY);
-
- // Note: don't pass on to children
- return TRUE;
- }
-
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask)
- {
- // We only handle the click if the click both started and ended within us
- if( !hasMouseCapture() ) return FALSE;
-
- S32 screen_x;
- S32 screen_y;
- localPointToScreen(x, y, &screen_x, &screen_y);
-
- S32 delta_x = screen_x - mDragLastScreenX;
- S32 delta_y = screen_y - mDragLastScreenY;
-
- LLSideTray* side_tray = LLSideTray::getInstance();
-
- // Check if the tab we are dragging is docked.
- if (!side_tray->isTabAttached(mTabName)) return FALSE;
-
- // Same value is hardcoded in LLDragHandle::handleHover().
- const S32 undock_threshold = 12;
-
- // Detach a tab if it has been pulled further than undock_threshold.
- if (delta_x <= -undock_threshold || delta_x >= undock_threshold ||
- delta_y <= -undock_threshold || delta_y >= undock_threshold)
- {
- LLSideTrayTab* tab = side_tray->getTab(mTabName);
- if (!tab) return FALSE;
-
- tab->setDocked(false);
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName());
- if (!floater_tab) return FALSE;
-
- LLRect original_rect = floater_tab->getRect();
- S32 header_snap_y = floater_tab->getHeaderHeight() / 2;
- S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2;
- S32 snap_y = screen_y - original_rect.mTop + header_snap_y;
-
- // Move the floater to appear "under" the mouse pointer.
- floater_tab->setRect(original_rect.translate(snap_x, snap_y));
-
- // Snap the mouse pointer to the center of the floater header
- // and call 'mouse down' event handler to begin dragging.
- floater_tab->handleMouseDown(original_rect.getWidth() / 2,
- original_rect.getHeight() - header_snap_y,
- mask);
-
- return TRUE;
- }
-
- return FALSE;
- }
-
- void setBadgeDriver(LLSideTrayTabBadgeDriver* driver)
- {
- mBadgeDriver = driver;
- }
-
- void setVisible(BOOL visible)
- {
- setBadgeVisibility(visible);
-
- LLButton::setVisible(visible);
- }
-
-protected:
- LLSideTrayButton(const LLButton::Params& p)
- : LLButton(p)
- , mDragLastScreenX(0)
- , mDragLastScreenY(0)
- , mBadgeDriver(NULL)
- {
- // Find out the tab name to use in handleHover().
- size_t pos = getName().find("_button");
- llassert(pos != std::string::npos);
- mTabName = getName().substr(0, pos);
- }
-
- friend class LLUICtrlFactory;
-
- void draw()
- {
- if (mBadgeDriver)
- {
- setBadgeLabel(mBadgeDriver->getBadgeString());
- }
-
- LLButton::draw();
- }
-
-private:
- S32 mDragLastScreenX;
- S32 mDragLastScreenY;
-
- std::string mTabName;
- LLSideTrayTabBadgeDriver* mBadgeDriver;
-};
-
-
-////////////////////////////////////////////////////
-// LLSideTrayTab implementation
-////////////////////////////////////////////////////
-
-LLSideTrayTab::LLSideTrayTab(const Params& p)
-: LLPanel(),
- mTabTitle(p.tab_title),
- mImage(p.image),
- mImageSelected(p.image_selected),
- mDescription(p.description),
- mMainPanel(NULL),
- mBadgeParams(p.badge),
- mSideTrayButton(NULL)
-{
- mHasBadge = p.badge.isProvided();
-}
-
-LLSideTrayTab::~LLSideTrayTab()
-{
-}
-
-bool LLSideTrayTab::addChild(LLView* view, S32 tab_group)
-{
- if(mMainPanel == 0 && TAB_PANEL_CAPTION_NAME != view->getName())//skip our caption panel
- mMainPanel = view;
- return LLPanel::addChild(view,tab_group);
- //return res;
-}
-
-//virtual
-BOOL LLSideTrayTab::postBuild()
-{
- LLPanel* title_panel = LLUICtrlFactory::getInstance()->createFromFile<LLPanel>("panel_side_tray_tab_caption.xml",this, child_registry_t::instance());
- string name = title_panel->getName();
- LLPanel::addChild(title_panel);
-
- title_panel->getChild<LLTextBox>(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle);
-
- getChild<LLButton>("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, false));
- getChild<LLButton>("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, true));
-
- return LLPanel::postBuild();
-}
-
-static const S32 splitter_margin = 1;
-
-void LLSideTrayTab::reshape (S32 width, S32 height, BOOL called_from_parent )
-{
- LLPanel::reshape(width, height, called_from_parent);
- LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true);
- if (!title_panel)
- {
- // not fully constructed yet
- return;
- }
-
- S32 title_height = title_panel->getRect().getHeight();
- title_panel->setOrigin( 0, height - title_height );
- title_panel->reshape(width,title_height);
-
- LLRect sRect;
- sRect.setLeftTopAndSize( splitter_margin, height - title_height - splitter_margin,
- width - 2*splitter_margin, height - title_height - 2*splitter_margin);
- mMainPanel->setShape(sRect);
-}
-
-void LLSideTrayTab::onOpen (const LLSD& key)
-{
- LLPanel *panel = getPanel();
- if(panel)
- panel->onOpen(key);
-}
-
-// Attempts to get the existing side tray instance.
-// Needed to avoid recursive calls of LLSideTray::getInstance().
-LLSideTray* LLSideTrayTab::getSideTray()
-{
- // First, check if the side tray is our parent (i.e. we're attached).
- LLSideTray* side_tray = dynamic_cast<LLSideTray*>(getParent());
- if (!side_tray)
- {
- // Detached? Ok, check if the instance exists at all/
- if (LLSideTray::instanceCreated())
- {
- side_tray = LLSideTray::getInstance();
- }
- else
- {
- llerrs << "No safe way to get the side tray instance" << llendl;
- }
- }
-
- return side_tray;
-}
-
-void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
-{
- // *FIX: Calling this method twice per frame would crash the viewer.
-
- std::string tab_name = getName();
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return;
-
- bool docking = !isDocked();
-
- if (mSideTrayButton)
- {
- mSideTrayButton->setVisible(docking);
- }
-
- // Hide the "Tear Off" button when a tab gets undocked
- // and show "Dock" button instead.
- getChild<LLButton>("undock")->setVisible(docking);
- getChild<LLButton>("dock")->setVisible(!docking);
-
- if (docking)
- {
- dock(floater_tab);
- }
- else
- {
- undock(floater_tab);
- }
-
- // Open/close the floater *after* we reparent the tab panel,
- // so that it doesn't receive redundant visibility change notifications.
- if (toggle_floater)
- {
- LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
- }
-}
-
-// Same as toggleTabDocked() apart from making sure that we do exactly what we want.
-void LLSideTrayTab::setDocked(bool dock)
-{
- if (isDocked() == dock)
- {
- llwarns << "Tab " << getName() << " is already " << (dock ? "docked" : "undocked") << llendl;
- return;
- }
-
- toggleTabDocked();
-}
-
-bool LLSideTrayTab::isDocked() const
-{
- return dynamic_cast<LLSideTray*>(getParent()) != NULL;
-}
-
-BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
-{
- // Let children handle the event
- LLUICtrl::handleScrollWheel(x, y, clicks);
-
- // and then eat it to prevent in-world scrolling (STORM-351).
- return TRUE;
-}
-
-void LLSideTrayTab::dock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Before docking the tab, reset its (and its children's) transparency to default (STORM-688).
- floater_tab->updateTransparency(TT_DEFAULT);
-
- if (!side_tray->addTab(this))
- {
- llwarns << "Failed to add tab " << getName() << " to side tray" << llendl;
- return;
- }
-
- setRect(side_tray->getLocalRect());
- reshape(getRect().getWidth(), getRect().getHeight());
-
- // Select the re-docked tab.
- side_tray->selectTabByName(getName());
-
- if (side_tray->getCollapsed())
- {
- side_tray->expandSideBar(false);
- }
-}
-
-static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized)
-{
- if (!panel) return;
- bool visible = !minimized.asBoolean();
- LLSD visibility;
- visibility["visible"] = visible;
- // Do not reset accordion state on minimize (STORM-375)
- visibility["reset_accordion"] = false;
- panel->updateToVisibility(visibility);
-}
-
-void LLSideTrayTab::undock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Remember whether the tab have been active before detaching
- // because removeTab() will change active tab.
- bool was_active = side_tray->getActiveTab() == this;
-
- // Remove the tab from Side Tray's tabs list.
- // We have to do it despite removing the tab from Side Tray's child view tree
- // by addChild(). Otherwise the tab could be accessed by the pointer in LLSideTray::mTabs.
- if (!side_tray->removeTab(this))
- {
- llwarns << "Failed to remove tab " << getName() << " from side tray" << llendl;
- return;
- }
-
- // If we're undocking while side tray is collapsed we need to explicitly show the panel.
- if (!getVisible())
- {
- setVisible(true);
- }
-
- floater_tab->addChild(this);
- floater_tab->setTitle(mTabTitle);
- floater_tab->setName(getName());
-
- // Resize handles get obscured by added panel so move them to front.
- floater_tab->moveResizeHandlesToFront();
-
- // Reshape the floater if needed.
- LLRect floater_rect;
- if (floater_tab->hasSavedRect())
- {
- // We've got saved rect for the floater, hence no need to reshape it.
- floater_rect = floater_tab->getLocalRect();
- }
- else
- {
- // Detaching for the first time. Reshape the floater.
- floater_rect = side_tray->getLocalRect();
-
- // Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar.
- floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD;
- floater_rect.makeValid();
- floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight());
- }
-
- // Reshape the panel.
- {
- LLRect panel_rect = floater_tab->getLocalRect();
- panel_rect.mTop -= floater_tab->getHeaderHeight();
- panel_rect.makeValid();
- setRect(panel_rect);
- reshape(panel_rect.getWidth(), panel_rect.getHeight());
- }
-
- // Set FOLLOWS_ALL flag for the tab to follow floater dimensions upon resizing.
- setFollowsAll();
-
- // Camera view may need to be changed for appearance panel(STORM-301) on minimize of floater,
- // so setting callback here.
- if (getName() == "sidebar_appearance")
- {
- LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel());
- if(panel_appearance)
- {
- floater_tab->setMinimizeCallback(boost::bind(&on_minimize, panel_appearance, _2));
- }
- }
-
- if (!side_tray->getCollapsed())
- {
- side_tray->collapseSideBar();
- }
-
- if (!was_active)
- {
- // When a tab other then current active tab is detached from Side Tray
- // onOpen() should be called as tab visibility is changed.
- onOpen(LLSD());
- }
-}
-
-LLPanel* LLSideTrayTab::getPanel()
-{
- LLPanel* panel = dynamic_cast<LLPanel*>(mMainPanel);
- return panel;
-}
-
-LLSideTrayTab* LLSideTrayTab::createInstance ()
-{
- LLSideTrayTab::Params tab_params;
- tab_params.tab_title("openclose");
-
- LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab>(tab_params);
- return tab;
-}
-
-// Now that we know the definition of LLSideTrayTab, we can implement
-// tab_cast.
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab) { return tab; }
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-LLSideTray::Params::Params()
-: collapsed("collapsed",false),
- tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Off.png")),
- tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Selected.png")),
- default_button_width("tab_btn_width",32),
- default_button_height("tab_btn_height",32),
- default_button_margin("tab_btn_margin",0)
-{}
-
-//virtual
-LLSideTray::LLSideTray(const Params& params)
- : LLPanel(params)
- ,mActiveTab(0)
- ,mCollapsed(false)
- ,mCollapseButton(0)
-{
- mCollapsed=params.collapsed;
-
- LLUICtrl::CommitCallbackRegistry::Registrar& commit = LLUICtrl::CommitCallbackRegistry::currentRegistrar();
-
- // register handler function to process data from the xml.
- // panel_name should be specified via "parameter" attribute.
- commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
- commit.add("SideTray.Toggle", boost::bind(&LLSideTray::onToggleCollapse, this));
- commit.add("SideTray.Collapse", boost::bind(&LLSideTray::collapseSideBar, this));
- LLTransientFloaterMgr::getInstance()->addControlView(this);
- LLView* side_bar_tabs = gViewerWindow->getRootView()->getChildView("side_bar_tabs");
- if (side_bar_tabs != NULL)
- {
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
- }
-
- LLPanel::Params p;
- p.name = "buttons_panel";
- p.mouse_opaque = false;
- mButtonsPanel = LLUICtrlFactory::create<LLPanel>(p);
-}
-
-
-BOOL LLSideTray::postBuild()
-{
- createButtons();
-
- arrange();
- selectTabByName("sidebar_home");
-
- if(mCollapsed)
- collapseSideBar();
-
- setMouseOpaque(false);
-
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
-
- // Remember original tabs order, so that we can restore it if user detaches and then re-attaches a tab.
- for (child_vector_const_iter_t it = mTabs.begin(); it != mTabs.end(); ++it)
- {
- std::string tab_name = (*it)->getName();
- mOriginalTabOrder.push_back(tab_name);
- }
-
- //EXT-8045
- //connect all already created channels to reflect sidetray collapse/expand
- std::vector<LLChannelManager::ChannelElem>& channels = LLChannelManager::getInstance()->getChannelList();
- for(std::vector<LLChannelManager::ChannelElem>::iterator it = channels.begin();it!=channels.end();++it)
- {
- if ((*it).channel)
- {
- setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel));
- }
- }
-
- return true;
-}
-
-void LLSideTray::setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver)
-{
- mTabButtonBadgeDrivers[tabName] = driver;
-}
-
-void LLSideTray::handleLoginComplete()
-{
- //reset tab to "home" tab if it was changesd during login process
- selectTabByName("sidebar_home");
-
- for (badge_map_t::iterator it = mTabButtonBadgeDrivers.begin(); it != mTabButtonBadgeDrivers.end(); ++it)
- {
- LLButton* button = mTabButtons[it->first];
- LLSideTrayButton* side_button = dynamic_cast<LLSideTrayButton*>(button);
-
- if (side_button)
- {
- side_button->setBadgeDriver(it->second);
- }
- else
- {
- llwarns << "Unable to find button " << it->first << " to set the badge driver. " << llendl;
- }
- }
-
- detachTabs();
-}
-
-LLSideTrayTab* LLSideTray::getTab(const std::string& name)
-{
- return findChild<LLSideTrayTab>(name,false);
-}
-
-bool LLSideTray::isTabAttached(const std::string& name)
-{
- LLSideTrayTab* tab = getTab(name);
- if (!tab) return false;
-
- return std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end();
-}
-
-bool LLSideTray::hasTabs()
-{
- // The open/close tab doesn't count.
- return mTabs.size() > 1;
-}
-
-void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
-{
- if(tab == NULL)
- return;
- std::string name = tab->getName();
- std::map<std::string,LLButton*>::iterator it = mTabButtons.find(name);
- if(it != mTabButtons.end())
- {
- LLButton* btn = it->second;
- bool new_state = !btn->getToggleState();
- btn->setToggleState(new_state);
- // Only highlight the tab if side tray is expanded (STORM-157).
- btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
- }
-}
-
-LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params)
-{
- LLView* view = tab->findChildView(panel_name, true);
- if (!view) return NULL;
-
- std::string tab_name = tab->getName();
-
- bool tab_attached = isTabAttached(tab_name);
-
- if (tab_attached && LLUI::sSettingGroups["config"]->getBOOL("OpenSidePanelsInFloaters"))
- {
- tab->setDocked(false);
- tab_attached = false;
- }
-
- // Select tab and expand Side Tray only when a tab is attached.
- if (tab_attached)
- {
- selectTabByName(tab_name);
- if (mCollapsed)
- expandSideBar();
- }
- else
- {
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return NULL;
-
- floater_tab->openFloater(tab_name);
- }
-
- LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
- if (container)
- {
- LLSD new_params = params;
- new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
- container->onOpen(new_params);
-
- return container->getCurrentPanel();
- }
-
- LLPanel* panel = dynamic_cast<LLPanel*>(view);
- if (panel)
- {
- panel->onOpen(params);
- }
-
- return panel;
-}
-
-bool LLSideTray::selectTabByIndex(size_t index)
-{
- if(index>=mTabs.size())
- return false;
-
- LLSideTrayTab* sidebar_tab = mTabs[index];
- return selectTabByName(sidebar_tab->getName());
-}
-
-bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible)
-{
- LLSideTrayTab* tab_to_keep_visible = NULL;
- LLSideTrayTab* new_tab = getTab(name);
- if (!new_tab) return false;
-
- // Bail out if already selected.
- if (new_tab == mActiveTab)
- return false;
-
- //deselect old tab
- if (mActiveTab)
- {
- // Keep previously active tab visible if requested.
- if (keep_prev_visible) tab_to_keep_visible = mActiveTab;
- toggleTabButton(mActiveTab);
- }
-
- //select new tab
- mActiveTab = new_tab;
-
- if (mActiveTab)
- {
- toggleTabButton(mActiveTab);
- LLSD key;//empty
- mActiveTab->onOpen(key);
- }
-
- //arrange();
-
- //hide all tabs - show active tab
- child_vector_const_iter_t child_it;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- bool vis = sidebar_tab == mActiveTab;
-
- // Force keeping the tab visible if requested.
- vis |= sidebar_tab == tab_to_keep_visible;
-
- // When the last tab gets detached, for a short moment the "Toggle Sidebar" pseudo-tab
- // is shown. So, to avoid the flicker we make sure it never gets visible.
- vis &= (*child_it)->getName() != "sidebar_openclose";
-
- sidebar_tab->setVisible(vis);
- }
- return true;
-}
-
-bool LLSideTray::addChild(LLView* view, S32 tab_group)
-{
- LLSideTrayTab* tab_panel = dynamic_cast<LLSideTrayTab*>(view);
-
- if (tab_panel)
- {
- mTabs.push_back(tab_panel);
- }
-
- return LLUICtrl::addChild(view, tab_group);
-}
-
-bool LLSideTray::removeTab(LLSideTrayTab* tab)
-{
- if (!tab) return false;
- std::string tab_name = tab->getName();
-
- // Look up the tab in the list of known tabs.
- child_vector_iter_t tab_it = std::find(mTabs.begin(), mTabs.end(), tab);
- if (tab_it == mTabs.end())
- {
- llwarns << "Cannot find tab named " << tab_name << llendl;
- return false;
- }
-
- // Find the button corresponding to the tab.
- button_map_t::iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Cannot find button for tab named " << tab_name << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Deselect the tab.
- if (mActiveTab == tab)
- {
- // Select the next tab (or first one, if we're removing the last tab),
- // skipping the fake open/close tab (STORM-155).
- child_vector_iter_t next_tab_it = tab_it;
- do
- {
- next_tab_it = (next_tab_it < (mTabs.end() - 1)) ? next_tab_it + 1 : mTabs.begin();
- }
- while ((*next_tab_it)->getName() == "sidebar_openclose");
-
- selectTabByName((*next_tab_it)->getName(), true); // Don't hide the tab being removed.
- }
-
- // Remove the tab.
- removeChild(tab);
- mTabs.erase(tab_it);
-
- // Add the tab to detached tabs list.
- mDetachedTabs.push_back(tab);
-
- // Remove the button from the buttons panel so that it isn't drawn anymore.
- mButtonsPanel->removeChild(btn);
-
- // Re-arrange remaining tabs.
- arrange();
-
- return true;
-}
-
-bool LLSideTray::addTab(LLSideTrayTab* tab)
-{
- if (tab == NULL) return false;
-
- std::string tab_name = tab->getName();
-
- // Make sure the tab isn't already in the list.
- if (std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end())
- {
- llwarns << "Attempt to re-add existing tab " << tab_name << llendl;
- return false;
- }
-
- // Look up the corresponding button.
- button_map_t::const_iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Tab " << tab_name << " has no associated button" << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Insert the tab at its original position.
- LLUICtrl::addChild(tab);
- {
- tab_order_vector_const_iter_t new_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), tab_name);
- llassert(new_tab_orig_pos != mOriginalTabOrder.end());
- child_vector_iter_t insert_pos = mTabs.end();
-
- for (child_vector_iter_t tab_it = mTabs.begin(); tab_it != mTabs.end(); ++tab_it)
- {
- tab_order_vector_const_iter_t cur_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), (*tab_it)->getName());
- llassert(cur_tab_orig_pos != mOriginalTabOrder.end());
-
- if (new_tab_orig_pos < cur_tab_orig_pos)
- {
- insert_pos = tab_it;
- break;
- }
- }
-
- mTabs.insert(insert_pos, tab);
- }
-
- // Add the button to the buttons panel so that it's drawn again.
- mButtonsPanel->addChildInBack(btn);
-
- // Arrange tabs after inserting a new one.
- arrange();
-
- // Remove the tab from the list of detached tabs.
- child_vector_iter_t tab_it = std::find(mDetachedTabs.begin(), mDetachedTabs.end(), tab);
- if (tab_it != mDetachedTabs.end())
- {
- mDetachedTabs.erase(tab_it);
- }
-
- return true;
-}
-
-LLButton* LLSideTrayTab::createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback)
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
-
- LLRect rect;
- rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height);
-
- LLButton::Params bparams;
-
- // Append "_button" to the side tray tab name
- std::string button_name = getName() + "_button";
- bparams.name(button_name);
- bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);
- bparams.rect (rect);
- bparams.tab_stop(false);
- bparams.image_unselected(sidetray_params.tab_btn_image_normal);
- bparams.image_selected(sidetray_params.tab_btn_image_selected);
- bparams.image_disabled(sidetray_params.tab_btn_image_normal);
- bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);
-
- if (mHasBadge)
- {
- bparams.badge = mBadgeParams;
- }
-
- LLButton* button;
- if (allowTearOff)
- {
- mSideTrayButton = LLUICtrlFactory::create<LLSideTrayButton>(bparams);
-
- button = mSideTrayButton;
- }
- else
- {
- // "Open/Close" button shouldn't allow "tear off"
- // hence it is created as LLButton instance.
- button = LLUICtrlFactory::create<LLButton>(bparams);
- }
-
- button->setClickedCallback(callback);
-
- button->setToolTip(mTabTitle);
-
- if(mImage.length())
- {
- button->setImageOverlay(mImage);
- }
-
- return button;
-}
-
-void LLSideTray::createButtons()
-{
- //create buttons for tabs
- child_vector_const_iter_t child_it = mTabs.begin();
- for ( ; child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- std::string name = sidebar_tab->getName();
-
- // The "OpenClose" button will open/close the whole panel
- if (name == "sidebar_openclose")
- {
- mCollapseButton = sidebar_tab->createButton(false, boost::bind(&LLSideTray::onToggleCollapse, this));
-
- mButtonsPanel->addChildInBack(mCollapseButton);
-
- LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle());
- }
- else
- {
- LLButton* button = sidebar_tab->createButton(true, boost::bind(&LLSideTray::onTabButtonClick, this, name));
-
- mButtonsPanel->addChildInBack(button);
-
- mTabButtons[name] = button;
- }
- }
-
- LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle());
-}
-
-void LLSideTray::processTriState ()
-{
- if(mCollapsed)
- expandSideBar();
- else
- {
-#if 0 // *TODO: EXT-2092
-
- // Tell the active task panel to switch to its default view
- // or collapse side tray if already on the default view.
- LLSD info;
- info["task-panel-action"] = "handle-tri-state";
- mActiveTab->notifyChildren(info);
-#else
- collapseSideBar();
-#endif
- }
-}
-
-void LLSideTray::onTabButtonClick(string name)
-{
- LLSideTrayTab* tab = getTab(name);
- if (!tab) return;
-
- if(tab == mActiveTab)
- {
- processTriState ();
- return;
- }
- selectTabByName (name);
- if(mCollapsed)
- expandSideBar();
-}
-
-void LLSideTray::onToggleCollapse()
-{
- LLFirstUse::notUsingSidePanel(false);
- if(mCollapsed)
- {
- expandSideBar();
- //selectTabByName("sidebar_openclose");
- }
- else
- collapseSideBar();
-}
-
-
-void LLSideTray::reflectCollapseChange()
-{
- updateSidetrayVisibility();
-
- setFocus(!mCollapsed);
-
- gFloaterView->refresh();
-}
-
-void LLSideTray::arrange()
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
-
- updateSidetrayVisibility();
-
- LLRect ctrl_rect;
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight() - sidetray_params.default_button_width,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- mCollapseButton->setRect(ctrl_rect);
-
- //arrange tab buttons
- //arrange tab buttons
- child_vector_const_iter_t child_it;
- int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight()-offset,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end())
- continue;
-
- LLButton* btn = mTabButtons[sidebar_tab->getName()];
-
- btn->setRect(ctrl_rect);
- offset+=sidetray_params.default_button_height;
- offset+=sidetray_params.default_button_margin;
-
- btn->setVisible(ctrl_rect.mBottom > 0);
- }
-
- //arrange tabs
- for ( child_vector_t::iterator child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
- sidebar_tab->setShape(getLocalRect());
- }
-
- // The tab buttons should be shown only if there is at least one non-detached tab.
- // Also hide them in mouse-look mode.
- mButtonsPanel->setVisible(hasTabs() && !gAgentCamera.cameraMouselook());
-}
-
-// Detach those tabs that were detached when the viewer exited last time.
-void LLSideTray::detachTabs()
-{
- // copy mTabs because LLSideTray::toggleTabDocked() modifies it.
- child_vector_t tabs = mTabs;
-
- for (child_vector_const_iter_t it = tabs.begin(); it != tabs.end(); ++it)
- {
- LLSideTrayTab* tab = *it;
-
- std::string floater_ctrl_name = LLFloater::getControlName("side_bar_tab", LLSD(tab->getName()));
- std::string vis_ctrl_name = LLFloaterReg::getVisibilityControlName(floater_ctrl_name);
- if (!LLFloater::getControlGroup()->controlExists(vis_ctrl_name)) continue;
-
- bool is_visible = LLFloater::getControlGroup()->getBOOL(vis_ctrl_name);
- if (!is_visible) continue;
-
- llassert(isTabAttached(tab->getName()));
- tab->setDocked(false);
- }
-}
-
-void LLSideTray::collapseSideBar()
-{
- mCollapsed = true;
- // Reset all overlay images, because there is no "selected" tab when the
- // whole side tray is hidden.
- child_vector_const_iter_t it = mTabs.begin();
- for ( ; it != mTabs.end(); ++it )
- {
- LLSideTrayTab* tab = *it;
- std::string name = tab->getName();
- std::map<std::string,LLButton*>::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( tab->mImage );
- }
- }
-
- // OpenClose tab doesn't put its button in mTabButtons
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImage );
- }
- //mActiveTab->setVisible(FALSE);
- reflectCollapseChange();
- setFocus( FALSE );
-}
-
-void LLSideTray::expandSideBar(bool open_active)
-{
- mCollapsed = false;
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImageSelected );
- }
-
- if (open_active)
- {
- mActiveTab->onOpen(LLSD());
- }
-
- reflectCollapseChange();
-
-
- std::string name = mActiveTab->getName();
- std::map<std::string,LLButton*>::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( mActiveTab->mImageSelected );
- }
-}
-
-void LLSideTray::highlightFocused()
-{
- /* uncomment in case something change
- if(!mActiveTab)
- return;
- BOOL dependent_has_focus = gFocusMgr.childHasKeyboardFocus(this);
- setBackgroundOpaque( dependent_has_focus );
- mActiveTab->setBackgroundOpaque( dependent_has_focus );
- */
-}
-
-//virtual
-BOOL LLSideTray::handleMouseDown (S32 x, S32 y, MASK mask)
-{
- BOOL ret = LLPanel::handleMouseDown(x,y,mask);
- if(ret)
- setFocus(true);
- return ret;
-}
-
-void LLSideTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
- if(!mActiveTab)
- return;
-
- arrange();
-}
-
-// This is just LLView::findChildView specialized to restrict the search to LLPanels.
-// Optimization for EXT-4068 to avoid searching down to the individual item level
-// when inventories are large.
-LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse)
-{
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
- if (!child_panel)
- continue;
- if (child_panel->getName() == name)
- return child_panel;
- }
- if (recurse)
- {
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
- if (!child_panel)
- continue;
- LLPanel *found_panel = findChildPanel(child_panel,name,recurse);
- if (found_panel)
- {
- return found_panel;
- }
- }
- }
- return NULL;
-}
-
-/**
- * Activate tab with "panel_name" panel
- * if no such tab - return false, otherwise true.
- * TODO* In some cases a pointer to a panel of
- * a specific class may be needed so this method
- * would need to use templates.
- */
-LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& params)
-{
- LLPanel* new_panel = NULL;
-
- // Look up the tab in the list of detached tabs.
- child_vector_const_iter_t child_it;
- for ( child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- // Look up the tab in the list of attached tabs.
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- return new_panel;
-}
-
-bool LLSideTray::hidePanel(const std::string& panel_name)
-{
- bool panelHidden = false;
-
- LLPanel* panelp = getPanel(panel_name);
-
- if (panelp)
- {
- LLView* parentp = panelp->getParent();
-
- // Collapse the side bar if the panel or the panel's parent is an attached tab
- if (isTabAttached(panel_name) || (parentp && isTabAttached(parentp->getName())))
- {
- collapseSideBar();
- panelHidden = true;
- }
- else
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", panel_name);
-
- if (!panelHidden)
- {
- // Look up the panel in the list of detached tabs.
- for (child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *detached_panel = dynamic_cast<LLPanel*>(*child_it);
-
- if (detached_panel)
- {
- // Hide this detached panel if it is a parent of our panel
- if (findChildPanel(detached_panel, panel_name, true) != NULL)
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", detached_panel->getName());
- break;
- }
- }
- }
- }
- }
- }
-
- return panelHidden;
-}
-
-void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params)
-{
- if(!sub_panel)
- return;
-
- // If a panel is visible and attached to Side Tray (has LLSideTray among its ancestors)
- // it should be toggled off by collapsing Side Tray.
- if (sub_panel->isInVisibleChain() && sub_panel->hasAncestor(this))
- {
- LLSideTray::getInstance()->collapseSideBar();
- }
- else
- {
- LLSideTray::getInstance()->showPanel(panel_name, params);
- }
-}
-
-LLPanel* LLSideTray::getPanel(const std::string& panel_name)
-{
- // Look up the panel in the list of detached tabs.
- for ( child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
-
- // Look up the panel in the list of attached tabs.
- for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
- return NULL;
-}
-
-LLPanel* LLSideTray::getActivePanel()
-{
- if (mActiveTab && !mCollapsed)
- {
- return mActiveTab->getPanel();
- }
- return NULL;
-}
-
-bool LLSideTray::isPanelActive(const std::string& panel_name)
-{
- LLPanel *panel = getActivePanel();
- if (!panel) return false;
- return (panel->getName() == panel_name);
-}
-
-void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
-{
- // Lookup tab by name.
- LLSideTrayTab* tab = getTab(tab_name);
- if (!tab)
- { // not a docked tab, look through detached tabs
- for(child_vector_iter_t tab_it = mDetachedTabs.begin(), tab_end_it = mDetachedTabs.end();
- tab_it != tab_end_it;
- ++tab_it)
- {
- if ((*tab_it)->getName() == tab_name)
- {
- tab = *tab_it;
- break;
- }
- }
-
- }
-
- llassert(tab != NULL);
-
- // Toggle its dock state.
- if (tab && tab->isDocked() != dock)
- {
- tab->toggleTabDocked(toggle_floater);
- }
-}
-
-
-void LLSideTray::updateSidetrayVisibility()
-{
- // set visibility of parent container based on collapsed state
- LLView* parent = getParent();
- if (parent)
- {
- bool old_visibility = parent->getVisible();
- bool new_visibility = !mCollapsed && !gAgentCamera.cameraMouselook();
-
- if (old_visibility != new_visibility)
- {
- parent->setVisible(new_visibility);
-
- // Signal change of visible width.
- //llinfos << "Visible: " << new_visibility << llendl;
- mVisibleWidthChangeSignal(this, new_visibility);
- }
- }
-}
-
-S32 LLSideTray::getVisibleWidth()
-{
- return (isInVisibleChain() && !mCollapsed) ? getRect().getWidth() : 0;
-}
-
-void LLSideTray::setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb)
-{
- mVisibleWidthChangeSignal.connect(cb);
-}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
deleted file mode 100644
index 17158329dc..0000000000
--- a/indra/newview/llsidetray.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * @file LLSideTray.h
- * @brief SideBar header file
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLSIDETRAY_H_
-#define LL_LLSIDETRAY_H_
-
-#include "llpanel.h"
-#include "string"
-
-class LLAccordionCtrl;
-class LLSideTrayTab;
-
-// Define an interface for side tab button badge values
-class LLSideTrayTabBadgeDriver
-{
-public:
- virtual std::string getBadgeString() const = 0;
-};
-
-// Deal with LLSideTrayTab being opaque. Generic do-nothing cast...
-template <class T>
-T tab_cast(LLSideTrayTab* tab) { return tab; }
-// specialized for implementation in presence of LLSideTrayTab definition
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab);
-
-// added inheritance from LLDestroyClass<LLSideTray> to enable Side Tray perform necessary actions
-// while disconnecting viewer in LLAppViewer::disconnectViewer().
-// LLDestroyClassList::instance().fireCallbacks() calls destroyClass method. See EXT-245.
-class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray>
-{
- friend class LLUICtrlFactory;
- friend class LLDestroyClass<LLSideTray>;
- friend class LLSideTrayTab;
- friend class LLSideTrayButton;
-public:
-
- LOG_CLASS(LLSideTray);
-
- struct Params
- : public LLInitParam::Block<Params, LLPanel::Params>
- {
- // initial state
- Optional<bool> collapsed;
- Optional<LLUIImage*> tab_btn_image_normal,
- tab_btn_image_selected;
-
- Optional<S32> default_button_width,
- default_button_height,
- default_button_margin;
-
- Params();
- };
-
- static LLSideTray* getInstance ();
- static bool instanceCreated ();
-protected:
- LLSideTray(const Params& params);
- typedef std::vector<LLSideTrayTab*> child_vector_t;
- typedef child_vector_t::iterator child_vector_iter_t;
- typedef child_vector_t::const_iterator child_vector_const_iter_t;
- typedef child_vector_t::reverse_iterator child_vector_reverse_iter_t;
- typedef child_vector_t::const_reverse_iterator child_vector_const_reverse_iter_t;
- typedef std::vector<std::string> tab_order_vector_t;
- typedef tab_order_vector_t::const_iterator tab_order_vector_const_iter_t;
-
-public:
-
- // interface functions
-
- /**
- * Select tab with specific name and set it active
- *
- * @param name Tab to switch to.
- * @param keep_prev_visible Whether to keep the previously selected tab visible.
- */
- bool selectTabByName (const std::string& name, bool keep_prev_visible = false);
-
- /**
- * Select tab with specific index and set it active
- */
- bool selectTabByIndex(size_t index);
-
- /**
- * Activate tab with "panel_name" panel
- * if no such tab - return NULL, otherwise a pointer to the panel
- * Pass params as array, or they may be overwritten(example - params["name"]="nearby")
- */
- LLPanel* showPanel (const std::string& panel_name, const LLSD& params = LLSD());
-
- bool hidePanel (const std::string& panel_name);
-
- /**
- * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel.
- * If "sub_panel" is not visible Side Tray is opened to display it,
- * otherwise Side Tray is collapsed.
- * params are passed to "panel_name" panel onOpen().
- */
- void togglePanel (LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params = LLSD());
-
- /*
- * get the panel (don't show it or do anything else with it)
- */
- LLPanel* getPanel (const std::string& panel_name);
- LLPanel* getActivePanel ();
- bool isPanelActive (const std::string& panel_name);
-
- void setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
-
- /*
- * get the panel of given type T (don't show it or do anything else with it)
- */
- template <typename T>
- T* getPanel(const std::string& panel_name)
- {
- T* panel = dynamic_cast<T*>(getPanel(panel_name));
- if (!panel)
- {
- llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
- return NULL;
- }
- return panel;
- }
-
- /*
- * collapse SideBar, hiding visible tab and moving tab buttons
- * to the right corner of the screen
- */
- void collapseSideBar ();
-
- /*
- * expand SideBar
- *
- * @param open_active Whether to call onOpen() for the active tab.
- */
- void expandSideBar(bool open_active = true);
-
-
- /**
- *hightlight if focused. manly copypaste from highlightFocusedFloater
- */
- void highlightFocused();
-
- void setVisible(BOOL visible)
- {
- if (getParent()) getParent()->setVisible(visible);
- }
-
- LLPanel* getButtonsPanel() { return mButtonsPanel; }
-
- bool getCollapsed() { return mCollapsed; }
-
- void setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver);
-
-public:
- virtual ~LLSideTray(){};
-
- virtual BOOL postBuild();
-
- BOOL handleMouseDown (S32 x, S32 y, MASK mask);
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
-
- /**
- * @return side tray width if it's visible and expanded, 0 otherwise.
- *
- * Not that width of the tab buttons is not included.
- *
- * @see setVisibleWidthChangeCallback()
- */
- S32 getVisibleWidth();
-
- void setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb);
-
- void updateSidetrayVisibility();
-
- void handleLoginComplete();
-
- bool isTabAttached (const std::string& name);
-
-protected:
- bool addChild (LLView* view, S32 tab_group);
- bool removeTab (LLSideTrayTab* tab); // Used to detach tabs temporarily
- bool addTab (LLSideTrayTab* tab); // Used to re-attach tabs
- bool hasTabs ();
-
- const LLSideTrayTab* getActiveTab() const { return mActiveTab; }
- LLSideTrayTab* getTab(const std::string& name);
-
- void createButtons ();
-
- void arrange ();
- void detachTabs ();
- void reflectCollapseChange();
- void processTriState ();
-
- void toggleTabButton (LLSideTrayTab* tab);
-
- LLPanel* openChildPanel (LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params);
-
- void onTabButtonClick(std::string name);
- void onToggleCollapse();
-
-private:
- // Implementation of LLDestroyClass<LLSideTray>
- static void destroyClass()
- {
- // Disable SideTray to avoid crashes. EXT-245
- if (LLSideTray::instanceCreated())
- LLSideTray::getInstance()->setEnabled(FALSE);
- }
-
-private:
- // Since we provide no public way to query mTabs and mDetachedTabs, give
- // LLSideTrayListener friend access.
- friend class LLSideTrayListener;
- LLPanel* mButtonsPanel;
- typedef std::map<std::string,LLButton*> button_map_t;
- button_map_t mTabButtons;
- typedef std::map<std::string,LLSideTrayTabBadgeDriver*> badge_map_t;
- badge_map_t mTabButtonBadgeDrivers;
- child_vector_t mTabs;
- child_vector_t mDetachedTabs;
- tab_order_vector_t mOriginalTabOrder;
- LLSideTrayTab* mActiveTab;
-
- commit_signal_t mVisibleWidthChangeSignal;
-
- LLButton* mCollapseButton;
- bool mCollapsed;
-
- static LLSideTray* sInstance;
-};
-
-#endif
-
diff --git a/indra/newview/llsidetraylistener.cpp b/indra/newview/llsidetraylistener.cpp
deleted file mode 100644
index cd6fa28948..0000000000
--- a/indra/newview/llsidetraylistener.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @file llsidetraylistener.cpp
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief Implementation for llsidetraylistener.
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-// Precompiled header
-#include "llviewerprecompiledheaders.h"
-// associated header
-#include "llsidetraylistener.h"
-// STL headers
-// std headers
-// external library headers
-// other Linden headers
-#include "llsidetray.h"
-#include "llsdutil.h"
-
-LLSideTrayListener::LLSideTrayListener(const Getter& getter):
- LLEventAPI("LLSideTray",
- "Operations on side tray (e.g. query state, query tabs)"),
- mGetter(getter)
-{
- add("getCollapsed", "Send on [\"reply\"] an [\"open\"] Boolean",
- &LLSideTrayListener::getCollapsed, LLSDMap("reply", LLSD()));
- add("getTabs",
- "Send on [\"reply\"] a map of tab names and info about them",
- &LLSideTrayListener::getTabs, LLSDMap("reply", LLSD()));
- add("getPanels",
- "Send on [\"reply\"] data about panels available with SideTray.ShowPanel",
- &LLSideTrayListener::getPanels, LLSDMap("reply", LLSD()));
-}
-
-void LLSideTrayListener::getCollapsed(const LLSD& event) const
-{
- sendReply(LLSDMap("open", ! mGetter()->getCollapsed()), event);
-}
-
-void LLSideTrayListener::getTabs(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- LLSD::Integer ord(0);
- for (LLSideTray::child_list_const_iter_t chi(tray->beginChild()), chend(tray->endChild());
- chi != chend; ++chi, ++ord)
- {
- LLView* child = *chi;
- // How much info is important? Toss in as much as seems reasonable for
- // each tab. But to me, at least for the moment, the most important
- // item is the tab name.
- LLSD info;
- // I like the idea of returning a map keyed by tab name. But as
- // compared to an array of maps, that loses sequence information.
- // Address that by indicating the original order in each map entry.
- info["ord"] = ord;
- info["visible"] = bool(child->getVisible());
- info["enabled"] = bool(child->getEnabled());
- info["available"] = child->isAvailable();
- reply[child->getName()] = info;
- }
-
- sendReply(reply, event);
-}
-
-static LLSD getTabInfo(LLPanel* tab)
-{
- LLSD panels;
- for (LLPanel::tree_iterator_t ti(tab->beginTreeDFS()), tend(tab->endTreeDFS());
- ti != tend; ++ti)
- {
- // *ti is actually an LLView*, which had better not be NULL
- LLView* view(*ti);
- if (! view)
- {
- LL_ERRS("LLSideTrayListener") << "LLSideTrayTab '" << tab->getName()
- << "' has a NULL child LLView*" << LL_ENDL;
- }
-
- // The logic we use to decide what "panel" names to return is heavily
- // based on LLSideTray::showPanel(): the function that actually
- // implements the "SideTray.ShowPanel" operation. showPanel(), in
- // turn, depends on LLSideTray::openChildPanel(): when
- // openChildPanel() returns non-NULL, showPanel() stops searching
- // attached and detached LLSideTrayTab tabs.
-
- // For each LLSideTrayTab, openChildPanel() first calls
- // findChildView(panel_name, true). In other words, panel_name need
- // not be a direct LLSideTrayTab child, it's sought recursively.
- // That's why we use (begin|end)TreeDFS() in this loop.
-
- // But this tree_iterator_t loop will actually traverse every widget
- // in every panel. Returning all those names will not help our caller:
- // passing most such names to openChildPanel() would not do what we
- // want. Even though the code suggests that passing ANY valid
- // side-panel widget name to openChildPanel() will open the tab
- // containing that widget, results could get confusing since followup
- // (onOpen()) logic wouldn't be invoked, and showPanel() wouldn't stop
- // searching because openChildPanel() would return NULL.
-
- // We must filter these LLView items, using logic that (sigh!) mirrors
- // openChildPanel()'s own.
-
- // openChildPanel() returns a non-NULL LLPanel* when either:
- // - the LLView is a direct child of an LLSideTrayPanelContainer
- // - the LLView is itself an LLPanel.
- // But as LLSideTrayPanelContainer can directly contain LLView items
- // that are NOT themselves LLPanels (e.g. "sidebar_me" contains an
- // LLButton called "Jump Right Arrow"), we'd better focus only on
- // LLSideTrayPanelContainer children that are themselves LLPanel
- // items. Which means that the second test completely subsumes the
- // first.
- LLPanel* panel(dynamic_cast<LLPanel*>(view));
- if (panel)
- {
- // Maybe it's overkill to construct an LLSD::Map for each panel, but
- // the possibility remains that we might want to deliver more info
- // about each panel than just its name.
- panels.append(LLSDMap("name", panel->getName()));
- }
- }
-
- return LLSDMap("panels", panels);
-}
-
-void LLSideTrayListener::getPanels(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- // Iterate through the attached tabs.
- LLSD::Integer ord(0);
- for (LLSideTray::child_vector_t::const_iterator
- ati(tray->mTabs.begin()), atend(tray->mTabs.end());
- ati != atend; ++ati)
- {
- // We don't have access to LLSideTrayTab: the class definition is
- // hidden in llsidetray.cpp. But as LLSideTrayTab isa LLPanel, use the
- // LLPanel API. Unfortunately, without the LLSideTrayTab definition,
- // the compiler doesn't even know this LLSideTrayTab* is an LLPanel*.
- // Persuade it.
- LLPanel* tab(tab_cast<LLPanel*>(*ati));
- reply[tab->getName()] = getTabInfo(tab).with("attached", true).with("ord", ord);
- }
-
- // Now iterate over the detached tabs. These can also be opened via
- // SideTray.ShowPanel.
- ord = 0;
- for (LLSideTray::child_vector_t::const_iterator
- dti(tray->mDetachedTabs.begin()), dtend(tray->mDetachedTabs.end());
- dti != dtend; ++dti)
- {
- LLPanel* tab(tab_cast<LLPanel*>(*dti));
- reply[tab->getName()] = getTabInfo(tab).with("attached", false).with("ord", ord);
- }
-
- sendReply(reply, event);
-}
diff --git a/indra/newview/llsidetraylistener.h b/indra/newview/llsidetraylistener.h
deleted file mode 100644
index 51e2137762..0000000000
--- a/indra/newview/llsidetraylistener.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file llsidetraylistener.h
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#if ! defined(LL_LLSIDETRAYLISTENER_H)
-#define LL_LLSIDETRAYLISTENER_H
-
-#include "lleventapi.h"
-#include <boost/function.hpp>
-
-class LLSideTray;
-class LLSD;
-
-class LLSideTrayListener: public LLEventAPI
-{
- typedef boost::function<LLSideTray*()> Getter;
-
-public:
- LLSideTrayListener(const Getter& getter);
-
-private:
- void getCollapsed(const LLSD& event) const;
- void getTabs(const LLSD& event) const;
- void getPanels(const LLSD& event) const;
-
- Getter mGetter;
-};
-
-#endif /* ! defined(LL_LLSIDETRAYLISTENER_H) */
diff --git a/indra/newview/llsidetraypanelcontainer.cpp b/indra/newview/llsidetraypanelcontainer.cpp
index 95a12c7c23..e340333c2c 100644
--- a/indra/newview/llsidetraypanelcontainer.cpp
+++ b/indra/newview/llsidetraypanelcontainer.cpp
@@ -62,6 +62,13 @@ void LLSideTrayPanelContainer::onOpen(const LLSD& key)
getCurrentPanel()->onOpen(key);
}
+void LLSideTrayPanelContainer::openPanel(const std::string& panel_name, const LLSD& key)
+{
+ LLSD combined_key = key;
+ combined_key[PARAM_SUB_PANEL_NAME] = panel_name;
+ onOpen(combined_key);
+}
+
void LLSideTrayPanelContainer::openPreviousPanel()
{
if(!mDefaultPanelName.empty())
diff --git a/indra/newview/llsidetraypanelcontainer.h b/indra/newview/llsidetraypanelcontainer.h
index 14269b002b..93a85ed374 100644
--- a/indra/newview/llsidetraypanelcontainer.h
+++ b/indra/newview/llsidetraypanelcontainer.h
@@ -57,6 +57,11 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
/**
+ * Opens given subpanel.
+ */
+ void openPanel(const std::string& panel_name, const LLSD& key = LLSD::emptyMap());
+
+ /**
* Opens previous panel from panel navigation history.
*/
void openPreviousPanel();
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 6c2b71dd0a..3e16ccf3da 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -48,6 +48,7 @@
#include "llvolumemgr.h"
#include "lltextureatlas.h"
#include "llglslshader.h"
+#include "llviewershadermgr.h"
static LLFastTimer::DeclareTimer FTM_FRUSTUM_CULL("Frustum Culling");
static LLFastTimer::DeclareTimer FTM_CULL_REBOUND("Cull Rebound");
@@ -214,7 +215,7 @@ typedef enum
//contact Runitai Linden for a copy of the SL object used to write this table
//basically, you give the table a bitmask of the look-at vector to a node and it
//gives you a triangle fan index array
-static U8 sOcclusionIndices[] =
+static U16 sOcclusionIndices[] =
{
//000
b111, b110, b010, b011, b001, b101, b100, b110,
@@ -251,7 +252,7 @@ U8* get_box_fan_indices_ptr(LLCamera* camera, const LLVector4a& center)
S32 cypher = center.greaterThan(origin).getGatheredBits() & 0x7;
- return sOcclusionIndices+cypher*8;
+ return (U8*) (sOcclusionIndices+cypher*8);
}
@@ -261,7 +262,6 @@ void LLSpatialGroup::buildOcclusion()
{
if (mOcclusionVerts.isNull())
{
-
mOcclusionVerts = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX,
LLVertexBuffer::sUseStreamDraw ? mBufferUsage : 0); //if GL has a hard time with VBOs, don't use them for occlusion culling.
mOcclusionVerts->allocateBuffer(8, 64, true);
@@ -321,7 +321,8 @@ void LLSpatialGroup::buildOcclusion()
}
{
- mOcclusionVerts->setBuffer(0);
+ mOcclusionVerts->flush();
+ LLVertexBuffer::unbind();
}
clearState(LLSpatialGroup::OCCLUSION_DIRTY);
@@ -1614,6 +1615,15 @@ void LLSpatialGroup::checkOcclusion()
static LLFastTimer::DeclareTimer FTM_PUSH_OCCLUSION_VERTS("Push Occlusion");
static LLFastTimer::DeclareTimer FTM_SET_OCCLUSION_STATE("Occlusion State");
static LLFastTimer::DeclareTimer FTM_OCCLUSION_EARLY_FAIL("Occlusion Early Fail");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_ALLOCATE("Allocate");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_BUILD("Build");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_BEGIN_QUERY("Begin Query");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_END_QUERY("End Query");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_SET_BUFFER("Set Buffer");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_DRAW_WATER("Draw Water");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_DRAW("Draw");
+
+
void LLSpatialGroup::doOcclusion(LLCamera* camera)
{
@@ -1637,11 +1647,13 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
if (!mOcclusionQuery[LLViewerCamera::sCurCameraID])
{
+ LLFastTimer t(FTM_OCCLUSION_ALLOCATE);
mOcclusionQuery[LLViewerCamera::sCurCameraID] = sQueryPool.allocate();
}
if (mOcclusionVerts.isNull() || isState(LLSpatialGroup::OCCLUSION_DIRTY))
{
+ LLFastTimer t(FTM_OCCLUSION_BUILD);
buildOcclusion();
}
@@ -1666,12 +1678,21 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
{
LLFastTimer t(FTM_PUSH_OCCLUSION_VERTS);
- glBeginQueryARB(mode, mOcclusionQuery[LLViewerCamera::sCurCameraID]);
+
+ {
+ LLFastTimer t(FTM_OCCLUSION_BEGIN_QUERY);
+ glBeginQueryARB(mode, mOcclusionQuery[LLViewerCamera::sCurCameraID]);
+ }
- mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX);
+ {
+ LLFastTimer t(FTM_OCCLUSION_SET_BUFFER);
+ mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX);
+ }
if (!use_depth_clamp && mSpatialPartition->mDrawableType == LLDrawPool::POOL_VOIDWATER)
{
+ LLFastTimer t(FTM_OCCLUSION_DRAW_WATER);
+
LLGLSquashToFarClip squash(glh_get_current_projection(), 1);
if (camera->getOrigin().isExactlyZero())
{ //origin is invalid, draw entire box
@@ -1685,6 +1706,7 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
}
else
{
+ LLFastTimer t(FTM_OCCLUSION_DRAW);
if (camera->getOrigin().isExactlyZero())
{ //origin is invalid, draw entire box
mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, 0);
@@ -1696,7 +1718,11 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
}
}
- glEndQueryARB(mode);
+
+ {
+ LLFastTimer t(FTM_OCCLUSION_END_QUERY);
+ glEndQueryARB(mode);
+ }
}
}
@@ -2416,7 +2442,7 @@ void pushVerts(LLFace* face, U32 mask)
LLVertexBuffer* buffer = face->getVertexBuffer();
- if (buffer)
+ if (buffer && (face->getGeomCount() >= 3))
{
buffer->setBuffer(mask);
U16 start = face->getGeomStart();
@@ -2441,8 +2467,7 @@ void pushVerts(LLVolume* volume)
for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)
{
const LLVolumeFace& face = volume->getVolumeFace(i);
- glVertexPointer(3, GL_FLOAT, 16, face.mPositions);
- glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);
+ LLVertexBuffer::drawElements(LLRender::TRIANGLES, face.mPositions, NULL, face.mNumIndices, face.mIndices);
}
}
@@ -2451,7 +2476,7 @@ void pushBufferVerts(LLVertexBuffer* buffer, U32 mask)
if (buffer)
{
buffer->setBuffer(mask);
- buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getRequestedVerts()-1, buffer->getRequestedIndices(), 0);
+ buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0);
}
}
@@ -2508,7 +2533,7 @@ void pushVertsColorCoded(LLSpatialGroup* group, U32 mask)
{
params = *j;
LLRenderPass::applyModelMatrix(*params);
- glColor4f(colors[col].mV[0], colors[col].mV[1], colors[col].mV[2], 0.5f);
+ gGL.diffuseColor4f(colors[col].mV[0], colors[col].mV[1], colors[col].mV[2], 0.5f);
params->mVertexBuffer->setBuffer(mask);
params->mVertexBuffer->drawRange(params->mParticle ? LLRender::POINTS : LLRender::TRIANGLES,
params->mStart, params->mEnd, params->mCount, params->mOffset);
@@ -2523,7 +2548,7 @@ void renderOctree(LLSpatialGroup* group)
//coded by buffer usage and activity
gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
LLVector4 col;
- /*if (group->mBuilt > 0.f)
+ if (group->mBuilt > 0.f)
{
group->mBuilt -= 2.f * gFrameIntervalSeconds;
if (group->mBufferUsage == GL_STATIC_DRAW_ARB)
@@ -2541,7 +2566,7 @@ void renderOctree(LLSpatialGroup* group)
LLGLDepthTest gl_depth(FALSE, FALSE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- gGL.color4f(1,0,0,group->mBuilt);
+ gGL.diffuseColor4f(1,0,0,group->mBuilt);
gGL.flush();
glLineWidth(5.f);
drawBoxOutline(group->mObjectBounds[0], group->mObjectBounds[1]);
@@ -2553,9 +2578,9 @@ void renderOctree(LLSpatialGroup* group)
LLDrawable* drawable = *i;
if (!group->mSpatialPartition->isBridge())
{
- glPushMatrix();
+ gGL.pushMatrix();
LLVector3 trans = drawable->getRegion()->getOriginAgent();
- glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
+ gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
}
for (S32 j = 0; j < drawable->getNumFaces(); j++)
@@ -2565,11 +2590,11 @@ void renderOctree(LLSpatialGroup* group)
{
if (gFrameTimeSeconds - face->mLastUpdateTime < 0.5f)
{
- glColor4f(0, 1, 0, group->mBuilt);
+ gGL.diffuseColor4f(0, 1, 0, group->mBuilt);
}
else if (gFrameTimeSeconds - face->mLastMoveTime < 0.5f)
{
- glColor4f(1, 0, 0, group->mBuilt);
+ gGL.diffuseColor4f(1, 0, 0, group->mBuilt);
}
else
{
@@ -2585,14 +2610,14 @@ void renderOctree(LLSpatialGroup* group)
if (!group->mSpatialPartition->isBridge())
{
- glPopMatrix();
+ gGL.popMatrix();
}
}
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- gGL.color4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
}
}
- else*/
+ else
{
if (group->mBufferUsage == GL_STATIC_DRAW_ARB && !group->getData().empty()
&& group->mSpatialPartition->mRenderByGroup)
@@ -2605,7 +2630,7 @@ void renderOctree(LLSpatialGroup* group)
}
}
- gGL.color4fv(col.mV);
+ gGL.diffuseColor4fv(col.mV);
LLVector4a fudge;
fudge.splat(0.001f);
LLVector4a size = group->mObjectBounds[1];
@@ -2622,16 +2647,16 @@ void renderOctree(LLSpatialGroup* group)
//if (group->mBuilt <= 0.f)
{
//draw opaque outline
- //gGL.color4f(col.mV[0], col.mV[1], col.mV[2], 1.f);
+ //gGL.diffuseColor4f(col.mV[0], col.mV[1], col.mV[2], 1.f);
//drawBoxOutline(group->mObjectBounds[0], group->mObjectBounds[1]);
- gGL.color4f(0,1,1,1);
+ gGL.diffuseColor4f(0,1,1,1);
drawBoxOutline(group->mBounds[0],group->mBounds[1]);
//draw bounding box for draw info
/*if (group->mSpatialPartition->mRenderByGroup)
{
- gGL.color4f(1.0f, 0.75f, 0.25f, 0.6f);
+ gGL.diffuseColor4f(1.0f, 0.75f, 0.25f, 0.6f);
for (LLSpatialGroup::draw_map_t::iterator i = group->mDrawMap.begin(); i != group->mDrawMap.end(); ++i)
{
for (LLSpatialGroup::drawmap_elem_t::iterator j = i->second.begin(); j != i->second.end(); ++j)
@@ -2650,7 +2675,7 @@ void renderOctree(LLSpatialGroup* group)
}
// LLSpatialGroup::OctreeNode* node = group->mOctreeNode;
-// gGL.color4f(0,1,0,1);
+// gGL.diffuseColor4f(0,1,0,1);
// drawBoxOutline(LLVector3(node->getCenter()), LLVector3(node->getSize()));
}
@@ -2663,11 +2688,12 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
BOOL render_objects = (!LLPipeline::sUseOcclusion || !group->isOcclusionState(LLSpatialGroup::OCCLUDED)) && group->isVisible() &&
!group->getData().empty();
+
if (render_objects)
{
LLGLDepthTest depth_under(GL_TRUE, GL_FALSE, GL_GREATER);
- glColor4f(0, 0.5f, 0, 0.5f);
- gGL.color4f(0, 0.5f, 0, 0.5f);
+ gGL.diffuseColor4f(0, 0.5f, 0, 0.5f);
+ gGL.diffuseColor4f(0, 0.5f, 0, 0.5f);
pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX);
}
@@ -2676,8 +2702,8 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
if (render_objects)
{
- glColor4f(0.f, 0.5f, 0.f,1.f);
- gGL.color4f(0.f, 0.5f, 0.f, 1.f);
+ gGL.diffuseColor4f(0.f, 0.5f, 0.f,1.f);
+ gGL.diffuseColor4f(0.f, 0.5f, 0.f, 1.f);
pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX);
}
@@ -2685,8 +2711,8 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
if (render_objects)
{
- glColor4f(0.f, 0.75f, 0.f,0.5f);
- gGL.color4f(0.f, 0.75f, 0.f, 0.5f);
+ gGL.diffuseColor4f(0.f, 0.75f, 0.f,0.5f);
+ gGL.diffuseColor4f(0.f, 0.75f, 0.f, 0.5f);
pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX);
}
/*else if (camera && group->mOcclusionVerts.notNull())
@@ -2694,11 +2720,11 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
LLVertexBuffer::unbind();
group->mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX);
- glColor4f(1.0f, 0.f, 0.f, 0.5f);
+ gGL.diffuseColor4f(1.0f, 0.f, 0.f, 0.5f);
group->mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, group->mBounds[0]));
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glColor4f(1.0f, 1.f, 1.f, 1.0f);
+ gGL.diffuseColor4f(1.0f, 1.f, 1.f, 1.0f);
group->mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, group->mBounds[0]));
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}*/
@@ -2707,7 +2733,7 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
void renderCrossHairs(LLVector3 position, F32 size, LLColor4 color)
{
- gGL.color4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
gGL.begin(LLRender::LINES);
{
gGL.vertex3fv((position - LLVector3(size, 0.f, 0.f)).mV);
@@ -2731,23 +2757,23 @@ void renderUpdateType(LLDrawable* drawablep)
switch (vobj->getLastUpdateType())
{
case OUT_FULL:
- glColor4f(0,1,0,0.5f);
+ gGL.diffuseColor4f(0,1,0,0.5f);
break;
case OUT_TERSE_IMPROVED:
- glColor4f(0,1,1,0.5f);
+ gGL.diffuseColor4f(0,1,1,0.5f);
break;
case OUT_FULL_COMPRESSED:
if (vobj->getLastUpdateCached())
{
- glColor4f(1,0,0,0.5f);
+ gGL.diffuseColor4f(1,0,0,0.5f);
}
else
{
- glColor4f(1,1,0,0.5f);
+ gGL.diffuseColor4f(1,1,0,0.5f);
}
break;
case OUT_FULL_CACHED:
- glColor4f(0,0,1,0.5f);
+ gGL.diffuseColor4f(0,0,1,0.5f);
break;
default:
llwarns << "Unknown update_type " << vobj->getLastUpdateType() << llendl;
@@ -2879,17 +2905,17 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)
{
if (drawable->isSpatialBridge())
{
- gGL.color4f(1,0.5f,0,1);
+ gGL.diffuseColor4f(1,0.5f,0,1);
}
else if (drawable->getVOVolume())
{
if (drawable->isRoot())
{
- gGL.color4f(1,1,0,1);
+ gGL.diffuseColor4f(1,1,0,1);
}
else
{
- gGL.color4f(0,1,0,1);
+ gGL.diffuseColor4f(0,1,0,1);
}
}
else if (drawable->getVObj())
@@ -2897,30 +2923,30 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)
switch (drawable->getVObj()->getPCode())
{
case LLViewerObject::LL_VO_SURFACE_PATCH:
- gGL.color4f(0,1,1,1);
+ gGL.diffuseColor4f(0,1,1,1);
break;
case LLViewerObject::LL_VO_CLOUDS:
// no longer used
break;
case LLViewerObject::LL_VO_PART_GROUP:
case LLViewerObject::LL_VO_HUD_PART_GROUP:
- gGL.color4f(0,0,1,1);
+ gGL.diffuseColor4f(0,0,1,1);
break;
case LLViewerObject::LL_VO_VOID_WATER:
case LLViewerObject::LL_VO_WATER:
- gGL.color4f(0,0.5f,1,1);
+ gGL.diffuseColor4f(0,0.5f,1,1);
break;
case LL_PCODE_LEGACY_TREE:
- gGL.color4f(0,0.5f,0,1);
+ gGL.diffuseColor4f(0,0.5f,0,1);
break;
default:
- gGL.color4f(1,0,1,1);
+ gGL.diffuseColor4f(1,0,1,1);
break;
}
}
else
{
- gGL.color4f(1,0,0,1);
+ gGL.diffuseColor4f(1,0,0,1);
}
}
@@ -2976,7 +3002,7 @@ void renderNormals(LLDrawable* drawablep)
{
LLVolume* volume = vol->getVolume();
gGL.pushMatrix();
- glMultMatrixf((F32*) vol->getRelativeXform().mMatrix);
+ gGL.multMatrix((F32*) vol->getRelativeXform().mMatrix);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -2986,16 +3012,15 @@ void renderNormals(LLDrawable* drawablep)
{
const LLVolumeFace& face = volume->getVolumeFace(i);
- gGL.begin(LLRender::LINES);
-
for (S32 j = 0; j < face.mNumVertices; ++j)
{
+ gGL.begin(LLRender::LINES);
LLVector4a n,p;
n.setMul(face.mNormals[j], scale);
p.setAdd(face.mPositions[j], n);
- gGL.color4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
gGL.vertex3fv(face.mPositions[j].getF32ptr());
gGL.vertex3fv(p.getF32ptr());
@@ -3004,13 +3029,12 @@ void renderNormals(LLDrawable* drawablep)
n.setMul(face.mBinormals[j], scale);
p.setAdd(face.mPositions[j], n);
- gGL.color4f(0,1,1,1);
+ gGL.diffuseColor4f(0,1,1,1);
gGL.vertex3fv(face.mPositions[j].getF32ptr());
gGL.vertex3fv(p.getF32ptr());
}
+ gGL.end();
}
-
- gGL.end();
}
gGL.popMatrix();
@@ -3050,33 +3074,33 @@ void renderMeshBaseHull(LLVOVolume* volume, U32 data_mask, LLColor4& color, LLCo
{
if (!decomp->mBaseHullMesh.empty())
{
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mBaseHullMesh.mPositions, decomp->mBaseHullMesh.mNormals);
}
else
{
gMeshRepo.buildPhysicsMesh(*decomp);
- gGL.color3f(0,1,1);
+ gGL.diffuseColor4f(0,1,1,1);
drawBoxOutline(center, size);
}
}
else
{
- gGL.color3f(1,0,1);
+ gGL.diffuseColor3f(1,0,1);
drawBoxOutline(center, size);
}
}
void render_hull(LLModel::PhysicsMesh& mesh, const LLColor4& color, const LLColor4& line_color)
{
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, mesh.mPositions, mesh.mNormals);
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glPolygonOffset(3.f, 3.f);
glLineWidth(3.f);
- glColor4fv(line_color.mV);
+ gGL.diffuseColor4fv(line_color.mV);
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, mesh.mPositions, mesh.mNormals);
glLineWidth(1.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
@@ -3130,7 +3154,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
LLVector3 size(0.25f,0.25f,0.25f);
gGL.pushMatrix();
- glMultMatrixf((F32*) volume->getRelativeXform().mMatrix);
+ gGL.multMatrix((F32*) volume->getRelativeXform().mMatrix);
if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::USER_MESH)
{
@@ -3158,11 +3182,11 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
else if (!decomp->mPhysicsShapeMesh.empty())
{
//decomp has physics mesh, render that mesh
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glColor4fv(line_color.mV);
+ gGL.diffuseColor4fv(line_color.mV);
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
@@ -3179,7 +3203,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
}
else
{
- gGL.color3f(1,1,0);
+ gGL.diffuseColor3f(1,1,0);
drawBoxOutline(center, size);
}
}
@@ -3190,7 +3214,6 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
{
renderMeshBaseHull(volume, data_mask, color, line_color);
}
-#if LL_WINDOWS
else
{
LLVolumeParams volume_params = volume->getVolume()->getParams();
@@ -3288,27 +3311,26 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glColor4fv(line_color.mV);
+ gGL.diffuseColor4fv(line_color.mV);
LLVertexBuffer::unbind();
llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0);
-
- glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
- glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
+
+ LLVertexBuffer::drawElements(LLRender::TRIANGLES, phys_volume->mHullPoints, NULL, phys_volume->mNumHullIndices, phys_volume->mHullIndices);
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
+ LLVertexBuffer::drawElements(LLRender::TRIANGLES, phys_volume->mHullPoints, NULL, phys_volume->mNumHullIndices, phys_volume->mHullIndices);
+
}
else
{
- gGL.color3f(1,0,1);
+ gGL.diffuseColor4f(1,0,1,1);
drawBoxOutline(center, size);
}
LLPrimitive::sVolumeManager->unrefVolume(phys_volume);
}
-#endif //LL_WINDOWS
}
else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::BOX)
{
@@ -3317,12 +3339,12 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
LLVector3 vscale = volume->getScale()*2.f;
scale.set(scale[0]/vscale[0], scale[1]/vscale[1], scale[2]/vscale[2]);
- gGL.color4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
drawBox(center, scale);
}
else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::SPHERE)
{
- LLVolumeParams volume_params;
+ /*LLVolumeParams volume_params;
volume_params.setType( LL_PCODE_PROFILE_CIRCLE_HALF, LL_PCODE_PATH_CIRCLE );
volume_params.setBeginAndEndS( 0.f, 1.f );
volume_params.setBeginAndEndT( 0.f, 1.f );
@@ -3330,9 +3352,9 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
volume_params.setShear ( 0, 0 );
LLVolume* sphere = LLPrimitive::sVolumeManager->refVolume(volume_params, 3);
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
pushVerts(sphere);
- LLPrimitive::sVolumeManager->unrefVolume(sphere);
+ LLPrimitive::sVolumeManager->unrefVolume(sphere);*/
}
else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::CYLINDER)
{
@@ -3344,7 +3366,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
volume_params.setShear ( 0, 0 );
LLVolume* cylinder = LLPrimitive::sVolumeManager->refVolume(volume_params, 3);
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
pushVerts(cylinder);
LLPrimitive::sVolumeManager->unrefVolume(cylinder);
}
@@ -3356,10 +3378,10 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
LLVolume* phys_volume = LLPrimitive::sVolumeManager->refVolume(volume_params, detail);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glColor4fv(line_color.mV);
+ gGL.diffuseColor4fv(line_color.mV);
pushVerts(phys_volume);
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
pushVerts(phys_volume);
LLPrimitive::sVolumeManager->unrefVolume(phys_volume);
@@ -3377,16 +3399,17 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0);
LLVertexBuffer::unbind();
glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
- glColor4fv(line_color.mV);
+ gGL.diffuseColor4fv(line_color.mV);
+ gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
}
else
{
- gGL.color3f(1,0,1);
+ gGL.diffuseColor3f(1,0,1);
drawBoxOutline(center, size);
gMeshRepo.buildHull(volume_params, detail);
}
@@ -3402,15 +3425,6 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
}
gGL.popMatrix();
-
- /*{ //analytical shape, just push visual rep.
- glColor3fv(color.mV);
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- pushVerts(drawable, data_mask);
- glColor4fv(color.mV);
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- pushVerts(drawable, data_mask);
- }*/
}
void renderPhysicsShapes(LLSpatialGroup* group)
@@ -3425,7 +3439,7 @@ void renderPhysicsShapes(LLSpatialGroup* group)
{
gGL.pushMatrix();
LLVector3 trans = drawable->getRegion()->getOriginAgent();
- glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
+ gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
renderPhysicsShape(drawable, volume);
gGL.popMatrix();
}
@@ -3449,12 +3463,12 @@ void renderPhysicsShapes(LLSpatialGroup* group)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
buff->setBuffer(LLVertexBuffer::MAP_VERTEX);
- glColor3f(0.2f, 0.5f, 0.3f);
- buff->draw(LLRender::TRIANGLES, buff->getRequestedIndices(), 0);
+ gGL.diffuseColor3f(0.2f, 0.5f, 0.3f);
+ buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
- glColor3f(0.2f, 1.f, 0.3f);
+ gGL.diffuseColor3f(0.2f, 1.f, 0.3f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- buff->draw(LLRender::TRIANGLES, buff->getRequestedIndices(), 0);
+ buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
}
}
}
@@ -3491,11 +3505,11 @@ void renderTexturePriority(LLDrawable* drawable)
F32 t = vsize/sLastMaxTexPriority;
LLVector4 col = lerp(cold, hot, t);
- gGL.color4fv(col.mV);
+ gGL.diffuseColor4fv(col.mV);
}
//else
//{
- // gGL.color4f(1,0,1,1);
+ // gGL.diffuseColor4f(1,0,1,1);
//}
LLVector4a center;
@@ -3514,7 +3528,7 @@ void renderTexturePriority(LLDrawable* drawable)
LLVector4 col = lerp(boost_cold, boost_hot, t);
LLGLEnable blend_on(GL_BLEND);
gGL.blendFunc(GL_SRC_ALPHA, GL_ONE);
- gGL.color4fv(col.mV);
+ gGL.diffuseColor4fv(col.mV);
drawBox(center, size);
gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}*/
@@ -3527,7 +3541,7 @@ void renderPoints(LLDrawable* drawablep)
if (drawablep->getNumFaces())
{
gGL.begin(LLRender::POINTS);
- gGL.color3f(1,1,1);
+ gGL.diffuseColor3f(1,1,1);
for (S32 i = 0; i < drawablep->getNumFaces(); i++)
{
gGL.vertex3fv(drawablep->getFace(i)->mCenterLocal.mV);
@@ -3544,7 +3558,7 @@ void renderTextureAnim(LLDrawInfo* params)
}
LLGLEnable blend(GL_BLEND);
- glColor4f(1,1,0,0.5f);
+ gGL.diffuseColor4f(1,1,0,0.5f);
pushVerts(params, LLVertexBuffer::MAP_VERTEX);
}
@@ -3552,7 +3566,7 @@ void renderBatchSize(LLDrawInfo* params)
{
LLGLEnable offset(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.f, 1.f);
- glColor3ubv((GLubyte*) &(params->mDebugColor));
+ gGL.diffuseColor4ubv((GLubyte*) &(params->mDebugColor));
pushVerts(params, LLVertexBuffer::MAP_VERTEX);
}
@@ -3570,22 +3584,22 @@ void renderShadowFrusta(LLDrawInfo* params)
if (gPipeline.mShadowCamera[4].AABBInFrustum(center, size))
{
- glColor3f(1,0,0);
+ gGL.diffuseColor3f(1,0,0);
pushVerts(params, LLVertexBuffer::MAP_VERTEX);
}
if (gPipeline.mShadowCamera[5].AABBInFrustum(center, size))
{
- glColor3f(0,1,0);
+ gGL.diffuseColor3f(0,1,0);
pushVerts(params, LLVertexBuffer::MAP_VERTEX);
}
if (gPipeline.mShadowCamera[6].AABBInFrustum(center, size))
{
- glColor3f(0,0,1);
+ gGL.diffuseColor3f(0,0,1);
pushVerts(params, LLVertexBuffer::MAP_VERTEX);
}
if (gPipeline.mShadowCamera[7].AABBInFrustum(center, size))
{
- glColor3f(1,0,1);
+ gGL.diffuseColor3f(1,0,1);
pushVerts(params, LLVertexBuffer::MAP_VERTEX);
}
@@ -3603,7 +3617,7 @@ void renderLights(LLDrawable* drawablep)
if (drawablep->getNumFaces())
{
LLGLEnable blend(GL_BLEND);
- glColor4f(0,1,1,0.5f);
+ gGL.diffuseColor4f(0,1,1,0.5f);
for (S32 i = 0; i < drawablep->getNumFaces(); i++)
{
@@ -3621,11 +3635,11 @@ void renderLights(LLDrawable* drawablep)
{
LLGLDepthTest depth(GL_FALSE, GL_TRUE);
- gGL.color4f(1,1,1,1);
+ gGL.diffuseColor4f(1,1,1,1);
drawBoxOutline(pos, size);
}
- gGL.color4f(1,1,0,1);
+ gGL.diffuseColor4f(1,1,0,1);
F32 rad = drawablep->getVOVolume()->getLightRadius();
drawBoxOutline(pos, LLVector4a(rad));
}
@@ -3650,13 +3664,13 @@ public:
if (branch->getData().empty())
{
- gGL.color3f(1.f,0.2f,0.f);
+ gGL.diffuseColor3f(1.f,0.2f,0.f);
center.set(branch->getCenter().getF32ptr());
size.set(branch->getSize().getF32ptr());
}
else
{
- gGL.color3f(0.75f, 1.f, 0.f);
+ gGL.diffuseColor3f(0.75f, 1.f, 0.f);
center.set(vl->mBounds[0].getF32ptr());
size.set(vl->mBounds[1].getF32ptr());
}
@@ -3669,11 +3683,11 @@ public:
if (i == 1)
{
- gGL.color4f(0,1,1,0.5f);
+ gGL.diffuseColor4f(0,1,1,0.5f);
}
else
{
- gGL.color4f(0,0.5f,0.5f, 0.25f);
+ gGL.diffuseColor4f(0,0.5f,0.5f, 0.25f);
drawBoxOutline(center, size);
}
@@ -3710,7 +3724,7 @@ void renderRaycast(LLDrawable* drawablep)
if (drawablep->getNumFaces())
{
LLGLEnable blend(GL_BLEND);
- gGL.color4f(0,1,1,0.5f);
+ gGL.diffuseColor4f(0,1,1,0.5f);
if (drawablep->getVOVolume())
{
@@ -3741,8 +3755,8 @@ void renderRaycast(LLDrawable* drawablep)
}
gGL.pushMatrix();
- glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
- glMultMatrixf((F32*) vobj->getRelativeXform().mMatrix);
+ gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
+ gGL.multMatrix((F32*) vobj->getRelativeXform().mMatrix);
LLVector3 start, end;
if (transform)
@@ -3771,8 +3785,9 @@ void renderRaycast(LLDrawable* drawablep)
{
//render face positions
LLVertexBuffer::unbind();
- glColor4f(0,1,1,0.5f);
+ gGL.diffuseColor4f(0,1,1,0.5f);
glVertexPointer(3, GL_FLOAT, sizeof(LLVector4a), face.mPositions);
+ gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);
}
@@ -3795,23 +3810,23 @@ void renderRaycast(LLDrawable* drawablep)
if (drawablep->getVObj() == gDebugRaycastObject)
{
// draw intersection point
- glPushMatrix();
- glLoadMatrixd(gGLModelView);
+ gGL.pushMatrix();
+ gGL.loadMatrix(gGLModelView);
LLVector3 translate = gDebugRaycastIntersection;
- glTranslatef(translate.mV[0], translate.mV[1], translate.mV[2]);
+ gGL.translatef(translate.mV[0], translate.mV[1], translate.mV[2]);
LLCoordFrame orient;
orient.lookDir(gDebugRaycastNormal, gDebugRaycastBinormal);
LLMatrix4 rotation;
orient.getRotMatrixToParent(rotation);
- glMultMatrixf((float*)rotation.mMatrix);
+ gGL.multMatrix((float*)rotation.mMatrix);
- gGL.color4f(1,0,0,0.5f);
+ gGL.diffuseColor4f(1,0,0,0.5f);
drawBox(LLVector3(0, 0, 0), LLVector3(0.1f, 0.022f, 0.022f));
- gGL.color4f(0,1,0,0.5f);
+ gGL.diffuseColor4f(0,1,0,0.5f);
drawBox(LLVector3(0, 0, 0), LLVector3(0.021f, 0.1f, 0.021f));
- gGL.color4f(0,0,1,0.5f);
+ gGL.diffuseColor4f(0,0,1,0.5f);
drawBox(LLVector3(0, 0, 0), LLVector3(0.02f, 0.02f, 0.1f));
- glPopMatrix();
+ gGL.popMatrix();
// draw bounding box of prim
const LLVector4a* ext = drawablep->getSpatialExtents();
@@ -3824,7 +3839,7 @@ void renderRaycast(LLDrawable* drawablep)
size.mul(0.5f);
LLGLDepthTest depth(GL_FALSE, GL_TRUE);
- gGL.color4f(0,0.5f,0.5f,1);
+ gGL.diffuseColor4f(0,0.5f,0.5f,1);
drawBoxOutline(pos, size);
}
}
@@ -3886,14 +3901,14 @@ public:
group->rebuildMesh();
gGL.flush();
- glPushMatrix();
+ gGL.pushMatrix();
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
renderVisibility(group, mCamera);
stop_glerror();
gGLLastMatrix = NULL;
- glPopMatrix();
- gGL.color4f(1,1,1,1);
+ gGL.popMatrix();
+ gGL.diffuseColor4f(1,1,1,1);
}
}
}
@@ -3917,7 +3932,7 @@ public:
{
if (!group->getData().empty())
{
- gGL.color3f(0,0,1);
+ gGL.diffuseColor3f(0,0,1);
drawBoxOutline(group->mObjectBounds[0],
group->mObjectBounds[1]);
}
@@ -3926,7 +3941,7 @@ public:
for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getData().begin(); i != branch->getData().end(); ++i)
{
LLDrawable* drawable = *i;
-
+
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_BBOXES))
{
renderBoundingBox(drawable);
@@ -3941,7 +3956,7 @@ public:
{
if (drawable->isState(LLDrawable::IN_REBUILD_Q2))
{
- gGL.color4f(0.6f, 0.6f, 0.1f, 1.f);
+ gGL.diffuseColor4f(0.6f, 0.6f, 0.1f, 1.f);
const LLVector4a* ext = drawable->getSpatialExtents();
LLVector4a center;
center.setAdd(ext[0], ext[1]);
@@ -4234,6 +4249,11 @@ void LLSpatialPartition::renderDebug()
return;
}
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gDebugProgram.bind();
+ }
+
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY))
{
//sLastMaxTexPriority = lerp(sLastMaxTexPriority, sCurMaxTexPriority, gFrameIntervalSeconds);
@@ -4262,11 +4282,16 @@ void LLSpatialPartition::renderDebug()
LLOctreeRenderNonOccluded render_debug(camera);
render_debug.traverse(mOctree);
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gDebugProgram.unbind();
+ }
}
void LLSpatialGroup::drawObjectBox(LLColor4 col)
{
- gGL.color4fv(col.mV);
+ gGL.diffuseColor4fv(col.mV);
LLVector4a size;
size = mObjectBounds[1];
size.mul(1.01f);
@@ -4371,7 +4396,7 @@ public:
LLVector3 local_start = mStart;
LLVector3 local_end = mEnd;
- if (!gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible())
+ if (!drawable || !gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible())
{
return false;
}
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 11955540c6..f0c8a372ee 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -93,7 +93,6 @@ public:
LLPointer<LLViewerTexture> mTexture;
std::vector<LLPointer<LLViewerTexture> > mTextureList;
- LLColor4U mGlowColor;
S32 mDebugColor;
const LLMatrix4* mTextureMatrix;
const LLMatrix4* mModelMatrix;
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
deleted file mode 100644
index bbe573c546..0000000000
--- a/indra/newview/llspeakbutton.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
-* @file llspeakbutton.cpp
-* @brief LLSpeakButton class implementation
-*
-* $LicenseInfo:firstyear=2002&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#include "llviewerprecompiledheaders.h" // must be first include
-
-#include "llbutton.h"
-#include "llfloaterreg.h"
-
-#include "llagent.h"
-#include "llbottomtray.h"
-#include "llcallfloater.h"
-#include "lloutputmonitorctrl.h"
-#include "lltransientfloatermgr.h"
-
-#include "llspeakbutton.h"
-
-#include "llbottomtray.h"
-#include "llfirstuse.h"
-
-static LLDefaultChildRegistry::Register<LLSpeakButton> t1("talk_button");
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLSpeakButton::Params::Params()
-: speak_button("speak_button"),
- show_button("show_button"),
- monitor("monitor")
-{}
-
-LLSpeakButton::LLSpeakButton(const Params& p)
-: LLUICtrl(p)
-, mOutputMonitor(NULL)
-, mSpeakBtn(NULL)
-, mShowBtn(NULL)
-{
- LLRect rect = p.rect();
- LLRect speak_rect(0, rect.getHeight(), rect.getWidth(), 0);
- LLRect show_rect = p.show_button.rect();
- show_rect.set(0, rect.getHeight(), show_rect.getWidth(), 0);
-
- speak_rect.mRight -= show_rect.getWidth();
- show_rect.mLeft = speak_rect.getWidth();
- show_rect.mRight = rect.getWidth();
-
- LLButton::Params speak_params = p.speak_button;
- speak_params.rect(speak_rect);
- mSpeakBtn = LLUICtrlFactory::create<LLButton>(speak_params);
- addChild(mSpeakBtn);
- LLTransientFloaterMgr::getInstance()->addControlView(mSpeakBtn);
-
- mSpeakBtn->setMouseDownCallback(boost::bind(&LLSpeakButton::onMouseDown_SpeakBtn, this));
- mSpeakBtn->setMouseUpCallback(boost::bind(&LLSpeakButton::onMouseUp_SpeakBtn, this));
- mSpeakBtn->setToggleState(FALSE);
-
- LLBottomtrayButton::Params show_params = p.show_button;
- show_params.rect(show_rect);
- mShowBtn = LLUICtrlFactory::create<LLBottomtrayButton>(show_params);
- addChild(mShowBtn);
- LLTransientFloaterMgr::getInstance()->addControlView(mShowBtn);
-
-// mShowBtn->setClickedCallback(boost::bind(&LLSpeakButton::onClick_ShowBtn, this));
-// mShowBtn->setToggleState(FALSE);
-
- static const S32 MONITOR_RIGHT_PAD = 2;
-
- LLRect monitor_rect = p.monitor.rect();
- S32 monitor_height = monitor_rect.getHeight();
- monitor_rect.mLeft = speak_rect.getWidth() - monitor_rect.getWidth() - MONITOR_RIGHT_PAD;
- monitor_rect.mRight = speak_rect.getWidth() - MONITOR_RIGHT_PAD;
- monitor_rect.mBottom = (rect.getHeight() / 2) - (monitor_height / 2);
- monitor_rect.mTop = monitor_rect.mBottom + monitor_height;
-
- LLOutputMonitorCtrl::Params monitor_params = p.monitor;
- monitor_params.draw_border(false);
- monitor_params.rect(monitor_rect);
- monitor_params.auto_update(true);
- monitor_params.speaker_id(gAgentID);
- mOutputMonitor = LLUICtrlFactory::create<LLOutputMonitorCtrl>(monitor_params);
- mSpeakBtn->addChild(mOutputMonitor);
-
- // never show "muted" because you can't mute yourself
- mOutputMonitor->setIsMuted(false);
- mOutputMonitor->setIsAgentControl(true);
-
- //*TODO find a better place to do that
- LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);
-}
-
-LLSpeakButton::~LLSpeakButton()
-{
- if(LLTransientFloaterMgr::instanceExists())
- {
- LLTransientFloaterMgr::getInstance()->removeControlView(mSpeakBtn);
- LLTransientFloaterMgr::getInstance()->removeControlView(mShowBtn);
- }
-}
-
-void LLSpeakButton::setSpeakToolTip(const std::string& msg)
-{
- mSpeakBtn->setToolTip(msg);
-}
-
-void LLSpeakButton::setShowToolTip(const std::string& msg)
-{
- mShowBtn->setToolTip(msg);
-}
-
-void LLSpeakButton::setLabelVisible(bool visible)
-{
- static std::string label_selected = mSpeakBtn->getLabelSelected();
- static std::string label_unselected = mSpeakBtn->getLabelUnselected();
-
- if (visible)
- {
- mSpeakBtn->setLabelSelected(label_selected);
- mSpeakBtn->setLabelUnselected(label_unselected);
- }
- else
- {
- static LLStringExplicit empty_string("");
- mSpeakBtn->setLabelSelected(empty_string);
- mSpeakBtn->setLabelUnselected(empty_string);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-/// PROTECTED SECTION
-//////////////////////////////////////////////////////////////////////////
-void LLSpeakButton::onMouseDown_SpeakBtn()
-{
- bool down = true;
- LLVoiceClient::getInstance()->inputUserControlState(down); // this method knows/care about whether this translates into a toggle-to-talk or down-to-talk
- LLFirstUse::speak(false);
-}
-void LLSpeakButton::onMouseUp_SpeakBtn()
-{
- bool down = false;
- LLVoiceClient::getInstance()->inputUserControlState(down);
-}
-
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
deleted file mode 100644
index 7db01112ef..0000000000
--- a/indra/newview/llspeakbutton.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
-* @file llspeakbutton.h
-* @brief LLSpeakButton class header file
-*
-* $LicenseInfo:firstyear=2002&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#ifndef LL_LLSPEAKBUTTON_H
-#define LL_LLSPEAKBUTTON_H
-
-#include "llinitparam.h"
-#include "lluictrl.h"
-
-class LLCallFloater;
-class LLButton;
-class LLOutputMonitorCtrl;
-class LLBottomtrayButton;
-
-/*
- * Button displaying voice chat status. Displays voice chat options when
- * clicked.
-*/
-class LLSpeakButton : public LLUICtrl
-{
-public:
-
- struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
- {
- Optional<LLButton::Params> speak_button;
- Optional<LLBottomtrayButton::Params> show_button;
- Optional<LLOutputMonitorCtrl::Params> monitor;
-
- Params();
- };
-
- /*virtual*/ ~LLSpeakButton();
-
- // *HACK: Need to put tooltips in a translatable location,
- // the panel that contains this button.
- void setSpeakToolTip(const std::string& msg);
- void setShowToolTip(const std::string& msg);
-
- /**
- * Sets visibility of speak button's label according to passed parameter.
- *
- * It removes label/selected label if "visible" is false and restores otherwise.
- *
- * @param visible if true - show label and selected label.
- *
- * @see mSpeakBtn
- * @see LLBottomTray::processShrinkButtons()
- */
- void setLabelVisible(bool visible);
-
-protected:
- friend class LLUICtrlFactory;
- LLSpeakButton(const Params& p);
-
- void onMouseDown_SpeakBtn();
- void onMouseUp_SpeakBtn();
-
-private:
- LLButton* mSpeakBtn;
- LLBottomtrayButton* mShowBtn;
- LLHandle<LLFloater> mPrivateCallPanel;
- LLOutputMonitorCtrl* mOutputMonitor;
-};
-
-#endif // LL_LLSPEAKBUTTON_H
diff --git a/indra/newview/llsprite.cpp b/indra/newview/llsprite.cpp
index 4bde2dfcab..c3eb70f850 100644
--- a/indra/newview/llsprite.cpp
+++ b/indra/newview/llsprite.cpp
@@ -243,7 +243,7 @@ void LLSprite::updateFace(LLFace &face)
*indicesp++ = 3 + index_offset;
}
- face.getVertexBuffer()->setBuffer(0);
+ face.getVertexBuffer()->flush();
face.mCenterAgent = mPosition;
}
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 1795be91b9..36d6ff3ef2 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -131,7 +131,6 @@
#include "llsecondlifeurls.h"
#include "llselectmgr.h"
#include "llsky.h"
-#include "llsidetray.h"
#include "llstatview.h"
#include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance
#include "llsurface.h"
@@ -191,6 +190,7 @@
#include "lllogin.h"
#include "llevents.h"
#include "llstartuplistener.h"
+#include "lltoolbarview.h"
#if LL_WINDOWS
#include "lldxhardware.h"
@@ -367,7 +367,9 @@ bool idle_startup()
//
// Initialize stuff that doesn't need data from simulators
//
-
+ std::string lastGPU = gSavedSettings.getString("LastGPUString");
+ std::string thisGPU = LLFeatureManager::getInstance()->getGPUString();
+
if (LLFeatureManager::getInstance()->isSafe())
{
LLNotificationsUtil::add("DisplaySetToSafe");
@@ -375,12 +377,14 @@ bool idle_startup()
else if ((gSavedSettings.getS32("LastFeatureVersion") < LLFeatureManager::getInstance()->getVersion()) &&
(gSavedSettings.getS32("LastFeatureVersion") != 0))
{
- LLNotificationsUtil::add("DisplaySetToRecommended");
+ LLNotificationsUtil::add("DisplaySetToRecommendedFeatureChange");
}
- else if ((gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass()) &&
- (gSavedSettings.getS32("LastGPUClass") != -1))
+ else if ( ! lastGPU.empty() && (lastGPU != thisGPU))
{
- LLNotificationsUtil::add("DisplaySetToRecommended");
+ LLSD subs;
+ subs["LAST_GPU"] = lastGPU;
+ subs["THIS_GPU"] = thisGPU;
+ LLNotificationsUtil::add("DisplaySetToRecommendedGPUChange", subs);
}
else if (!gViewerWindow->getInitAlert().empty())
{
@@ -396,7 +400,7 @@ bool idle_startup()
LLStartUp::startLLProxy();
gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion());
- gSavedSettings.setS32("LastGPUClass", LLFeatureManager::getInstance()->getGPUClass());
+ gSavedSettings.setString("LastGPUString", thisGPU);
// load dynamic GPU/feature tables from website (S3)
LLFeatureManager::getInstance()->fetchHTTPTables();
@@ -733,8 +737,11 @@ bool idle_startup()
// this startup phase more than once.
if (gLoginMenuBarView == NULL)
{
- initialize_edit_menu();
+ display_startup();
+ initialize_edit_menu();
+ display_startup();
init_menus();
+ display_startup();
}
if (show_connect_box)
@@ -743,23 +750,28 @@ bool idle_startup()
// NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't
// show the login view until login_show() is called below.
if (gUserCredential.isNull())
- {
+ {
+ display_startup();
gUserCredential = gLoginHandler.initializeLoginInfo();
+ display_startup();
}
if (gHeadlessClient)
{
LL_WARNS("AppInit") << "Waiting at connection box in headless client. Did you mean to add autologin params?" << LL_ENDL;
}
// Make sure the process dialog doesn't hide things
+ display_startup();
gViewerWindow->setShowProgress(FALSE);
-
+ display_startup();
// Show the login dialog
login_show();
+ display_startup();
// connect dialog is already shown, so fill in the names
if (gUserCredential.notNull())
{
LLPanelLogin::setFields( gUserCredential, gRememberPassword);
}
+ display_startup();
LLPanelLogin::giveFocus();
LLStartUp::setStartupState( STATE_LOGIN_WAIT ); // Wait for user input
@@ -770,14 +782,19 @@ bool idle_startup()
LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
}
+ display_startup();
gViewerWindow->setNormalControlsVisible( FALSE );
+ display_startup();
gLoginMenuBarView->setVisible( TRUE );
+ display_startup();
gLoginMenuBarView->setEnabled( TRUE );
+ display_startup();
show_debug_menus();
+ display_startup();
// Hide the splash screen
LLSplashScreen::hide();
-
+ display_startup();
// Push our window frontmost
gViewerWindow->getWindow()->show();
display_startup();
@@ -786,7 +803,10 @@ bool idle_startup()
// first made visible.
#ifdef _WIN32
MSG msg;
- while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) );
+ while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) )
+ {
+ display_startup();
+ }
#endif
timeout.reset();
return FALSE;
@@ -801,7 +821,7 @@ bool idle_startup()
// Don't do anything. Wait for the login view to call the login_callback,
// which will push us to the next state.
-
+ display_startup();
// Sleep so we don't spin the CPU
ms_sleep(1);
return FALSE;
@@ -1169,37 +1189,51 @@ bool idle_startup()
// Finish agent initialization. (Requires gSavedSettings, builds camera)
gAgent.init();
+ display_startup();
gAgentCamera.init();
+ display_startup();
set_underclothes_menu_options();
+ display_startup();
// Since we connected, save off the settings so the user doesn't have to
// type the name/password again if we crash.
gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE);
LLUIColorTable::instance().saveUserSettings();
+ display_startup();
+
//
// Initialize classes w/graphics stuff.
//
gTextureList.doPrefetchImages();
+ display_startup();
+
LLSurface::initClasses();
+ display_startup();
+
LLFace::initClass();
+ display_startup();
LLDrawable::initClass();
+ display_startup();
// init the shader managers
LLPostProcess::initClass();
+ display_startup();
LLViewerObject::initVOClasses();
+ display_startup();
// Initialize all our tools. Must be done after saved settings loaded.
// NOTE: This also is where gToolMgr used to be instantiated before being turned into a singleton.
LLToolMgr::getInstance()->initTools();
+ display_startup();
// Pre-load floaters, like the world map, that are slow to spawn
// due to XML complexity.
gViewerWindow->initWorldUI();
-
+
display_startup();
// This is where we used to initialize gWorldp. Original comment said:
@@ -1207,24 +1241,26 @@ bool idle_startup()
// User might have overridden far clip
LLWorld::getInstance()->setLandFarClip(gAgentCamera.mDrawDistance);
-
+ display_startup();
// Before we create the first region, we need to set the agent's mOriginGlobal
// This is necessary because creating objects before this is set will result in a
// bad mPositionAgent cache.
gAgent.initOriginGlobal(from_region_handle(gFirstSimHandle));
+ display_startup();
LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim);
+ display_startup();
LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle);
LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
regionp->setSeedCapability(gFirstSimSeedCap);
LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL;
-
+ display_startup();
// Set agent's initial region to be the one we just created.
gAgent.setRegion(regionp);
-
+ display_startup();
// Set agent's initial position, which will be read by LLVOAvatar when the avatar
// object is created. I think this must be done after setting the region. JC
gAgent.setPositionAgent(agent_start_position_region);
@@ -1244,6 +1280,7 @@ bool idle_startup()
{
LLStartUp::multimediaInit();
LLStartUp::setStartupState( STATE_FONT_INIT );
+ display_startup();
return FALSE;
}
@@ -1252,6 +1289,7 @@ bool idle_startup()
{
LLStartUp::fontInit();
LLStartUp::setStartupState( STATE_SEED_GRANTED_WAIT );
+ display_startup();
return FALSE;
}
@@ -1279,6 +1317,7 @@ bool idle_startup()
set_startup_status(0.4f, LLTrans::getString("LoginRequestSeedCapGrant"), gAgent.mMOTD);
}
}
+ display_startup();
return FALSE;
}
@@ -1289,7 +1328,9 @@ bool idle_startup()
//---------------------------------------------------------------------
if (STATE_SEED_CAP_GRANTED == LLStartUp::getStartupState())
{
+ display_startup();
update_texture_fetch();
+ display_startup();
if ( gViewerWindow != NULL)
{ // This isn't the first logon attempt, so show the UI
@@ -1297,12 +1338,15 @@ bool idle_startup()
}
gLoginMenuBarView->setVisible( FALSE );
gLoginMenuBarView->setEnabled( FALSE );
+ display_startup();
// direct logging to the debug console's line buffer
LLError::logToFixedBuffer(gDebugView->mDebugConsolep);
+ display_startup();
// set initial visibility of debug console
gDebugView->mDebugConsolep->setVisible(gSavedSettings.getBOOL("ShowDebugConsole"));
+ display_startup();
//
// Set message handlers
@@ -1311,22 +1355,28 @@ bool idle_startup()
// register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted
register_viewer_callbacks(gMessageSystem);
+ display_startup();
// Debugging info parameters
gMessageSystem->setMaxMessageTime( 0.5f ); // Spam if decoding all msgs takes more than 500 ms
+ display_startup();
#ifndef LL_RELEASE_FOR_DOWNLOAD
gMessageSystem->setTimeDecodes( TRUE ); // Time the decode of each msg
gMessageSystem->setTimeDecodesSpamThreshold( 0.05f ); // Spam if a single msg takes over 50ms to decode
#endif
+ display_startup();
gXferManager->registerCallbacks(gMessageSystem);
+ display_startup();
LLStartUp::initNameCache();
+ display_startup();
// update the voice settings *after* gCacheName initialization
// so that we can construct voice UI that relies on the name cache
LLVoiceClient::getInstance()->updateSettings();
+ display_startup();
//gCacheName is required for nearby chat history loading
//so I just moved nearby history loading a few states further
@@ -1335,12 +1385,14 @@ bool idle_startup()
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat) nearby_chat->loadHistory();
}
+ display_startup();
// *Note: this is where gWorldMap used to be initialized.
// register null callbacks for audio until the audio system is initialized
gMessageSystem->setHandlerFuncFast(_PREHASH_SoundTrigger, null_message_callback, NULL);
gMessageSystem->setHandlerFuncFast(_PREHASH_AttachedSound, null_message_callback, NULL);
+ display_startup();
//reset statistics
LLViewerStats::getInstance()->resetStats();
@@ -1370,6 +1422,7 @@ bool idle_startup()
LLViewerCamera::getInstance()->setAspect(gViewerWindow->getWorldViewAspectRatio());
// Initialize FOV
LLViewerCamera::getInstance()->setDefaultFOV(gSavedSettings.getF32("CameraAngle"));
+ display_startup();
// Move agent to starting location. The position handed to us by
// the space server is in global coordinates, but the agent frame
@@ -1380,6 +1433,7 @@ bool idle_startup()
gAgent.resetAxes(gAgentStartLookAt);
gAgentCamera.stopCameraAnimation();
gAgentCamera.resetCamera();
+ display_startup();
// Initialize global class data needed for surfaces (i.e. textures)
LL_DEBUGS("AppInit") << "Initializing sky..." << LL_ENDL;
@@ -1392,6 +1446,8 @@ bool idle_startup()
LLGLState::checkStates();
LLGLState::checkTextureChannels();
+ display_startup();
+
LL_DEBUGS("AppInit") << "Decoding images..." << LL_ENDL;
// For all images pre-loaded into viewer cache, decode them.
// Need to do this AFTER we init the sky
@@ -1405,6 +1461,8 @@ bool idle_startup()
}
LLStartUp::setStartupState( STATE_WORLD_WAIT );
+ display_startup();
+
// JC - Do this as late as possible to increase likelihood Purify
// will run.
LLMessageSystem* msg = gMessageSystem;
@@ -1432,6 +1490,7 @@ bool idle_startup()
NULL);
timeout.reset();
+ display_startup();
return FALSE;
}
@@ -1450,8 +1509,10 @@ bool idle_startup()
LLMessageSystem* msg = gMessageSystem;
while (msg->checkAllMessages(gFrameCount, gServicePump))
{
+ display_startup();
}
msg->processAcks();
+ display_startup();
return FALSE;
}
@@ -1462,6 +1523,7 @@ bool idle_startup()
{
LL_DEBUGS("AppInit") << "Connecting to region..." << LL_ENDL;
set_startup_status(0.60f, LLTrans::getString("LoginConnectingToRegion"), gAgent.mMOTD);
+ display_startup();
// register with the message system so it knows we're
// expecting this message
LLMessageSystem* msg = gMessageSystem;
@@ -1477,6 +1539,7 @@ bool idle_startup()
msg->newMessageFast(_PREHASH_EconomyDataRequest);
gAgent.sendReliableMessage();
}
+ display_startup();
// Create login effect
// But not on first login, because you can't see your avatar then
@@ -1491,6 +1554,7 @@ bool idle_startup()
LLStartUp::setStartupState( STATE_AGENT_WAIT ); // Go to STATE_AGENT_WAIT
timeout.reset();
+ display_startup();
return FALSE;
}
@@ -1515,14 +1579,17 @@ bool idle_startup()
LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got "
<< msg->getMessageName() << LL_ENDL;
}
+ display_startup();
}
msg->processAcks();
+ display_startup();
+
if (gAgentMovementCompleted)
{
LLStartUp::setStartupState( STATE_INVENTORY_SEND );
}
-
+ display_startup();
return FALSE;
}
@@ -1531,9 +1598,10 @@ bool idle_startup()
//---------------------------------------------------------------------
if (STATE_INVENTORY_SEND == LLStartUp::getStartupState())
{
+ display_startup();
// Inform simulator of our language preference
LLAgentLanguage::update();
-
+ display_startup();
// unpack thin inventory
LLSD response = LLLoginInstance::getInstance()->getResponse();
//bool dump_buffer = false;
@@ -1548,6 +1616,7 @@ bool idle_startup()
gInventory.setLibraryRootFolderID(id.asUUID());
}
}
+ display_startup();
LLSD inv_lib_owner = response["inventory-lib-owner"];
if(inv_lib_owner.isDefined())
@@ -1559,6 +1628,7 @@ bool idle_startup()
gInventory.setLibraryOwnerID( LLUUID(id.asUUID()));
}
}
+ display_startup();
LLSD inv_skel_lib = response["inventory-skel-lib"];
if(inv_skel_lib.isDefined() && gInventory.getLibraryOwnerID().notNull())
@@ -1568,6 +1638,7 @@ bool idle_startup()
LL_WARNS("AppInit") << "Problem loading inventory-skel-lib" << LL_ENDL;
}
}
+ display_startup();
LLSD inv_skeleton = response["inventory-skeleton"];
if(inv_skeleton.isDefined())
@@ -1577,6 +1648,7 @@ bool idle_startup()
LL_WARNS("AppInit") << "Problem loading inventory-skel-targets" << LL_ENDL;
}
}
+ display_startup();
LLSD inv_basic = response["inventory-basic"];
if(inv_basic.isDefined())
@@ -1614,6 +1686,7 @@ bool idle_startup()
list[agent_id] = new LLRelationship(given_rights, has_rights, false);
}
LLAvatarTracker::instance().addBuddyList(list);
+ display_startup();
}
bool show_hud = false;
@@ -1641,6 +1714,8 @@ bool idle_startup()
//}
}
}
+ display_startup();
+
// Either we want to show tutorial because this is the first login
// to a Linden Help Island or the user quit with the tutorial
// visible. JC
@@ -1648,22 +1723,26 @@ bool idle_startup()
{
LLFloaterReg::showInstance("hud", LLSD(), FALSE);
}
+ display_startup();
LLSD event_notifications = response["event_notifications"];
if(event_notifications.isDefined())
{
gEventNotifier.load(event_notifications);
}
+ display_startup();
LLSD classified_categories = response["classified_categories"];
if(classified_categories.isDefined())
{
LLClassifiedInfo::loadCategories(classified_categories);
}
+ display_startup();
// This method MUST be called before gInventory.findCategoryUUIDForType because of
// gInventory.mIsAgentInvUsable is set to true in the gInventory.buildParentChildMap.
gInventory.buildParentChildMap();
+ display_startup();
//all categories loaded. lets create "My Favorites" category
gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
@@ -1677,24 +1756,26 @@ bool idle_startup()
LLAvatarTracker::instance().registerCallbacks(msg);
llinfos << " Landmark" << llendl;
LLLandmark::registerCallbacks(msg);
+ display_startup();
// request mute list
llinfos << "Requesting Mute List" << llendl;
LLMuteList::getInstance()->requestFromServer(gAgent.getID());
-
+ display_startup();
// Get L$ and ownership credit information
llinfos << "Requesting Money Balance" << llendl;
LLStatusBar::sendMoneyBalanceRequest();
-
+ display_startup();
// request all group information
llinfos << "Requesting Agent Data" << llendl;
gAgent.sendAgentDataUpdateRequest();
-
+ display_startup();
// Create the inventory views
llinfos << "Creating Inventory Views" << llendl;
LLFloaterReg::getInstance("inventory");
-
+ display_startup();
LLStartUp::setStartupState( STATE_MISC );
+ display_startup();
return FALSE;
}
@@ -1743,17 +1824,23 @@ bool idle_startup()
gSavedSettings.setBOOL("ShowStartLocation", TRUE);
}
+ display_startup();
+
if (gSavedSettings.getBOOL("HelpFloaterOpen"))
{
// show default topic
LLViewerHelp::instance().showTopic("");
}
+ display_startup();
+
// We're successfully logged in.
gSavedSettings.setBOOL("FirstLoginThisInstall", FALSE);
LLFloaterReg::showInitialVisibleInstances();
+ display_startup();
+
// based on the comments, we've successfully logged in so we can delete the 'forced'
// URL that the updater set in settings.ini (in a mostly paranoid fashion)
std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
@@ -1767,8 +1854,10 @@ bool idle_startup()
LLUIColorTable::instance().saveUserSettings();
};
+ display_startup();
// JC: Initializing audio requests many sounds for download.
init_audio();
+ display_startup();
// JC: Initialize "active" gestures. This may also trigger
// many gesture downloads, if this is the user's first
@@ -1806,6 +1895,7 @@ bool idle_startup()
LLGestureMgr::instance().startFetch();
}
gDisplaySwapBuffers = TRUE;
+ display_startup();
LLMessageSystem* msg = gMessageSystem;
msg->setHandlerFuncFast(_PREHASH_SoundTrigger, process_sound_trigger);
@@ -1880,8 +1970,10 @@ bool idle_startup()
}
}
+ display_startup();
//DEV-17797. get null folder. Any items found here moved to Lost and Found
LLInventoryModelBackgroundFetch::instance().findLostItems();
+ display_startup();
LLStartUp::setStartupState( STATE_PRECACHE );
timeout.reset();
@@ -1890,6 +1982,7 @@ bool idle_startup()
if (STATE_PRECACHE == LLStartUp::getStartupState())
{
+ display_startup();
F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY;
// We now have an inventory skeleton, so if this is a user's first
@@ -1906,6 +1999,8 @@ bool idle_startup()
LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
}
+ display_startup();
+
// wait precache-delay and for agent's avatar or a lot longer.
if(((timeout_frac > 1.f) && isAgentAvatarValid())
|| (timeout_frac > 3.f))
@@ -1919,11 +2014,6 @@ bool idle_startup()
LLTrans::getString("LoginPrecaching"),
gAgent.mMOTD);
display_startup();
- if (!LLViewerShaderMgr::sInitialized)
- {
- LLViewerShaderMgr::sInitialized = TRUE;
- LLViewerShaderMgr::instance()->setShaders();
- }
}
return TRUE;
@@ -1952,6 +2042,8 @@ bool idle_startup()
return TRUE;
}
+ display_startup();
+
if (wearables_time > MAX_WEARABLES_TIME)
{
LLNotificationsUtil::add("ClothingLoading");
@@ -1983,16 +2075,20 @@ bool idle_startup()
}
}
+ display_startup();
update_texture_fetch();
+ display_startup();
set_startup_status(0.9f + 0.1f * wearables_time / MAX_WEARABLES_TIME,
LLTrans::getString("LoginDownloadingClothing").c_str(),
gAgent.mMOTD.c_str());
+ display_startup();
return TRUE;
}
if (STATE_CLEANUP == LLStartUp::getStartupState())
{
set_startup_status(1.0, "", "");
+ display_startup();
// Let the map know about the inventory.
LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance();
@@ -2008,6 +2104,7 @@ bool idle_startup()
//gViewerWindow->revealIntroPanel();
gViewerWindow->setStartupComplete();
gViewerWindow->setProgressCancelButtonVisible(FALSE);
+ display_startup();
// We're not away from keyboard, even though login might have taken
// a while. JC
@@ -2030,7 +2127,7 @@ bool idle_startup()
show_debug_menus(); // Debug menu visiblity and First Use trigger
// If we've got a startup URL, dispatch it
- LLStartUp::dispatchURL();
+ //LLStartUp::dispatchURL();
// Retrieve information about the land data
// (just accessing this the first time will fetch it,
@@ -2043,6 +2140,7 @@ bool idle_startup()
// LLUserAuth::getInstance()->reset();
LLStartUp::setStartupState( STATE_STARTED );
+ display_startup();
// Unmute audio if desired and setup volumes.
// Unmute audio if desired and setup volumes.
@@ -2067,6 +2165,7 @@ bool idle_startup()
LLAgentPicksInfo::getInstance()->requestNumberOfPicks();
LLIMFloater::initIMFloater();
+ display_startup();
return TRUE;
}
@@ -2088,7 +2187,12 @@ void login_show()
#else
BOOL bUseDebugLogin = TRUE;
#endif
-
+ // Hide the toolbars: may happen to come back here if login fails after login agent but before login in region
+ if (gToolBarView)
+ {
+ gToolBarView->setVisible(FALSE);
+ }
+
LLPanelLogin::show( gViewerWindow->getWindowRectScaled(),
bUseDebugLogin || gSavedSettings.getBOOL("SecondLifeEnterprise"),
login_callback, NULL );
@@ -2685,12 +2789,12 @@ void LLStartUp::cleanupNameCache()
bool LLStartUp::dispatchURL()
{
// ok, if we've gotten this far and have a startup URL
- if (!getStartSLURL().isValid())
+ if (!getStartSLURL().isValid())
{
return false;
}
- if(getStartSLURL().getType() != LLSLURL::APP)
- {
+ if(getStartSLURL().getType() != LLSLURL::APP)
+ {
// If we started with a location, but we're already
// at that location, don't pop dialogs open.
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 0a00885843..89240c982f 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -114,6 +114,7 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mTextTime(NULL),
mSGBandwidth(NULL),
mSGPacketLoss(NULL),
+ mBtnStats(NULL),
mBtnVolume(NULL),
mBoxBalance(NULL),
mBalance(0),
@@ -162,8 +163,6 @@ BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
BOOL LLStatusBar::postBuild()
{
- LLControlVariablePtr mode_control = gSavedSettings.getControl("SessionSettingsFile");
-
gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3));
mTextTime = getChild<LLTextBox>("TimeText" );
@@ -171,8 +170,12 @@ BOOL LLStatusBar::postBuild()
getChild<LLUICtrl>("buyL")->setCommitCallback(
boost::bind(&LLStatusBar::onClickBuyCurrency, this));
+ getChild<LLUICtrl>("goShop")->setCommitCallback(boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL")));
+
mBoxBalance = getChild<LLTextBox>("balance");
mBoxBalance->setClickedCallback( &LLStatusBar::onClickBalance, this );
+
+ mBtnStats = getChildView("stat_btn");
mBtnVolume = getChild<LLButton>( "volume_btn" );
mBtnVolume->setClickedCallback( onClickVolume, this );
@@ -235,40 +238,9 @@ BOOL LLStatusBar::postBuild()
mScriptOut = getChildView("scriptout");
- LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
- mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
- mode_combo.setCommitCallback(boost::bind(&LLStatusBar::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
-
-
return TRUE;
}
-void LLStatusBar::onModeChange(const LLSD& original_value, const LLSD& new_value)
-{
- if (original_value.asString() != new_value.asString())
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLStatusBar::onModeChangeConfirm, this, original_value, new_value, _1, _2));
- }
-}
-
-void LLStatusBar::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
- LLAppViewer::instance()->requestQuit();
- break;
- case 1:
- // revert to original value
- getChild<LLUICtrl>("mode_combo")->setValue(original_value);
- break;
- default:
- break;
- }
-}
-
// Per-frame updates of visibility
void LLStatusBar::refresh()
{
@@ -319,7 +291,7 @@ void LLStatusBar::refresh()
mSGBandwidth->setVisible(net_stats_visible);
mSGPacketLoss->setVisible(net_stats_visible);
- getChildView("stat_btn")->setEnabled(net_stats_visible);
+ mBtnStats->setEnabled(net_stats_visible);
// update the master volume button state
bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute();
@@ -378,9 +350,10 @@ void LLStatusBar::setBalance(S32 balance)
const S32 HPAD = 24;
LLRect balance_rect = mBoxBalance->getTextBoundingRect();
LLRect buy_rect = getChildView("buyL")->getRect();
+ LLRect shop_rect = getChildView("goShop")->getRect();
LLView* balance_bg_view = getChildView("balance_bg");
LLRect balance_bg_rect = balance_bg_view->getRect();
- balance_bg_rect.mLeft = balance_bg_rect.mRight - (buy_rect.getWidth() + balance_rect.getWidth() + HPAD);
+ balance_bg_rect.mLeft = balance_bg_rect.mRight - (buy_rect.getWidth() + shop_rect.getWidth() + balance_rect.getWidth() + HPAD);
balance_bg_view->setShape(balance_bg_rect);
}
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 6feeab393b..9d28e6c2bc 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -92,8 +92,6 @@ private:
void onMouseEnterVolume();
void onMouseEnterNearbyMedia();
void onClickScreen(S32 x, S32 y);
- void onModeChange(const LLSD& original_value, const LLSD& new_value);
- void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
static void onClickMediaToggle(void* data);
static void onClickBalance(void* data);
@@ -104,10 +102,11 @@ private:
LLStatGraph *mSGBandwidth;
LLStatGraph *mSGPacketLoss;
+ LLView *mBtnStats;
LLButton *mBtnVolume;
LLTextBox *mBoxBalance;
LLButton *mMediaToggle;
- LLView* mScriptOut;
+ LLView *mScriptOut;
LLFrameTimer mClockUpdateTimer;
S32 mBalance;
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index cb49976e5f..3aa6a3b7e5 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -35,16 +35,17 @@
#include "llfloaterreg.h"
#include "llnotifications.h"
-#include "llbottomtray.h"
#include "llscriptfloater.h"
#include "llviewercontrol.h"
#include "llviewerwindow.h"
#include "llchiclet.h"
+#include "llchicletbar.h"
#include "lltoastpanel.h"
#include "llnotificationmanager.h"
#include "llnotificationsutil.h"
#include "llspeakers.h"
+#include "lltoolbarview.h"
//---------------------------------------------------------------------------------
LLSysWellWindow::LLSysWellWindow(const LLSD& key) : LLTransientDockableFloater(NULL, true, key),
@@ -140,15 +141,6 @@ void LLSysWellWindow::initChannel()
}
//---------------------------------------------------------------------------------
-void LLSysWellWindow::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
-//---------------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------------
void LLSysWellWindow::setVisible(BOOL visible)
{
if (visible)
@@ -156,8 +148,8 @@ void LLSysWellWindow::setVisible(BOOL visible)
if (NULL == getDockControl() && getDockTongue().notNull())
{
setDockControl(new LLDockControl(
- LLBottomTray::getInstance()->getChild<LLView>(getAnchorViewName()), this,
- getDockTongue(), LLDockControl::TOP, boost::bind(&LLSysWellWindow::getAllowedRect, this, _1)));
+ LLChicletBar::getInstance()->getChild<LLView>(getAnchorViewName()), this,
+ getDockTongue(), LLDockControl::BOTTOM));
}
}
@@ -211,10 +203,9 @@ void LLSysWellWindow::reshapeWindow()
{
new_window_height = MAX_WINDOW_HEIGHT;
}
- S32 newY = curRect.mTop + new_window_height - curRect.getHeight();
- S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH
- : curRect.getWidth();
- curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height);
+ S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH : curRect.getWidth();
+
+ curRect.setLeftTopAndSize(curRect.mLeft, curRect.mTop, newWidth, new_window_height);
reshape(curRect.getWidth(), curRect.getHeight(), TRUE);
setRect(curRect);
}
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 9f8ab01810..52e5370505 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -76,11 +76,6 @@ public:
static const S32 MIN_WINDOW_WIDTH = 318;
protected:
-
- // gets a rect that bounds possible positions for the SysWellWindow on a screen (EXT-1111)
- void getAllowedRect(LLRect& rect);
-
-
// init Window's channel
virtual void initChannel();
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
index 0d8b45db1f..50a088b799 100644
--- a/indra/newview/llteleporthistory.cpp
+++ b/indra/newview/llteleporthistory.cpp
@@ -56,7 +56,8 @@ const std::string& LLTeleportHistoryItem::getTitle() const
LLTeleportHistory::LLTeleportHistory():
mCurrentItem(-1),
mRequestedItem(-1),
- mGotInitialUpdate(false)
+ mGotInitialUpdate(false),
+ mTeleportHistoryStorage(NULL)
{
mTeleportFinishedConn = LLViewerParcelMgr::getInstance()->
setTeleportFinishedCallback(boost::bind(&LLTeleportHistory::updateCurrentLocation, this, _1));
@@ -115,6 +116,10 @@ void LLTeleportHistory::handleLoginComplete()
void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
{
+ if (!mTeleportHistoryStorage)
+ {
+ mTeleportHistoryStorage = LLTeleportHistoryStorage::getInstance();
+ }
if (mRequestedItem != -1) // teleport within the history in progress?
{
mCurrentItem = mRequestedItem;
@@ -152,7 +157,7 @@ void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
if (mCurrentItem < 0 || mCurrentItem >= (int) mItems.size()) // sanity check
{
llwarns << "Invalid current item. (this should not happen)" << llendl;
- llassert(!"Invalid current teleport histiry item");
+ llassert(!"Invalid current teleport history item");
return;
}
LLVector3 new_pos_local = gAgent.getPosAgentFromGlobal(new_pos);
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
index e45dc28f9b..e9c29c39bf 100644
--- a/indra/newview/llteleporthistory.h
+++ b/indra/newview/llteleporthistory.h
@@ -33,6 +33,7 @@
#include <string>
#include <boost/function.hpp>
#include <boost/signals2.hpp>
+#include "llteleporthistorystorage.h"
/**
@@ -210,6 +211,8 @@ private:
*/
bool mGotInitialUpdate;
+ LLTeleportHistoryStorage* mTeleportHistoryStorage;
+
/**
* Signal emitted when the history gets changed.
*
diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp
index 0ba455e7d5..af5a047da4 100644
--- a/indra/newview/llteleporthistorystorage.cpp
+++ b/indra/newview/llteleporthistorystorage.cpp
@@ -66,6 +66,7 @@ struct LLSortItemsByDate
LLTeleportHistoryStorage::LLTeleportHistoryStorage() :
mFilename("teleport_history.txt")
{
+ mItems.clear();
LLTeleportHistory *th = LLTeleportHistory::getInstance();
if (th)
th->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryStorage::onTeleportHistoryChange, this));
diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h
index 6cae0a3454..cf4c85a991 100644
--- a/indra/newview/llteleporthistorystorage.h
+++ b/indra/newview/llteleporthistorystorage.h
@@ -93,9 +93,6 @@ public:
void removeItem(S32 idx);
void save();
- void load();
-
- void dump() const;
/**
* Set a callback to be called upon history changes.
@@ -113,6 +110,9 @@ public:
private:
+ void load();
+ void dump() const;
+
void onTeleportHistoryChange();
bool compareByTitleAndGlobalPos(const LLTeleportHistoryPersistentItem& a, const LLTeleportHistoryPersistentItem& b);
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index e8abee2fb7..6f6d5dbf12 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -216,22 +216,22 @@ void LLTexLayerSetBuffer::cancelUpload()
void LLTexLayerSetBuffer::pushProjection() const
{
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
- glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+ gGL.loadIdentity();
+ gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
}
void LLTexLayerSetBuffer::popProjection() const
{
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
}
@@ -294,18 +294,22 @@ BOOL LLTexLayerSetBuffer::render()
const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
BOOL success = TRUE;
-
- //hack to use fixed function when updating tex layer sets
- bool no_ff = LLGLSLShader::sNoFixedFunction;
- LLGLSLShader::sNoFixedFunction = false;
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.bind();
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
+
+ LLVertexBuffer::unbind();
+
// Composite the color data
LLGLSUIDefault gls_ui;
success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight );
gGL.flush();
- LLGLSLShader::sNoFixedFunction = no_ff;
-
if(upload_now)
{
if (!success)
@@ -335,6 +339,13 @@ BOOL LLTexLayerSetBuffer::render()
doUpdate();
}
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.unbind();
+ }
+
+ LLVertexBuffer::unbind();
+
// reset GL state
gGL.setColorMask(true, true);
gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -924,6 +935,8 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
}
}
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
LLGLSUIDefault gls_ui;
LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE);
gGL.setColorMask(true, true);
@@ -932,12 +945,20 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
{
gGL.flush();
LLGLDisable no_alpha(GL_ALPHA_TEST);
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.0f);
+ }
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.color4f( 0.f, 0.f, 0.f, 1.f );
gl_rect_2d_simple( width, height );
gGL.flush();
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
}
if (mIsVisible)
@@ -964,6 +985,11 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
gGL.setSceneBlendType(LLRender::BT_REPLACE);
LLGLDisable no_alpha(GL_ALPHA_TEST);
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
+
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.color4f( 0.f, 0.f, 0.f, 0.f );
@@ -971,7 +997,10 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
gGL.setSceneBlendType(LLRender::BT_ALPHA);
gGL.flush();
-
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
}
return success;
@@ -1078,13 +1107,14 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
{
const LLTexLayerSetInfo *info = getInfo();
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
gGL.setColorMask(false, true);
gGL.setSceneBlendType(LLRender::BT_REPLACE);
// (Optionally) replace alpha with a single component image from a tga file.
if (!info->mStaticAlphaFileName.empty())
{
- LLGLSNoAlphaTest gls_no_alpha_test;
gGL.flush();
{
LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
@@ -1103,12 +1133,20 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
// Set the alpha channel to one (clean up after previous blending)
gGL.flush();
LLGLDisable no_alpha(GL_ALPHA_TEST);
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.color4f( 0.f, 0.f, 0.f, 1.f );
gl_rect_2d_simple( width, height );
gGL.flush();
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
}
// (Optional) Mask out part of the baked texture with alpha masks
@@ -1593,6 +1631,8 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
LLGLEnable color_mat(GL_COLOR_MATERIAL);
gPipeline.disableLights();
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
LLColor4 net_color;
BOOL color_specified = findNetColor(&net_color);
@@ -1673,8 +1713,13 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
{
if( tex )
{
- LLGLDisable alpha_test(getInfo()->mWriteAllChannels ? GL_ALPHA_TEST : 0);
-
+ bool no_alpha_test = getInfo()->mWriteAllChannels;
+ LLGLDisable alpha_test(no_alpha_test ? GL_ALPHA_TEST : 0);
+ if (use_shaders && no_alpha_test)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
+
LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode();
gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1684,6 +1729,11 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
gGL.getTexUnit(0)->setTextureAddressMode(old_mode);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+ if (use_shaders && no_alpha_test)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
+
}
}
// else
@@ -1716,9 +1766,17 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
color_specified )
{
LLGLDisable no_alpha(GL_ALPHA_TEST);
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.color4fv( net_color.mV );
gl_rect_2d_simple( width, height );
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
}
if( alpha_mask_specified || getInfo()->mWriteAllChannels )
@@ -1806,15 +1864,25 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
gGL.flush();
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
if( !getInfo()->mStaticImageFileName.empty() )
{
LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
if( tex )
{
LLGLSNoAlphaTest gls_no_alpha_test;
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
gGL.getTexUnit(0)->bind(tex, TRUE);
gl_rect_2d_simple_tex( width, height );
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
}
else
{
@@ -1829,10 +1897,18 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
if (tex)
{
LLGLSNoAlphaTest gls_no_alpha_test;
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
gGL.getTexUnit(0)->bind(tex);
gl_rect_2d_simple_tex( width, height );
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
success = TRUE;
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
}
}
}
@@ -1851,6 +1927,13 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
llassert( !mParamAlphaList.empty() );
+ bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.f);
+ }
+
gGL.setColorMask(false, true);
LLTexLayerParamAlpha* first_param = *mParamAlphaList.begin();
@@ -1888,7 +1971,6 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
if( tex && (tex->getComponents() == 4) )
{
LLGLSNoAlphaTest gls_no_alpha_test;
-
LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode();
gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1927,6 +2009,10 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
gl_rect_2d_simple( width, height );
}
+ if (use_shaders)
+ {
+ gAlphaMaskProgram.setMinimumAlpha(0.004f);
+ }
LLGLSUIDefault gls_ui;
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 70b0a31308..e7a176f4f9 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -1641,8 +1641,8 @@ void LLTextureCache::purgeTextures(bool validate)
{
purge_count++;
LL_DEBUGS("TextureCache") << "PURGING: " << filename << LL_ENDL;
- removeEntry(idx, entries[idx], filename) ;
cache_size -= entries[idx].mBodySize;
+ removeEntry(idx, entries[idx], filename) ;
}
}
@@ -1879,13 +1879,12 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
file_maybe_exists = false;
}
}
+ mTexturesSizeTotal -= entry.mBodySize;
entry.mImageSize = -1;
entry.mBodySize = 0;
mHeaderIDMap.erase(entry.mID);
- mTexturesSizeMap.erase(entry.mID);
-
- mTexturesSizeTotal -= entry.mBodySize;
+ mTexturesSizeMap.erase(entry.mID);
mFreeList.insert(idx);
}
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 6547154bc4..1c89766b26 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -527,11 +527,12 @@ void LLGLTexMemBar::draw()
LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*6,
text_color, LLFontGL::LEFT, LLFontGL::TOP);
- text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB Tot Htp: %d",
+ text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB FBO: %d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB Tot Htp: %d",
total_mem,
max_total_mem,
bound_mem,
max_bound_mem,
+ LLRenderTarget::sBytesAllocated/(1024*1024),
LLImageRaw::sGlobalRawMemory >> 20, discard_bias,
cache_usage, cache_max_usage, total_texture_downloaded, total_object_downloaded, total_http_requests);
//, cache_entries, cache_max_entries
@@ -571,7 +572,7 @@ void LLGLTexMemBar::draw()
color = (total_mem < llfloor(max_total_mem * texmem_lower_bound_scale)) ? LLColor4::green :
(total_mem < max_total_mem) ? LLColor4::yellow : LLColor4::red;
color[VALPHA] = .75f;
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
gl_rect_2d(left, top, right, bottom); // red/yellow/green
@@ -594,7 +595,7 @@ void LLGLTexMemBar::draw()
color = (bound_mem < llfloor(max_bound_mem * texmem_lower_bound_scale)) ? LLColor4::green :
(bound_mem < max_bound_mem) ? LLColor4::yellow : LLColor4::red;
color[VALPHA] = .75f;
- glColor4fv(color.mV);
+ gGL.diffuseColor4fv(color.mV);
gl_rect_2d(left, top, right, bottom);
#else
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index e0b07ed408..c4b226b70b 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -113,7 +113,8 @@ LLToast::LLToast(const LLToast::Params& p)
mHideBtnPressed(false),
mIsTip(p.is_tip),
mWrapperPanel(NULL),
- mIsFading(false)
+ mIsFading(false),
+ mIsHovered(false)
{
mTimer.reset(new LLToastLifeTimer(this, p.lifetime_secs));
@@ -122,8 +123,6 @@ LLToast::LLToast(const LLToast::Params& p)
setCanDrag(FALSE);
mWrapperPanel = getChild<LLPanel>("wrapper_panel");
- mWrapperPanel->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
- mWrapperPanel->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
setBackgroundOpaque(TRUE); // *TODO: obsolete
updateTransparency();
@@ -137,8 +136,6 @@ 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
@@ -331,6 +328,55 @@ void LLToast::draw()
drawChild(mHideBtn);
}
}
+
+ updateHoveredState();
+
+ LLToastLifeTimer* timer = getTimer();
+ if (!timer)
+ {
+ return;
+ }
+
+ // Started timer means the mouse had left the toast previously.
+ // If toast is hovered in the current frame we should handle
+ // a mouse enter event.
+ if(timer->getStarted() && mIsHovered)
+ {
+ mOnToastHoverSignal(this, MOUSE_ENTER);
+
+ updateTransparency();
+
+ //toasts fading is management by Screen Channel
+
+ sendChildToFront(mHideBtn);
+ if(mHideBtn && mHideBtn->getEnabled())
+ {
+ mHideBtn->setVisible(TRUE);
+ }
+ mToastMouseEnterSignal(this, getValue());
+ }
+ // Stopped timer means the mouse had entered the toast previously.
+ // If the toast is not hovered in the current frame we should handle
+ // a mouse leave event.
+ else if(!timer->getStarted() && !mIsHovered)
+ {
+ mOnToastHoverSignal(this, MOUSE_LEAVE);
+
+ updateTransparency();
+
+ //toasts fading is management by Screen Channel
+
+ if(mHideBtn && mHideBtn->getEnabled())
+ {
+ if( mHideBtnPressed )
+ {
+ mHideBtnPressed = false;
+ return;
+ }
+ mHideBtn->setVisible(FALSE);
+ }
+ mToastMouseLeaveSignal(this, getValue());
+ }
}
//--------------------------------------------------------------------------
@@ -378,37 +424,11 @@ void LLToast::setVisible(BOOL show)
}
}
-void LLToast::onToastMouseEnter()
+void LLToast::updateHoveredState()
{
- LLRect panel_rc = mWrapperPanel->calcScreenRect();
- LLRect button_rc;
- if(mHideBtn)
- {
- button_rc = mHideBtn->calcScreenRect();
- }
-
S32 x, y;
LLUI::getMousePositionScreen(&x, &y);
- if(panel_rc.pointInRect(x, y) || button_rc.pointInRect(x, y))
- {
- mOnToastHoverSignal(this, MOUSE_ENTER);
-
- updateTransparency();
-
- //toasts fading is management by Screen Channel
-
- sendChildToFront(mHideBtn);
- if(mHideBtn && mHideBtn->getEnabled())
- {
- mHideBtn->setVisible(TRUE);
- }
- mToastMouseEnterSignal(this, getValue());
- }
-}
-
-void LLToast::onToastMouseLeave()
-{
LLRect panel_rc = mWrapperPanel->calcScreenRect();
LLRect button_rc;
if(mHideBtn)
@@ -416,28 +436,32 @@ void LLToast::onToastMouseLeave()
button_rc = mHideBtn->calcScreenRect();
}
- S32 x, y;
- LLUI::getMousePositionScreen(&x, &y);
-
- if( !panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y))
+ if (!panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y))
{
- mOnToastHoverSignal(this, MOUSE_LEAVE);
+ // mouse is not over this toast
+ mIsHovered = false;
+ return;
+ }
- updateTransparency();
+ bool is_overlapped_by_other_floater = false;
- //toasts fading is management by Screen Channel
+ const child_list_t* child_list = gFloaterView->getChildList();
- if(mHideBtn && mHideBtn->getEnabled())
+ // find this toast in gFloaterView child list to check whether any floater
+ // with higher Z-order is visible under the mouse pointer overlapping this toast
+ child_list_const_reverse_iter_t r_iter = std::find(child_list->rbegin(), child_list->rend(), this);
+ if (r_iter != child_list->rend())
+ {
+ // skip this toast and proceed to views above in Z-order
+ for (++r_iter; r_iter != child_list->rend(); ++r_iter)
{
- if( mHideBtnPressed )
- {
- mHideBtnPressed = false;
- return;
- }
- mHideBtn->setVisible(FALSE);
+ LLView* view = *r_iter;
+ is_overlapped_by_other_floater = view->isInVisibleChain() && view->calcScreenRect().pointInRect(x, y);
+ if (is_overlapped_by_other_floater) break;
}
- mToastMouseLeaveSignal(this, getValue());
}
+
+ mIsHovered = !is_overlapped_by_other_floater;
}
void LLToast::setBackgroundOpaque(BOOL b)
@@ -495,13 +519,6 @@ void LLNotificationsUI::LLToast::startTimer()
}
}
-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 242f786bf2..77229e7beb 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -120,7 +120,7 @@ public:
/** Start lifetime/fading timer */
virtual void startTimer();
- bool isHovered();
+ bool isHovered() { return mIsHovered; }
// Operating with toasts
// insert a panel to a toast
@@ -196,16 +196,13 @@ public:
virtual S32 notifyParent(const LLSD& info);
- LLHandle<LLToast> getHandle() { mHandle.bind(this); return mHandle; }
+ LLHandle<LLToast> getHandle() const { return getDerivedHandle<LLToast>(); }
protected:
void updateTransparency();
private:
-
- void onToastMouseEnter();
-
- void onToastMouseLeave();
+ void updateHoveredState();
void expire();
@@ -215,7 +212,7 @@ private:
LLUUID mSessionID;
LLNotificationPtr mNotification;
- LLRootHandle<LLToast> mHandle;
+ //LLRootHandle<LLToast> mHandle;
LLPanel* mWrapperPanel;
@@ -236,6 +233,7 @@ private:
bool mIsHidden; // this flag is TRUE when a toast has faded or was hidden with (x) button (EXT-1849)
bool mIsTip;
bool mIsFading;
+ bool mIsHovered;
commit_signal_t mToastMouseEnterSignal;
commit_signal_t mToastMouseLeaveSignal;
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 6873cf058a..de305bf3d9 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -91,8 +91,6 @@ mCloseNotificationOnDestroy(true)
sFont = LLFontGL::getFontSansSerif();
sFontSmall = LLFontGL::getFontSansSerifSmall();
}
- // clicking on a button does not steal current focus
- setIsChrome(TRUE);
// initialize
setFocusRoot(!mIsTip);
// get a form for the notification
diff --git a/indra/newview/lltool.h b/indra/newview/lltool.h
index d3edabb486..ecc435d844 100644
--- a/indra/newview/lltool.h
+++ b/indra/newview/lltool.h
@@ -68,7 +68,7 @@ public:
virtual void localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const
{ *screen_x = local_x; *screen_y = local_y; }
- virtual std::string getName() const { return mName; }
+ virtual const std::string& getName() const { return mName; }
// New virtual functions
virtual LLViewerObject* getEditingObject() { return NULL; }
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
deleted file mode 100644
index c4f599561d..0000000000
--- a/indra/newview/lltoolbar.cpp
+++ /dev/null
@@ -1,365 +0,0 @@
-/**
- * @file lltoolbar.cpp
- * @author James Cook, Richard Nelson
- * @brief Large friendly buttons at bottom of screen.
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lltoolbar.h"
-
-#include "imageids.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llflyoutbutton.h"
-#include "llrect.h"
-#include "llparcel.h"
-
-#include "llagent.h"
-#include "llagentwearables.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-#include "llviewercontrol.h"
-#include "llmenucommands.h"
-#include "llimview.h"
-#include "lluiconstants.h"
-#include "llvoavatarself.h"
-#include "lltooldraganddrop.h"
-#include "llfloaterinventory.h"
-#include "llfloaterchatterbox.h"
-#include "llfloatersnapshot.h"
-#include "llinventorypanel.h"
-#include "lltoolmgr.h"
-#include "llui.h"
-#include "llviewermenu.h"
-//#include "llfirstuse.h"
-#include "llpanelblockedlist.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llscrolllistcell.h"
-#include "llviewerparcelmgr.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "lltoolgrab.h"
-#include "llcombobox.h"
-#include "lllayoutstack.h"
-
-#if LL_DARWIN
-
- #include "llresizehandle.h"
-
-#endif // LL_DARWIN
-
-//
-// Globals
-//
-
-LLToolBar *gToolBar = NULL;
-
-//
-// Statics
-//
-F32 LLToolBar::sInventoryAutoOpenTime = 1.f;
-
-//
-// Functions
-//
-
-LLToolBar::LLToolBar()
- : LLPanel(),
-
- mInventoryAutoOpen(FALSE),
- mNumUnreadIMs(0)
-#if LL_DARWIN
- , mResizeHandle(NULL)
-#endif // LL_DARWIN
-{
- setIsChrome(TRUE);
- setFocusRoot(TRUE);
-
- mCommitCallbackRegistrar.add("HandleCommunicate", &LLToolBar::onClickCommunicate);
-}
-
-
-BOOL LLToolBar::postBuild()
-{
- for (child_list_const_iter_t child_iter = getChildList()->begin();
- child_iter != getChildList()->end(); ++child_iter)
- {
- LLView *view = *child_iter;
- LLButton* buttonp = dynamic_cast<LLButton*>(view);
- if(buttonp)
- {
- buttonp->setSoundFlags(LLView::SILENT);
- }
- }
-
-#if LL_DARWIN
- if(mResizeHandle == NULL)
- {
- LLRect rect(0, 0, RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT);
- LLResizeHandle::Params p;
- p.name("");
- p.rect(rect);
- p.min_width(RESIZE_HANDLE_WIDTH);
- p.min_height(RESIZE_HANDLE_HEIGHT);
- p.enabled(false);
- mResizeHandle = LLUICtrlFactory::create<LLResizeHandle>(p);
- addChildInBack(mResizeHandle);
- LLLayoutStack* toolbar_stack = getChild<LLLayoutStack>("toolbar_stack");
- toolbar_stack->reshape(toolbar_stack->getRect().getWidth() - RESIZE_HANDLE_WIDTH, toolbar_stack->getRect().getHeight());
- }
-#endif // LL_DARWIN
-
- layoutButtons();
-
- return TRUE;
-}
-
-LLToolBar::~LLToolBar()
-{
- // LLView destructor cleans up children
-}
-
-
-BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg)
-{
- LLButton* inventory_btn = getChild<LLButton>("inventory_btn");
- if (!inventory_btn) return FALSE;
-
- LLRect button_screen_rect;
- inventory_btn->localRectToScreen(inventory_btn->getRect(),&button_screen_rect);
-
- const LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel();
- if(active_panel)
- {
- mInventoryAutoOpen = FALSE;
- }
- else if (button_screen_rect.pointInRect(x, y))
- {
- if (mInventoryAutoOpen)
- {
- if (!active_panel &&
- mInventoryAutoOpenTimer.getElapsedTimeF32() > sInventoryAutoOpenTime)
- {
- LLFloaterInventory::showAgentInventory();
- }
- }
- else
- {
- mInventoryAutoOpen = TRUE;
- mInventoryAutoOpenTimer.reset();
- }
- }
-
- return LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-}
-
-// static
-void LLToolBar::toggle(void*)
-{
- BOOL show = gSavedSettings.getBOOL("ShowToolBar");
- gSavedSettings.setBOOL("ShowToolBar", !show);
- gToolBar->setVisible(!show);
-}
-
-
-// static
-BOOL LLToolBar::visible(void*)
-{
- return gToolBar->getVisible();
-}
-
-
-void LLToolBar::layoutButtons()
-{
-#if LL_DARWIN
- const S32 FUDGE_WIDTH_OF_SCREEN = 4;
- S32 width = gViewerWindow->getWindowWidthScaled() + FUDGE_WIDTH_OF_SCREEN;
- S32 pad = 2;
-
- // this function may be called before postBuild(), in which case mResizeHandle won't have been set up yet.
- if(mResizeHandle != NULL)
- {
- // Only when running in windowed mode on the Mac, leave room for a resize widget on the right edge of the bar.
- width -= RESIZE_HANDLE_WIDTH;
-
- LLRect r;
- r.mLeft = width - pad;
- r.mBottom = 0;
- r.mRight = r.mLeft + RESIZE_HANDLE_WIDTH;
- r.mTop = r.mBottom + RESIZE_HANDLE_HEIGHT;
- mResizeHandle->setRect(r);
- mResizeHandle->setVisible(TRUE);
- }
-#endif // LL_DARWIN
-}
-
-
-// virtual
-void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
-
- layoutButtons();
-}
-
-
-// Per-frame updates of visibility
-void LLToolBar::refresh()
-{
- BOOL show = gSavedSettings.getBOOL("ShowToolBar");
- BOOL mouselook = gAgent.cameraMouselook();
- setVisible(show && !mouselook);
-
- if (isInVisibleChain())
- {
- updateCommunicateList();
- }
-}
-
-void LLToolBar::updateCommunicateList()
-{
- LLFlyoutButton* communicate_button = getChild<LLFlyoutButton>("communicate_btn");
- LLSD selected = communicate_button->getValue();
-
- communicate_button->removeall();
-
- //LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater();
- LLScrollListItem* itemp = NULL;
-
- LLSD contact_sd;
- contact_sd["value"] = "contacts";
- /*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle();
- if (LLFloaterMyFriends::getInstance() == frontmost_floater)
- {
- contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- contact_sd["columns"][0]["font"]["style"] = "BOLD";
- // make sure current tab is selected in list
- if (selected.isUndefined())
- {
- selected = "contacts";
- }
- }*/
- itemp = communicate_button->addElement(contact_sd, ADD_TOP);
-
- communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);
- communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getString("Blocked List"), LLSD("mute list"), ADD_TOP);
-
- std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
-
- /*if (gIMMgr->getIMFloaterHandles().size() > 0)
- {
- communicate_button->addSeparator(ADD_TOP);
- }
-
- for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
- {
- LLFloaterIMPanel* im_floaterp = (LLFloaterIMPanel*)floater_handle_it->get();
- if (im_floaterp)
- {
- std::string floater_title = im_floaterp->getNumUnreadMessages() > 0 ? "*" : "";
- floater_title.append(im_floaterp->getShortTitle());
- LLSD im_sd;
- im_sd["value"] = im_floaterp->getSessionID();
- im_sd["columns"][0]["value"] = floater_title;
- if (im_floaterp == frontmost_floater)
- {
- im_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- im_sd["columns"][0]["font"]["style"] = "BOLD";
- if (selected.isUndefined())
- {
- selected = im_floaterp->getSessionID();
- }
- }
- itemp = communicate_button->addElement(im_sd, ADD_TOP);
- }
- }*/
-
- communicate_button->setValue(selected);
-}
-
-
-// static
-void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
-{
- LLFlyoutButton* communicate_button = dynamic_cast<LLFlyoutButton*>(ctrl);
- llassert_always(communicate_button);
-
- LLSD selected_option = communicate_button->getValue();
-
- if (selected_option.asString() == "contacts")
- {
- LLFloaterReg::showInstance("contacts", "friends");
- }
- else if (selected_option.asString() == "local chat")
- {
- LLFloaterReg::showInstance("communicate", "local");
- }
- else if (selected_option.asString() == "redock")
- {
- /*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance();
- if(chatterbox_instance)
- {
- chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE);
-
- LLUUID session_to_show;
-
- std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
- for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
- {
- LLFloater* im_floaterp = floater_handle_it->get();
- if (im_floaterp)
- {
- if (im_floaterp->isFrontmost())
- {
- session_to_show = ((LLFloaterIMPanel*)im_floaterp)->getSessionID();
- }
- chatterbox_instance->addFloater(im_floaterp, FALSE);
- }
- }
- LLFloaterReg::showInstance("communicate", session_to_show);
- }*/
- }
- else if (selected_option.asString() == "mute list")
- {
- LLPanelBlockedList::showPanelAndSelect(LLUUID::null);
- }
- else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle
- {
- /*LLFloaterReg::toggleInstance("communicate");*/
- }
- else // otherwise selection_option is undifined or a specific IM session id
- {
- /*LLFloaterReg::showInstance("communicate", selected_option);*/
- }
-}
-
-
diff --git a/indra/newview/lltoolbar.h b/indra/newview/lltoolbar.h
deleted file mode 100644
index 217b3c0ac8..0000000000
--- a/indra/newview/lltoolbar.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * @file lltoolbar.h
- * @brief Large friendly buttons at bottom of screen.
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLTOOLBAR_H
-#define LL_LLTOOLBAR_H
-
-#include "llpanel.h"
-
-#include "llframetimer.h"
-
-class LLResizeHandle;
-
-class LLToolBar
-: public LLPanel
-{
-public:
- LLToolBar();
- ~LLToolBar();
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg);
-
- /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static void toggle(void*);
- static BOOL visible(void*);
-
- // Move buttons to appropriate locations based on rect.
- void layoutButtons();
-
- // Per-frame refresh call
- void refresh();
-
- // callbacks
- static void onClickCommunicate(LLUICtrl*, const LLSD&);
-
- static F32 sInventoryAutoOpenTime;
-
-private:
- void updateCommunicateList();
-
-
-private:
- BOOL mInventoryAutoOpen;
- LLFrameTimer mInventoryAutoOpenTimer;
- S32 mNumUnreadIMs;
-#if LL_DARWIN
- LLResizeHandle *mResizeHandle;
-#endif // LL_DARWIN
-};
-
-extern LLToolBar *gToolBar;
-
-#endif
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
new file mode 100644
index 0000000000..eccb2cf2f1
--- /dev/null
+++ b/indra/newview/lltoolbarview.cpp
@@ -0,0 +1,697 @@
+/**
+ * @file lltoolbarview.cpp
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lltoolbarview.h"
+
+#include "llappviewer.h"
+#include "llbutton.h"
+#include "llclipboard.h"
+#include "lldir.h"
+#include "lldockablefloater.h"
+#include "lldockcontrol.h"
+#include "llimview.h"
+#include "lltransientfloatermgr.h"
+#include "lltoolbar.h"
+#include "lltooldraganddrop.h"
+#include "llxmlnode.h"
+
+#include "llagent.h" // HACK for destinations guide on startup
+#include "llfloaterreg.h" // HACK for destinations guide on startup
+#include "llviewercontrol.h" // HACK for destinations guide on startup
+
+#include <boost/foreach.hpp>
+
+LLToolBarView* gToolBarView = NULL;
+
+static LLDefaultChildRegistry::Register<LLToolBarView> r("toolbar_view");
+
+void handleLoginToolbarSetup();
+
+bool isToolDragged()
+{
+ return (LLToolDragAndDrop::getInstance()->getSource() == LLToolDragAndDrop::SOURCE_VIEWER);
+}
+
+LLToolBarView::Toolbar::Toolbar()
+: button_display_mode("button_display_mode"),
+ commands("command")
+{}
+
+LLToolBarView::ToolbarSet::ToolbarSet()
+: left_toolbar("left_toolbar"),
+ right_toolbar("right_toolbar"),
+ bottom_toolbar("bottom_toolbar")
+{}
+
+
+LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
+: LLUICtrl(p),
+ mDragStarted(false),
+ mShowToolbars(true),
+ mDragToolbarButton(NULL),
+ mToolbarsLoaded(false)
+{
+ for (S32 i = 0; i < TOOLBAR_COUNT; i++)
+ {
+ mToolbars[i] = NULL;
+ }
+}
+
+void LLToolBarView::initFromParams(const LLToolBarView::Params& p)
+{
+ // Initialize the base object
+ LLUICtrl::initFromParams(p);
+}
+
+LLToolBarView::~LLToolBarView()
+{
+ saveToolbars();
+}
+
+BOOL LLToolBarView::postBuild()
+{
+ mToolbars[TOOLBAR_LEFT] = getChild<LLToolBar>("toolbar_left");
+ mToolbars[TOOLBAR_RIGHT] = getChild<LLToolBar>("toolbar_right");
+ mToolbars[TOOLBAR_BOTTOM] = getChild<LLToolBar>("toolbar_bottom");
+
+ for (int i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ mToolbars[i]->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+ mToolbars[i]->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+ mToolbars[i]->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+ mToolbars[i]->setButtonAddCallback(boost::bind(LLToolBarView::onToolBarButtonAdded,_1));
+ mToolbars[i]->setButtonRemoveCallback(boost::bind(LLToolBarView::onToolBarButtonRemoved,_1));
+ }
+
+ LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&handleLoginToolbarSetup));
+
+ return TRUE;
+}
+
+S32 LLToolBarView::hasCommand(const LLCommandId& commandId) const
+{
+ S32 command_location = TOOLBAR_NONE;
+
+ for (S32 loc = TOOLBAR_FIRST; loc <= TOOLBAR_LAST; loc++)
+ {
+ if (mToolbars[loc]->hasCommand(commandId))
+ {
+ command_location = loc;
+ break;
+ }
+ }
+
+ return command_location;
+}
+
+S32 LLToolBarView::addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank)
+{
+ int old_rank;
+ removeCommand(commandId, old_rank);
+
+ S32 command_location = mToolbars[toolbar]->addCommand(commandId, rank);
+
+ return command_location;
+}
+
+S32 LLToolBarView::removeCommand(const LLCommandId& commandId, int& rank)
+{
+ S32 command_location = hasCommand(commandId);
+ rank = LLToolBar::RANK_NONE;
+
+ if (command_location != TOOLBAR_NONE)
+ {
+ rank = mToolbars[command_location]->removeCommand(commandId);
+ }
+
+ return command_location;
+}
+
+S32 LLToolBarView::enableCommand(const LLCommandId& commandId, bool enabled)
+{
+ S32 command_location = hasCommand(commandId);
+
+ if (command_location != TOOLBAR_NONE)
+ {
+ mToolbars[command_location]->enableCommand(commandId, enabled);
+ }
+
+ return command_location;
+}
+
+S32 LLToolBarView::stopCommandInProgress(const LLCommandId& commandId)
+{
+ S32 command_location = hasCommand(commandId);
+
+ if (command_location != TOOLBAR_NONE)
+ {
+ mToolbars[command_location]->stopCommandInProgress(commandId);
+ }
+
+ return command_location;
+}
+
+S32 LLToolBarView::flashCommand(const LLCommandId& commandId, bool flash)
+{
+ S32 command_location = hasCommand(commandId);
+
+ if (command_location != TOOLBAR_NONE)
+ {
+ mToolbars[command_location]->flashCommand(commandId, flash);
+ }
+
+ return command_location;
+}
+
+bool LLToolBarView::addCommandInternal(const LLCommandId& command, LLToolBar* toolbar)
+{
+ LLCommandManager& mgr = LLCommandManager::instance();
+ if (mgr.getCommand(command))
+ {
+ toolbar->addCommand(command);
+ }
+ else
+ {
+ llwarns << "Toolbars creation : the command with id " << command.uuid().asString() << " cannot be found in the command manager" << llendl;
+ return false;
+ }
+ return true;
+}
+
+bool LLToolBarView::loadToolbars(bool force_default)
+{
+ LLToolBarView::ToolbarSet toolbar_set;
+ bool err = false;
+
+ // Load the toolbars.xml file
+ std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+ if (force_default)
+ {
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
+ else if (!gDirUtilp->fileExists(toolbar_file))
+ {
+ llwarns << "User toolbars def not found -> use default" << llendl;
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
+
+ LLXMLNodePtr root;
+ if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
+ {
+ llwarns << "Unable to load toolbars from file: " << toolbar_file << llendl;
+ err = true;
+ }
+
+ if (!err && !root->hasName("toolbars"))
+ {
+ llwarns << toolbar_file << " is not a valid toolbars definition file" << llendl;
+ err = true;
+ }
+
+ // Parse the toolbar settings
+ LLXUIParser parser;
+ if (!err)
+ {
+ parser.readXUI(root, toolbar_set, toolbar_file);
+ }
+ if (!err && !toolbar_set.validateBlock())
+ {
+ llwarns << "Unable to validate toolbars from file: " << toolbar_file << llendl;
+ err = true;
+ }
+
+ if (err)
+ {
+ if (force_default)
+ {
+ llerrs << "Unable to load toolbars from default file : " << toolbar_file << llendl;
+ return false;
+ }
+ // Try to load the default toolbars
+ return loadToolbars(true);
+ }
+
+ // Clear the toolbars now before adding the loaded commands and settings
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ if (mToolbars[i])
+ {
+ mToolbars[i]->clearCommandsList();
+ }
+ }
+
+ // Add commands to each toolbar
+ if (toolbar_set.left_toolbar.isProvided() && mToolbars[TOOLBAR_LEFT])
+ {
+ if (toolbar_set.left_toolbar.button_display_mode.isProvided())
+ {
+ LLToolBarEnums::ButtonType button_type = toolbar_set.left_toolbar.button_display_mode;
+ mToolbars[TOOLBAR_LEFT]->setButtonType(button_type);
+ }
+ BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.left_toolbar.commands)
+ {
+ if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_LEFT]))
+ {
+ llwarns << "Error adding command '" << command_params.name() << "' to left toolbar." << llendl;
+ }
+ }
+ }
+ if (toolbar_set.right_toolbar.isProvided() && mToolbars[TOOLBAR_RIGHT])
+ {
+ if (toolbar_set.right_toolbar.button_display_mode.isProvided())
+ {
+ LLToolBarEnums::ButtonType button_type = toolbar_set.right_toolbar.button_display_mode;
+ mToolbars[TOOLBAR_RIGHT]->setButtonType(button_type);
+ }
+ BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.right_toolbar.commands)
+ {
+ if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_RIGHT]))
+ {
+ llwarns << "Error adding command '" << command_params.name() << "' to right toolbar." << llendl;
+ }
+ }
+ }
+ if (toolbar_set.bottom_toolbar.isProvided() && mToolbars[TOOLBAR_BOTTOM])
+ {
+ if (toolbar_set.bottom_toolbar.button_display_mode.isProvided())
+ {
+ LLToolBarEnums::ButtonType button_type = toolbar_set.bottom_toolbar.button_display_mode;
+ mToolbars[TOOLBAR_BOTTOM]->setButtonType(button_type);
+ }
+ BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.bottom_toolbar.commands)
+ {
+ if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_BOTTOM]))
+ {
+ llwarns << "Error adding command '" << command_params.name() << "' to bottom toolbar." << llendl;
+ }
+ }
+ }
+ mToolbarsLoaded = true;
+ return true;
+}
+
+bool LLToolBarView::clearToolbars()
+{
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ if (mToolbars[i])
+ {
+ mToolbars[i]->clearCommandsList();
+ }
+ }
+
+ return true;
+}
+
+//static
+bool LLToolBarView::loadDefaultToolbars()
+{
+ bool retval = false;
+
+ if (gToolBarView)
+ {
+ retval = gToolBarView->loadToolbars(true);
+ if (retval)
+ {
+ gToolBarView->saveToolbars();
+ }
+ }
+
+ return retval;
+}
+
+//static
+bool LLToolBarView::clearAllToolbars()
+{
+ bool retval = false;
+
+ if (gToolBarView)
+ {
+ retval = gToolBarView->clearToolbars();
+ if (retval)
+ {
+ gToolBarView->saveToolbars();
+ }
+ }
+
+ return retval;
+}
+
+void LLToolBarView::saveToolbars() const
+{
+ if (!mToolbarsLoaded)
+ return;
+
+ // Build the parameter tree from the toolbar data
+ LLToolBarView::ToolbarSet toolbar_set;
+ if (mToolbars[TOOLBAR_LEFT])
+ {
+ toolbar_set.left_toolbar.button_display_mode = mToolbars[TOOLBAR_LEFT]->getButtonType();
+ addToToolset(mToolbars[TOOLBAR_LEFT]->getCommandsList(), toolbar_set.left_toolbar);
+ }
+ if (mToolbars[TOOLBAR_RIGHT])
+ {
+ toolbar_set.right_toolbar.button_display_mode = mToolbars[TOOLBAR_RIGHT]->getButtonType();
+ addToToolset(mToolbars[TOOLBAR_RIGHT]->getCommandsList(), toolbar_set.right_toolbar);
+ }
+ if (mToolbars[TOOLBAR_BOTTOM])
+ {
+ toolbar_set.bottom_toolbar.button_display_mode = mToolbars[TOOLBAR_BOTTOM]->getButtonType();
+ addToToolset(mToolbars[TOOLBAR_BOTTOM]->getCommandsList(), toolbar_set.bottom_toolbar);
+ }
+
+ // Serialize the parameter tree
+ LLXMLNodePtr output_node = new LLXMLNode("toolbars", false);
+ LLXUIParser parser;
+ parser.writeXUI(output_node, toolbar_set);
+
+ // Write the resulting XML to file
+ if(!output_node->isNull())
+ {
+ const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+ LLFILE *fp = LLFile::fopen(filename, "w");
+ if (fp != NULL)
+ {
+ LLXMLNode::writeHeaderToFile(fp);
+ output_node->writeToFile(fp);
+ fclose(fp);
+ }
+ }
+}
+
+// Enumerate the commands in command_list and add them as Params to the toolbar
+void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const
+{
+ LLCommandManager& mgr = LLCommandManager::instance();
+
+ for (command_id_list_t::const_iterator it = command_list.begin();
+ it != command_list.end();
+ ++it)
+ {
+ LLCommand* command = mgr.getCommand(*it);
+ if (command)
+ {
+ LLCommandId::Params command_name_param;
+ command_name_param.name = command->name();
+ toolbar.commands.add(command_name_param);
+ }
+ }
+}
+
+void LLToolBarView::onToolBarButtonAdded(LLView* button)
+{
+ llassert(button);
+
+ if (button->getName() == "speak")
+ {
+ // Add the "Speak" button as a control view in LLTransientFloaterMgr
+ // to prevent hiding the transient IM floater upon pressing "Speak".
+ LLTransientFloaterMgr::getInstance()->addControlView(button);
+
+ // Redock incoming and/or outgoing call windows, if applicable
+
+ LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call");
+ LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call");
+
+ if (incoming_floater && incoming_floater->isShown())
+ {
+ LLCallDialog* incoming = dynamic_cast<LLCallDialog *>(incoming_floater);
+ llassert(incoming);
+
+ LLDockControl* dock_control = incoming->getDockControl();
+ if (dock_control->getDock() == NULL)
+ {
+ incoming->dockToToolbarButton("speak");
+ }
+ }
+
+ if (outgoing_floater && outgoing_floater->isShown())
+ {
+ LLCallDialog* outgoing = dynamic_cast<LLCallDialog *>(outgoing_floater);
+ llassert(outgoing);
+
+ LLDockControl* dock_control = outgoing->getDockControl();
+ if (dock_control->getDock() == NULL)
+ {
+ outgoing->dockToToolbarButton("speak");
+ }
+ }
+ }
+ else if (button->getName() == "voice")
+ {
+ // Add the "Voice controls" button as a control view in LLTransientFloaterMgr
+ // to prevent hiding the transient IM floater upon pressing "Voice controls".
+ LLTransientFloaterMgr::getInstance()->addControlView(button);
+ }
+}
+
+void LLToolBarView::onToolBarButtonRemoved(LLView* button)
+{
+ llassert(button);
+
+ if (button->getName() == "speak")
+ {
+ LLTransientFloaterMgr::getInstance()->removeControlView(button);
+
+ // Undock incoming and/or outgoing call windows
+
+ LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call");
+ LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call");
+
+ if (incoming_floater && incoming_floater->isShown())
+ {
+ LLDockableFloater* incoming = dynamic_cast<LLDockableFloater *>(incoming_floater);
+ llassert(incoming);
+
+ LLDockControl* dock_control = incoming->getDockControl();
+ dock_control->setDock(NULL);
+ }
+
+ if (outgoing_floater && outgoing_floater->isShown())
+ {
+ LLDockableFloater* outgoing = dynamic_cast<LLDockableFloater *>(outgoing_floater);
+ llassert(outgoing);
+
+ LLDockControl* dock_control = outgoing->getDockControl();
+ dock_control->setDock(NULL);
+ }
+ }
+ else if (button->getName() == "voice")
+ {
+ LLTransientFloaterMgr::getInstance()->removeControlView(button);
+ }
+}
+
+void LLToolBarView::draw()
+{
+ LLRect toolbar_rects[TOOLBAR_COUNT];
+
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ if (mToolbars[i])
+ {
+ LLLayoutStack::ELayoutOrientation orientation = LLToolBarEnums::getOrientation(mToolbars[i]->getSideType());
+
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ mToolbars[i]->getParent()->reshape(mToolbars[i]->getParent()->getRect().getWidth(), mToolbars[i]->getRect().getHeight());
+ }
+ else
+ {
+ mToolbars[i]->getParent()->reshape(mToolbars[i]->getRect().getWidth(), mToolbars[i]->getParent()->getRect().getHeight());
+ }
+
+ mToolbars[i]->localRectToOtherView(mToolbars[i]->getLocalRect(), &toolbar_rects[i], this);
+ }
+ }
+
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ mToolbars[i]->getParent()->setVisible(mShowToolbars
+ && (mToolbars[i]->hasButtons()
+ || isToolDragged()));
+ }
+
+ // Draw drop zones if drop of a tool is active
+ if (isToolDragged())
+ {
+ LLColor4 drop_color = LLUIColorTable::instance().getColor( "ToolbarDropZoneColor" );
+
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ gl_rect_2d(toolbar_rects[i], drop_color, TRUE);
+ }
+ }
+
+ LLUICtrl::draw();
+}
+
+
+// ----------------------------------------
+// Drag and Drop Handling
+// ----------------------------------------
+
+
+void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton)
+{
+ resetDragTool(toolbarButton);
+
+ // Flag the tool dragging but don't start it yet
+ LLToolDragAndDrop::getInstance()->setDragStart( x, y );
+}
+
+BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)
+{
+ if (LLToolDragAndDrop::getInstance()->isOverThreshold( x, y ))
+ {
+ if (!gToolBarView->mDragStarted)
+ {
+ // Start the tool dragging:
+
+ // First, create the global drag and drop object
+ std::vector<EDragAndDropType> types;
+ uuid_vec_t cargo_ids;
+ types.push_back(DAD_WIDGET);
+ cargo_ids.push_back(uuid);
+ gClipboard.setSourceObject(uuid,LLAssetType::AT_WIDGET);
+ LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_VIEWER;
+ LLUUID srcID;
+ LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src, srcID);
+
+ // Second, stop the command if it is in progress and requires stopping!
+ LLCommandId command_id = LLCommandId(uuid);
+ gToolBarView->stopCommandInProgress(command_id);
+
+ gToolBarView->mDragStarted = true;
+ return TRUE;
+ }
+ else
+ {
+ MASK mask = 0;
+ return LLToolDragAndDrop::getInstance()->handleHover( x, y, mask );
+ }
+ }
+ return FALSE;
+}
+
+BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar)
+{
+ BOOL handled = FALSE;
+ LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+
+ LLAssetType::EType type = inv_item->getType();
+ if (type == LLAssetType::AT_WIDGET)
+ {
+ handled = TRUE;
+ // Get the command from its uuid
+ LLCommandManager& mgr = LLCommandManager::instance();
+ LLCommandId command_id(inv_item->getUUID());
+ LLCommand* command = mgr.getCommand(command_id);
+ if (command)
+ {
+ // Suppress the command from the toolbars (including the one it's dropped in,
+ // this will handle move position).
+ S32 old_toolbar_loc = gToolBarView->hasCommand(command_id);
+ LLToolBar* old_toolbar = NULL;
+
+ if (old_toolbar_loc != TOOLBAR_NONE)
+ {
+ llassert(gToolBarView->mDragToolbarButton);
+ old_toolbar = gToolBarView->mDragToolbarButton->getParentByType<LLToolBar>();
+ if (old_toolbar->isReadOnly() && toolbar->isReadOnly())
+ {
+ // do nothing
+ }
+ else
+ {
+ int old_rank = LLToolBar::RANK_NONE;
+ gToolBarView->removeCommand(command_id, old_rank);
+ }
+ }
+
+ // Convert the (x,y) position in rank in toolbar
+ if (!toolbar->isReadOnly())
+ {
+ int new_rank = toolbar->getRankFromPosition(x,y);
+ toolbar->addCommand(command_id, new_rank);
+ }
+
+ // Save the new toolbars configuration
+ gToolBarView->saveToolbars();
+ }
+ else
+ {
+ llwarns << "Command couldn't be found in command manager" << llendl;
+ }
+ }
+
+ resetDragTool(NULL);
+ return handled;
+}
+
+void LLToolBarView::resetDragTool(LLToolBarButton* toolbarButton)
+{
+ // Clear the saved command, toolbar and rank
+ gToolBarView->mDragStarted = false;
+ gToolBarView->mDragToolbarButton = toolbarButton;
+}
+
+void LLToolBarView::setToolBarsVisible(bool visible)
+{
+ mShowToolbars = visible;
+}
+
+bool LLToolBarView::isModified() const
+{
+ bool modified = false;
+
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ modified |= mToolbars[i]->isModified();
+ }
+
+ return modified;
+}
+
+
+//
+// HACK to bring up destinations guide at startup
+//
+
+void handleLoginToolbarSetup()
+{
+ // Open the destinations guide by default on first login, per Rhett
+ if (gSavedPerAccountSettings.getBOOL("DisplayDestinationsOnInitialRun") || gAgent.isFirstLogin())
+ {
+ LLFloaterReg::showInstance("destinations");
+
+ gSavedPerAccountSettings.setBOOL("DisplayDestinationsOnInitialRun", FALSE);
+ }
+}
+
diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h
new file mode 100644
index 0000000000..be66bcae36
--- /dev/null
+++ b/indra/newview/lltoolbarview.h
@@ -0,0 +1,137 @@
+/**
+ * @file lltoolbarview.h
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLTOOLBARVIEW_H
+#define LL_LLTOOLBARVIEW_H
+
+#include "lluictrl.h"
+#include "lltoolbar.h"
+#include "llcommandmanager.h"
+
+class LLUICtrlFactory;
+
+// Parent of all LLToolBar
+
+class LLToolBarView : public LLUICtrl
+{
+public:
+ typedef enum
+ {
+ TOOLBAR_NONE = 0,
+ TOOLBAR_LEFT,
+ TOOLBAR_RIGHT,
+ TOOLBAR_BOTTOM,
+
+ TOOLBAR_COUNT,
+
+ TOOLBAR_FIRST = TOOLBAR_LEFT,
+ TOOLBAR_LAST = TOOLBAR_BOTTOM,
+ } EToolBarLocation;
+
+ // Xui structure of the toolbar panel
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> {};
+
+ // Note: valid children for LLToolBarView are stored in this registry
+ typedef LLDefaultChildRegistry child_registry_t;
+
+ // Xml structure of the toolbars.xml setting
+ // Those live in a toolbars.xml found in app_settings (for the default) and in
+ // the user folder for the user specific (saved) settings
+ struct Toolbar : public LLInitParam::Block<Toolbar>
+ {
+ Mandatory<LLToolBarEnums::ButtonType> button_display_mode;
+ Multiple<LLCommandId::Params> commands;
+
+ Toolbar();
+ };
+ struct ToolbarSet : public LLInitParam::Block<ToolbarSet>
+ {
+ Optional<Toolbar> left_toolbar,
+ right_toolbar,
+ bottom_toolbar;
+
+ ToolbarSet();
+ };
+
+ // Derived methods
+ virtual ~LLToolBarView();
+ virtual BOOL postBuild();
+ virtual void draw();
+
+ // Toolbar view interface with the rest of the world
+ // Checks if the commandId is being used somewhere in one of the toolbars, returns EToolBarLocation
+ S32 hasCommand(const LLCommandId& commandId) const;
+ S32 addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank = LLToolBar::RANK_NONE);
+ S32 removeCommand(const LLCommandId& commandId, int& rank); // Sets the rank the removed command was at, RANK_NONE if not found
+ S32 enableCommand(const LLCommandId& commandId, bool enabled);
+ S32 stopCommandInProgress(const LLCommandId& commandId);
+ S32 flashCommand(const LLCommandId& commandId, bool flash);
+
+ // Loads the toolbars from the existing user or default settings
+ bool loadToolbars(bool force_default = false); // return false if load fails
+
+ // Clears all buttons off the toolbars
+ bool clearToolbars();
+
+ void setToolBarsVisible(bool visible);
+
+ static bool loadDefaultToolbars();
+ static bool clearAllToolbars();
+
+ static void startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton);
+ static BOOL handleDragTool(S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type);
+ static BOOL handleDropTool(void* cargo_data, S32 x, S32 y, LLToolBar* toolbar);
+ static void resetDragTool(LLToolBarButton* toolbarButton);
+
+ bool isModified() const;
+
+protected:
+ friend class LLUICtrlFactory;
+ LLToolBarView(const Params&);
+
+ void initFromParams(const Params&);
+
+private:
+ void saveToolbars() const;
+ bool addCommandInternal(const LLCommandId& commandId, LLToolBar* toolbar);
+ void addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const;
+
+ static void onToolBarButtonAdded(LLView* button);
+ static void onToolBarButtonRemoved(LLView* button);
+
+ // Pointers to the toolbars handled by the toolbar view
+ LLToolBar* mToolbars[TOOLBAR_COUNT];
+ bool mToolbarsLoaded;
+
+ bool mDragStarted;
+ LLToolBarButton* mDragToolbarButton;
+ bool mShowToolbars;
+};
+
+extern LLToolBarView* gToolBarView;
+
+#endif // LL_LLTOOLBARVIEW_H
diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp
index 9782b90cf1..aba43a9715 100644
--- a/indra/newview/lltoolbrush.cpp
+++ b/indra/newview/lltoolbrush.cpp
@@ -507,12 +507,12 @@ void LLToolBrushLand::render()
void LLToolBrushLand::renderOverlay(LLSurface& land, const LLVector3& pos_region,
const LLVector3& pos_world)
{
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLGLDepthTest mDepthTest(GL_TRUE);
- glPushMatrix();
+ gGL.pushMatrix();
gGL.color4fv(OVERLAY_COLOR.mV);
- glTranslatef(0.0f, 0.0f, 1.0f);
+ gGL.translatef(0.0f, 0.0f, 1.0f);
S32 i = (S32) pos_region.mV[VX];
S32 j = (S32) pos_region.mV[VY];
@@ -566,7 +566,7 @@ void LLToolBrushLand::renderOverlay(LLSurface& land, const LLVector3& pos_region
}
gGL.end();
- glPopMatrix();
+ gGL.popMatrix();
}
void LLToolBrushLand::determineAffectedRegions(region_list_t& regions,
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 3e5ce427a8..6910b8eced 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -57,6 +57,7 @@
#include "llviewerwindow.h"
#include "llvoavatarself.h"
#include "llworld.h"
+#include "llclipboard.h"
// syntactic sugar
#define callMemberFunction(object,ptrToMember) ((object).*(ptrToMember))
@@ -802,7 +803,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
LLViewerObject* hit_obj = pick_info.getObject();
LLSelectMgr::getInstance()->unhighlightAll();
-
+ bool highlight_object = false;
// Treat attachments as part of the avatar they are attached to.
if (hit_obj != NULL)
{
@@ -844,16 +845,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
{
target = DT_OBJECT;
hit_face = pick_info.mObjectFace;
- // if any item being dragged will be applied to the object under our cursor
- // highlight that object
- for (S32 i = 0; i < (S32)mCargoIDs.size(); i++)
- {
- if (mCargoTypes[i] != DAD_OBJECT || (pick_info.mKeyMask & MASK_CONTROL))
- {
- LLSelectMgr::getInstance()->highlightObjectAndFamily(hit_obj);
- break;
- }
- }
+ highlight_object = true;
}
}
else if (pick_info.mPickType == LLPickInfo::PICK_LAND)
@@ -899,6 +891,19 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
}
}
+ if (highlight_object && mLastAccept > ACCEPT_NO_LOCKED)
+ {
+ // if any item being dragged will be applied to the object under our cursor
+ // highlight that object
+ for (S32 i = 0; i < (S32)mCargoIDs.size(); i++)
+ {
+ if (mCargoTypes[i] != DAD_OBJECT || (pick_info.mKeyMask & MASK_CONTROL))
+ {
+ LLSelectMgr::getInstance()->highlightObjectAndFamily(hit_obj);
+ break;
+ }
+ }
+ }
ECursorType cursor = acceptanceToCursor( mLastAccept );
gViewerWindow->getWindow()->setCursor( cursor );
@@ -2495,6 +2500,10 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
item = (LLViewerInventoryItem*)preview->getDragItem();
}
}
+ else if(mSource == SOURCE_VIEWER)
+ {
+ item = (LLViewerInventoryItem*)gClipboard.getSourceObject();
+ }
if(item) return item;
if(cat) return cat;
return NULL;
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
index 7b8cce3dc7..92f007a251 100644
--- a/indra/newview/lltooldraganddrop.h
+++ b/indra/newview/lltooldraganddrop.h
@@ -66,7 +66,8 @@ public:
SOURCE_AGENT,
SOURCE_WORLD,
SOURCE_NOTECARD,
- SOURCE_LIBRARY
+ SOURCE_LIBRARY,
+ SOURCE_VIEWER
};
void beginDrag(EDragAndDropType type,
diff --git a/indra/newview/lltoolgun.cpp b/indra/newview/lltoolgun.cpp
index 68af3d73d2..857d105361 100644
--- a/indra/newview/lltoolgun.cpp
+++ b/indra/newview/lltoolgun.cpp
@@ -56,7 +56,7 @@ void LLToolGun::handleSelect()
{
gViewerWindow->hideCursor();
gViewerWindow->moveCursorToCenter();
- gViewerWindow->mWindow->setMouseClipping(TRUE);
+ gViewerWindow->getWindow()->setMouseClipping(TRUE);
mIsSelected = TRUE;
}
@@ -64,7 +64,7 @@ void LLToolGun::handleDeselect()
{
gViewerWindow->moveCursorToCenter();
gViewerWindow->showCursor();
- gViewerWindow->mWindow->setMouseClipping(FALSE);
+ gViewerWindow->getWindow()->setMouseClipping(FALSE);
mIsSelected = FALSE;
}
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
index 51c0e2eeed..6bc7c6de11 100644
--- a/indra/newview/lltoolmgr.cpp
+++ b/indra/newview/lltoolmgr.cpp
@@ -247,24 +247,10 @@ bool LLToolMgr::canEdit()
void LLToolMgr::toggleBuildMode()
{
- if (inBuildMode())
- {
- if (gSavedSettings.getBOOL("EditCameraMovement"))
- {
- // just reset the view, will pull us out of edit mode
- handle_reset_view();
- }
- else
- {
- // manually disable edit mode, but do not affect the camera
- gAgentCamera.resetView(false);
- LLFloaterReg::hideInstance("build");
- gViewerWindow->showCursor();
- }
- // avoid spurious avatar movements pulling out of edit mode
- LLViewerJoystick::getInstance()->setNeedsReset();
- }
- else
+ LLFloaterReg::toggleInstanceOrBringToFront("build");
+
+ bool build_visible = LLFloaterReg::instanceVisible("build");
+ if (build_visible)
{
ECameraMode camMode = gAgentCamera.getCameraMode();
if (CAMERA_MODE_MOUSELOOK == camMode || CAMERA_MODE_CUSTOMIZE_AVATAR == camMode)
@@ -291,7 +277,7 @@ void LLToolMgr::toggleBuildMode()
}
}
-
+
setCurrentToolset(gBasicToolset);
getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() );
@@ -304,6 +290,24 @@ void LLToolMgr::toggleBuildMode()
LLViewerJoystick::getInstance()->setNeedsReset();
}
+ else
+ {
+ if (gSavedSettings.getBOOL("EditCameraMovement"))
+ {
+ // just reset the view, will pull us out of edit mode
+ handle_reset_view();
+ }
+ else
+ {
+ // manually disable edit mode, but do not affect the camera
+ gAgentCamera.resetView(false);
+ LLFloaterReg::hideInstance("build");
+ gViewerWindow->showCursor();
+ }
+ // avoid spurious avatar movements pulling out of edit mode
+ LLViewerJoystick::getInstance()->setNeedsReset();
+ }
+
}
bool LLToolMgr::inBuildMode()
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
index 964b17d3a6..718201e381 100644
--- a/indra/newview/lltoolmorph.cpp
+++ b/indra/newview/lltoolmorph.cpp
@@ -169,23 +169,28 @@ BOOL LLVisualParamHint::render()
gGL.pushUIMatrix();
gGL.loadUIIdentity();
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
- glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+ gGL.loadIdentity();
+ gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
LLGLSUIDefault gls_ui;
//LLGLState::verify(TRUE);
mBackgroundp->draw(0, 0, mFullWidth, mFullHeight);
- glMatrixMode(GL_PROJECTION);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
mNeedsUpdate = FALSE;
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index 983108391f..bf1f8808a7 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -53,10 +53,12 @@
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "lllandmarklist.h"
+#include "llprogressview.h"
#include "llsky.h"
#include "llui.h"
#include "llviewercamera.h"
#include "llviewerinventory.h"
+#include "llviewerwindow.h"
#include "llworld.h"
#include "llworldmapview.h"
#include "llviewercontrol.h"
@@ -111,6 +113,8 @@ void LLTracker::drawHUDArrow()
{
if (!gSavedSettings.getBOOL("RenderTrackerBeacon")) return;
+ if (gViewerWindow->getProgressView()->getVisible()) return;
+
static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white);
/* tracking autopilot destination has been disabled
@@ -505,9 +509,10 @@ void LLTracker::renderBeacon(LLVector3d pos_global,
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glTranslatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
+ {
+ gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, fogged_color);
@@ -559,9 +564,8 @@ void LLTracker::renderBeacon(LLVector3d pos_global,
gGL.end();
}
-
- //gCylinder.render(1000);
- glPopMatrix();
+ }
+ gGL.popMatrix();
std::string text;
text = llformat( "%.0f m", to_vec.magVec());
diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp
index c648a6a28a..3d68c10489 100644
--- a/indra/newview/lltransientfloatermgr.cpp
+++ b/indra/newview/lltransientfloatermgr.cpp
@@ -42,9 +42,9 @@ LLTransientFloaterMgr::LLTransientFloaterMgr()
&LLTransientFloaterMgr::leftMouseClickCallback, this, _2, _3, _4));
}
- mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>()));
- mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>()));
- mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>()));
+ mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(GLOBAL, controls_set_t()));
+ mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(DOCKED, controls_set_t()));
+ mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(IM, controls_set_t()));
}
void LLTransientFloaterMgr::registerTransientFloater(LLTransientFloater* floater)
@@ -59,12 +59,16 @@ void LLTransientFloaterMgr::unregisterTransientFloater(LLTransientFloater* float
void LLTransientFloaterMgr::addControlView(ETransientGroup group, LLView* view)
{
- mGroupControls.find(group)->second.insert(view);
+ if (!view) return;
+
+ mGroupControls.find(group)->second.insert(view->getHandle());
}
void LLTransientFloaterMgr::removeControlView(ETransientGroup group, LLView* view)
{
- mGroupControls.find(group)->second.erase(view);
+ if (!view) return;
+
+ mGroupControls.find(group)->second.erase(view->getHandle());
}
void LLTransientFloaterMgr::addControlView(LLView* view)
@@ -89,7 +93,7 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y)
{
ETransientGroup group = floater->getGroup();
- bool hide = isControlClicked(mGroupControls.find(group)->second, x, y);
+ bool hide = isControlClicked(group, mGroupControls.find(group)->second, x, y);
if (hide)
{
floater->setTransientVisible(FALSE);
@@ -98,13 +102,25 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y)
}
}
-bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32 y)
+bool LLTransientFloaterMgr::isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y)
{
+ std::list< LLHandle<LLView> > dead_handles;
+
bool res = true;
for (controls_set_t::iterator it = set.begin(); it
!= set.end(); it++)
{
- LLView* control_view = *it;
+ LLView* control_view = NULL;
+
+ LLHandle<LLView> handle = *it;
+ if (handle.isDead())
+ {
+ dead_handles.push_back(handle);
+ continue;
+ }
+
+ control_view = handle.get();
+
if (!control_view->getVisible())
{
continue;
@@ -118,6 +134,13 @@ bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32
break;
}
}
+
+ for (std::list< LLHandle<LLView> >::iterator it = dead_handles.begin(); it != dead_handles.end(); ++it)
+ {
+ LLHandle<LLView> handle = *it;
+ mGroupControls.find(group)->second.erase(handle);
+ }
+
return res;
}
@@ -130,8 +153,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,
return;
}
- bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y)
- && isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
+ bool hide = isControlClicked(DOCKED, mGroupControls.find(DOCKED)->second, x, y)
+ && isControlClicked(GLOBAL, mGroupControls.find(GLOBAL)->second, x, y);
if (hide)
{
hideTransientFloaters(x, y);
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index 2919244121..b4611c8c87 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -56,14 +56,15 @@ public:
void removeControlView(LLView* view);
private:
+ typedef std::set<LLHandle<LLView> > controls_set_t;
+ typedef std::map<ETransientGroup, controls_set_t > group_controls_t;
+
void hideTransientFloaters(S32 x, S32 y);
void leftMouseClickCallback(S32 x, S32 y, MASK mask);
- bool isControlClicked(std::set<LLView*>& set, S32 x, S32 y);
-private:
+ bool isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y);
+
std::set<LLTransientFloater*> mTransSet;
- typedef std::set<LLView*> controls_set_t;
- typedef std::map<ETransientGroup, std::set<LLView*> > group_controls_t;
group_controls_t mGroupControls;
};
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index 2f60b6b90b..7eb54271f4 100644..100755
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -31,82 +31,294 @@
#include <curl/curl.h>
#include "llbufferstream.h"
+#include "lltrans.h"
#include "llui.h"
#include "llversioninfo.h"
#include "llviewercontrol.h"
#include "reader.h"
-// These two are concatenated with the language specifiers to form a complete Google Translate URL
-const char* LLTranslate::m_GoogleURL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=";
-const char* LLTranslate::m_GoogleLangSpec = "&langpair=";
-float LLTranslate::m_GoogleTimeout = 5;
+// virtual
+void LLGoogleTranslationHandler::getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const
+{
+ url = std::string("https://www.googleapis.com/language/translate/v2?key=")
+ + getAPIKey() + "&q=" + LLURI::escape(text) + "&target=" + to_lang;
+ if (!from_lang.empty())
+ {
+ url += "&source=" + from_lang;
+ }
+}
-LLSD LLTranslate::m_Header;
-// These constants are for the GET header.
-const char* LLTranslate::m_AcceptHeader = "Accept";
-const char* LLTranslate::m_AcceptType = "text/plain";
-const char* LLTranslate::m_AgentHeader = "User-Agent";
+// virtual
+void LLGoogleTranslationHandler::getKeyVerificationURL(
+ std::string& url,
+ const std::string& key) const
+{
+ url = std::string("https://www.googleapis.com/language/translate/v2/languages?key=")
+ + key + "&target=en";
+}
-// These constants are in the JSON returned from Google
-const char* LLTranslate::m_GoogleData = "responseData";
-const char* LLTranslate::m_GoogleTranslation = "translatedText";
-const char* LLTranslate::m_GoogleLanguage = "detectedSourceLanguage";
+// virtual
+bool LLGoogleTranslationHandler::parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const
+{
+ Json::Value root;
+ Json::Reader reader;
-//static
-void LLTranslate::translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+ if (!reader.parse(body, root))
+ {
+ err_msg = reader.getFormatedErrorMessages();
+ return false;
+ }
+
+ if (!root.isObject()) // empty response? should not happen
+ {
+ return false;
+ }
+
+ if (status != STATUS_OK)
+ {
+ // Request failed. Extract error message from the response.
+ parseErrorResponse(root, status, err_msg);
+ return false;
+ }
+
+ // Request succeeded, extract translation from the response.
+ return parseTranslation(root, translation, detected_lang);
+}
+
+// static
+void LLGoogleTranslationHandler::parseErrorResponse(
+ const Json::Value& root,
+ int& status,
+ std::string& err_msg)
{
- std::string url;
- getTranslateUrl(url, from_lang, to_lang, mesg);
+ const Json::Value& error = root.get("error", 0);
+ if (!error.isObject() || !error.isMember("message") || !error.isMember("code"))
+ {
+ return;
+ }
- std::string user_agent = llformat("%s %d.%d.%d (%d)",
- LLVersionInfo::getChannel().c_str(),
- LLVersionInfo::getMajor(),
- LLVersionInfo::getMinor(),
- LLVersionInfo::getPatch(),
- LLVersionInfo::getBuild());
+ err_msg = error["message"].asString();
+ status = error["code"].asInt();
+}
- if (!m_Header.size())
+// static
+bool LLGoogleTranslationHandler::parseTranslation(
+ const Json::Value& root,
+ std::string& translation,
+ std::string& detected_lang)
+{
+ // JsonCpp is prone to aborting the program on failed assertions,
+ // so be super-careful and verify the response format.
+ const Json::Value& data = root.get("data", 0);
+ if (!data.isObject() || !data.isMember("translations"))
{
- m_Header.insert(m_AcceptHeader, LLSD(m_AcceptType));
- m_Header.insert(m_AgentHeader, LLSD(user_agent));
+ return false;
+ }
+
+ const Json::Value& translations = data["translations"];
+ if (!translations.isArray() || translations.size() == 0)
+ {
+ return false;
+ }
+
+ const Json::Value& first = translations[0U];
+ if (!first.isObject() || !first.isMember("translatedText"))
+ {
+ return false;
}
- LLHTTPClient::get(url, result, m_Header, m_GoogleTimeout);
+ translation = first["translatedText"].asString();
+ detected_lang = first.get("detectedSourceLanguage", "").asString();
+ return true;
}
-//static
-void LLTranslate::getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+// static
+std::string LLGoogleTranslationHandler::getAPIKey()
+{
+ return gSavedSettings.getString("GoogleTranslateAPIKey");
+}
+
+// virtual
+void LLBingTranslationHandler::getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const
{
- char * curl_str = curl_escape(mesg.c_str(), mesg.size());
- std::string const escaped_mesg(curl_str);
- curl_free(curl_str);
+ url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=")
+ + getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang;
+ if (!from_lang.empty())
+ {
+ url += "&from=" + from_lang;
+ }
+}
- translate_url = m_GoogleURL
- + escaped_mesg + m_GoogleLangSpec
- + from_lang // 'from' language; empty string for auto
- + "%7C" // |
- + to_lang; // 'to' language
+// virtual
+void LLBingTranslationHandler::getKeyVerificationURL(
+ std::string& url,
+ const std::string& key) const
+{
+ url = std::string("http://api.microsofttranslator.com/v2/Http.svc/GetLanguagesForTranslate?appId=")
+ + key;
}
-//static
-bool LLTranslate::parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language)
+// virtual
+bool LLBingTranslationHandler::parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const
{
- Json::Value root;
- Json::Reader reader;
-
- bool success = reader.parse(body, root);
- if (!success)
+ if (status != STATUS_OK)
{
- LL_WARNS("Translate") << "Non valid response from Google Translate API: '" << reader.getFormatedErrorMessages() << "'" << LL_ENDL;
+ static const std::string MSG_BEGIN_MARKER = "Message: ";
+ size_t begin = body.find(MSG_BEGIN_MARKER);
+ if (begin != std::string::npos)
+ {
+ begin += MSG_BEGIN_MARKER.size();
+ }
+ else
+ {
+ begin = 0;
+ err_msg.clear();
+ }
+ size_t end = body.find("</p>", begin);
+ err_msg = body.substr(begin, end-begin);
+ LLStringUtil::replaceString(err_msg, "&#xD;", ""); // strip CR
return false;
}
-
- translation = root[m_GoogleData].get(m_GoogleTranslation, "").asString();
- detected_language = root[m_GoogleData].get(m_GoogleLanguage, "").asString();
+
+ // Sample response: <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Hola</string>
+ size_t begin = body.find(">");
+ if (begin == std::string::npos || begin >= (body.size() - 1))
+ {
+ begin = 0;
+ }
+ else
+ {
+ ++begin;
+ }
+
+ size_t end = body.find("</string>", begin);
+
+ detected_lang = ""; // unsupported by this API
+ translation = body.substr(begin, end-begin);
+ LLStringUtil::replaceString(translation, "&#xD;", ""); // strip CR
return true;
}
+// static
+std::string LLBingTranslationHandler::getAPIKey()
+{
+ return gSavedSettings.getString("BingTranslateAPIKey");
+}
+
+LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)
+: mFromLang(from_lang)
+, mToLang(to_lang)
+, mHandler(LLTranslate::getPreferredHandler())
+{
+}
+
+// virtual
+void LLTranslate::TranslationReceiver::completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+{
+ LLBufferStream istr(channels, buffer.get());
+ std::stringstream strstrm;
+ strstrm << istr.rdbuf();
+
+ const std::string body = strstrm.str();
+ std::string translation, detected_lang, err_msg;
+ int status = http_status;
+ LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
+ LL_DEBUGS("Translate") << "Response body: " << body << LL_ENDL;
+ if (mHandler.parseResponse(status, body, translation, detected_lang, err_msg))
+ {
+ // Fix up the response
+ LLStringUtil::replaceString(translation, "&lt;", "<");
+ LLStringUtil::replaceString(translation, "&gt;",">");
+ LLStringUtil::replaceString(translation, "&quot;","\"");
+ LLStringUtil::replaceString(translation, "&#39;","'");
+ LLStringUtil::replaceString(translation, "&amp;","&");
+ LLStringUtil::replaceString(translation, "&apos;","'");
+
+ handleResponse(translation, detected_lang);
+ }
+ else
+ {
+ if (err_msg.empty())
+ {
+ err_msg = LLTrans::getString("TranslationResponseParseError");
+ }
+
+ llwarns << "Translation request failed: " << err_msg << llendl;
+ handleFailure(status, err_msg);
+ }
+}
+
+LLTranslate::KeyVerificationReceiver::KeyVerificationReceiver(EService service)
+: mService(service)
+{
+}
+
+LLTranslate::EService LLTranslate::KeyVerificationReceiver::getService() const
+{
+ return mService;
+}
+
+// virtual
+void LLTranslate::KeyVerificationReceiver::completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+{
+ bool ok = (http_status == 200);
+ setVerificationStatus(ok);
+}
+
+//static
+void LLTranslate::translateMessage(
+ TranslationReceiverPtr &receiver,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &mesg)
+{
+ std::string url;
+ receiver->mHandler.getTranslateURL(url, from_lang, to_lang, mesg);
+
+ LL_DEBUGS("Translate") << "Sending translation request: " << url << LL_ENDL;
+ sendRequest(url, receiver);
+}
+
+// static
+void LLTranslate::verifyKey(
+ KeyVerificationReceiverPtr& receiver,
+ const std::string& key)
+{
+ std::string url;
+ const LLTranslationAPIHandler& handler = getHandler(receiver->getService());
+ handler.getKeyVerificationURL(url, key);
+
+ LL_DEBUGS("Translate") << "Sending key verification request: " << url << LL_ENDL;
+ sendRequest(url, receiver);
+}
+
//static
std::string LLTranslate::getTranslateLanguage()
{
@@ -119,3 +331,52 @@ std::string LLTranslate::getTranslateLanguage()
return language;
}
+// static
+const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
+{
+ EService service = SERVICE_BING;
+
+ std::string service_str = gSavedSettings.getString("TranslationService");
+ if (service_str == "google")
+ {
+ service = SERVICE_GOOGLE;
+ }
+
+ return getHandler(service);
+}
+
+// static
+const LLTranslationAPIHandler& LLTranslate::getHandler(EService service)
+{
+ static LLGoogleTranslationHandler google;
+ static LLBingTranslationHandler bing;
+
+ if (service == SERVICE_GOOGLE)
+ {
+ return google;
+ }
+
+ return bing;
+}
+
+// static
+void LLTranslate::sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder)
+{
+ static const float REQUEST_TIMEOUT = 5;
+ static LLSD sHeader;
+
+ if (!sHeader.size())
+ {
+ std::string user_agent = llformat("%s %d.%d.%d (%d)",
+ LLVersionInfo::getChannel().c_str(),
+ LLVersionInfo::getMajor(),
+ LLVersionInfo::getMinor(),
+ LLVersionInfo::getPatch(),
+ LLVersionInfo::getBuild());
+
+ sHeader.insert("Accept", "text/plain");
+ sHeader.insert("User-Agent", user_agent);
+ }
+
+ LLHTTPClient::get(url, responder, sHeader, REQUEST_TIMEOUT);
+}
diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h
index e85a42e878..c2330daa81 100644..100755
--- a/indra/newview/lltranslate.h
+++ b/indra/newview/lltranslate.h
@@ -30,89 +30,257 @@
#include "llhttpclient.h"
#include "llbufferstream.h"
+namespace Json
+{
+ class Value;
+}
+
+/**
+ * Handler of an HTTP machine translation service.
+ *
+ * Derived classes know the service URL
+ * and how to parse the translation result.
+ */
+class LLTranslationAPIHandler
+{
+public:
+ /**
+ * Get URL for translation of the given string.
+ *
+ * Sending HTTP GET request to the URL will initiate translation.
+ *
+ * @param[out] url Place holder for the result.
+ * @param from_lang Source language. Leave empty for auto-detection.
+ * @param to_lang Target language.
+ * @param text Text to translate.
+ */
+ virtual void getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const = 0;
+
+ /**
+ * Get URL to verify the given API key.
+ *
+ * Sending request to the URL verifies the key.
+ * Positive HTTP response (code 200) means that the key is valid.
+ *
+ * @param[out] url Place holder for the URL.
+ * @param[in] key Key to verify.
+ */
+ virtual void getKeyVerificationURL(
+ std::string &url,
+ const std::string &key) const = 0;
+
+ /**
+ * Parse translation response.
+ *
+ * @param[in,out] status HTTP status. May be modified while parsing.
+ * @param body Response text.
+ * @param[out] translation Translated text.
+ * @param[out] detected_lang Detected source language. May be empty.
+ * @param[out] err_msg Error message (in case of error).
+ */
+ virtual bool parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const = 0;
+
+ virtual ~LLTranslationAPIHandler() {}
+
+protected:
+ static const int STATUS_OK = 200;
+};
+
+/// Google Translate v2 API handler.
+class LLGoogleTranslationHandler : public LLTranslationAPIHandler
+{
+ LOG_CLASS(LLGoogleTranslationHandler);
+
+public:
+ /*virtual*/ void getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const;
+ /*virtual*/ void getKeyVerificationURL(
+ std::string &url,
+ const std::string &key) const;
+ /*virtual*/ bool parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const;
+
+private:
+ static void parseErrorResponse(
+ const Json::Value& root,
+ int& status,
+ std::string& err_msg);
+ static bool parseTranslation(
+ const Json::Value& root,
+ std::string& translation,
+ std::string& detected_lang);
+ static std::string getAPIKey();
+};
+
+/// Microsoft Translator v2 API handler.
+class LLBingTranslationHandler : public LLTranslationAPIHandler
+{
+ LOG_CLASS(LLBingTranslationHandler);
+
+public:
+ /*virtual*/ void getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const;
+ /*virtual*/ void getKeyVerificationURL(
+ std::string &url,
+ const std::string &key) const;
+ /*virtual*/ bool parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const;
+private:
+ static std::string getAPIKey();
+};
+
+/**
+ * Entry point for machine translation services.
+ *
+ * Basically, to translate a string, we need to know the URL
+ * of a translation service, have a valid API for the service
+ * and be given the target language.
+ *
+ * Callers specify the string to translate and the target language,
+ * LLTranslate takes care of the rest.
+ *
+ * API keys for translation are taken from saved settings.
+ */
class LLTranslate
{
LOG_CLASS(LLTranslate);
+
public :
+
+ typedef enum e_service {
+ SERVICE_BING,
+ SERVICE_GOOGLE,
+ } EService;
+
+ /**
+ * Subclasses are supposed to handle translation results (e.g. show them in chat)
+ */
class TranslationReceiver: public LLHTTPClient::Responder
{
+ public:
+
+ /**
+ * Using mHandler, parse incoming response.
+ *
+ * Calls either handleResponse() or handleFailure()
+ * depending on the HTTP status code and parsing success.
+ *
+ * @see handleResponse()
+ * @see handleFailure()
+ * @see mHandler
+ */
+ /*virtual*/ void completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer);
+
protected:
- TranslationReceiver(const std::string &from_lang, const std::string &to_lang)
- : m_fromLang(from_lang),
- m_toLang(to_lang)
- {
- }
+ friend class LLTranslate;
- virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) {};
- virtual void handleFailure() {};
+ /// Remember source and target languages for subclasses to be able to filter inappropriate results.
+ TranslationReceiver(const std::string& from_lang, const std::string& to_lang);
+ /// Override point to handle successful translation.
+ virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) = 0;
+
+ /// Override point to handle unsuccessful translation.
+ virtual void handleFailure(int status, const std::string& err_msg) = 0;
+
+ std::string mFromLang;
+ std::string mToLang;
+ const LLTranslationAPIHandler& mHandler;
+ };
+
+ /**
+ * Subclasses are supposed to handle API key verification result.
+ */
+ class KeyVerificationReceiver: public LLHTTPClient::Responder
+ {
public:
- ~TranslationReceiver()
- {
- }
-
- virtual void completedRaw( U32 status,
- const std::string& reason,
- const LLChannelDescriptors& channels,
- const LLIOPipe::buffer_ptr_t& buffer)
- {
- if (200 <= status && status < 300)
- {
- LLBufferStream istr(channels, buffer.get());
- std::stringstream strstrm;
- strstrm << istr.rdbuf();
-
- const std::string result = strstrm.str();
- std::string translation;
- std::string detected_language;
-
- if (!parseGoogleTranslate(result, translation, detected_language))
- {
- handleFailure();
- return;
- }
-
- // Fix up the response
- LLStringUtil::replaceString(translation, "&lt;", "<");
- LLStringUtil::replaceString(translation, "&gt;",">");
- LLStringUtil::replaceString(translation, "&quot;","\"");
- LLStringUtil::replaceString(translation, "&#39;","'");
- LLStringUtil::replaceString(translation, "&amp;","&");
- LLStringUtil::replaceString(translation, "&apos;","'");
-
- handleResponse(translation, detected_language);
- }
- else
- {
- LL_WARNS("Translate") << "HTTP request for Google Translate failed with status " << status << ", reason: " << reason << LL_ENDL;
- handleFailure();
- }
- }
+ EService getService() const;
protected:
- const std::string m_toLang;
- const std::string m_fromLang;
+ /**
+ * Save the translation service the key belongs to.
+ *
+ * Subclasses need to know it.
+ *
+ * @see getService()
+ */
+ KeyVerificationReceiver(EService service);
+
+ /**
+ * Parse verification response.
+ *
+ * Calls setVerificationStatus() with the verification status,
+ * which is true if HTTP status code is 200.
+ *
+ * @see setVerificationStatus()
+ */
+ /*virtual*/ void completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer);
+
+ /**
+ * Override point for subclasses to handle key verification status.
+ */
+ virtual void setVerificationStatus(bool ok) = 0;
+
+ EService mService;
};
- static void translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
- static float m_GoogleTimeout;
+ typedef boost::intrusive_ptr<TranslationReceiver> TranslationReceiverPtr;
+ typedef boost::intrusive_ptr<KeyVerificationReceiver> KeyVerificationReceiverPtr;
+
+ /**
+ * Translate given text.
+ *
+ * @param receiver Object to pass translation result to.
+ * @param from_lang Source language. Leave empty for auto-detection.
+ * @param to_lang Target language.
+ * @param mesg Text to translate.
+ */
+ static void translateMessage(TranslationReceiverPtr &receiver, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
+
+ /**
+ * Verify given API key of a translation service.
+ *
+ * @param receiver Object to pass verification result to.
+ * @param key Key to verify.
+ */
+ static void verifyKey(KeyVerificationReceiverPtr& receiver, const std::string& key);
static std::string getTranslateLanguage();
private:
- static void getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &text);
- static bool parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language);
-
- static LLSD m_Header;
- static const char* m_GoogleURL;
- static const char* m_GoogleLangSpec;
- static const char* m_AcceptHeader;
- static const char* m_AcceptType;
- static const char* m_AgentHeader;
- static const char* m_UserAgent;
-
- static const char* m_GoogleData;
- static const char* m_GoogleTranslation;
- static const char* m_GoogleLanguage;
+ static const LLTranslationAPIHandler& getPreferredHandler();
+ static const LLTranslationAPIHandler& getHandler(EService service);
+ static void sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder);
};
#endif
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index ed4d278e90..4240a38326 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -32,10 +32,10 @@
#include "llcommandhandler.h"
#include "llfloaterhelpbrowser.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llpanellogin.h"
#include "llregionhandle.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstartup.h" // gStartupState
#include "llweb.h"
@@ -167,9 +167,9 @@ bool LLURLDispatcherImpl::dispatchApp(const LLSLURL& slurl,
// static
bool LLURLDispatcherImpl::dispatchRegion(const LLSLURL& slurl, const std::string& nav_type, bool right_mouse)
{
- if(slurl.getType() != LLSLURL::LOCATION)
+ if(slurl.getType() != LLSLURL::LOCATION)
{
- return false;
+ return false;
}
// Before we're logged in, need to update the startup screen
// to tell the user where they are going.
@@ -246,7 +246,7 @@ void LLURLDispatcherImpl::regionHandleCallback(U64 region_handle, const LLSLURL&
key["y"] = global_pos.mdV[VY];
key["z"] = global_pos.mdV[VZ];
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
}
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
index 36c8b42a52..d042f62830 100644
--- a/indra/newview/llviewerassetstorage.cpp
+++ b/indra/newview/llviewerassetstorage.cpp
@@ -116,7 +116,7 @@ void LLViewerAssetStorage::storeAssetData(
F64 timeout)
{
LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
- llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
+ LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
<< " ASSET_ID: " << asset_id << llendl;
if (mUpstreamHost.isOk())
@@ -248,9 +248,9 @@ void LLViewerAssetStorage::storeAssetData(
}
LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
- llinfos << "LLViewerAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl;
+ LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl;
- llinfos << "ASSET_ID: " << asset_id << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_ID: " << asset_id << llendl;
S32 size = 0;
LLFILE* fp = LLFile::fopen(filename, "rb");
@@ -369,7 +369,7 @@ void LLViewerAssetStorage::_queueDataRequest(
tpvf.setAsset(uuid, atype);
tpvf.setCallback(downloadCompleteCallback, req);
- llinfos << "Starting transfer for " << uuid << llendl;
+ LL_DEBUGS("AssetStorage") << "Starting transfer for " << uuid << llendl;
LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(mUpstreamHost, LLTCT_ASSET);
ttcp->requestTransfer(spa, tpvf, 100.f + (is_priority ? 1.f : 0.f));
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
index b103f11597..a4b1c2155f 100644
--- a/indra/newview/llviewerassettype.cpp
+++ b/indra/newview/llviewerassettype.cpp
@@ -80,7 +80,9 @@ LLViewerAssetDictionary::LLViewerAssetDictionary()
addEntry(LLViewerAssetType::AT_LINK_FOLDER, new ViewerAssetEntry(DAD_LINK));
addEntry(LLViewerAssetType::AT_MESH, new ViewerAssetEntry(DAD_MESH));
-
+
+ addEntry(LLViewerAssetType::AT_WIDGET, new ViewerAssetEntry(DAD_WIDGET));
+
addEntry(LLViewerAssetType::AT_NONE, new ViewerAssetEntry(DAD_NONE));
};
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index f7fa5690d6..2447f5dea8 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -37,9 +37,226 @@
#include "llvoiceclient.h"
#include "llviewermedia.h"
#include "llprogressview.h"
+#include "llcallbacklist.h"
+#include "llstartup.h"
+#include "llviewerparcelmgr.h"
+#include "llparcel.h"
/////////////////////////////////////////////////////////
+LLViewerAudio::LLViewerAudio() :
+ mDone(true),
+ mFadeState(FADE_IDLE),
+ mFadeTime(),
+ mIdleListnerActive(false),
+ mForcedTeleportFade(false)
+{
+ mTeleportFailedConnection = LLViewerParcelMgr::getInstance()->
+ setTeleportFailedCallback(boost::bind(&LLViewerAudio::onTeleportFailed, this));
+}
+
+LLViewerAudio::~LLViewerAudio()
+{
+ mTeleportFailedConnection.disconnect();
+}
+
+void LLViewerAudio::registerIdleListener()
+{
+ if(mIdleListnerActive==false)
+ {
+ mIdleListnerActive = true;
+ doOnIdleRepeating(boost::bind(boost::bind(&LLViewerAudio::onIdleUpdate, this)));
+ }
+
+}
+
+void LLViewerAudio::startInternetStreamWithAutoFade(std::string streamURI)
+{
+ // Old and new stream are identical
+ if (mNextStreamURI == streamURI)
+ {
+ return;
+ }
+
+ // Record the URI we are going to be switching to
+ mNextStreamURI = streamURI;
+
+ switch (mFadeState)
+ {
+ case FADE_IDLE:
+ // If a stream is playing fade it out first
+ if (!gAudiop->getInternetStreamURL().empty())
+ {
+ // The order of these tests is important, state FADE_OUT will be processed below
+ mFadeState = FADE_OUT;
+ }
+ // Otherwise the new stream can be faded in
+ else
+ {
+ mFadeState = FADE_IN;
+ gAudiop->startInternetStream(mNextStreamURI);
+ startFading();
+ registerIdleListener();
+ break;
+ }
+
+ case FADE_OUT:
+ startFading();
+ registerIdleListener();
+ break;
+
+ case FADE_IN:
+ registerIdleListener();
+ break;
+
+ default:
+ llwarns << "Unknown fading state: " << mFadeState << llendl;
+ break;
+ }
+}
+
+// A return of false from onIdleUpdate means it will be called again next idle update.
+// A return of true means we have finished with it and the callback will be deleted.
+bool LLViewerAudio::onIdleUpdate()
+{
+ bool fadeIsFinished = false;
+
+ // There is a delay in the login sequence between when the parcel information has
+ // arrived and the music stream is started and when the audio system is called to set
+ // initial volume levels. This code extends the fade time so you hear a full fade in.
+ if ((LLStartUp::getStartupState() < STATE_STARTED))
+ {
+ stream_fade_timer.reset();
+ stream_fade_timer.setTimerExpirySec(mFadeTime);
+ }
+
+ if (mDone)
+ {
+ // This should be a rare or never occurring state.
+ if (mFadeState == FADE_IDLE)
+ {
+ deregisterIdleListener();
+ fadeIsFinished = true; // Stop calling onIdleUpdate
+ }
+
+ // we have finished the current fade operation
+ if (mFadeState == FADE_OUT)
+ {
+ // Clear URI
+ gAudiop->startInternetStream(LLStringUtil::null);
+ gAudiop->stopInternetStream();
+
+ if (!mNextStreamURI.empty())
+ {
+ mFadeState = FADE_IN;
+ gAudiop->startInternetStream(mNextStreamURI);
+ startFading();
+ }
+ else
+ {
+ mFadeState = FADE_IDLE;
+ deregisterIdleListener();
+ fadeIsFinished = true; // Stop calling onIdleUpdate
+ }
+ }
+ else if (mFadeState == FADE_IN)
+ {
+ if (mNextStreamURI != gAudiop->getInternetStreamURL())
+ {
+ mFadeState = FADE_OUT;
+ startFading();
+ }
+ else
+ {
+ mFadeState = FADE_IDLE;
+ deregisterIdleListener();
+ fadeIsFinished = true; // Stop calling onIdleUpdate
+ }
+ }
+ }
+
+ return fadeIsFinished;
+}
+
+void LLViewerAudio::stopInternetStreamWithAutoFade()
+{
+ mFadeState = FADE_IDLE;
+ mNextStreamURI = LLStringUtil::null;
+ mDone = true;
+
+ gAudiop->startInternetStream(LLStringUtil::null);
+ gAudiop->stopInternetStream();
+}
+
+void LLViewerAudio::startFading()
+{
+ const F32 AUDIO_MUSIC_FADE_IN_TIME = 3.0f;
+ const F32 AUDIO_MUSIC_FADE_OUT_TIME = 2.0f;
+ // This minimum fade time prevents divide by zero and negative times
+ const F32 AUDIO_MUSIC_MINIMUM_FADE_TIME = 0.01f;
+
+ if(mDone)
+ {
+ // The fade state here should only be one of FADE_IN or FADE_OUT, but, in case it is not,
+ // rather than check for both states assume a fade in and check for the fade out case.
+ mFadeTime = AUDIO_MUSIC_FADE_IN_TIME;
+ if (LLViewerAudio::getInstance()->getFadeState() == LLViewerAudio::FADE_OUT)
+ {
+ mFadeTime = AUDIO_MUSIC_FADE_OUT_TIME;
+ }
+
+ // Prevent invalid fade time
+ mFadeTime = llmax(mFadeTime, AUDIO_MUSIC_MINIMUM_FADE_TIME);
+
+ stream_fade_timer.reset();
+ stream_fade_timer.setTimerExpirySec(mFadeTime);
+ mDone = false;
+ }
+}
+
+F32 LLViewerAudio::getFadeVolume()
+{
+ F32 fade_volume = 1.0f;
+
+ if (stream_fade_timer.hasExpired())
+ {
+ mDone = true;
+ // If we have been fading out set volume to 0 until the next fade state occurs to prevent
+ // an audio transient.
+ if (LLViewerAudio::getInstance()->getFadeState() == LLViewerAudio::FADE_OUT)
+ {
+ fade_volume = 0.0f;
+ }
+ }
+
+ if (!mDone)
+ {
+ // Calculate how far we are into the fade time
+ fade_volume = stream_fade_timer.getElapsedTimeF32() / mFadeTime;
+
+ if (LLViewerAudio::getInstance()->getFadeState() == LLViewerAudio::FADE_OUT)
+ {
+ // If we are not fading in then we are fading out, so invert the fade
+ // direction; start loud and move towards zero volume.
+ fade_volume = 1.0f - fade_volume;
+ }
+ }
+
+ return fade_volume;
+}
+
+void LLViewerAudio::onTeleportFailed()
+{
+ if (gAudiop)
+ {
+ LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+ if (parcel)
+ {
+ mNextStreamURI = parcel->getMusicURL();
+ }
+ }
+}
+
void init_audio()
{
if (!gAudiop)
@@ -142,12 +359,25 @@ void audio_update_volume(bool force_update)
// Streaming Music
if (gAudiop)
- {
+ {
+ if (progress_view_visible && !LLViewerAudio::getInstance()->getForcedTeleportFade())
+ {
+ LLViewerAudio::getInstance()->setForcedTeleportFade(true);
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
+ LLViewerAudio::getInstance()->setNextStreamURI(LLStringUtil::null);
+ }
+
+ if (!progress_view_visible && LLViewerAudio::getInstance()->getForcedTeleportFade() == true)
+ {
+ LLViewerAudio::getInstance()->setForcedTeleportFade(false);
+ }
+
F32 music_volume = gSavedSettings.getF32("AudioLevelMusic");
BOOL music_muted = gSavedSettings.getBOOL("MuteMusic");
- music_volume = mute_volume * master_volume * music_volume;
- gAudiop->setInternetStreamGain ( music_muted || progress_view_visible ? 0.f : music_volume );
-
+ F32 fade_volume = LLViewerAudio::getInstance()->getFadeVolume();
+
+ music_volume = mute_volume * master_volume * music_volume * fade_volume;
+ gAudiop->setInternetStreamGain (music_muted ? 0.f : music_volume);
}
// Streaming Media
diff --git a/indra/newview/llvieweraudio.h b/indra/newview/llvieweraudio.h
index e5916285fb..a3da9fc6b8 100644
--- a/indra/newview/llvieweraudio.h
+++ b/indra/newview/llvieweraudio.h
@@ -27,6 +27,9 @@
#ifndef LL_VIEWERAUDIO_H
#define LL_VIEWERAUDIO_H
+#include "llframetimer.h"
+#include "llsingleton.h"
+
// comment out to turn off wind
#define kAUDIO_ENABLE_WIND
//#define kAUDIO_ENABLE_WATER 1 // comment out to turn off water
@@ -38,4 +41,48 @@ void audio_update_volume(bool force_update = true);
void audio_update_listener();
void audio_update_wind(bool force_update = true);
+class LLViewerAudio : public LLSingleton<LLViewerAudio>
+{
+public:
+
+ enum EFadeState
+ {
+ FADE_IDLE,
+ FADE_IN,
+ FADE_OUT,
+ };
+
+ LLViewerAudio();
+ virtual ~LLViewerAudio();
+
+ void startInternetStreamWithAutoFade(std::string streamURI);
+ void stopInternetStreamWithAutoFade();
+
+ bool onIdleUpdate();
+
+ EFadeState getFadeState() { return mFadeState; }
+ bool isDone() { return mDone; };
+ F32 getFadeVolume();
+ bool getForcedTeleportFade() { return mForcedTeleportFade; };
+ void setForcedTeleportFade(bool fade) { mForcedTeleportFade = fade;} ;
+ void setNextStreamURI(std::string stream) { mNextStreamURI = stream; } ;
+
+private:
+
+ bool mDone;
+ F32 mFadeTime;
+ std::string mNextStreamURI;
+ EFadeState mFadeState;
+ LLFrameTimer stream_fade_timer;
+ bool mIdleListnerActive;
+ bool mForcedTeleportFade;
+ boost::signals2::connection mTeleportFailedConnection;
+
+ void registerIdleListener();
+ void deregisterIdleListener() { mIdleListnerActive = false; };
+ void startFading();
+ void onTeleportFailed();
+
+};
+
#endif //LL_VIEWER_H
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index 7f7366dd3d..a437a8b3b5 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -218,8 +218,15 @@ void LLViewerCamera::calcProjection(const F32 far_distance) const
void LLViewerCamera::updateFrustumPlanes(LLCamera& camera, BOOL ortho, BOOL zflip, BOOL no_hacks)
{
GLint* viewport = (GLint*) gGLViewport;
- GLdouble* model = gGLModelView;
- GLdouble* proj = gGLProjection;
+ F64 model[16];
+ F64 proj[16];
+
+ for (U32 i = 0; i < 16; i++)
+ {
+ model[i] = (F64) gGLModelView[i];
+ proj[i] = (F64) gGLProjection[i];
+ }
+
GLdouble objX,objY,objZ;
LLVector3 frust[8];
@@ -325,8 +332,8 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
aspect = getAspect();
// Load camera view matrix
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.loadIdentity();
glh::matrix4f proj_mat;
@@ -385,14 +392,14 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
proj_mat *= gl_perspective(fov_y,aspect,z_near,z_far);
- glLoadMatrixf(proj_mat.m);
+ gGL.loadMatrix(proj_mat.m);
for (U32 i = 0; i < 16; i++)
{
gGLProjection[i] = proj_mat.m[i];
}
- glMatrixMode( GL_MODELVIEW );
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
glh::matrix4f modelview((GLfloat*) OGL_TO_CFR_ROTATION);
@@ -402,7 +409,7 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
modelview *= glh::matrix4f(ogl_matrix);
- glLoadMatrixf(modelview.m);
+ gGL.loadMatrix(modelview.m);
if (for_selection && (width > 1 || height > 1))
{
@@ -420,7 +427,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
if (!for_selection && mZoomFactor == 1.f)
{
// Save GL matrices for access elsewhere in code, especially project_world_to_screen
- //glGetDoublev(GL_MODELVIEW_MATRIX, gGLModelView);
for (U32 i = 0; i < 16; i++)
{
gGLModelView[i] = modelview.m[i];
@@ -428,14 +434,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
}
updateFrustumPlanes(*this);
-
- /*if (gSavedSettings.getBOOL("CameraOffset"))
- {
- glMatrixMode(GL_PROJECTION);
- glTranslatef(0,0,-50);
- glRotatef(20.0,1,0,0);
- glMatrixMode(GL_MODELVIEW);
- }*/
}
@@ -443,11 +441,20 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
// screen coordinates to the agent's region.
void LLViewerCamera::projectScreenToPosAgent(const S32 screen_x, const S32 screen_y, LLVector3* pos_agent) const
{
-
GLdouble x, y, z;
+
+ F64 mdlv[16];
+ F64 proj[16];
+
+ for (U32 i = 0; i < 16; i++)
+ {
+ mdlv[i] = (F64) gGLModelView[i];
+ proj[i] = (F64) gGLProjection[i];
+ }
+
gluUnProject(
GLdouble(screen_x), GLdouble(screen_y), 0.0,
- gGLModelView, gGLProjection, (GLint*)gGLViewport,
+ mdlv, proj, (GLint*)gGLViewport,
&x,
&y,
&z );
@@ -484,8 +491,17 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord
viewport[2] = world_view_rect.getWidth();
viewport[3] = world_view_rect.getHeight();
+ F64 mdlv[16];
+ F64 proj[16];
+
+ for (U32 i = 0; i < 16; i++)
+ {
+ mdlv[i] = (F64) gGLModelView[i];
+ proj[i] = (F64) gGLProjection[i];
+ }
+
if (GL_TRUE == gluProject(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ],
- gGLModelView, gGLProjection, (GLint*)viewport,
+ mdlv, proj, (GLint*)viewport,
&x, &y, &z))
{
// convert screen coordinates to virtual UI coordinates
@@ -587,9 +603,19 @@ BOOL LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent,
viewport[2] = world_view_rect.getWidth();
viewport[3] = world_view_rect.getHeight();
GLdouble x, y, z; // object's window coords, GL-style
+
+ F64 mdlv[16];
+ F64 proj[16];
+
+ for (U32 i = 0; i < 16; i++)
+ {
+ mdlv[i] = (F64) gGLModelView[i];
+ proj[i] = (F64) gGLProjection[i];
+ }
+
if (GL_TRUE == gluProject(pos_agent.mV[VX], pos_agent.mV[VY],
- pos_agent.mV[VZ], gGLModelView,
- gGLProjection, (GLint*)viewport,
+ pos_agent.mV[VZ], mdlv,
+ proj, (GLint*)viewport,
&x, &y, &z))
{
x /= gViewerWindow->getDisplayScale().mV[VX];
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 0f0b7d7e78..093b84413a 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -118,12 +118,6 @@ static bool handleSetShaderChanged(const LLSD& newvalue)
gBumpImageList.destroyGL();
gBumpImageList.restoreGL();
- // Changing shader also changes the terrain detail to high, reflect that change here
- if (newvalue.asBoolean())
- {
- // shaders enabled, set terrain detail to high
- gSavedSettings.setS32("RenderTerrainDetail", 1);
- }
// else, leave terrain detail as is
LLViewerShaderMgr::instance()->setShaders();
return true;
@@ -187,21 +181,6 @@ static bool handleReleaseGLBufferChanged(const LLSD& newvalue)
return true;
}
-static bool handleFSAASamplesChanged(const LLSD& newvalue)
-{
- if (gPipeline.isInit())
- {
- gPipeline.releaseGLBuffers();
- gPipeline.createGLBuffers();
-
- if (LLPipeline::sRenderDeferred)
- {
- LLViewerShaderMgr::instance()->setShaders();
- }
- }
- return true;
-}
-
static bool handleAnisotropicChanged(const LLSD& newvalue)
{
LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean();
@@ -403,6 +382,7 @@ static bool handleRenderDeferredChanged(const LLSD& newvalue)
LLRenderTarget::sUseFBO = newvalue.asBoolean();
if (gPipeline.isInit())
{
+ LLPipeline::refreshCachedSettings();
gPipeline.updateRenderDeferred();
gPipeline.releaseGLBuffers();
gPipeline.createGLBuffers();
@@ -472,12 +452,6 @@ bool handleEffectColorChanged(const LLSD& newvalue)
return true;
}
-bool handleVectorizeChanged(const LLSD& newvalue)
-{
- LLViewerJointMesh::updateVectorize();
- return true;
-}
-
bool handleHighResSnapshotChanged(const LLSD& newvalue)
{
// High Res Snapshot active, must uncheck RenderUIInSnapshot
@@ -541,18 +515,12 @@ bool toggle_show_navigation_panel(const LLSD& newvalue)
{
bool value = newvalue.asBoolean();
- LLNavigationBar::getInstance()->showNavigationPanel(value);
+ LLNavigationBar::getInstance()->setVisible(value);
gSavedSettings.setBOOL("ShowMiniLocationPanel", !value);
return true;
}
-bool toggle_show_favorites_panel(const LLSD& newvalue)
-{
- LLNavigationBar::getInstance()->showFavoritesPanel(newvalue.asBoolean());
- return true;
-}
-
bool toggle_show_mini_location_panel(const LLSD& newvalue)
{
bool value = newvalue.asBoolean();
@@ -594,21 +562,20 @@ void settings_setup_listeners()
gSavedSettings.getControl("OctreeMaxNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2));
gSavedSettings.getControl("OctreeAlphaDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
gSavedSettings.getControl("OctreeAttachmentSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
- gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+ gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderUseTriStrips")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
- gSavedSettings.getControl("RenderAnimateTrees")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("VertexShaderEnable")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderUIBuffer")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
+ gSavedSettings.getControl("RenderDepthOfField")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
+ gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
- gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleFSAASamplesChanged, _2));
gSavedSettings.getControl("RenderAnisotropic")->getSignal()->connect(boost::bind(&handleAnisotropicChanged, _2));
gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
- gSavedSettings.getControl("EnableRippleWater")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderGlowResolutionPow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderAvatarCloth")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
@@ -639,7 +606,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));
gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
- gSavedSettings.getControl("RenderDeferredGI")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderPerformanceTest")->getSignal()->connect(boost::bind(&handleRenderPerfTestChanged, _2));
gSavedSettings.getControl("TextureMemory")->getSignal()->connect(boost::bind(&handleVideoMemoryChanged, _2));
gSavedSettings.getControl("AuditTexture")->getSignal()->connect(boost::bind(&handleAuditTextureChanged, _2));
@@ -664,6 +630,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+ gSavedSettings.getControl("RenderUseVAO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderVBOMappingDisable")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderPreferStreamDraw")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
@@ -718,10 +685,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("UserLogFile")->getSignal()->connect(boost::bind(&handleLogFileChanged, _2));
gSavedSettings.getControl("RenderHideGroupTitle")->getSignal()->connect(boost::bind(handleHideGroupTitleChanged, _2));
gSavedSettings.getControl("HighResSnapshot")->getSignal()->connect(boost::bind(handleHighResSnapshotChanged, _2));
- gSavedSettings.getControl("VectorizePerfTest")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
- gSavedSettings.getControl("VectorizeEnable")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
- gSavedSettings.getControl("VectorizeProcessor")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
- gSavedSettings.getControl("VectorizeSkin")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
gSavedSettings.getControl("PTTCurrentlyEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
gSavedSettings.getControl("PushToTalkButton")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
@@ -736,7 +699,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("UseDebugMenus")->getSignal()->connect(boost::bind(&show_debug_menus));
gSavedSettings.getControl("AgentPause")->getSignal()->connect(boost::bind(&toggle_agent_pause, _2));
gSavedSettings.getControl("ShowNavbarNavigationPanel")->getSignal()->connect(boost::bind(&toggle_show_navigation_panel, _2));
- gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
gSavedSettings.getControl("ShowMiniLocationPanel")->getSignal()->connect(boost::bind(&toggle_show_mini_location_panel, _2));
gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
gSavedSettings.getControl("UpdaterServiceSetting")->getSignal()->connect(boost::bind(&toggle_updater_service_active, _2));
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 19326c4e30..cb40af7061 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -114,8 +114,8 @@ void render_disconnected_background();
void display_startup()
{
if ( !gViewerWindow->getActive()
- || !gViewerWindow->mWindow->getVisible()
- || gViewerWindow->mWindow->getMinimized() )
+ || !gViewerWindow->getWindow()->getVisible()
+ || gViewerWindow->getWindow()->getMinimized() )
{
return;
}
@@ -124,7 +124,8 @@ void display_startup()
// Update images?
//gImageList.updateImages(0.01f);
-
+ LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
+
LLGLSDefault gls_default;
// Required for HTML update in login screen
@@ -157,7 +158,7 @@ void display_startup()
LLGLState::checkStates();
LLGLState::checkTextureChannels();
- gViewerWindow->mWindow->swapBuffers();
+ gViewerWindow->getWindow()->swapBuffers();
glClear(GL_DEPTH_BUFFER_BIT);
}
@@ -212,6 +213,10 @@ static LLFastTimer::DeclareTimer FTM_RENDER("Render", true);
static LLFastTimer::DeclareTimer FTM_UPDATE_SKY("Update Sky");
static LLFastTimer::DeclareTimer FTM_UPDATE_TEXTURES("Update Textures");
static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE("Update Images");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_CLASS("Class");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_BUMP("Bump");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_LIST("List");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_DELETE("Delete");
// Paint the display!
void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
@@ -223,7 +228,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
{ //skip render on frames where window has been resized
gGL.flush();
glClear(GL_COLOR_BUFFER_BIT);
- gViewerWindow->mWindow->swapBuffers();
+ gViewerWindow->getWindow()->swapBuffers();
+ LLPipeline::refreshCachedSettings();
gPipeline.resizeScreenTexture();
gResizeScreenTexture = FALSE;
gWindowResized = FALSE;
@@ -260,8 +266,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// In fact, must explicitly check the minimized state before drawing.
// Attempting to draw into a minimized window causes a GL error. JC
if ( !gViewerWindow->getActive()
- || !gViewerWindow->mWindow->getVisible()
- || gViewerWindow->mWindow->getMinimized() )
+ || !gViewerWindow->getWindow()->getVisible()
+ || gViewerWindow->getWindow()->getMinimized() )
{
// Clean up memory the pools may have allocated
if (rebuild)
@@ -523,10 +529,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// Note that these are not the same as GL defaults...
stop_glerror();
- F32 one[4] = {1.f, 1.f, 1.f, 1.f};
- glLightModelfv (GL_LIGHT_MODEL_AMBIENT,one);
+ gGL.setAmbientLightColor(LLColor4::white);
stop_glerror();
-
+
/////////////////////////////////////
//
// Render
@@ -612,11 +617,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLDrawable::incrementVisible();
LLSpatialGroup::sNoDelete = TRUE;
- LLPipeline::sUseOcclusion =
- (!gUseWireframe
- && LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion")
- && gSavedSettings.getBOOL("UseOcclusion")
- && gGLManager.mHasOcclusionQuery) ? 2 : 0;
LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
/*if (LLPipeline::sUseOcclusion && LLPipeline::sRenderDeferred)
@@ -624,12 +624,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLPipeline::sUseOcclusion = 3;
}*/
- LLPipeline::sAutoMaskAlphaDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaDeferred");
- LLPipeline::sAutoMaskAlphaNonDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaNonDeferred");
- LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
- LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
- LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
-
S32 occlusion = LLPipeline::sUseOcclusion;
if (gDepthDirty)
{ //depth buffer is invalid, don't overwrite occlusion state
@@ -657,10 +651,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
{
LLMemType mt_ds(LLMemType::MTYPE_DISPLAY_SWAP);
- {
- LLFastTimer ftm(FTM_CLIENT_COPY);
- LLVertexBuffer::clientCopy(0.016);
- }
if (gResizeScreenTexture)
{
@@ -701,10 +691,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
glh_set_current_projection(proj);
glh_set_current_modelview(mod);
- glMatrixMode(GL_PROJECTION);
- glLoadMatrixf(proj.m);
- glMatrixMode(GL_MODELVIEW);
- glLoadMatrixf(mod.m);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.loadMatrix(proj.m);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.loadMatrix(mod.m);
gViewerWindow->setup3DViewport();
LLGLState::checkStates();
@@ -724,6 +714,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLAppViewer::instance()->pingMainloopTimeout("Display:Imagery");
gPipeline.generateWaterReflection(*LLViewerCamera::getInstance());
gPipeline.generateHighlight(*LLViewerCamera::getInstance());
+ gPipeline.renderPhysicsDisplay();
}
LLGLState::checkStates();
@@ -742,18 +733,31 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLMemType mt_iu(LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE);
LLFastTimer t(FTM_IMAGE_UPDATE);
- LLViewerTexture::updateClass(LLViewerCamera::getInstance()->getVelocityStat()->getMean(),
- LLViewerCamera::getInstance()->getAngularVelocityStat()->getMean());
+ {
+ LLFastTimer t(FTM_IMAGE_UPDATE_CLASS);
+ LLViewerTexture::updateClass(LLViewerCamera::getInstance()->getVelocityStat()->getMean(),
+ LLViewerCamera::getInstance()->getAngularVelocityStat()->getMean());
+ }
- gBumpImageList.updateImages(); // must be called before gTextureList version so that it's textures are thrown out first.
+
+ {
+ LLFastTimer t(FTM_IMAGE_UPDATE_BUMP);
+ gBumpImageList.updateImages(); // must be called before gTextureList version so that it's textures are thrown out first.
+ }
- F32 max_image_decode_time = 0.050f*gFrameIntervalSeconds; // 50 ms/second decode time
- max_image_decode_time = llclamp(max_image_decode_time, 0.002f, 0.005f ); // min 2ms/frame, max 5ms/frame)
- gTextureList.updateImages(max_image_decode_time);
+ {
+ LLFastTimer t(FTM_IMAGE_UPDATE_LIST);
+ F32 max_image_decode_time = 0.050f*gFrameIntervalSeconds; // 50 ms/second decode time
+ max_image_decode_time = llclamp(max_image_decode_time, 0.002f, 0.005f ); // min 2ms/frame, max 5ms/frame)
+ gTextureList.updateImages(max_image_decode_time);
+ }
- //remove dead textures from GL
- LLImageGL::deleteDeadTextures();
- stop_glerror();
+ {
+ LLFastTimer t(FTM_IMAGE_UPDATE_DELETE);
+ //remove dead textures from GL
+ LLImageGL::deleteDeadTextures();
+ stop_glerror();
+ }
}
LLGLState::checkStates();
@@ -812,13 +816,13 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
//// assumes frontmost floater with focus is opaque
//if (frontmost_floaterp && gFocusMgr.childHasKeyboardFocus(frontmost_floaterp))
//{
- // glMatrixMode(GL_MODELVIEW);
- // glPushMatrix();
+ // gGL.matrixMode(LLRender::MM_MODELVIEW);
+ // gGL.pushMatrix();
// {
// gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
// glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
- // glLoadIdentity();
+ // gGL.loadIdentity();
// LLRect floater_rect = frontmost_floaterp->calcScreenRect();
// // deflate by one pixel so rounding errors don't occlude outside of floater extents
@@ -828,8 +832,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// (F32)floater_rect.mRight / (F32)gViewerWindow->getWindowWidthScaled(),
// (F32)floater_rect.mBottom / (F32)gViewerWindow->getWindowHeightScaled());
// floater_3d_rect.translate(-0.5f, -0.5f);
- // glTranslatef(0.f, 0.f, -LLViewerCamera::getInstance()->getNear());
- // glScalef(LLViewerCamera::getInstance()->getNear() * LLViewerCamera::getInstance()->getAspect() / sinf(LLViewerCamera::getInstance()->getView()), LLViewerCamera::getInstance()->getNear() / sinf(LLViewerCamera::getInstance()->getView()), 1.f);
+ // gGL.translatef(0.f, 0.f, -LLViewerCamera::getInstance()->getNear());
+ // gGL.scalef(LLViewerCamera::getInstance()->getNear() * LLViewerCamera::getInstance()->getAspect() / sinf(LLViewerCamera::getInstance()->getView()), LLViewerCamera::getInstance()->getNear() / sinf(LLViewerCamera::getInstance()->getView()), 1.f);
// gGL.color4fv(LLColor4::white.mV);
// gGL.begin(LLVertexBuffer::QUADS);
// {
@@ -841,11 +845,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// gGL.end();
// glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
// }
- // glPopMatrix();
+ // gGL.popMatrix();
//}
LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE;
- LLPipeline::refreshRenderDeferred();
LLGLState::checkStates();
LLGLState::checkClientArrays();
@@ -865,6 +868,11 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
else
{
gPipeline.mScreen.bindTarget();
+ if (LLPipeline::sUnderWaterRender && !gPipeline.canUseWindLightShaders())
+ {
+ const LLColor4 &col = LLDrawPoolWater::sWaterFogColor;
+ glClearColor(col.mV[0], col.mV[1], col.mV[2], 0.f);
+ }
gPipeline.mScreen.clear();
}
@@ -978,10 +986,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
void render_hud_attachments()
{
LLMemType mt_ra(LLMemType::MTYPE_DISPLAY_RENDER_ATTACHMENTS);
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
glh::matrix4f current_proj = glh_get_current_projection();
glh::matrix4f current_mod = glh_get_current_modelview();
@@ -1067,10 +1075,10 @@ void render_hud_attachments()
}
LLPipeline::sUseOcclusion = use_occlusion;
}
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
glh_set_current_projection(current_proj);
glh_set_current_modelview(current_mod);
@@ -1153,12 +1161,12 @@ BOOL setup_hud_matrices(const LLRect& screen_region)
if (!result) return result;
// set up transform to keep HUD objects in front of camera
- glMatrixMode(GL_PROJECTION);
- glLoadMatrixf(proj.m);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.loadMatrix(proj.m);
glh_set_current_projection(proj);
- glMatrixMode(GL_MODELVIEW);
- glLoadMatrixf(model.m);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.loadMatrix(model.m);
glh_set_current_modelview(model);
return TRUE;
}
@@ -1174,8 +1182,8 @@ void render_ui(F32 zoom_factor, int subfield)
if (!gSnapshot)
{
- glPushMatrix();
- glLoadMatrixd(gGLLastModelView);
+ gGL.pushMatrix();
+ gGL.loadMatrix(gGLLastModelView);
glh_set_current_modelview(glh_copy_matrix(gGLLastModelView));
}
@@ -1231,13 +1239,13 @@ void render_ui(F32 zoom_factor, int subfield)
if (!gSnapshot)
{
glh_set_current_modelview(saved_view);
- glPopMatrix();
+ gGL.popMatrix();
}
if (gDisplaySwapBuffers)
{
LLFastTimer t(FTM_SWAP);
- gViewerWindow->mWindow->swapBuffers();
+ gViewerWindow->getWindow()->swapBuffers();
}
gDisplaySwapBuffers = TRUE;
}
@@ -1304,10 +1312,10 @@ void draw_axes()
gGL.vertex3f(0.0f, 0.0f, 40.0f);
gGL.end();
// Some coordinate axes
- glPushMatrix();
- glTranslatef( v.mV[VX], v.mV[VY], v.mV[VZ] );
+ gGL.pushMatrix();
+ gGL.translatef( v.mV[VX], v.mV[VY], v.mV[VZ] );
renderCoordinateAxes();
- glPopMatrix();
+ gGL.popMatrix();
}
void render_ui_3d()
@@ -1329,14 +1337,19 @@ void render_ui_3d()
// Debugging stuff goes before the UI.
+ stop_glerror();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
// Coordinate axes
if (gSavedSettings.getBOOL("ShowAxes"))
{
draw_axes();
}
- stop_glerror();
-
gViewerWindow->renderSelections(FALSE, FALSE, TRUE); // Non HUD call in render_hud_elements
stop_glerror();
}
@@ -1377,10 +1390,10 @@ void render_ui_2d()
gGL.pushMatrix();
S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);
- glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
- glTranslatef((F32)half_width, (F32)half_height, 0.f);
+ gGL.scalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
+ gGL.translatef((F32)half_width, (F32)half_height, 0.f);
F32 zoom = gAgentCamera.mHUDCurZoom;
- glScalef(zoom,zoom,1.f);
+ gGL.scalef(zoom,zoom,1.f);
gGL.color4fv(LLColor4::white.mV);
gl_rect_2d(-half_width, half_height, half_width, -half_height, FALSE);
gGL.popMatrix();
@@ -1459,6 +1472,11 @@ void render_ui_2d()
void render_disconnected_background()
{
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
gGL.color4f(1,1,1,1);
if (!gDisconnectedImagep && gDisconnected)
{
@@ -1512,22 +1530,28 @@ void render_disconnected_background()
{
LLGLSUIDefault gls_ui;
gViewerWindow->setup2DRender();
- glPushMatrix();
+ gGL.pushMatrix();
{
// scale ui to reflect UIScaleFactor
// this can't be done in setup2DRender because it requires a
// pushMatrix/popMatrix pair
const LLVector2& display_scale = gViewerWindow->getDisplayScale();
- glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);
+ gGL.scalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);
gGL.getTexUnit(0)->bind(gDisconnectedImagep);
gGL.color4f(1.f, 1.f, 1.f, 1.f);
gl_rect_2d_simple_tex(width, height);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
}
- glPopMatrix();
+ gGL.popMatrix();
}
gGL.flush();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.unbind();
+ }
+
}
void display_cleanup()
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 8e2240981b..8406f639df 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -37,6 +37,7 @@
#include "llfloaterabout.h"
#include "llfloateranimpreview.h"
#include "llfloaterauction.h"
+#include "llfloateravatar.h"
#include "llfloateravatarpicker.h"
#include "llfloateravatartextures.h"
#include "llfloaterbeacons.h"
@@ -56,15 +57,15 @@
#include "llfloatereditwater.h"
#include "llfloaterenvironmentsettings.h"
#include "llfloaterevent.h"
-#include "llfloatersearch.h"
+#include "llfloaterdestinations.h"
#include "llfloaterfonttest.h"
#include "llfloatergesture.h"
#include "llfloatergodtools.h"
#include "llfloatergroups.h"
#include "llfloaterhardwaresettings.h"
#include "llfloaterhelpbrowser.h"
-#include "llfloatermediabrowser.h"
#include "llfloaterwebcontent.h"
+#include "llfloaterwebprofile.h"
#include "llfloatermediasettings.h"
#include "llfloaterhud.h"
#include "llfloaterimagepreview.h"
@@ -84,7 +85,6 @@
#include "llfloateropenobject.h"
#include "llfloaterpay.h"
#include "llfloaterperms.h"
-#include "llfloaterpostcard.h"
#include "llfloaterpostprocess.h"
#include "llfloaterpreference.h"
#include "llfloaterproperties.h"
@@ -93,9 +93,10 @@
#include "llfloaterreporter.h"
#include "llfloaterscriptdebug.h"
#include "llfloaterscriptlimits.h"
+#include "llfloatersearch.h"
#include "llfloatersellland.h"
#include "llfloatersettingsdebug.h"
-#include "llfloatersidetraytab.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloatersnapshot.h"
#include "llfloatersounddevices.h"
#include "llfloatertelehub.h"
@@ -104,6 +105,8 @@
#include "llfloatertools.h"
#include "llfloatertos.h"
#include "llfloatertopobjects.h"
+#include "llfloatertoybox.h"
+#include "llfloatertranslationsettings.h"
#include "llfloateruipreview.h"
#include "llfloatervoiceeffect.h"
#include "llfloaterwhitelistentry.h"
@@ -129,6 +132,7 @@
#include "llscriptfloater.h"
#include "llfloatermodelpreview.h"
#include "llcommandhandler.h"
+#include "llnearbychatbar.h"
// *NOTE: Please add files in alphabetical order to keep merges easy.
@@ -163,7 +167,9 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterAboutUtil::registerFloater();
LLFloaterReg::add("fast_timers", "floater_fast_timers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFastTimerView>);
LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>);
+ LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
+ LLFloaterReg::add("avatar", "floater_avatar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>);
LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>);
LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);
@@ -179,10 +185,12 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
- LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
+ LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChatBar>);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
+ LLFloaterReg::add("destinations", "floater_destinations.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDestinations>);
+
LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>);
LLFloaterReg::add("env_settings", "floater_environment_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvironmentSettings>);
LLFloaterReg::add("env_delete_preset", "floater_delete_env_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDeleteEnvPreset>);
@@ -205,7 +213,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>);
LLFloaterReg::add("im_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMWellWindow>);
LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>);
- LLFloaterReg::add("inventory", "floater_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInventory>);
+ LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>);
LLInspectAvatarUtil::registerFloater();
LLInspectGroupUtil::registerFloater();
@@ -218,7 +226,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);
LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>);
- LLFloaterReg::add("media_browser", "floater_media_browser.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaBrowser>);
LLFloaterReg::add("media_settings", "floater_media_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaSettings>);
LLFloaterReg::add("message_critical", "floater_critical.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>);
LLFloaterReg::add("message_tos", "floater_tos.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>);
@@ -234,11 +241,14 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
LLFloaterPayUtil::registerFloater();
- LLFloaterReg::add("postcard", "floater_postcard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostcard>);
+ LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
+ LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHardwareSettings>);
+ LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPerms>);
+ LLFloaterReg::add("picks", "floater_picks.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterJoystick>);
LLFloaterReg::add("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewAnim>, "preview");
LLFloaterReg::add("preview_gesture", "floater_preview_gesture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewGesture>, "preview");
@@ -257,6 +267,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("test_text_editor", "floater_test_text_editor.xml", &LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("test_widgets", "floater_test_widgets.xml", &LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("top_objects", "floater_top_objects.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTopObjects>);
+ LLFloaterReg::add("toybox", "floater_toybox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterToybox>);
LLFloaterReg::add("reporter", "floater_report_abuse.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterReporter>);
LLFloaterReg::add("reset_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterResetQueue>);
@@ -269,14 +280,15 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("script_limits", "floater_script_limits.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptLimits>);
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
- LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);
LLFloaterReg::add("snapshot", "floater_snapshot.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSnapshot>);
LLFloaterReg::add("search", "floater_search.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSearch>);
- LLFloaterReg::add("profile", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWebContent>);
+ LLFloaterReg::add("my_profile", "floater_my_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);
+ LLFloaterReg::add("profile", "floater_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);
+ LLFloaterReg::add("how_to", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
LLFloaterUIPreviewUtil::registerFloater();
@@ -289,9 +301,9 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);
LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>);
- LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWebContent>);
+ LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);
- LLFloaterWindowSizeUtil::registerFloater();
+ LLFloaterReg::add("window_size", "floater_window_size.xml", &LLFloaterReg::build<LLFloaterWindowSize>);
LLFloaterReg::add("world_map", "floater_world_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWorldMap>);
// *NOTE: Please keep these alphabetized for easier merges
diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp
index 9101222393..a179b61cff 100644
--- a/indra/newview/llviewerfoldertype.cpp
+++ b/indra/newview/llviewerfoldertype.cpp
@@ -40,6 +40,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry
const std::string &icon_name_open, // name of the folder icon
const std::string &icon_name_closed,
BOOL is_quiet, // folder doesn't need a UI update when changed
+ bool hide_if_empty, // folder not shown if empty
const std::string &dictionary_name = empty_string // no reverse lookup needed on non-ensembles, so in most cases just leave this blank
)
:
@@ -47,7 +48,8 @@ struct ViewerFolderEntry : public LLDictionaryEntry
mNewCategoryName(new_category_name),
mIconNameOpen(icon_name_open),
mIconNameClosed(icon_name_closed),
- mIsQuiet(is_quiet)
+ mIsQuiet(is_quiet),
+ mHideIfEmpty(hide_if_empty)
{
mAllowedNames.clear();
}
@@ -66,7 +68,8 @@ struct ViewerFolderEntry : public LLDictionaryEntry
*/
mIconNameOpen("Inv_FolderOpen"), mIconNameClosed("Inv_FolderClosed"),
mNewCategoryName(new_category_name),
- mIsQuiet(FALSE)
+ mIsQuiet(FALSE),
+ mHideIfEmpty(false)
{
const std::string delims (",");
LLStringUtilBase<char>::getTokens(allowed_names, mAllowedNames, delims);
@@ -91,6 +94,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry
typedef std::vector<std::string> name_vec_t;
name_vec_t mAllowedNames;
BOOL mIsQuiet;
+ bool mHideIfEmpty;
};
class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>,
@@ -104,43 +108,43 @@ protected:
LLViewerFolderDictionary::LLViewerFolderDictionary()
{
- // NEW CATEGORY NAME FOLDER OPEN FOLDER CLOSED QUIET?
- // |-------------------------|-----------------------|----------------------|-----------|
- addEntry(LLFolderType::FT_TEXTURE, new ViewerFolderEntry("Textures", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_SOUND, new ViewerFolderEntry("Sounds", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_CALLINGCARD, new ViewerFolderEntry("Calling Cards", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_LANDMARK, new ViewerFolderEntry("Landmarks", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_CLOTHING, new ViewerFolderEntry("Clothing", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_OBJECT, new ViewerFolderEntry("Objects", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_NOTECARD, new ViewerFolderEntry("Notecards", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_ROOT_INVENTORY, new ViewerFolderEntry("My Inventory", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_LSL_TEXT, new ViewerFolderEntry("Scripts", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_BODYPART, new ViewerFolderEntry("Body Parts", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_TRASH, new ViewerFolderEntry("Trash", "Inv_TrashOpen", "Inv_TrashClosed", TRUE));
- addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, new ViewerFolderEntry("Photo Album", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_LOST_AND_FOUND, new ViewerFolderEntry("Lost And Found", "Inv_LostOpen", "Inv_LostClosed", TRUE));
- addEntry(LLFolderType::FT_ANIMATION, new ViewerFolderEntry("Animations", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_GESTURE, new ViewerFolderEntry("Gestures", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_FAVORITE, new ViewerFolderEntry("Favorites", "Inv_SysOpen", "Inv_SysClosed", FALSE));
+ // NEW CATEGORY NAME FOLDER OPEN FOLDER CLOSED QUIET? HIDE IF EMPTY?
+ // |-------------------------|-----------------------|----------------------|-----------|--------------|
+ addEntry(LLFolderType::FT_TEXTURE, new ViewerFolderEntry("Textures", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_SOUND, new ViewerFolderEntry("Sounds", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_CALLINGCARD, new ViewerFolderEntry("Calling Cards", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_LANDMARK, new ViewerFolderEntry("Landmarks", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_CLOTHING, new ViewerFolderEntry("Clothing", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_OBJECT, new ViewerFolderEntry("Objects", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_NOTECARD, new ViewerFolderEntry("Notecards", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_ROOT_INVENTORY, new ViewerFolderEntry("My Inventory", "Inv_SysOpen", "Inv_SysClosed", FALSE, false));
+ addEntry(LLFolderType::FT_LSL_TEXT, new ViewerFolderEntry("Scripts", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_BODYPART, new ViewerFolderEntry("Body Parts", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_TRASH, new ViewerFolderEntry("Trash", "Inv_TrashOpen", "Inv_TrashClosed", TRUE, false));
+ addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, new ViewerFolderEntry("Photo Album", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_LOST_AND_FOUND, new ViewerFolderEntry("Lost And Found", "Inv_LostOpen", "Inv_LostClosed", TRUE, true));
+ addEntry(LLFolderType::FT_ANIMATION, new ViewerFolderEntry("Animations", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_GESTURE, new ViewerFolderEntry("Gestures", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_FAVORITE, new ViewerFolderEntry("Favorites", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
- addEntry(LLFolderType::FT_CURRENT_OUTFIT, new ViewerFolderEntry("Current Outfit", "Inv_SysOpen", "Inv_SysClosed", TRUE));
- addEntry(LLFolderType::FT_OUTFIT, new ViewerFolderEntry("New Outfit", "Inv_LookFolderOpen", "Inv_LookFolderClosed", TRUE));
- addEntry(LLFolderType::FT_MY_OUTFITS, new ViewerFolderEntry("My Outfits", "Inv_SysOpen", "Inv_SysClosed", TRUE));
- addEntry(LLFolderType::FT_MESH, new ViewerFolderEntry("Meshes", "Inv_SysOpen", "Inv_SysClosed", FALSE));
+ addEntry(LLFolderType::FT_CURRENT_OUTFIT, new ViewerFolderEntry("Current Outfit", "Inv_SysOpen", "Inv_SysClosed", TRUE, false));
+ addEntry(LLFolderType::FT_OUTFIT, new ViewerFolderEntry("New Outfit", "Inv_LookFolderOpen", "Inv_LookFolderClosed", TRUE, true));
+ addEntry(LLFolderType::FT_MY_OUTFITS, new ViewerFolderEntry("My Outfits", "Inv_SysOpen", "Inv_SysClosed", TRUE, true));
+ addEntry(LLFolderType::FT_MESH, new ViewerFolderEntry("Meshes", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
- addEntry(LLFolderType::FT_INBOX, new ViewerFolderEntry("Inbox", "Inv_SysOpen", "Inv_SysClosed", FALSE));
- addEntry(LLFolderType::FT_OUTBOX, new ViewerFolderEntry("Outbox", "Inv_SysOpen", "Inv_SysClosed", FALSE));
+ addEntry(LLFolderType::FT_INBOX, new ViewerFolderEntry("Inbox", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
+ addEntry(LLFolderType::FT_OUTBOX, new ViewerFolderEntry("Outbox", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
- addEntry(LLFolderType::FT_BASIC_ROOT, new ViewerFolderEntry("Basic Root", "Inv_SysOpen", "Inv_SysClosed", FALSE));
+ addEntry(LLFolderType::FT_BASIC_ROOT, new ViewerFolderEntry("Basic Root", "Inv_SysOpen", "Inv_SysClosed", FALSE, true));
- addEntry(LLFolderType::FT_NONE, new ViewerFolderEntry("New Folder", "Inv_FolderOpen", "Inv_FolderClosed", FALSE, "default"));
+ addEntry(LLFolderType::FT_NONE, new ViewerFolderEntry("New Folder", "Inv_FolderOpen", "Inv_FolderClosed", FALSE, false, "default"));
#if SUPPORT_ENSEMBLES
initEnsemblesFromFile();
#else
for (U32 type = (U32)LLFolderType::FT_ENSEMBLE_START; type <= (U32)LLFolderType::FT_ENSEMBLE_END; ++type)
{
- addEntry((LLFolderType::EType)type, new ViewerFolderEntry("New Folder", "Inv_FolderOpen", "Inv_FolderClosed", FALSE));
+ addEntry((LLFolderType::EType)type, new ViewerFolderEntry("New Folder", "Inv_FolderOpen", "Inv_FolderClosed", FALSE, false));
}
#endif
}
@@ -259,6 +263,15 @@ BOOL LLViewerFolderType::lookupIsQuietType(LLFolderType::EType folder_type)
return FALSE;
}
+bool LLViewerFolderType::lookupIsHiddenIfEmpty(LLFolderType::EType folder_type)
+{
+ const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type);
+ if (entry)
+ {
+ return entry->mHideIfEmpty;
+ }
+ return false;
+}
const std::string &LLViewerFolderType::lookupNewCategoryName(LLFolderType::EType folder_type)
{
diff --git a/indra/newview/llviewerfoldertype.h b/indra/newview/llviewerfoldertype.h
index f5938de619..13d5a8fbbd 100644
--- a/indra/newview/llviewerfoldertype.h
+++ b/indra/newview/llviewerfoldertype.h
@@ -40,6 +40,7 @@ public:
static const std::string& lookupIconName(EType folder_type, BOOL is_open = FALSE); // folder icon name
static BOOL lookupIsQuietType(EType folder_type); // folder doesn't require UI update when changes have occured
+ static bool lookupIsHiddenIfEmpty(EType folder_type); // folder is not displayed if empty
static const std::string& lookupNewCategoryName(EType folder_type); // default name when creating new category
static LLFolderType::EType lookupTypeFromNewCategoryName(const std::string& name); // default name when creating new category
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 3a3d4f3881..a8a918f259 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -69,15 +69,12 @@ LLHelpHandler gHelpHandler;
//////////////////////////////
// implement LLHelp interface
-void LLViewerHelp::showTopic(const std::string &topic)
+std::string LLViewerHelp::getURL(const std::string &topic)
{
// allow overriding the help server with a local help file
if( gSavedSettings.getBOOL("HelpUseLocal") )
{
- showHelp();
- LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
- helpbrowser->navigateToLocalPage( "help-offline" , "index.html" );
- return;
+ return "__local";
}
// if the help topic is empty, use the default topic
@@ -99,11 +96,12 @@ void LLViewerHelp::showTopic(const std::string &topic)
}
}
- // work out the URL for this topic and display it
- showHelp();
-
- std::string helpURL = LLViewerHelpUtil::buildHelpURL( help_topic );
- setRawURL(helpURL);
+ return LLViewerHelpUtil::buildHelpURL( help_topic );
+}
+
+void LLViewerHelp::showTopic(const std::string& topic)
+{
+ LLFloaterReg::showInstance("help_browser", topic);
}
std::string LLViewerHelp::defaultTopic()
@@ -146,23 +144,3 @@ std::string LLViewerHelp::getTopicFromFocus()
return defaultTopic();
}
-// static
-void LLViewerHelp::showHelp()
-{
- LLFloaterReg::showInstance("help_browser");
-}
-
-// static
-void LLViewerHelp::setRawURL(std::string url)
-{
- LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
- if (helpbrowser)
- {
- helpbrowser->openMedia(url);
- }
- else
- {
- llwarns << "Eep, help_browser floater not found" << llendl;
- }
-}
-
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
index 7612986227..a983012e2e 100644
--- a/indra/newview/llviewerhelp.h
+++ b/indra/newview/llviewerhelp.h
@@ -45,6 +45,8 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
/// display the specified help topic in the help viewer
/*virtual*/ void showTopic(const std::string &topic);
+ std::string getURL(const std::string& topic);
+
// return topic derived from viewer UI focus, else default topic
std::string getTopicFromFocus();
@@ -56,10 +58,6 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
// return topic to use for the top-level help, invoked by F1
/*virtual*/ std::string f1HelpTopic();
-
- private:
- static void showHelp(); // make sure help UI is visible & raised
- static void setRawURL(std::string url); // send URL to help UI
};
#endif // header guard
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index b22c6d2fd4..163581ea7f 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -34,7 +34,9 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llagentwearables.h"
+#include "llfloatersidepanelcontainer.h"
#include "llviewerfoldertype.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llviewercontrol.h"
#include "llconsole.h"
@@ -43,7 +45,6 @@
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llgesturemgr.h"
-#include "llsidetray.h"
#include "llinventorybridge.h"
#include "llinventorypanel.h"
@@ -220,7 +221,7 @@ public:
// support secondlife:///app/inventory/show
if (params[0].asString() == "show")
{
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD());
+ LLFloaterSidePanelContainer::showPanel("inventory", LLSD());
return true;
}
@@ -976,7 +977,7 @@ void ModifiedCOFCallback::fire(const LLUUID& inv_item)
if( gAgentCamera.cameraCustomizeAvatar() )
{
// If we're in appearance editing mode, the current tab may need to be refreshed
- LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
if (panel)
{
panel->showDefaultSubpart();
@@ -1208,7 +1209,23 @@ void move_inventory_item(
gAgent.sendReliableMessage();
}
-void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecard_inv_id, const LLInventoryItem *src, U32 callback_id)
+const LLUUID get_folder_by_itemtype(const LLInventoryItem *src)
+{
+ LLUUID retval = LLUUID::null;
+
+ if (src)
+ {
+ retval = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(src->getType()));
+ }
+
+ return retval;
+}
+
+void copy_inventory_from_notecard(const LLUUID& destination_id,
+ const LLUUID& object_id,
+ const LLUUID& notecard_inv_id,
+ const LLInventoryItem *src,
+ U32 callback_id)
{
if (NULL == src)
{
@@ -1254,7 +1271,7 @@ void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecar
body["notecard-id"] = notecard_inv_id;
body["object-id"] = object_id;
body["item-id"] = src->getUUID();
- body["folder-id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(src->getType()));
+ body["folder-id"] = destination_id;
body["callback-id"] = (LLSD::Integer)callback_id;
request["message"] = "CopyInventoryFromNotecard";
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 41542a4e0f..7822ef4da6 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -363,7 +363,10 @@ void move_inventory_item(
const std::string& new_name,
LLPointer<LLInventoryCallback> cb);
-void copy_inventory_from_notecard(const LLUUID& object_id,
+const LLUUID get_folder_by_itemtype(const LLInventoryItem *src);
+
+void copy_inventory_from_notecard(const LLUUID& destination_id,
+ const LLUUID& object_id,
const LLUUID& notecard_inv_id,
const LLInventoryItem *src,
U32 callback_id = 0);
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index baf85d6884..a907f102f8 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -126,7 +126,7 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
// //----------------------------------------------------------------
// // push matrix stack
// //----------------------------------------------------------------
-// glPushMatrix();
+// gGL.pushMatrix();
// //----------------------------------------------------------------
// // render the bone to my parent
@@ -140,8 +140,8 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
// // offset to joint position and
// // rotate to our orientation
// //----------------------------------------------------------------
-// glLoadIdentity();
-// glMultMatrixf( &getWorldMatrix().mMatrix[0][0] );
+// gGL.loadIdentity();
+// gGL.multMatrix( &getWorldMatrix().mMatrix[0][0] );
// //----------------------------------------------------------------
// // render joint axes
@@ -233,7 +233,7 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
// //----------------------------------------------------------------
// // pop matrix stack
// //----------------------------------------------------------------
-// glPopMatrix();
+// gGL.popMatrix();
// }
@@ -346,7 +346,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
// F32 boneSize = 0.02f;
// // rotate to point to child (bone direction)
-// glPushMatrix();
+// gGL.pushMatrix();
// LLVector3 boneX = getPosition();
// F32 length = boneX.normVec();
@@ -362,7 +362,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
// rotateMat.setFwdRow( boneX );
// rotateMat.setLeftRow( boneY );
// rotateMat.setUpRow( boneZ );
-// glMultMatrixf( &rotateMat.mMatrix[0][0] );
+// gGL.multMatrix( &rotateMat.mMatrix[0][0] );
// // render the bone
// gGL.color3f( 0.5f, 0.5f, 0.0f );
@@ -388,7 +388,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
// gGL.end();
// // restore matrix
-// glPopMatrix();
+// gGL.popMatrix();
// }
//--------------------------------------------------------------------
@@ -541,9 +541,9 @@ void LLViewerJointCollisionVolume::renderCollision()
updateWorldMatrix();
gGL.pushMatrix();
- glMultMatrixf( &mXform.getWorldMatrix().mMatrix[0][0] );
+ gGL.multMatrix( &mXform.getWorldMatrix().mMatrix[0][0] );
- gGL.color3f( 0.f, 0.f, 1.f );
+ gGL.diffuseColor3f( 0.f, 0.f, 1.f );
gGL.begin(LLRender::LINES);
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 77c8bb0329..76f4e18c27 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -459,7 +459,10 @@ void LLViewerJointMesh::uploadJointMatrices()
}
}
stop_glerror();
- glUniform4fvARB(gAvatarMatrixParam, 45, mat);
+ if (LLGLSLShader::sCurBoundShaderPtr)
+ {
+ LLGLSLShader::sCurBoundShaderPtr->uniform4fv(LLViewerShaderMgr::AVATAR_MATRIX, 45, mat);
+ }
stop_glerror();
}
else
@@ -512,7 +515,8 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
{
if (!mValid || !mMesh || !mFace || !mVisible ||
!mFace->getVertexBuffer() ||
- mMesh->getNumFaces() == 0)
+ mMesh->getNumFaces() == 0 ||
+ (LLGLSLShader::sNoFixedFunction && LLGLSLShader::sCurBoundShaderPtr == NULL))
{
return 0;
}
@@ -527,13 +531,13 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
// setup current color
//----------------------------------------------------------------
if (is_dummy)
- glColor4fv(LLVOAvatar::getDummyColor().mV);
+ gGL.diffuseColor4fv(LLVOAvatar::getDummyColor().mV);
else
- glColor4fv(mColor.mV);
+ gGL.diffuseColor4fv(mColor.mV);
stop_glerror();
- LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), mFace->getPool()->getVertexShaderLevel() > 0 ? 0.f : mShiny);
+ LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), (mFace->getPool()->getVertexShaderLevel() > 0 || LLGLSLShader::sNoFixedFunction) ? 0.f : mShiny);
//----------------------------------------------------------------
// setup current texture
@@ -547,11 +551,11 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
if (mIsTransparent)
{
- glColor4f(1.f, 1.f, 1.f, 1.f);
+ gGL.diffuseColor4f(1.f, 1.f, 1.f, 1.f);
}
else
{
- glColor4f(0.7f, 0.6f, 0.3f, 1.f);
+ gGL.diffuseColor4f(0.7f, 0.6f, 0.3f, 1.f);
gGL.getTexUnit(diffuse_channel)->setTextureColorBlend(LLTexUnit::TBO_LERP_TEX_ALPHA, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
}
}
@@ -582,13 +586,16 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
gGL.getTexUnit(diffuse_channel)->bind(LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT));
}
- mFace->getVertexBuffer()->setBuffer(sRenderMask);
+
+ U32 mask = sRenderMask;
U32 start = mMesh->mFaceVertexOffset;
U32 end = start + mMesh->mFaceVertexCount - 1;
U32 count = mMesh->mFaceIndexCount;
U32 offset = mMesh->mFaceIndexOffset;
+ LLVertexBuffer* buff = mFace->getVertexBuffer();
+
if (mMesh->hasWeights())
{
if ((mFace->getPool()->getVertexShaderLevel() > 0))
@@ -597,17 +604,24 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
{
uploadJointMatrices();
}
+ mask = mask | LLVertexBuffer::MAP_WEIGHT;
+ if (mFace->getPool()->getVertexShaderLevel() > 1)
+ {
+ mask = mask | LLVertexBuffer::MAP_CLOTHWEIGHT;
+ }
}
- mFace->getVertexBuffer()->drawRange(LLRender::TRIANGLES, start, end, count, offset);
+ buff->setBuffer(mask);
+ buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
}
else
{
- glPushMatrix();
+ gGL.pushMatrix();
LLMatrix4 jointToWorld = getWorldMatrix();
- glMultMatrixf((GLfloat*)jointToWorld.mMatrix);
- mFace->getVertexBuffer()->drawRange(LLRender::TRIANGLES, start, end, count, offset);
- glPopMatrix();
+ gGL.multMatrix((GLfloat*)jointToWorld.mMatrix);
+ buff->setBuffer(mask);
+ buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
+ gGL.popMatrix();
}
gPipeline.addTrianglesDrawn(count);
@@ -692,9 +706,9 @@ void LLViewerJointMesh::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_w
if (num_verts)
{
- face->getGeometryAvatar(verticesp, normalsp, tex_coordsp, vertex_weightsp, clothing_weightsp);
face->getVertexBuffer()->getIndexStrider(indicesp);
-
+ face->getGeometryAvatar(verticesp, normalsp, tex_coordsp, vertex_weightsp, clothing_weightsp);
+
verticesp += mMesh->mFaceVertexOffset;
normalsp += mMesh->mFaceVertexOffset;
@@ -752,7 +766,7 @@ BOOL LLViewerJointMesh::updateLOD(F32 pixel_area, BOOL activate)
}
// static
-void LLViewerJointMesh::updateGeometryOriginal(LLFace *mFace, LLPolyMesh *mMesh)
+void LLViewerJointMesh::updateGeometry(LLFace *mFace, LLPolyMesh *mMesh)
{
LLStrider<LLVector3> o_vertices;
LLStrider<LLVector3> o_normals;
@@ -803,64 +817,7 @@ void LLViewerJointMesh::updateGeometryOriginal(LLFace *mFace, LLPolyMesh *mMesh)
}
}
- buffer->setBuffer(0);
-}
-
-const U32 UPDATE_GEOMETRY_CALL_MASK = 0x1FFF; // 8K samples before overflow
-const U32 UPDATE_GEOMETRY_CALL_OVERFLOW = ~UPDATE_GEOMETRY_CALL_MASK;
-static bool sUpdateGeometryCallPointer = false;
-static F64 sUpdateGeometryGlobalTime = 0.0 ;
-static F64 sUpdateGeometryElapsedTime = 0.0 ;
-static F64 sUpdateGeometryElapsedTimeOff = 0.0 ;
-static F64 sUpdateGeometryElapsedTimeOn = 0.0 ;
-static F64 sUpdateGeometryRunAvgOff[10];
-static F64 sUpdateGeometryRunAvgOn[10];
-static U32 sUpdateGeometryRunCount = 0 ;
-static U32 sUpdateGeometryCalls = 0 ;
-static U32 sUpdateGeometryLastProcessor = 0 ;
-static BOOL sVectorizePerfTest = FALSE;
-static U32 sVectorizeProcessor = 0;
-
-//static
-void (*LLViewerJointMesh::sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh);
-
-//static
-void LLViewerJointMesh::updateVectorize()
-{
- sVectorizePerfTest = gSavedSettings.getBOOL("VectorizePerfTest");
- sVectorizeProcessor = gSavedSettings.getU32("VectorizeProcessor");
- BOOL vectorizeEnable = gSavedSettings.getBOOL("VectorizeEnable");
- BOOL vectorizeSkin = gSavedSettings.getBOOL("VectorizeSkin");
-
- std::string vp;
- switch(sVectorizeProcessor)
- {
- case 2: vp = "SSE2"; break; // *TODO: replace the magic #s
- case 1: vp = "SSE"; break;
- default: vp = "COMPILER DEFAULT"; break;
- }
- LL_INFOS("AppInit") << "Vectorization : " << ( vectorizeEnable ? "ENABLED" : "DISABLED" ) << LL_ENDL ;
- LL_INFOS("AppInit") << "Vector Processor : " << vp << LL_ENDL ;
- LL_INFOS("AppInit") << "Vectorized Skinning : " << ( vectorizeSkin ? "ENABLED" : "DISABLED" ) << LL_ENDL ;
- if(vectorizeEnable && vectorizeSkin)
- {
- switch(sVectorizeProcessor)
- {
- case 2:
- sUpdateGeometryFunc = &updateGeometrySSE2;
- break;
- case 1:
- sUpdateGeometryFunc = &updateGeometrySSE;
- break;
- default:
- sUpdateGeometryFunc = &updateGeometryVectorized;
- break;
- }
- }
- else
- {
- sUpdateGeometryFunc = &updateGeometryOriginal;
- }
+ buffer->flush();
}
void LLViewerJointMesh::updateJointGeometry()
@@ -875,129 +832,8 @@ void LLViewerJointMesh::updateJointGeometry()
return;
}
- if (!sVectorizePerfTest)
- {
- // Once we've measured performance, just run the specified
- // code version.
- if(sUpdateGeometryFunc == updateGeometryOriginal)
- uploadJointMatrices();
- sUpdateGeometryFunc(mFace, mMesh);
- }
- else
- {
- // At startup, measure the amount of time in skinning and choose
- // the fastest one.
- LLTimer ug_timer ;
-
- if (sUpdateGeometryCallPointer)
- {
- if(sUpdateGeometryFunc == updateGeometryOriginal)
- uploadJointMatrices();
- // call accelerated version for this processor
- sUpdateGeometryFunc(mFace, mMesh);
- }
- else
- {
- uploadJointMatrices();
- updateGeometryOriginal(mFace, mMesh);
- }
-
- sUpdateGeometryElapsedTime += ug_timer.getElapsedTimeF64();
- ++sUpdateGeometryCalls;
- if(0 != (sUpdateGeometryCalls & UPDATE_GEOMETRY_CALL_OVERFLOW))
- {
- F64 time_since_app_start = ug_timer.getElapsedSeconds();
- if(sUpdateGeometryGlobalTime == 0.0
- || sUpdateGeometryLastProcessor != sVectorizeProcessor)
- {
- sUpdateGeometryGlobalTime = time_since_app_start;
- sUpdateGeometryElapsedTime = 0;
- sUpdateGeometryCalls = 0;
- sUpdateGeometryRunCount = 0;
- sUpdateGeometryLastProcessor = sVectorizeProcessor;
- sUpdateGeometryCallPointer = false;
- return;
- }
- F64 percent_time_in_function =
- ( sUpdateGeometryElapsedTime * 100.0 ) / ( time_since_app_start - sUpdateGeometryGlobalTime ) ;
- sUpdateGeometryGlobalTime = time_since_app_start;
- if (!sUpdateGeometryCallPointer)
- {
- // First set of run data is with vectorization off.
- sUpdateGeometryCallPointer = true;
- llinfos << "profile (avg of " << sUpdateGeometryCalls << " samples) = "
- << "vectorize off " << percent_time_in_function
- << "% of time with "
- << (sUpdateGeometryElapsedTime / (F64)sUpdateGeometryCalls)
- << " seconds per call "
- << llendl;
- sUpdateGeometryRunAvgOff[sUpdateGeometryRunCount] = percent_time_in_function;
- sUpdateGeometryElapsedTimeOff += sUpdateGeometryElapsedTime;
- sUpdateGeometryCalls = 0;
- }
- else
- {
- // Second set of run data is with vectorization on.
- sUpdateGeometryCallPointer = false;
- llinfos << "profile (avg of " << sUpdateGeometryCalls << " samples) = "
- << "VEC on " << percent_time_in_function
- << "% of time with "
- << (sUpdateGeometryElapsedTime / (F64)sUpdateGeometryCalls)
- << " seconds per call "
- << llendl;
- sUpdateGeometryRunAvgOn[sUpdateGeometryRunCount] = percent_time_in_function ;
- sUpdateGeometryElapsedTimeOn += sUpdateGeometryElapsedTime;
-
- sUpdateGeometryCalls = 0;
- sUpdateGeometryRunCount++;
- F64 a = 0.0, b = 0.0;
- for(U32 i = 0; i<sUpdateGeometryRunCount; i++)
- {
- a += sUpdateGeometryRunAvgOff[i];
- b += sUpdateGeometryRunAvgOn[i];
- }
- a /= sUpdateGeometryRunCount;
- b /= sUpdateGeometryRunCount;
- F64 perf_boost = ( sUpdateGeometryElapsedTimeOff - sUpdateGeometryElapsedTimeOn ) / sUpdateGeometryElapsedTimeOn;
- llinfos << "run averages (" << (F64)sUpdateGeometryRunCount
- << "/10) vectorize off " << a
- << "% : vectorize type " << sVectorizeProcessor
- << " " << b
- << "% : performance boost "
- << perf_boost * 100.0
- << "%"
- << llendl ;
- if(sUpdateGeometryRunCount == 10)
- {
- // In case user runs test again, force reset of data on
- // next run.
- sUpdateGeometryGlobalTime = 0.0;
-
- // We have data now on which version is faster. Switch to that
- // code and save the data for next run.
- gSavedSettings.setBOOL("VectorizePerfTest", FALSE);
-
- if (perf_boost > 0.0)
- {
- llinfos << "Vectorization improves avatar skinning performance, "
- << "keeping on for future runs."
- << llendl;
- gSavedSettings.setBOOL("VectorizeSkin", TRUE);
- }
- else
- {
- // SIMD decreases performance, fall back to original code
- llinfos << "Vectorization decreases avatar skinning performance, "
- << "switching back to original code."
- << llendl;
-
- gSavedSettings.setBOOL("VectorizeSkin", FALSE);
- }
- }
- }
- sUpdateGeometryElapsedTime = 0.0f;
- }
- }
+ uploadJointMatrices();
+ updateGeometry(mFace, mMesh);
}
void LLViewerJointMesh::dump()
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index cab1205d61..0191f0cae8 100644
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -143,23 +143,10 @@ public:
/*virtual*/ BOOL isAnimatable() const { return FALSE; }
- static void updateVectorize(); // Update globals when settings variables change
-
private:
- // Avatar vertex skinning is a significant performance issue on computers
- // with avatar vertex programs turned off (for example, most Macs). We
- // therefore have custom versions that use SIMD instructions.
- //
- // These functions require compiler options for SSE2, SSE, or neither, and
- // hence are contained in separate individual .cpp files. JC
- static void updateGeometryOriginal(LLFace* face, LLPolyMesh* mesh);
- // generic vector code, used for Altivec
- static void updateGeometryVectorized(LLFace* face, LLPolyMesh* mesh);
- static void updateGeometrySSE(LLFace* face, LLPolyMesh* mesh);
- static void updateGeometrySSE2(LLFace* face, LLPolyMesh* mesh);
-
- // Use a fuction pointer to indicate which version we are running.
- static void (*sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh);
+
+ //copy mesh into given face's vertex buffer, applying current animation pose
+ static void updateGeometry(LLFace* face, LLPolyMesh* mesh);
private:
// Allocate skin data
diff --git a/indra/newview/llviewerjointmesh_sse.cpp b/indra/newview/llviewerjointmesh_sse.cpp
deleted file mode 100644
index 400b49d046..0000000000
--- a/indra/newview/llviewerjointmesh_sse.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * @file llviewerjointmesh_sse.cpp
- * @brief SSE vectorized joint skinning code, only used when video card does
- * not support avatar vertex programs.
- *
- * *NOTE: Disabled on Windows builds. See llv4math.h for details.
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-//-----------------------------------------------------------------------------
-// Header Files
-//-----------------------------------------------------------------------------
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llviewerjointmesh.h"
-
-// project includes
-#include "llface.h"
-#include "llpolymesh.h"
-
-// library includes
-#include "lldarray.h"
-#include "llv4math.h" // for LL_VECTORIZE
-#include "llv4matrix3.h"
-#include "llv4matrix4.h"
-#include "v3math.h"
-
-
-#if LL_VECTORIZE
-
-inline void matrix_translate(LLV4Matrix4& m, const LLMatrix4* w, const LLVector3& j)
-{
- m.mV[VX] = _mm_loadu_ps(w->mMatrix[VX]);
- m.mV[VY] = _mm_loadu_ps(w->mMatrix[VY]);
- m.mV[VZ] = _mm_loadu_ps(w->mMatrix[VZ]);
- m.mV[VW] = _mm_loadu_ps(w->mMatrix[VW]);
- m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VX]), m.mV[VX])); // ( ax * vx ) + vw
- m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VY]), m.mV[VY]));
- m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VZ]), m.mV[VZ]));
-}
-
-// static
-void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh)
-{
- // This cannot be a file-level static because it will be initialized
- // before main() using SSE code, which will crash on non-SSE processors.
- static LLV4Matrix4 sJointMat[32];
- LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData;
-
- //upload joint pivots/matrices
- for(S32 j = 0, jend = joint_data.count(); j < jend ; ++j )
- {
- matrix_translate(sJointMat[j], joint_data[j]->mWorldMatrix,
- joint_data[j]->mSkinJoint ?
- joint_data[j]->mSkinJoint->mRootToJointSkinOffset
- : joint_data[j+1]->mSkinJoint->mRootToParentJointSkinOffset);
- }
-
- F32 weight = F32_MAX;
- LLV4Matrix4 blend_mat;
-
- LLStrider<LLVector3> o_vertices;
- LLStrider<LLVector3> o_normals;
-
- LLVertexBuffer *buffer = face->getVertexBuffer();
- buffer->getVertexStrider(o_vertices, mesh->mFaceVertexOffset);
- buffer->getNormalStrider(o_normals, mesh->mFaceVertexOffset);
-
- const F32* weights = mesh->getWeights();
- const LLVector3* coords = (const LLVector3*)mesh->getCoords();
- const LLVector3* normals = (const LLVector3*)mesh->getNormals();
- for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index)
- {
- if( weight != weights[index])
- {
- S32 joint = llfloor(weight = weights[index]);
- blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint);
- }
- blend_mat.multiply(coords[index], o_vertices[index]);
- ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
- }
-
- buffer->setBuffer(0);
-}
-
-#else
-
-void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh)
-{
- LLViewerJointMesh::updateGeometryVectorized(face, mesh);
-}
-
-#endif
diff --git a/indra/newview/llviewerjointmesh_sse2.cpp b/indra/newview/llviewerjointmesh_sse2.cpp
deleted file mode 100644
index c2296dd569..0000000000
--- a/indra/newview/llviewerjointmesh_sse2.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * @file llviewerjointmesh_sse2.cpp
- * @brief SSE vectorized joint skinning code, only used when video card does
- * not support avatar vertex programs.
- *
- * *NOTE: Disabled on Windows builds. See llv4math.h for details.
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-// Visual Studio required settings for this file:
-// Precompiled Headers OFF
-// Code Generation: SSE2
-
-//-----------------------------------------------------------------------------
-// Header Files
-//-----------------------------------------------------------------------------
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llviewerjointmesh.h"
-
-// project includes
-#include "llface.h"
-#include "llpolymesh.h"
-
-// library includes
-#include "lldarray.h"
-#include "llstrider.h"
-#include "llv4math.h" // for LL_VECTORIZE
-#include "llv4matrix3.h"
-#include "llv4matrix4.h"
-#include "m4math.h"
-#include "v3math.h"
-
-
-#if LL_VECTORIZE
-
-
-inline void matrix_translate(LLV4Matrix4& m, const LLMatrix4* w, const LLVector3& j)
-{
- m.mV[VX] = _mm_loadu_ps(w->mMatrix[VX]);
- m.mV[VY] = _mm_loadu_ps(w->mMatrix[VY]);
- m.mV[VZ] = _mm_loadu_ps(w->mMatrix[VZ]);
- m.mV[VW] = _mm_loadu_ps(w->mMatrix[VW]);
- m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VX]), m.mV[VX])); // ( ax * vx ) + vw
- m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VY]), m.mV[VY]));
- m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VZ]), m.mV[VZ]));
-}
-
-// static
-void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh)
-{
- // This cannot be a file-level static because it will be initialized
- // before main() using SSE code, which will crash on non-SSE processors.
- static LLV4Matrix4 sJointMat[32];
- LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData;
-
- //upload joint pivots/matrices
- for(S32 j = 0, jend = joint_data.count(); j < jend ; ++j )
- {
- matrix_translate(sJointMat[j], joint_data[j]->mWorldMatrix,
- joint_data[j]->mSkinJoint ?
- joint_data[j]->mSkinJoint->mRootToJointSkinOffset
- : joint_data[j+1]->mSkinJoint->mRootToParentJointSkinOffset);
- }
-
- F32 weight = F32_MAX;
- LLV4Matrix4 blend_mat;
-
- LLStrider<LLVector3> o_vertices;
- LLStrider<LLVector3> o_normals;
-
- LLVertexBuffer *buffer = face->getVertexBuffer();
- buffer->getVertexStrider(o_vertices, mesh->mFaceVertexOffset);
- buffer->getNormalStrider(o_normals, mesh->mFaceVertexOffset);
-
- const F32* weights = mesh->getWeights();
- const LLVector3* coords = (const LLVector3*)mesh->getCoords();
- const LLVector3* normals = (const LLVector3*)mesh->getNormals();
- for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index)
- {
- if( weight != weights[index])
- {
- S32 joint = llfloor(weight = weights[index]);
- blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint);
- }
- blend_mat.multiply(coords[index], o_vertices[index]);
- ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
- }
-
- //setBuffer(0) called in LLVOAvatar::renderSkinned
-}
-
-#else
-
-void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh)
-{
- LLViewerJointMesh::updateGeometryVectorized(face, mesh);
-}
-
-#endif
diff --git a/indra/newview/llviewerjointmesh_vec.cpp b/indra/newview/llviewerjointmesh_vec.cpp
deleted file mode 100644
index 6600d01d17..0000000000
--- a/indra/newview/llviewerjointmesh_vec.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * @file llviewerjointmesh_vec.cpp
- * @brief Compiler-generated vectorized joint skinning code, works well on
- * Altivec processors (PowerPC Mac)
- *
- * *NOTE: See llv4math.h for notes on SSE/Altivec vector code.
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-//-----------------------------------------------------------------------------
-// Header Files
-//-----------------------------------------------------------------------------
-#include "llviewerprecompiledheaders.h"
-
-#include "llviewerjointmesh.h"
-
-#include "llface.h"
-#include "llpolymesh.h"
-#include "llv4math.h"
-#include "llv4matrix3.h"
-#include "llv4matrix4.h"
-
-// Generic vectorized code, uses compiler defaults, works well for Altivec
-// on PowerPC.
-
-// static
-void LLViewerJointMesh::updateGeometryVectorized(LLFace *face, LLPolyMesh *mesh)
-{
-#if 0
- static LLV4Matrix4 sJointMat[32];
- LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData;
- S32 j, joint_num, joint_end = joint_data.count();
- LLV4Vector3 pivot;
-
- //upload joint pivots/matrices
- for(j = joint_num = 0; joint_num < joint_end ; ++joint_num )
- {
- LLSkinJoint *sj;
- const LLMatrix4 * wm = joint_data[joint_num]->mWorldMatrix;
- if (NULL == (sj = joint_data[joint_num]->mSkinJoint))
- {
- sj = joint_data[++joint_num]->mSkinJoint;
- ((LLV4Matrix3)(sJointMat[j] = *wm)).multiply(sj->mRootToParentJointSkinOffset, pivot);
- sJointMat[j++].translate(pivot);
- wm = joint_data[joint_num]->mWorldMatrix;
- }
- ((LLV4Matrix3)(sJointMat[j] = *wm)).multiply(sj->mRootToJointSkinOffset, pivot);
- sJointMat[j++].translate(pivot);
- }
-
- F32 weight = F32_MAX;
- LLV4Matrix4 blend_mat;
-
- LLStrider<LLVector3> o_vertices;
- LLStrider<LLVector3> o_normals;
-
- LLVertexBuffer *buffer = face->mVertexBuffer;
- buffer->getVertexStrider(o_vertices, mesh->mFaceVertexOffset);
- buffer->getNormalStrider(o_normals, mesh->mFaceVertexOffset);
-
- const F32* weights = mesh->getWeights();
- const LLVector3* coords = mesh->getCoords();
- const LLVector3* normals = mesh->getNormals();
- for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index)
- {
- if( weight != weights[index])
- {
- S32 joint = llfloor(weight = weights[index]);
- blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint);
- }
- blend_mat.multiply(coords[index], o_vertices[index]);
- ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
- }
-
- buffer->setBuffer(0);
-#endif
-}
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 13dbc5e386..42dabdec0d 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -50,6 +50,7 @@
#include "llvoavatar.h"
#include "llvoavatarself.h"
#include "llviewerregion.h"
+#include "llwebprofile.h"
#include "llwebsharing.h" // For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!
#include "llfilepicker.h"
#include "llnotifications.h"
@@ -66,9 +67,8 @@
//#include "llfirstuse.h"
#include "llviewernetwork.h"
#include "llwindow.h"
+#include "llvieweraudio.h"
-
-#include "llfloatermediabrowser.h" // for handling window close requests and geometry change requests in media browser windows.
#include "llfloaterwebcontent.h" // for handling window close requests and geometry change requests in media browser windows.
#include <boost/bind.hpp> // for SkinFolder listener
@@ -319,6 +319,10 @@ public:
std::string cookie = content["set-cookie"].asString();
LLViewerMedia::getCookieStore()->setCookiesFromHost(cookie, mHost);
+
+ // Set cookie for snapshot publishing.
+ std::string auth_cookie = cookie.substr(0, cookie.find(";")); // strip path
+ LLWebProfile::setAuthCookie(auth_cookie);
}
void completedRaw(
@@ -782,6 +786,12 @@ static bool proximity_comparitor(const LLViewerMediaImpl* i1, const LLViewerMedi
}
static LLFastTimer::DeclareTimer FTM_MEDIA_UPDATE("Update Media");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SPARE_IDLE("Spare Idle");
+static LLFastTimer::DeclareTimer FTM_MEDIA_UPDATE_INTEREST("Update/Interest");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SORT("Sort");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SORT2("Sort 2");
+static LLFastTimer::DeclareTimer FTM_MEDIA_MISC("Misc");
+
//////////////////////////////////////////////////////////////////////////////////////////
// static
@@ -806,21 +816,28 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
impl_list::iterator iter = sViewerMediaImplList.begin();
impl_list::iterator end = sViewerMediaImplList.end();
- for(; iter != end;)
{
- LLViewerMediaImpl* pimpl = *iter++;
- pimpl->update();
- pimpl->calculateInterest();
+ LLFastTimer t(FTM_MEDIA_UPDATE_INTEREST);
+ for(; iter != end;)
+ {
+ LLViewerMediaImpl* pimpl = *iter++;
+ pimpl->update();
+ pimpl->calculateInterest();
+ }
}
// Let the spare media source actually launch
if(sSpareBrowserMediaSource)
{
+ LLFastTimer t(FTM_MEDIA_SPARE_IDLE);
sSpareBrowserMediaSource->idle();
}
- // Sort the static instance list using our interest criteria
- sViewerMediaImplList.sort(priorityComparitor);
+ {
+ LLFastTimer t(FTM_MEDIA_SORT);
+ // Sort the static instance list using our interest criteria
+ sViewerMediaImplList.sort(priorityComparitor);
+ }
// Go through the list again and adjust according to priority.
iter = sViewerMediaImplList.begin();
@@ -848,147 +865,150 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
// max_instances must be set high enough to allow the various instances used in the UI (for the help browser, search, etc.) to be loaded.
// If max_normal + max_low is less than max_instances, things will tend to get unloaded instead of being set to slideshow.
- for(; iter != end; iter++)
{
- LLViewerMediaImpl* pimpl = *iter;
+ LLFastTimer t(FTM_MEDIA_MISC);
+ for(; iter != end; iter++)
+ {
+ LLViewerMediaImpl* pimpl = *iter;
- LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
+ LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
- if(pimpl->isForcedUnloaded() || (impl_count_total >= (int)max_instances))
- {
- // Never load muted or failed impls.
- // Hard limit on the number of instances that will be loaded at one time
- new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
- }
- else if(!pimpl->getVisible())
- {
- new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
- }
- else if(pimpl->hasFocus())
- {
- new_priority = LLPluginClassMedia::PRIORITY_HIGH;
- impl_count_interest_normal++; // count this against the count of "normal" instances for priority purposes
- }
- else if(pimpl->getUsedInUI())
- {
- new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
- impl_count_interest_normal++;
- }
- else if(pimpl->isParcelMedia())
- {
- new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
- impl_count_interest_normal++;
- }
- else
- {
- // Look at interest and CPU usage for instances that aren't in any of the above states.
-
- // Heuristic -- if the media texture's approximate screen area is less than 1/4 of the native area of the texture,
- // turn it down to low instead of normal. This may downsample for plugins that support it.
- bool media_is_small = false;
- F64 approximate_interest = pimpl->getApproximateTextureInterest();
- if(approximate_interest == 0.0f)
+ if(pimpl->isForcedUnloaded() || (impl_count_total >= (int)max_instances))
{
- // this media has no current size, which probably means it's not loaded.
- media_is_small = true;
+ // Never load muted or failed impls.
+ // Hard limit on the number of instances that will be loaded at one time
+ new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
}
- else if(pimpl->getInterest() < (approximate_interest / 4))
+ else if(!pimpl->getVisible())
{
- media_is_small = true;
+ new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
}
-
- if(pimpl->getInterest() == 0.0f)
+ else if(pimpl->hasFocus())
{
- // This media is completely invisible, due to being outside the view frustrum or out of range.
- new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
+ new_priority = LLPluginClassMedia::PRIORITY_HIGH;
+ impl_count_interest_normal++; // count this against the count of "normal" instances for priority purposes
}
- else if(check_cpu_usage && (total_cpu > max_cpu))
+ else if(pimpl->getUsedInUI())
{
- // Higher priority plugins have already used up the CPU budget. Set remaining ones to slideshow priority.
- new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
+ new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
+ impl_count_interest_normal++;
}
- else if((impl_count_interest_normal < (int)max_normal) && !media_is_small)
+ else if(pimpl->isParcelMedia())
{
- // Up to max_normal inworld get normal priority
new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
impl_count_interest_normal++;
}
- else if (impl_count_interest_low + impl_count_interest_normal < (int)max_low + (int)max_normal)
+ else
{
- // The next max_low inworld get turned down
- new_priority = LLPluginClassMedia::PRIORITY_LOW;
- impl_count_interest_low++;
-
- // Set the low priority size for downsampling to approximately the size the texture is displayed at.
+ // Look at interest and CPU usage for instances that aren't in any of the above states.
+
+ // Heuristic -- if the media texture's approximate screen area is less than 1/4 of the native area of the texture,
+ // turn it down to low instead of normal. This may downsample for plugins that support it.
+ bool media_is_small = false;
+ F64 approximate_interest = pimpl->getApproximateTextureInterest();
+ if(approximate_interest == 0.0f)
+ {
+ // this media has no current size, which probably means it's not loaded.
+ media_is_small = true;
+ }
+ else if(pimpl->getInterest() < (approximate_interest / 4))
+ {
+ media_is_small = true;
+ }
+
+ if(pimpl->getInterest() == 0.0f)
{
- F32 approximate_interest_dimension = (F32) sqrt(pimpl->getInterest());
+ // This media is completely invisible, due to being outside the view frustrum or out of range.
+ new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
+ }
+ else if(check_cpu_usage && (total_cpu > max_cpu))
+ {
+ // Higher priority plugins have already used up the CPU budget. Set remaining ones to slideshow priority.
+ new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
+ }
+ else if((impl_count_interest_normal < (int)max_normal) && !media_is_small)
+ {
+ // Up to max_normal inworld get normal priority
+ new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
+ impl_count_interest_normal++;
+ }
+ else if (impl_count_interest_low + impl_count_interest_normal < (int)max_low + (int)max_normal)
+ {
+ // The next max_low inworld get turned down
+ new_priority = LLPluginClassMedia::PRIORITY_LOW;
+ impl_count_interest_low++;
+
+ // Set the low priority size for downsampling to approximately the size the texture is displayed at.
+ {
+ F32 approximate_interest_dimension = (F32) sqrt(pimpl->getInterest());
- pimpl->setLowPrioritySizeLimit(llround(approximate_interest_dimension));
+ pimpl->setLowPrioritySizeLimit(llround(approximate_interest_dimension));
+ }
+ }
+ else
+ {
+ // Any additional impls (up to max_instances) get very infrequent time
+ new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
}
}
- else
- {
- // Any additional impls (up to max_instances) get very infrequent time
- new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
- }
- }
- if(!pimpl->getUsedInUI() && (new_priority != LLPluginClassMedia::PRIORITY_UNLOADED))
- {
- // This is a loadable inworld impl -- the last one in the list in this class defines the lowest loadable interest.
- lowest_interest_loadable = pimpl;
+ if(!pimpl->getUsedInUI() && (new_priority != LLPluginClassMedia::PRIORITY_UNLOADED))
+ {
+ // This is a loadable inworld impl -- the last one in the list in this class defines the lowest loadable interest.
+ lowest_interest_loadable = pimpl;
- impl_count_total++;
- }
+ 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? */
- && new_priority > LLPluginClassMedia::PRIORITY_HIDDEN)
- {
- new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
- }
- else if (!gFocusMgr.getAppHasFocus() /* viewer window lost focus? */
- && new_priority > LLPluginClassMedia::PRIORITY_LOW)
- {
- new_priority = LLPluginClassMedia::PRIORITY_LOW;
- }
+ // 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? */
+ && new_priority > LLPluginClassMedia::PRIORITY_HIDDEN)
+ {
+ new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
+ }
+ else if (!gFocusMgr.getAppHasFocus() /* viewer window lost focus? */
+ && new_priority > LLPluginClassMedia::PRIORITY_LOW)
+ {
+ new_priority = LLPluginClassMedia::PRIORITY_LOW;
+ }
- if(!inworld_media_enabled)
- {
- // If inworld media is locked out, force all inworld media to stay unloaded.
- if(!pimpl->getUsedInUI())
+ if(!inworld_media_enabled)
{
- new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
+ // If inworld media is locked out, force all inworld media to stay unloaded.
+ if(!pimpl->getUsedInUI())
+ {
+ new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
+ }
}
- }
- // update the audio stream here as well
- if( !inworld_audio_enabled)
- {
- if(LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio())
+ // update the audio stream here as well
+ if( !inworld_audio_enabled)
{
- gAudiop->stopInternetStream();
+ if(LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio())
+ {
+ LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
+ }
}
- }
- pimpl->setPriority(new_priority);
+ pimpl->setPriority(new_priority);
- if(pimpl->getUsedInUI())
- {
- // Any impls used in the UI should not be in the proximity list.
- pimpl->mProximity = -1;
- }
- else
- {
- proximity_order.push_back(pimpl);
- }
+ if(pimpl->getUsedInUI())
+ {
+ // Any impls used in the UI should not be in the proximity list.
+ pimpl->mProximity = -1;
+ }
+ else
+ {
+ proximity_order.push_back(pimpl);
+ }
- total_cpu += pimpl->getCPUUsage();
+ total_cpu += pimpl->getCPUUsage();
- if (!pimpl->getUsedInUI() && pimpl->hasMedia())
- {
- sAnyMediaShowing = true;
- }
+ if (!pimpl->getUsedInUI() && pimpl->hasMedia())
+ {
+ sAnyMediaShowing = true;
+ }
+ }
}
// Re-calculate this every time.
@@ -1014,6 +1034,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
}
else
{
+ LLFastTimer t(FTM_MEDIA_SORT2);
// Use a distance-based sort for proximity values.
std::stable_sort(proximity_order.begin(), proximity_order.end(), proximity_comparitor);
}
@@ -1069,13 +1090,24 @@ void LLViewerMedia::setAllMediaEnabled(bool val)
gAudiop &&
LLViewerMedia::hasParcelAudio())
{
- gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+ if (LLAudioEngine::AUDIO_PAUSED == gAudiop->isInternetStreamPlaying())
+ {
+ // 'false' means unpause
+ gAudiop->pauseInternetStream(false);
+ }
+ else
+ {
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLViewerMedia::getParcelAudioURL());
+ }
}
}
else {
// This actually unloads the impl, as opposed to "stop"ping the media
LLViewerParcelMedia::stop();
- if (gAudiop) gAudiop->stopInternetStream();
+ if (gAudiop)
+ {
+ LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
+ }
}
}
@@ -1484,11 +1516,14 @@ void LLViewerMedia::setOpenIDCookie()
std::string profile_url = getProfileURL("");
LLURL raw_profile_url( profile_url.c_str() );
+ LL_DEBUGS("MediaAuth") << "Requesting " << profile_url << llendl;
+ LL_DEBUGS("MediaAuth") << "sOpenIDCookie = [" << sOpenIDCookie << "]" << llendl;
LLHTTPClient::get(profile_url,
new LLViewerMediaWebProfileResponder(raw_profile_url.getAuthority()),
headers);
- doOnetimeEarlyHTTPRequests();
+ // FUI: No longer perform the user_status query
+ //doOnetimeEarlyHTTPRequests();
}
}
@@ -1715,7 +1750,8 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id,
mNavigateSuspended(false),
mNavigateSuspendedDeferred(false),
mIsUpdated(false),
- mTrustedBrowser(false)
+ mTrustedBrowser(false),
+ mZoomFactor(1.0)
{
// Set up the mute list observer if it hasn't been set up already.
@@ -1861,7 +1897,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
if(plugin_basename.empty())
{
- LL_WARNS("Media") << "Couldn't find plugin for media type " << media_type << LL_ENDL;
+ LL_WARNS_ONCE("Media") << "Couldn't find plugin for media type " << media_type << LL_ENDL;
}
else
{
@@ -1887,11 +1923,11 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
llstat s;
if(LLFile::stat(launcher_name, &s))
{
- LL_WARNS("Media") << "Couldn't find launcher at " << launcher_name << LL_ENDL;
+ LL_WARNS_ONCE("Media") << "Couldn't find launcher at " << launcher_name << LL_ENDL;
}
else if(LLFile::stat(plugin_name, &s))
{
- LL_WARNS("Media") << "Couldn't find plugin at " << plugin_name << LL_ENDL;
+ LL_WARNS_ONCE("Media") << "Couldn't find plugin at " << plugin_name << LL_ENDL;
}
else
{
@@ -2301,6 +2337,17 @@ void LLViewerMediaImpl::clearCache()
}
}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+void LLViewerMediaImpl::setPageZoomFactor( double factor )
+{
+ if(mMediaSource && factor != mZoomFactor)
+ {
+ mZoomFactor = factor;
+ mMediaSource->set_page_zoom_factor( factor );
+ }
+}
+
//////////////////////////////////////////////////////////////////////////////////////////
void LLViewerMediaImpl::mouseDown(S32 x, S32 y, MASK mask, S32 button)
{
@@ -2449,44 +2496,58 @@ BOOL LLViewerMediaImpl::handleMouseUp(S32 x, S32 y, MASK mask)
//////////////////////////////////////////////////////////////////////////////////////////
void LLViewerMediaImpl::updateJavascriptObject()
{
+ static LLFrameTimer timer ;
+
if ( mMediaSource )
{
// flag to expose this information to internal browser or not.
bool enable = gSavedSettings.getBOOL("BrowserEnableJSObject");
+
+ if(!enable)
+ {
+ return ; //no need to go further.
+ }
+
+ if(timer.getElapsedTimeF32() < 1.0f)
+ {
+ return ; //do not update more than once per second.
+ }
+ timer.reset() ;
+
mMediaSource->jsEnableObject( enable );
// these values are only menaingful after login so don't set them before
bool logged_in = LLLoginInstance::getInstance()->authSuccess();
if ( logged_in )
{
- // current location within a region
- LLVector3 agent_pos = gAgent.getPositionAgent();
- double x = agent_pos.mV[ VX ];
- double y = agent_pos.mV[ VY ];
- double z = agent_pos.mV[ VZ ];
- mMediaSource->jsAgentLocationEvent( x, y, z );
-
- // current location within the grid
- LLVector3d agent_pos_global = gAgent.getLastPositionGlobal();
- double global_x = agent_pos_global.mdV[ VX ];
- double global_y = agent_pos_global.mdV[ VY ];
- double global_z = agent_pos_global.mdV[ VZ ];
- mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z );
-
- // current agent orientation
- double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] );
- double angle = rotation * RAD_TO_DEG;
- if ( angle < 0.0f ) angle = 360.0f + angle; // TODO: has to be a better way to get orientation!
- mMediaSource->jsAgentOrientationEvent( angle );
-
- // current region agent is in
- std::string region_name("");
- LLViewerRegion* region = gAgent.getRegion();
- if ( region )
- {
- region_name = region->getName();
- };
- mMediaSource->jsAgentRegionEvent( region_name );
+ // current location within a region
+ LLVector3 agent_pos = gAgent.getPositionAgent();
+ double x = agent_pos.mV[ VX ];
+ double y = agent_pos.mV[ VY ];
+ double z = agent_pos.mV[ VZ ];
+ mMediaSource->jsAgentLocationEvent( x, y, z );
+
+ // current location within the grid
+ LLVector3d agent_pos_global = gAgent.getLastPositionGlobal();
+ double global_x = agent_pos_global.mdV[ VX ];
+ double global_y = agent_pos_global.mdV[ VY ];
+ double global_z = agent_pos_global.mdV[ VZ ];
+ mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z );
+
+ // current agent orientation
+ double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] );
+ double angle = rotation * RAD_TO_DEG;
+ if ( angle < 0.0f ) angle = 360.0f + angle; // TODO: has to be a better way to get orientation!
+ mMediaSource->jsAgentOrientationEvent( angle );
+
+ // current region agent is in
+ std::string region_name("");
+ LLViewerRegion* region = gAgent.getRegion();
+ if ( region )
+ {
+ region_name = region->getName();
+ };
+ mMediaSource->jsAgentRegionEvent( region_name );
}
// language code the viewer is set to
@@ -2505,7 +2566,7 @@ void LLViewerMediaImpl::updateJavascriptObject()
}
//////////////////////////////////////////////////////////////////////////////////////////
-std::string LLViewerMediaImpl::getName() const
+const std::string& LLViewerMediaImpl::getName() const
{
if (mMediaSource)
{
@@ -2767,8 +2828,14 @@ bool LLViewerMediaImpl::canNavigateBack()
}
//////////////////////////////////////////////////////////////////////////////////////////
+static LLFastTimer::DeclareTimer FTM_MEDIA_DO_UPDATE("Do Update");
+static LLFastTimer::DeclareTimer FTM_MEDIA_GET_DATA("Get Data");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SET_SUBIMAGE("Set Subimage");
+
+
void LLViewerMediaImpl::update()
{
+ LLFastTimer t(FTM_MEDIA_DO_UPDATE);
if(mMediaSource == NULL)
{
if(mPriority == LLPluginClassMedia::PRIORITY_UNLOADED)
@@ -2868,20 +2935,27 @@ void LLViewerMediaImpl::update()
if(width > 0 && height > 0)
{
- U8* data = mMediaSource->getBitsData();
+ U8* data = NULL;
+ {
+ LLFastTimer t(FTM_MEDIA_GET_DATA);
+ data = mMediaSource->getBitsData();
+ }
// Offset the pixels pointer to match x_pos and y_pos
data += ( x_pos * mMediaSource->getTextureDepth() * mMediaSource->getBitsWidth() );
data += ( y_pos * mMediaSource->getTextureDepth() );
- placeholder_image->setSubImage(
- data,
- mMediaSource->getBitsWidth(),
- mMediaSource->getBitsHeight(),
- x_pos,
- y_pos,
- width,
- height);
+ {
+ LLFastTimer t(FTM_MEDIA_SET_SUBIMAGE);
+ placeholder_image->setSubImage(
+ data,
+ mMediaSource->getBitsWidth(),
+ mMediaSource->getBitsHeight(),
+ x_pos,
+ y_pos,
+ width,
+ height);
+ }
}
@@ -3340,7 +3414,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
{
// This close request is directed at another instance
pass_through = false;
- LLFloaterMediaBrowser::closeRequest(uuid);
LLFloaterWebContent::closeRequest(uuid);
}
}
@@ -3360,7 +3433,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
{
// This request is directed at another instance
pass_through = false;
- LLFloaterMediaBrowser::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight());
LLFloaterWebContent::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight());
}
}
@@ -3454,8 +3526,11 @@ BOOL LLViewerMediaImpl::isUpdated()
return mIsUpdated ;
}
+static LLFastTimer::DeclareTimer FTM_MEDIA_CALCULATE_INTEREST("Calculate Interest");
+
void LLViewerMediaImpl::calculateInterest()
{
+ LLFastTimer t(FTM_MEDIA_CALCULATE_INTEREST);
LLViewerMediaTexture* texture = LLViewerTextureManager::findMediaTexture( mTextureId );
if(texture != NULL)
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 0b69b8f0c1..15dcda59cf 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -250,6 +250,7 @@ public:
std::string getMediaEntryURL() { return mMediaEntryURL; }
void setHomeURL(const std::string& home_url, const std::string& mime_type = LLStringUtil::null) { mHomeURL = home_url; mHomeMimeType = mime_type;};
void clearCache();
+ void setPageZoomFactor( double factor );
std::string getMimeType() { return mMimeType; }
void scaleMouse(S32 *mouse_x, S32 *mouse_y);
void scaleTextureCoords(const LLVector2& texture_coords, S32 *x, S32 *y);
@@ -317,7 +318,7 @@ public:
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask) { return FALSE; };
/*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask) { return FALSE; };
/*virtual*/ BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask) {return FALSE; };
- /*virtual*/ std::string getName() const;
+ /*virtual*/ const std::string& getName() const;
/*virtual*/ void screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const {};
/*virtual*/ void localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const {};
@@ -416,6 +417,7 @@ private:
private:
// a single media url with some data and an impl.
LLPluginClassMedia* mMediaSource;
+ F64 mZoomFactor;
LLUUID mTextureId;
bool mMovieImageHasMips;
std::string mMediaURL; // The last media url set with NavigateTo
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 754731b290..3a1b8d7623 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -30,6 +30,7 @@
// linden library includes
#include "llavatarnamecache.h" // IDEVO
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llcombobox.h"
#include "llinventorypanel.h"
#include "llnotifications.h"
@@ -41,7 +42,6 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llagentpilot.h"
-#include "llbottomtray.h"
#include "llcompilequeue.h"
#include "llconsole.h"
#include "lldaycyclemanager.h"
@@ -76,13 +76,11 @@
#include "llinventoryfunctions.h"
#include "llpanellogin.h"
#include "llpanelblockedlist.h"
-#include "llmenucommands.h"
#include "llmoveview.h"
#include "llparcel.h"
#include "llrootview.h"
#include "llsceneview.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltextureview.h"
#include "lltoolcomp.h"
@@ -373,8 +371,6 @@ void set_underclothes_menu_options()
void init_menus()
{
- S32 top = gViewerWindow->getRootView()->getRect().getHeight();
-
// Initialize actions
initialize_menus();
@@ -446,11 +442,13 @@ void init_menus()
{
color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" );
}
+
+ LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder");
+
gMenuBarView = LLUICtrlFactory::getInstance()->createFromFile<LLMenuBarGL>("menu_viewer.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT));
+ gMenuBarView->setRect(LLRect(0, menu_bar_holder->getRect().mTop, 0, menu_bar_holder->getRect().mTop - MENU_BAR_HEIGHT));
gMenuBarView->setBackgroundColor( color );
- LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder");
menu_bar_holder->addChild(gMenuBarView);
gViewerWindow->setMenuBackgroundColor(false,
@@ -863,51 +861,6 @@ class LLAdvancedCheckFeature : public view_listener_t
}
};
-void toggle_destination_and_avatar_picker(const LLSD& show)
-{
- S32 panel_idx = show.isDefined() ? show.asInteger() : -1;
- LLView* container = gViewerWindow->getRootView()->findChildView("avatar_picker_and_destination_guide_container");
- if (!container) return;
-
- LLMediaCtrl* destinations = container->findChild<LLMediaCtrl>("destination_guide_contents");
- LLMediaCtrl* avatar_picker = container->findChild<LLMediaCtrl>("avatar_picker_contents");
- if (!destinations || !avatar_picker) return;
-
- LLButton* avatar_btn = gViewerWindow->getRootView()->getChildView("bottom_tray")->getChild<LLButton>("avatar_btn");
- LLButton* destination_btn = gViewerWindow->getRootView()->getChildView("bottom_tray")->getChild<LLButton>("destination_btn");
-
- if (panel_idx == 0
- && !destinations->getVisible())
- { // opening destinations guide
- container->setVisible(true);
- destinations->setVisible(true);
- avatar_picker->setVisible(false);
- LLFirstUse::notUsingDestinationGuide(false);
- avatar_btn->setToggleState(false);
- destination_btn->setToggleState(true);
- gSavedSettings.setS32("DestinationsAndAvatarsVisibility", 0);
- }
- else if (panel_idx == 1
- && !avatar_picker->getVisible())
- { // opening avatar picker
- container->setVisible(true);
- destinations->setVisible(false);
- avatar_picker->setVisible(true);
- avatar_btn->setToggleState(true);
- destination_btn->setToggleState(false);
- gSavedSettings.setS32("DestinationsAndAvatarsVisibility", 1);
- }
- else
- { // toggling off dest guide or avatar picker
- container->setVisible(false);
- destinations->setVisible(false);
- avatar_picker->setVisible(false);
- avatar_btn->setToggleState(false);
- destination_btn->setToggleState(false);
- gSavedSettings.setS32("DestinationsAndAvatarsVisibility", -1);
- }
-};
-
//////////////////
// INFO DISPLAY //
@@ -1014,6 +967,10 @@ U32 info_display_from_string(std::string info_display)
{
return LLPipeline::RENDER_DEBUG_SCULPTED;
}
+ else if ("wind vectors" == info_display)
+ {
+ return LLPipeline::RENDER_DEBUG_WIND_VECTORS;
+ }
else
{
return 0;
@@ -1026,6 +983,8 @@ class LLAdvancedToggleInfoDisplay : public view_listener_t
{
U32 info_display = info_display_from_string( userdata.asString() );
+ LL_INFOS("ViewerMenu") << "toggle " << userdata.asString() << LL_ENDL;
+
if ( info_display != 0 )
{
LLPipeline::toggleRenderDebug( (void*)info_display );
@@ -1043,6 +1002,8 @@ class LLAdvancedCheckInfoDisplay : public view_listener_t
U32 info_display = info_display_from_string( userdata.asString() );
bool new_value = false;
+ LL_INFOS("ViewerMenu") << "check " << userdata.asString() << LL_ENDL;
+
if ( info_display != 0 )
{
new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
@@ -1076,26 +1037,6 @@ class LLAdvancedCheckRandomizeFramerate : public view_listener_t
}
};
-void run_vectorize_perf_test(void *)
-{
- gSavedSettings.setBOOL("VectorizePerfTest", TRUE);
-}
-
-
-////////////////////////////////
-// RUN Vectorized Perform Test//
-////////////////////////////////
-
-
-class LLAdvancedVectorizePerfTest : public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- run_vectorize_perf_test(NULL);
- return true;
- }
-};
-
///////////////////////////
//// PERIODIC SLOW FRAME //
///////////////////////////
@@ -2633,7 +2574,7 @@ void handle_object_inspect()
{
LLSD key;
key["task"] = "task";
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("inventory", key);
}
/*
@@ -3158,6 +3099,12 @@ void handle_avatar_eject(const LLSD& avatar_id)
}
}
+bool my_profile_visible()
+{
+ LLFloater* floaterp = LLAvatarActions::getProfileFloater(gAgentID);
+ return floaterp && floaterp->isInVisibleChain();
+}
+
bool enable_freeze_eject(const LLSD& avatar_id)
{
// Use avatar_id if available, otherwise default to right-click avatar
@@ -3392,15 +3339,6 @@ bool enable_sitdown_self()
return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying();
}
-// Used from the login screen to aid in UI work on side tray
-void handle_show_side_tray()
-{
- LLSideTray* side_tray = LLSideTray::getInstance();
- LLView* root = gViewerWindow->getRootView();
- // automatically removes and re-adds if there already
- root->addChild(side_tray);
-}
-
// Toggle one of "People" panel tabs in side tray.
class LLTogglePanelPeopleTab : public view_listener_t
{
@@ -3411,21 +3349,11 @@ class LLTogglePanelPeopleTab : public view_listener_t
LLSD param;
param["people_panel_tab_name"] = panel_name;
- static LLPanel* friends_panel = NULL;
- static LLPanel* groups_panel = NULL;
- static LLPanel* nearby_panel = NULL;
-
- if (panel_name == "friends_panel")
- {
- return togglePeoplePanel(friends_panel, panel_name, param);
- }
- else if (panel_name == "groups_panel")
- {
- return togglePeoplePanel(groups_panel, panel_name, param);
- }
- else if (panel_name == "nearby_panel")
+ if ( panel_name == "friends_panel"
+ || panel_name == "groups_panel"
+ || panel_name == "nearby_panel")
{
- return togglePeoplePanel(nearby_panel, panel_name, param);
+ return togglePeoplePanel(panel_name, param);
}
else
{
@@ -3433,16 +3361,20 @@ class LLTogglePanelPeopleTab : public view_listener_t
}
}
- static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param)
+ static bool togglePeoplePanel(const std::string& panel_name, const LLSD& param)
{
+ LLPanel *panel = LLFloaterSidePanelContainer::getPanel("people", panel_name);
if(!panel)
+ return false;
+
+ if (panel->isInVisibleChain())
{
- panel = LLSideTray::getInstance()->getPanel(panel_name);
- if(!panel)
- return false;
+ LLFloaterReg::hideInstance("people");
+ }
+ else
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param) ;
}
-
- LLSideTray::getInstance()->togglePanel(panel, "panel_people", param);
return true;
}
@@ -3757,7 +3689,7 @@ void handle_reset_view()
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit selector should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
}
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
@@ -3822,6 +3754,43 @@ class LLViewDefaultUISize : public view_listener_t
}
};
+class LLViewToggleUI : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLNotification::Params params("ConfirmHideUI");
+ params.functor.function(boost::bind(&LLViewToggleUI::confirm, this, _1, _2));
+ LLSD substitutions;
+#if LL_DARWIN
+ substitutions["SHORTCUT"] = "Cmd+Shift+U";
+#else
+ substitutions["SHORTCUT"] = "Ctrl+Shift+U";
+#endif
+ params.substitutions = substitutions;
+ if (gViewerWindow->getUIVisibility())
+ {
+ // hiding, so show notification
+ LLNotifications::instance().add(params);
+ }
+ else
+ {
+ LLNotifications::instance().forceResponse(params, 0);
+ }
+
+ return true;
+ }
+
+ void confirm(const LLSD& notification, const LLSD& response)
+ {
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ if (option == 0) // OK
+ {
+ gViewerWindow->setUIVisibility(!gViewerWindow->getUIVisibility());
+ }
+ }
+};
+
class LLEditDuplicate : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -4539,6 +4508,13 @@ bool tools_visible_take_object()
return !is_selection_buy_not_take();
}
+bool enable_how_to_visible(const LLSD& param)
+{
+ LLFloaterWebContent::Params p;
+ p.target = "__help_how_to";
+ return LLFloaterReg::instanceVisible("how_to", p);
+}
+
class LLToolsEnableBuyOrTake : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -5324,7 +5300,7 @@ class LLWorldCreateLandmark : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
return true;
}
@@ -5334,7 +5310,7 @@ class LLWorldPlaceProfile : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
return true;
}
@@ -5430,6 +5406,34 @@ class LLAvatarAddFriend : public view_listener_t
}
};
+
+class LLAvatarToggleMyProfile : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLFloater* instance = LLAvatarActions::getProfileFloater(gAgent.getID());
+ if (LLFloater::isMinimized(instance))
+ {
+ instance->setMinimized(FALSE);
+ instance->setFocus(TRUE);
+ }
+ else if (!LLFloater::isShown(instance))
+ {
+ LLAvatarActions::showProfile(gAgent.getID());
+ }
+ else if (!instance->hasFocus() && !instance->getIsChrome())
+ {
+ instance->setFocus(TRUE);
+ }
+ else
+ {
+ instance->closeFloater();
+ }
+ return true;
+ }
+};
+
+
class LLAvatarAddContact : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -5575,22 +5579,22 @@ void handle_viewer_disable_message_log(void*)
void handle_customize_avatar()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
}
void handle_edit_outfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
void handle_edit_shape()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_shape"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_shape"));
}
void handle_edit_physics()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_physics"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_physics"));
}
void handle_report_abuse()
@@ -5660,18 +5664,18 @@ class LLShowSidetrayPanel : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- std::string panel_name = userdata.asString();
+ std::string floater_name = userdata.asString();
- LLPanel* panel = LLSideTray::getInstance()->getPanel(panel_name);
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel(floater_name);
if (panel)
{
if (panel->isInVisibleChain())
{
- LLSideTray::getInstance()->hidePanel(panel_name);
+ LLFloaterReg::getInstance(floater_name)->closeFloater();
}
else
{
- LLSideTray::getInstance()->showPanel(panel_name);
+ LLFloaterReg::getInstance(floater_name)->openFloater();
}
}
return true;
@@ -5682,9 +5686,9 @@ class LLSidetrayPanelVisible : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- std::string panel_name = userdata.asString();
+ std::string floater_name = userdata.asString();
// Toggle the panel
- if (LLSideTray::getInstance()->isPanelActive(panel_name))
+ if (LLFloaterReg::getInstance(floater_name)->isInVisibleChain())
{
return true;
}
@@ -6870,6 +6874,22 @@ class LLToolsEnableSaveToObjectInventory : public view_listener_t
}
};
+class LLToggleHowTo : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLFloaterWebContent::Params p;
+ std::string url = gSavedSettings.getString("HowToHelpURL");
+ p.url = LLWeb::expandURLSubstitutions(url, LLSD());
+ p.show_chrome = false;
+ p.target = "__help_how_to";
+ p.show_page_title = false;
+ p.preferred_media_size = LLRect(0, 460, 335, 0);
+
+ LLFloaterReg::toggleInstanceOrBringToFront("how_to", p);
+ return true;
+ }
+};
class LLViewEnableMouselook : public view_listener_t
{
@@ -7289,7 +7309,7 @@ void handle_web_browser_test(const LLSD& param)
void handle_web_content_test(const LLSD& param)
{
std::string url = param.asString();
- LLWeb::loadWebURLInternal(url);
+ LLWeb::loadURLInternal(url);
}
void handle_buy_currency_test(void*)
@@ -7660,7 +7680,14 @@ class LLWorldEnvSettings : public view_listener_t
}
else
{
- LLEnvManagerNew::instance().setUseDayCycle(LLEnvManagerNew::instance().getDayCycleName());
+ LLEnvManagerNew &envmgr = LLEnvManagerNew::instance();
+ // reset all environmental settings to track the region defaults, make this reset 'sticky' like the other sun settings.
+ bool use_fixed_sky = false;
+ bool use_region_settings = true;
+ envmgr.setUserPrefs(envmgr.getWaterPresetName(),
+ envmgr.getSkyPresetName(),
+ envmgr.getDayCycleName(),
+ use_fixed_sky, use_region_settings);
}
return true;
@@ -7762,24 +7789,6 @@ class LLWorldPostProcess : 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 handle_flush_name_caches()
{
// Toggle display names on and off to flush
@@ -7823,55 +7832,6 @@ class LLToggleUIHints : public view_listener_t
}
};
-class LLCheckSessionsSettings : public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- std::string expected = userdata.asString();
- return gSavedSettings.getString("SessionSettingsFile") == expected;
- }
-};
-
-class LLChangeMode : public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- std::string mode = userdata.asString();
- if (mode == "basic")
- {
- if (gSavedSettings.getString("SessionSettingsFile") != "settings_minimal.xml")
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "settings_minimal.xml", _1, _2));
- }
- return true;
- }
- else if (mode == "advanced")
- {
- if (gSavedSettings.getString("SessionSettingsFile") != "")
- {
- LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "", _1, _2));
- }
- return true;
- }
- return false;
- }
-
- static void onModeChangeConfirm(const std::string& new_session_settings_file, const LLSD& notification, const LLSD& response)
- {
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- gSavedSettings.getControl("SessionSettingsFile")->set(new_session_settings_file);
- LLAppViewer::instance()->requestQuit();
- break;
- case 1:
- default:
- break;
- }
- }
-};
-
void LLUploadCostCalculator::calculateCost()
{
S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
@@ -7978,9 +7938,17 @@ void initialize_menus()
view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts");
+
+ commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+
// Agent
commit.add("Agent.toggleFlying", boost::bind(&LLAgent::toggleFlying));
enable.add("Agent.enableFlying", boost::bind(&LLAgent::enableFlying));
+ commit.add("Agent.PressMicrophone", boost::bind(&LLAgent::pressMicrophone, _2));
+ commit.add("Agent.ReleaseMicrophone", boost::bind(&LLAgent::releaseMicrophone, _2));
+ commit.add("Agent.ToggleMicrophone", boost::bind(&LLAgent::toggleMicrophone, _2));
+ enable.add("Agent.IsMicrophoneOn", boost::bind(&LLAgent::isMicrophoneOn, _2));
+ enable.add("Agent.IsActionAllowed", boost::bind(&LLAgent::isActionAllowed, _2));
// File menu
init_menu_file();
@@ -8007,6 +7975,7 @@ void initialize_menus()
view_listener_t::addMenu(new LLZoomer(1/1.2f), "View.ZoomIn");
view_listener_t::addMenu(new LLZoomer(DEFAULT_FIELD_OF_VIEW, false), "View.ZoomDefault");
view_listener_t::addMenu(new LLViewDefaultUISize(), "View.DefaultUISize");
+ view_listener_t::addMenu(new LLViewToggleUI(), "View.ToggleUI");
view_listener_t::addMenu(new LLViewEnableMouselook(), "View.EnableMouselook");
view_listener_t::addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam");
@@ -8022,7 +7991,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedAgentFlyingInfo(), "Agent.getFlying");
// World menu
- commit.add("World.Chat", boost::bind(&handle_chat, (void*)NULL));
view_listener_t::addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
view_listener_t::addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
view_listener_t::addMenu(new LLWorldPlaceProfile(), "World.PlaceProfile");
@@ -8043,9 +8011,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLWorldEnableEnvPreset(), "World.EnableEnvPreset");
view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess");
- 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");
@@ -8082,6 +8047,8 @@ void initialize_menus()
// Help menu
// most items use the ShowFloater method
+ view_listener_t::addMenu(new LLToggleHowTo(), "Help.ToggleHowTo");
+ enable.add("Help.HowToVisible", boost::bind(&enable_how_to_visible, _2));
// Advanced menu
view_listener_t::addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
@@ -8119,7 +8086,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
view_listener_t::addMenu(new LLAdvancedCheckPeriodicSlowFrame(), "Advanced.CheckPeriodicSlowFrame");
- view_listener_t::addMenu(new LLAdvancedVectorizePerfTest(), "Advanced.VectorizePerfTest");
view_listener_t::addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest");
view_listener_t::addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest");
view_listener_t::addMenu(new LLAdvancedHandleAttachedLightParticles(), "Advanced.HandleAttachedLightParticles");
@@ -8160,7 +8126,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
view_listener_t::addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
view_listener_t::addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
- commit.add("Advanced.ShowSideTray", boost::bind(&handle_show_side_tray));
// Advanced > XUI
commit.add("Advanced.ReloadColorSettings", boost::bind(&LLUIColorTable::loadFromSettings, LLUIColorTable::getInstance()));
@@ -8275,6 +8240,10 @@ void initialize_menus()
view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call");
enable.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse");
+ view_listener_t::addMenu(new LLAvatarToggleMyProfile(), "Avatar.ToggleMyProfile");
+ enable.add("Avatar.IsMyProfileOpen", boost::bind(&my_profile_visible));
+
+ commit.add("Avatar.OpenMarketplace", boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL")));
view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend");
enable.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2));
@@ -8347,6 +8316,8 @@ void initialize_menus()
view_listener_t::addMenu(new LLGoToObject(), "GoToObject");
commit.add("PayObject", boost::bind(&handle_give_money_dialog));
+ commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+
enable.add("EnablePayObject", boost::bind(&enable_pay_object));
enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
enable.add("EnableEdit", boost::bind(&enable_object_edit));
@@ -8359,11 +8330,5 @@ void initialize_menus()
view_listener_t::addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected");
view_listener_t::addMenu(new LLEditableSelectedMono(), "EditableSelectedMono");
-
view_listener_t::addMenu(new LLToggleUIHints(), "ToggleUIHints");
- view_listener_t::addMenu(new LLCheckSessionsSettings(), "CheckSessionSettings");
- view_listener_t::addMenu(new LLChangeMode(), "ChangeMode");
-
- commit.add("Destination.show", boost::bind(&toggle_destination_and_avatar_picker, 0));
- commit.add("Avatar.show", boost::bind(&toggle_destination_and_avatar_picker, 1));
}
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index b4e239b0cd..87cb4efbc4 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -126,8 +126,6 @@ bool enable_pay_object();
bool enable_buy_object();
bool handle_go_to();
-void toggle_destination_and_avatar_picker(const LLSD& show);
-
// Export to XML or Collada
void handle_export_selected( void * );
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index b9293b3b31..7e830e14bf 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -528,23 +528,7 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
{
gViewerWindow->playSnapshotAnimAndSound();
- LLPointer<LLImageFormatted> formatted;
- switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat")))
- {
- case LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG:
- formatted = new LLImageJPEG(gSavedSettings.getS32("SnapshotQuality"));
- break;
- case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG:
- formatted = new LLImagePNG;
- break;
- case LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP:
- formatted = new LLImageBMP;
- break;
- default:
- llwarns << "Unknown Local Snapshot format" << llendl;
- return true;
- }
-
+ LLPointer<LLImageFormatted> formatted = new LLImagePNG;
formatted->enableOverSize() ;
formatted->encode(raw, 0);
formatted->disableOverSize() ;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 39c863318b..d7c50ad9a4 100644..100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -59,8 +59,9 @@
#include "llfloaterland.h"
#include "llfloaterregioninfo.h"
#include "llfloaterlandholdings.h"
-#include "llfloaterpostcard.h"
#include "llfloaterpreference.h"
+#include "llfloatersidepanelcontainer.h"
+#include "llfloatersnapshot.h"
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
#include "llinventoryfunctions.h"
@@ -73,7 +74,6 @@
#include "llrecentpeople.h"
#include "llscriptfloater.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstartup.h"
#include "llsky.h"
#include "llslurl.h"
@@ -1192,9 +1192,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
LLInventoryCategory* parent_folder = gInventory.getCategory(item->getParentUUID());
if ("inventory_handler" == from_name)
{
- //we have to filter inventory_handler messages to avoid notification displaying
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id", item->getUUID()));
+ LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id", item->getUUID()));
}
else if("group_offer" == from_name)
{
@@ -1203,7 +1201,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
LLSD args;
args["type"] = "landmark";
args["id"] = obj_id;
- LLSideTray::getInstance()->showPanel("panel_places", args);
+ LLFloaterSidePanelContainer::showPanel("places", args);
continue;
}
@@ -1258,14 +1256,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
const BOOL auto_open =
gSavedSettings.getBOOL("ShowInInventory") && // don't open if showininventory is false
!from_name.empty(); // don't open if it's not from anyone.
- LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
- if(active_panel)
- {
- LL_DEBUGS("Messaging") << "Highlighting" << obj_id << LL_ENDL;
- LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus();
- active_panel->setSelection(obj_id, TAKE_FOCUS_NO);
- gFocusMgr.setKeyboardFocus(focus_ctrl);
- }
+ LLInventoryPanel::openInventoryPanelAndSetSelection(auto_open, obj_id);
}
}
@@ -1809,8 +1800,11 @@ void LLOfferInfo::initRespondFunctionMap()
void inventory_offer_handler(LLOfferInfo* info)
{
- //If muted, don't even go through the messaging stuff. Just curtail the offer here.
- if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName))
+ // If muted, don't even go through the messaging stuff. Just curtail the offer here.
+ // Passing in a null UUID handles the case of where you have muted one of your own objects by_name.
+ // The solution for STORM-1297 seems to handle the cases where the object is owned by someone else.
+ if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName) ||
+ LLMuteList::getInstance()->isMuted(LLUUID::null, info->mFromName))
{
info->forceResponse(IOR_MUTE);
return;
@@ -2190,7 +2184,7 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m
// Treat like a system message and put in chat history.
chat.mText = av_name.getCompleteName() + ": " + message;
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
{
nearby_chat->addMessage(chat);
@@ -2776,7 +2770,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Note: lie to Nearby Chat, pretending that this is NOT an IM, because
// IMs from obejcts don't open IM sessions.
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(SYSTEM_FROM != name && nearby_chat)
{
chat.mOwnerID = from_id;
@@ -3144,7 +3138,7 @@ protected:
{
// filter out non-interesting responeses
if ( !translation.empty()
- && (m_toLang != detected_language)
+ && (mToLang != detected_language)
&& (LLStringUtil::compareInsensitive(translation, m_origMesg) != 0) )
{
m_chat.mText += " (" + translation + ")";
@@ -3153,10 +3147,13 @@ protected:
LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
}
- void handleFailure()
+ void handleFailure(int status, const std::string& err_msg)
{
- LLTranslate::TranslationReceiver::handleFailure();
- m_chat.mText += " (?)";
+ llwarns << "Translation failed for mesg " << m_origMesg << " toLang " << mToLang << " fromLang " << mFromLang << llendl;
+
+ std::string msg = LLTrans::getString("TranslationFailed", LLSD().with("[REASON]", err_msg));
+ LLStringUtil::replaceString(msg, "\n", " "); // we want one-line error messages
+ m_chat.mText += " (" + msg + ")";
LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
}
@@ -3394,7 +3391,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
const std::string from_lang = ""; // leave empty to trigger autodetect
const std::string to_lang = LLTranslate::getTranslateLanguage();
- LLHTTPClient::ResponderPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
+ LLTranslate::TranslationReceiverPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
LLTranslate::translateMessage(result, from_lang, to_lang, mesg);
}
else
@@ -3665,6 +3662,9 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
gCacheName->setUpstream(sim);
*/
+ // Make sure we're standing
+ gAgent.standUp();
+
// now, use the circuit info to tell simulator about us!
LL_INFOS("Messaging") << "process_teleport_finish() Enabling "
<< sim_host << " with code " << msg->mOurCircuitCode << LL_ENDL;
@@ -6490,7 +6490,7 @@ void process_user_info_reply(LLMessageSystem* msg, void**)
msg->getString( "UserData", "DirectoryVisibility", dir_visibility);
LLFloaterPreference::updateUserInfo(dir_visibility, im_via_email, email);
- LLFloaterPostcard::updateUserInfo(email);
+ LLFloaterSnapshot::setAgentEmail(email);
}
@@ -6825,7 +6825,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
LLPanelLandCovenant::updateEstateOwnerName(owner_name);
LLFloaterBuyLand::updateEstateOwnerName(owner_name);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
if (panel)
{
panel->updateEstateName(estate_name);
@@ -6959,7 +6959,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
LLPanelLandCovenant::updateCovenantText(covenant_text);
LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
if (panel)
{
panel->updateCovenantText(covenant_text);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index d81e67bfe2..b8772971aa 100755..100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3219,12 +3219,12 @@ F32 LLViewerObject::getLinksetPhysicsCost()
return mLinksetPhysicsCost;
}
-F32 LLViewerObject::getStreamingCost(S32* bytes, S32* visible_bytes)
+F32 LLViewerObject::getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_value) const
{
return 0.f;
}
-U32 LLViewerObject::getTriangleCount()
+U32 LLViewerObject::getTriangleCount(S32* vcount) const
{
return 0;
}
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 53e951e483..c8152e1539 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -1,4 +1,4 @@
-/**
+/**
* @file llviewerobject.h
* @brief Description of LLViewerObject class, which is the base class for most objects in the viewer.
*
@@ -340,8 +340,8 @@ public:
virtual void setScale(const LLVector3 &scale, BOOL damped = FALSE);
- virtual F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL);
- virtual U32 getTriangleCount();
+ virtual F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const;
+ virtual U32 getTriangleCount(S32* vcount = NULL) const;
virtual U32 getHighLODTriangleCount();
void setObjectCost(F32 cost);
@@ -811,7 +811,7 @@ public:
virtual F32 getPartSize(S32 idx);
virtual void getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
+ LLStrider<LLVector4a>& verticesp,
LLStrider<LLVector3>& normalsp,
LLStrider<LLVector2>& texcoordsp,
LLStrider<LLColor4U>& colorsp,
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 8db72da1ee..9db784101d 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -67,6 +67,7 @@
#include "llworld.h"
#include "roles_constants.h"
#include "llweb.h"
+#include "llvieweraudio.h"
const F32 PARCEL_COLLISION_DRAW_SECS = 1.f;
@@ -113,7 +114,7 @@ LLViewerParcelMgr::LLViewerParcelMgr()
mRequestResult(0),
mWestSouth(),
mEastNorth(),
- mSelectedDwell(0.f),
+ mSelectedDwell(DWELL_NAN),
mAgentParcelSequenceID(-1),
mHoverRequestResult(0),
mHoverWestSouth(),
@@ -233,7 +234,7 @@ void LLViewerParcelMgr::getDisplayInfo(S32* area_out, S32* claim_out,
S32 price = 0;
S32 rent = 0;
BOOL for_sale = FALSE;
- F32 dwell = 0.f;
+ F32 dwell = DWELL_NAN;
if (mSelected)
{
@@ -579,7 +580,7 @@ void LLViewerParcelMgr::deselectLand()
mCurrentParcel->mBanList.clear();
//mCurrentParcel->mRenterList.reset();
- mSelectedDwell = 0.f;
+ mSelectedDwell = DWELL_NAN;
// invalidate parcel selection so that existing users of this selection can clean up
mCurrentParcelSelection->setParcel(NULL);
@@ -1457,6 +1458,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
S32 other_clean_time = 0;
+ LLViewerParcelMgr& parcel_mgr = LLViewerParcelMgr::instance();
+
msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RequestResult, request_result );
msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SequenceID, sequence_id );
@@ -1472,31 +1475,31 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
if (sequence_id == SELECTED_PARCEL_SEQ_ID)
{
// ...selected parcels report this sequence id
- LLViewerParcelMgr::getInstance()->mRequestResult = PARCEL_RESULT_SUCCESS;
- parcel = LLViewerParcelMgr::getInstance()->mCurrentParcel;
+ parcel_mgr.mRequestResult = PARCEL_RESULT_SUCCESS;
+ parcel = parcel_mgr.mCurrentParcel;
}
else if (sequence_id == HOVERED_PARCEL_SEQ_ID)
{
- LLViewerParcelMgr::getInstance()->mHoverRequestResult = PARCEL_RESULT_SUCCESS;
- parcel = LLViewerParcelMgr::getInstance()->mHoverParcel;
+ parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+ parcel = parcel_mgr.mHoverParcel;
}
else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
sequence_id == COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID ||
sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
{
- LLViewerParcelMgr::getInstance()->mHoverRequestResult = PARCEL_RESULT_SUCCESS;
- parcel = LLViewerParcelMgr::getInstance()->mCollisionParcel;
+ parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+ parcel = parcel_mgr.mCollisionParcel;
}
- else if (sequence_id == 0 || sequence_id > LLViewerParcelMgr::getInstance()->mAgentParcelSequenceID)
+ else if (sequence_id == 0 || sequence_id > parcel_mgr.mAgentParcelSequenceID)
{
// new agent parcel
- LLViewerParcelMgr::getInstance()->mAgentParcelSequenceID = sequence_id;
- parcel = LLViewerParcelMgr::getInstance()->mAgentParcel;
+ parcel_mgr.mAgentParcelSequenceID = sequence_id;
+ parcel = parcel_mgr.mAgentParcel;
}
else
{
llinfos << "out of order agent parcel sequence id " << sequence_id
- << " last good " << LLViewerParcelMgr::getInstance()->mAgentParcelSequenceID
+ << " last good " << parcel_mgr.mAgentParcelSequenceID
<< llendl;
return;
}
@@ -1567,15 +1570,15 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
parcel->setRegionDenyAgeUnverifiedOverride(region_deny_age_unverified_override);
parcel->unpackMessage(msg);
- if (parcel == LLViewerParcelMgr::getInstance()->mAgentParcel)
+ if (parcel == parcel_mgr.mAgentParcel)
{
- S32 bitmap_size = LLViewerParcelMgr::getInstance()->mParcelsPerEdge
- * LLViewerParcelMgr::getInstance()->mParcelsPerEdge
+ S32 bitmap_size = parcel_mgr.mParcelsPerEdge
+ * parcel_mgr.mParcelsPerEdge
/ 8;
U8* bitmap = new U8[ bitmap_size ];
msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
- LLViewerParcelMgr::getInstance()->writeAgentParcelFromBitmap(bitmap);
+ parcel_mgr.writeAgentParcelFromBitmap(bitmap);
delete[] bitmap;
// Let interesting parties know about agent parcel change.
@@ -1595,11 +1598,11 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
if (sequence_id == SELECTED_PARCEL_SEQ_ID)
{
// Update selected counts
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedSelfCount = self_count;
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedOtherCount = other_count;
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedPublicCount = public_count;
+ parcel_mgr.mCurrentParcelSelection->mSelectedSelfCount = self_count;
+ parcel_mgr.mCurrentParcelSelection->mSelectedOtherCount = other_count;
+ parcel_mgr.mCurrentParcelSelection->mSelectedPublicCount = public_count;
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedMultipleOwners =
+ parcel_mgr.mCurrentParcelSelection->mSelectedMultipleOwners =
(request_result == PARCEL_RESULT_MULTIPLE);
// Select the whole parcel
@@ -1610,67 +1613,67 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
{
// don't muck with the westsouth and eastnorth.
// just highlight it
- LLVector3 west_south = region->getPosRegionFromGlobal(LLViewerParcelMgr::getInstance()->mWestSouth);
- LLVector3 east_north = region->getPosRegionFromGlobal(LLViewerParcelMgr::getInstance()->mEastNorth);
+ LLVector3 west_south = region->getPosRegionFromGlobal(parcel_mgr.mWestSouth);
+ LLVector3 east_north = region->getPosRegionFromGlobal(parcel_mgr.mEastNorth);
- LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mHighlightSegments);
- LLViewerParcelMgr::getInstance()->writeHighlightSegments(
+ parcel_mgr.resetSegments(parcel_mgr.mHighlightSegments);
+ parcel_mgr.writeHighlightSegments(
west_south.mV[VX],
west_south.mV[VY],
east_north.mV[VX],
east_north.mV[VY] );
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mWholeParcelSelected = FALSE;
+ parcel_mgr.mCurrentParcelSelection->mWholeParcelSelected = FALSE;
}
else if (0 == local_id)
{
// this is public land, just highlight the selection
- LLViewerParcelMgr::getInstance()->mWestSouth = region->getPosGlobalFromRegion( aabb_min );
- LLViewerParcelMgr::getInstance()->mEastNorth = region->getPosGlobalFromRegion( aabb_max );
+ parcel_mgr.mWestSouth = region->getPosGlobalFromRegion( aabb_min );
+ parcel_mgr.mEastNorth = region->getPosGlobalFromRegion( aabb_max );
- LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mHighlightSegments);
- LLViewerParcelMgr::getInstance()->writeHighlightSegments(
+ parcel_mgr.resetSegments(parcel_mgr.mHighlightSegments);
+ parcel_mgr.writeHighlightSegments(
aabb_min.mV[VX],
aabb_min.mV[VY],
aabb_max.mV[VX],
aabb_max.mV[VY] );
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mWholeParcelSelected = TRUE;
+ parcel_mgr.mCurrentParcelSelection->mWholeParcelSelected = TRUE;
}
else
{
- LLViewerParcelMgr::getInstance()->mWestSouth = region->getPosGlobalFromRegion( aabb_min );
- LLViewerParcelMgr::getInstance()->mEastNorth = region->getPosGlobalFromRegion( aabb_max );
+ parcel_mgr.mWestSouth = region->getPosGlobalFromRegion( aabb_min );
+ parcel_mgr.mEastNorth = region->getPosGlobalFromRegion( aabb_max );
// Owned land, highlight the boundaries
- S32 bitmap_size = LLViewerParcelMgr::getInstance()->mParcelsPerEdge
- * LLViewerParcelMgr::getInstance()->mParcelsPerEdge
+ S32 bitmap_size = parcel_mgr.mParcelsPerEdge
+ * parcel_mgr.mParcelsPerEdge
/ 8;
U8* bitmap = new U8[ bitmap_size ];
msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
- LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mHighlightSegments);
- LLViewerParcelMgr::getInstance()->writeSegmentsFromBitmap( bitmap, LLViewerParcelMgr::getInstance()->mHighlightSegments );
+ parcel_mgr.resetSegments(parcel_mgr.mHighlightSegments);
+ parcel_mgr.writeSegmentsFromBitmap( bitmap, parcel_mgr.mHighlightSegments );
delete[] bitmap;
bitmap = NULL;
- LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mWholeParcelSelected = TRUE;
+ parcel_mgr.mCurrentParcelSelection->mWholeParcelSelected = TRUE;
}
// Request access list information for this land
- LLViewerParcelMgr::getInstance()->sendParcelAccessListRequest(AL_ACCESS | AL_BAN);
+ parcel_mgr.sendParcelAccessListRequest(AL_ACCESS | AL_BAN);
// Request the media url filter list for this land
- LLViewerParcelMgr::getInstance()->requestParcelMediaURLFilter();
+ parcel_mgr.requestParcelMediaURLFilter();
// Request dwell for this land, if it's not public land.
- LLViewerParcelMgr::getInstance()->mSelectedDwell = 0.f;
+ parcel_mgr.mSelectedDwell = DWELL_NAN;
if (0 != local_id)
{
- LLViewerParcelMgr::getInstance()->sendParcelDwellRequest();
+ parcel_mgr.sendParcelDwellRequest();
}
- LLViewerParcelMgr::getInstance()->mSelected = TRUE;
- LLViewerParcelMgr::getInstance()->notifyObservers();
+ parcel_mgr.mSelected = TRUE;
+ parcel_mgr.notifyObservers();
}
}
else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
@@ -1678,32 +1681,32 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
{
// We're about to collide with this parcel
- LLViewerParcelMgr::getInstance()->mRenderCollision = TRUE;
- LLViewerParcelMgr::getInstance()->mCollisionTimer.reset();
+ parcel_mgr.mRenderCollision = TRUE;
+ parcel_mgr.mCollisionTimer.reset();
// Differentiate this parcel if we are banned from it.
if (sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
{
- LLViewerParcelMgr::getInstance()->mCollisionBanned = BA_BANNED;
+ parcel_mgr.mCollisionBanned = BA_BANNED;
}
else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID)
{
- LLViewerParcelMgr::getInstance()->mCollisionBanned = BA_NOT_IN_GROUP;
+ parcel_mgr.mCollisionBanned = BA_NOT_IN_GROUP;
}
else
{
- LLViewerParcelMgr::getInstance()->mCollisionBanned = BA_NOT_ON_LIST;
+ parcel_mgr.mCollisionBanned = BA_NOT_ON_LIST;
}
- S32 bitmap_size = LLViewerParcelMgr::getInstance()->mParcelsPerEdge
- * LLViewerParcelMgr::getInstance()->mParcelsPerEdge
+ S32 bitmap_size = parcel_mgr.mParcelsPerEdge
+ * parcel_mgr.mParcelsPerEdge
/ 8;
U8* bitmap = new U8[ bitmap_size ];
msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
- LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mCollisionSegments);
- LLViewerParcelMgr::getInstance()->writeSegmentsFromBitmap( bitmap, LLViewerParcelMgr::getInstance()->mCollisionSegments );
+ parcel_mgr.resetSegments(parcel_mgr.mCollisionSegments);
+ parcel_mgr.writeSegmentsFromBitmap( bitmap, parcel_mgr.mCollisionSegments );
delete[] bitmap;
bitmap = NULL;
@@ -1714,18 +1717,21 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
LLViewerRegion *region = LLWorld::getInstance()->getRegion( msg->getSender() );
if (region)
{
- LLViewerParcelMgr::getInstance()->mHoverWestSouth = region->getPosGlobalFromRegion( aabb_min );
- LLViewerParcelMgr::getInstance()->mHoverEastNorth = region->getPosGlobalFromRegion( aabb_max );
+ parcel_mgr.mHoverWestSouth = region->getPosGlobalFromRegion( aabb_min );
+ parcel_mgr.mHoverEastNorth = region->getPosGlobalFromRegion( aabb_max );
}
else
{
- LLViewerParcelMgr::getInstance()->mHoverWestSouth.clearVec();
- LLViewerParcelMgr::getInstance()->mHoverEastNorth.clearVec();
+ parcel_mgr.mHoverWestSouth.clearVec();
+ parcel_mgr.mHoverEastNorth.clearVec();
}
}
else
{
- // look for music.
+ // Check for video
+ LLViewerParcelMedia::update(parcel);
+
+ // Then check for music
if (gAudiop)
{
if (parcel)
@@ -1736,46 +1742,34 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
std::string music_url = music_url_raw;
LLStringUtil::trim(music_url);
- // On entering a new parcel, stop the last stream if the
- // new parcel has a different music url. (Empty URL counts
- // as different.)
- const std::string& stream_url = gAudiop->getInternetStreamURL();
-
- if (music_url.empty() || music_url != stream_url)
+ // If there is a new music URL and it's valid, play it.
+ if (music_url.size() > 12)
{
- // URL is different from one currently playing.
- gAudiop->stopInternetStream();
-
- // If there is a new music URL and it's valid, play it.
- if (music_url.size() > 12)
+ if (music_url.substr(0,7) == "http://")
{
- if (music_url.substr(0,7) == "http://")
- {
- optionally_start_music(music_url);
- }
- else
- {
- llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl;
- // clears the URL
- gAudiop->startInternetStream(LLStringUtil::null);
- }
+ optionally_start_music(music_url);
}
- else if (!gAudiop->getInternetStreamURL().empty())
+ else
{
- llinfos << "Stopping parcel music (parcel stream URL is empty)" << llendl;
- gAudiop->startInternetStream(LLStringUtil::null);
+ llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl;
+ // clears the URL
+ // null value causes fade out
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
}
}
+ else if (!gAudiop->getInternetStreamURL().empty())
+ {
+ llinfos << "Stopping parcel music (parcel stream URL is empty)" << llendl;
+ // null value causes fade out
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
+ }
}
else
{
// Public land has no music
- gAudiop->stopInternetStream();
+ LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
}
}//if gAudiop
-
- // now check for video
- LLViewerParcelMedia::update( parcel );
};
}
@@ -1794,7 +1788,11 @@ void optionally_start_music(const std::string& music_url)
gSavedSettings.getBOOL("MediaTentativeAutoPlay")))
{
llinfos << "Starting parcel music " << music_url << llendl;
- gAudiop->startInternetStream(music_url);
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(music_url);
+ }
+ else
+ {
+ LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
}
}
}
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 68d8978ea8..cac8d8391c 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -43,6 +43,8 @@ class LLParcel;
class LLViewerTexture;
class LLViewerRegion;
+const F32 DWELL_NAN = -1.0f; // A dwell having this value will be displayed as Loading...
+
// Constants for sendLandOwner
//const U32 NO_NEIGHBOR_JOIN = 0x0;
//const U32 ALL_NEIGHBOR_JOIN = U32( NORTH_MASK
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp
index e619b89f9b..a0cf2fc803 100644
--- a/indra/newview/llviewerparceloverlay.cpp
+++ b/indra/newview/llviewerparceloverlay.cpp
@@ -884,14 +884,14 @@ S32 LLViewerParcelOverlay::renderPropertyLines ()
// Always fudge a little vertically.
pull_toward_camera.mV[VZ] += 0.01f;
- glMatrixMode( GL_MODELVIEW );
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
// Move to appropriate region coords
LLVector3 origin = mRegion->getOriginAgent();
- glTranslatef( origin.mV[VX], origin.mV[VY], origin.mV[VZ] );
+ gGL.translatef( origin.mV[VX], origin.mV[VY], origin.mV[VZ] );
- glTranslatef(pull_toward_camera.mV[VX], pull_toward_camera.mV[VY],
+ gGL.translatef(pull_toward_camera.mV[VX], pull_toward_camera.mV[VY],
pull_toward_camera.mV[VZ]);
// Include +1 because vertices are fenceposts.
@@ -990,7 +990,7 @@ S32 LLViewerParcelOverlay::renderPropertyLines ()
}
- glPopMatrix();
+ gGL.popMatrix();
return drawn;
}
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index 12f6a0dd1c..f738b84bb9 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -124,4 +124,7 @@
// Library includes from llmessage project
#include "llcachename.h"
+// Library includes from llxuixml
+#include "llinitparam.h"
+
#endif
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 36106752a2..bddc07b395 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -32,6 +32,7 @@
#include "llfile.h"
#include "llviewerwindow.h"
+#include "llwindow.h"
#include "llviewercontrol.h"
#include "pipeline.h"
#include "llworld.h"
@@ -58,6 +59,7 @@ using std::make_pair;
using std::string;
BOOL LLViewerShaderMgr::sInitialized = FALSE;
+bool LLViewerShaderMgr::sSkipReload = false;
LLVector4 gShinyOrigin;
@@ -65,15 +67,23 @@ LLVector4 gShinyOrigin;
LLGLSLShader gOcclusionProgram;
LLGLSLShader gCustomAlphaProgram;
LLGLSLShader gGlowCombineProgram;
+LLGLSLShader gSplatTextureRectProgram;
+LLGLSLShader gGlowCombineFXAAProgram;
LLGLSLShader gTwoTextureAddProgram;
+LLGLSLShader gOneTextureNoColorProgram;
+LLGLSLShader gDebugProgram;
+LLGLSLShader gAlphaMaskProgram;
//object shaders
LLGLSLShader gObjectSimpleProgram;
+LLGLSLShader gObjectPreviewProgram;
LLGLSLShader gObjectSimpleWaterProgram;
LLGLSLShader gObjectSimpleAlphaMaskProgram;
LLGLSLShader gObjectSimpleWaterAlphaMaskProgram;
LLGLSLShader gObjectFullbrightProgram;
LLGLSLShader gObjectFullbrightWaterProgram;
+LLGLSLShader gObjectEmissiveProgram;
+LLGLSLShader gObjectEmissiveWaterProgram;
LLGLSLShader gObjectFullbrightAlphaMaskProgram;
LLGLSLShader gObjectFullbrightWaterAlphaMaskProgram;
LLGLSLShader gObjectFullbrightShinyProgram;
@@ -81,13 +91,23 @@ LLGLSLShader gObjectFullbrightShinyWaterProgram;
LLGLSLShader gObjectShinyProgram;
LLGLSLShader gObjectShinyWaterProgram;
LLGLSLShader gObjectBumpProgram;
+LLGLSLShader gTreeProgram;
+LLGLSLShader gTreeWaterProgram;
+LLGLSLShader gObjectFullbrightNoColorProgram;
+LLGLSLShader gObjectFullbrightNoColorWaterProgram;
LLGLSLShader gObjectSimpleNonIndexedProgram;
+LLGLSLShader gObjectSimpleNonIndexedTexGenProgram;
+LLGLSLShader gObjectSimpleNonIndexedTexGenWaterProgram;
LLGLSLShader gObjectSimpleNonIndexedWaterProgram;
LLGLSLShader gObjectAlphaMaskNonIndexedProgram;
LLGLSLShader gObjectAlphaMaskNonIndexedWaterProgram;
+LLGLSLShader gObjectAlphaMaskNoColorProgram;
+LLGLSLShader gObjectAlphaMaskNoColorWaterProgram;
LLGLSLShader gObjectFullbrightNonIndexedProgram;
LLGLSLShader gObjectFullbrightNonIndexedWaterProgram;
+LLGLSLShader gObjectEmissiveNonIndexedProgram;
+LLGLSLShader gObjectEmissiveNonIndexedWaterProgram;
LLGLSLShader gObjectFullbrightShinyNonIndexedProgram;
LLGLSLShader gObjectFullbrightShinyNonIndexedWaterProgram;
LLGLSLShader gObjectShinyNonIndexedProgram;
@@ -96,11 +116,13 @@ LLGLSLShader gObjectShinyNonIndexedWaterProgram;
//object hardware skinning shaders
LLGLSLShader gSkinnedObjectSimpleProgram;
LLGLSLShader gSkinnedObjectFullbrightProgram;
+LLGLSLShader gSkinnedObjectEmissiveProgram;
LLGLSLShader gSkinnedObjectFullbrightShinyProgram;
LLGLSLShader gSkinnedObjectShinySimpleProgram;
LLGLSLShader gSkinnedObjectSimpleWaterProgram;
LLGLSLShader gSkinnedObjectFullbrightWaterProgram;
+LLGLSLShader gSkinnedObjectEmissiveWaterProgram;
LLGLSLShader gSkinnedObjectFullbrightShinyWaterProgram;
LLGLSLShader gSkinnedObjectShinySimpleWaterProgram;
@@ -124,6 +146,7 @@ LLGLSLShader gImpostorProgram;
LLGLSLShader gWLSkyProgram;
LLGLSLShader gWLCloudProgram;
+
// Effects Shaders
LLGLSLShader gGlowProgram;
LLGLSLShader gGlowExtractProgram;
@@ -132,18 +155,19 @@ LLGLSLShader gPostNightVisionProgram;
// Deferred rendering shaders
LLGLSLShader gDeferredImpostorProgram;
-LLGLSLShader gDeferredEdgeProgram;
LLGLSLShader gDeferredWaterProgram;
LLGLSLShader gDeferredDiffuseProgram;
LLGLSLShader gDeferredDiffuseAlphaMaskProgram;
LLGLSLShader gDeferredNonIndexedDiffuseProgram;
LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskProgram;
+LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
LLGLSLShader gDeferredSkinnedDiffuseProgram;
LLGLSLShader gDeferredSkinnedBumpProgram;
LLGLSLShader gDeferredSkinnedAlphaProgram;
LLGLSLShader gDeferredBumpProgram;
LLGLSLShader gDeferredTerrainProgram;
LLGLSLShader gDeferredTreeProgram;
+LLGLSLShader gDeferredTreeShadowProgram;
LLGLSLShader gDeferredAvatarProgram;
LLGLSLShader gDeferredAvatarAlphaProgram;
LLGLSLShader gDeferredLightProgram;
@@ -160,25 +184,23 @@ LLGLSLShader gDeferredAttachmentShadowProgram;
LLGLSLShader gDeferredAlphaProgram;
LLGLSLShader gDeferredAvatarEyesProgram;
LLGLSLShader gDeferredFullbrightProgram;
-LLGLSLShader gDeferredGIProgram;
-LLGLSLShader gDeferredGIFinalProgram;
-LLGLSLShader gDeferredPostGIProgram;
+LLGLSLShader gDeferredEmissiveProgram;
LLGLSLShader gDeferredPostProgram;
+LLGLSLShader gDeferredCoFProgram;
+LLGLSLShader gDeferredDoFCombineProgram;
+LLGLSLShader gFXAAProgram;
LLGLSLShader gDeferredPostNoDoFProgram;
LLGLSLShader gDeferredWLSkyProgram;
LLGLSLShader gDeferredWLCloudProgram;
LLGLSLShader gDeferredStarProgram;
-LLGLSLShader gLuminanceGatherProgram;
-
-
-//current avatar shader parameter pointer
-GLint gAvatarMatrixParam;
+LLGLSLShader gNormalMapGenProgram;
LLViewerShaderMgr::LLViewerShaderMgr() :
mVertexShaderLevel(SHADER_COUNT, 0),
mMaxAvatarShaderLevel(0)
{
/// Make sure WL Sky is the first program
+ //ONLY shaders that need WL Param management should be added here
mShaderList.push_back(&gWLSkyProgram);
mShaderList.push_back(&gWLCloudProgram);
mShaderList.push_back(&gAvatarProgram);
@@ -187,33 +209,42 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
mShaderList.push_back(&gWaterProgram);
mShaderList.push_back(&gAvatarEyeballProgram);
mShaderList.push_back(&gObjectSimpleProgram);
+ mShaderList.push_back(&gObjectPreviewProgram);
mShaderList.push_back(&gImpostorProgram);
+ mShaderList.push_back(&gObjectFullbrightNoColorProgram);
+ mShaderList.push_back(&gObjectFullbrightNoColorWaterProgram);
mShaderList.push_back(&gObjectSimpleAlphaMaskProgram);
mShaderList.push_back(&gObjectBumpProgram);
- mShaderList.push_back(&gUIProgram);
- mShaderList.push_back(&gCustomAlphaProgram);
- mShaderList.push_back(&gGlowCombineProgram);
- mShaderList.push_back(&gTwoTextureAddProgram);
- mShaderList.push_back(&gSolidColorProgram);
- mShaderList.push_back(&gOcclusionProgram);
+ mShaderList.push_back(&gObjectEmissiveProgram);
+ mShaderList.push_back(&gObjectEmissiveWaterProgram);
mShaderList.push_back(&gObjectFullbrightProgram);
mShaderList.push_back(&gObjectFullbrightAlphaMaskProgram);
mShaderList.push_back(&gObjectFullbrightShinyProgram);
mShaderList.push_back(&gObjectFullbrightShinyWaterProgram);
mShaderList.push_back(&gObjectSimpleNonIndexedProgram);
+ mShaderList.push_back(&gObjectSimpleNonIndexedTexGenProgram);
+ mShaderList.push_back(&gObjectSimpleNonIndexedTexGenWaterProgram);
mShaderList.push_back(&gObjectSimpleNonIndexedWaterProgram);
mShaderList.push_back(&gObjectAlphaMaskNonIndexedProgram);
mShaderList.push_back(&gObjectAlphaMaskNonIndexedWaterProgram);
+ mShaderList.push_back(&gObjectAlphaMaskNoColorProgram);
+ mShaderList.push_back(&gObjectAlphaMaskNoColorWaterProgram);
+ mShaderList.push_back(&gTreeProgram);
+ mShaderList.push_back(&gTreeWaterProgram);
mShaderList.push_back(&gObjectFullbrightNonIndexedProgram);
mShaderList.push_back(&gObjectFullbrightNonIndexedWaterProgram);
+ mShaderList.push_back(&gObjectEmissiveNonIndexedProgram);
+ mShaderList.push_back(&gObjectEmissiveNonIndexedWaterProgram);
mShaderList.push_back(&gObjectFullbrightShinyNonIndexedProgram);
mShaderList.push_back(&gObjectFullbrightShinyNonIndexedWaterProgram);
mShaderList.push_back(&gSkinnedObjectSimpleProgram);
mShaderList.push_back(&gSkinnedObjectFullbrightProgram);
+ mShaderList.push_back(&gSkinnedObjectEmissiveProgram);
mShaderList.push_back(&gSkinnedObjectFullbrightShinyProgram);
mShaderList.push_back(&gSkinnedObjectShinySimpleProgram);
mShaderList.push_back(&gSkinnedObjectSimpleWaterProgram);
mShaderList.push_back(&gSkinnedObjectFullbrightWaterProgram);
+ mShaderList.push_back(&gSkinnedObjectEmissiveWaterProgram);
mShaderList.push_back(&gSkinnedObjectFullbrightShinyWaterProgram);
mShaderList.push_back(&gSkinnedObjectShinySimpleWaterProgram);
mShaderList.push_back(&gTerrainProgram);
@@ -227,24 +258,16 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
mShaderList.push_back(&gObjectShinyNonIndexedWaterProgram);
mShaderList.push_back(&gUnderWaterProgram);
mShaderList.push_back(&gDeferredSunProgram);
- mShaderList.push_back(&gDeferredBlurLightProgram);
mShaderList.push_back(&gDeferredSoftenProgram);
- mShaderList.push_back(&gDeferredLightProgram);
- mShaderList.push_back(&gDeferredMultiLightProgram);
mShaderList.push_back(&gDeferredAlphaProgram);
mShaderList.push_back(&gDeferredSkinnedAlphaProgram);
mShaderList.push_back(&gDeferredFullbrightProgram);
+ mShaderList.push_back(&gDeferredEmissiveProgram);
mShaderList.push_back(&gDeferredAvatarEyesProgram);
- mShaderList.push_back(&gDeferredPostGIProgram);
- mShaderList.push_back(&gDeferredEdgeProgram);
- mShaderList.push_back(&gDeferredPostProgram);
- mShaderList.push_back(&gDeferredGIProgram);
- mShaderList.push_back(&gDeferredGIFinalProgram);
mShaderList.push_back(&gDeferredWaterProgram);
mShaderList.push_back(&gDeferredAvatarAlphaProgram);
mShaderList.push_back(&gDeferredWLSkyProgram);
mShaderList.push_back(&gDeferredWLCloudProgram);
- mShaderList.push_back(&gDeferredStarProgram);
}
LLViewerShaderMgr::~LLViewerShaderMgr()
@@ -268,80 +291,13 @@ void LLViewerShaderMgr::initAttribsAndUniforms(void)
{
if (mReservedAttribs.empty())
{
- mReservedAttribs.push_back("materialColor");
- mReservedAttribs.push_back("specularColor");
- mReservedAttribs.push_back("binormal");
- mReservedAttribs.push_back("object_weight");
-
- mAvatarAttribs.reserve(5);
- mAvatarAttribs.push_back("weight");
- mAvatarAttribs.push_back("clothing");
- mAvatarAttribs.push_back("gWindDir");
- mAvatarAttribs.push_back("gSinWaveParams");
- mAvatarAttribs.push_back("gGravity");
+ LLShaderMgr::initAttribsAndUniforms();
mAvatarUniforms.push_back("matrixPalette");
+ mAvatarUniforms.push_back("gWindDir");
+ mAvatarUniforms.push_back("gSinWaveParams");
+ mAvatarUniforms.push_back("gGravity");
- mReservedUniforms.reserve(24);
- mReservedUniforms.push_back("diffuseMap");
- mReservedUniforms.push_back("specularMap");
- mReservedUniforms.push_back("bumpMap");
- mReservedUniforms.push_back("environmentMap");
- mReservedUniforms.push_back("cloude_noise_texture");
- mReservedUniforms.push_back("fullbright");
- mReservedUniforms.push_back("lightnorm");
- mReservedUniforms.push_back("sunlight_color");
- mReservedUniforms.push_back("ambient");
- mReservedUniforms.push_back("blue_horizon");
- mReservedUniforms.push_back("blue_density");
- mReservedUniforms.push_back("haze_horizon");
- mReservedUniforms.push_back("haze_density");
- mReservedUniforms.push_back("cloud_shadow");
- mReservedUniforms.push_back("density_multiplier");
- mReservedUniforms.push_back("distance_multiplier");
- mReservedUniforms.push_back("max_y");
- mReservedUniforms.push_back("glow");
- mReservedUniforms.push_back("cloud_color");
- mReservedUniforms.push_back("cloud_pos_density1");
- mReservedUniforms.push_back("cloud_pos_density2");
- mReservedUniforms.push_back("cloud_scale");
- mReservedUniforms.push_back("gamma");
- mReservedUniforms.push_back("scene_light_strength");
-
- mReservedUniforms.push_back("depthMap");
- mReservedUniforms.push_back("shadowMap0");
- mReservedUniforms.push_back("shadowMap1");
- mReservedUniforms.push_back("shadowMap2");
- mReservedUniforms.push_back("shadowMap3");
- mReservedUniforms.push_back("shadowMap4");
- mReservedUniforms.push_back("shadowMap5");
-
- mReservedUniforms.push_back("normalMap");
- mReservedUniforms.push_back("positionMap");
- mReservedUniforms.push_back("diffuseRect");
- mReservedUniforms.push_back("specularRect");
- mReservedUniforms.push_back("noiseMap");
- mReservedUniforms.push_back("lightFunc");
- mReservedUniforms.push_back("lightMap");
- mReservedUniforms.push_back("luminanceMap");
- mReservedUniforms.push_back("giLightMap");
- mReservedUniforms.push_back("giMip");
- mReservedUniforms.push_back("edgeMap");
- mReservedUniforms.push_back("bloomMap");
- mReservedUniforms.push_back("sunLightMap");
- mReservedUniforms.push_back("localLightMap");
- mReservedUniforms.push_back("projectionMap");
- mReservedUniforms.push_back("diffuseGIMap");
- mReservedUniforms.push_back("specularGIMap");
- mReservedUniforms.push_back("normalGIMap");
- mReservedUniforms.push_back("minpGIMap");
- mReservedUniforms.push_back("maxpGIMap");
- mReservedUniforms.push_back("depthGIMap");
- mReservedUniforms.push_back("lastDiffuseGIMap");
- mReservedUniforms.push_back("lastNormalGIMap");
- mReservedUniforms.push_back("lastMinpGIMap");
- mReservedUniforms.push_back("lastMaxpGIMap");
-
mWLUniforms.push_back("camPosLocal");
mTerrainUniforms.reserve(5);
@@ -397,17 +353,29 @@ void LLViewerShaderMgr::setShaders()
//setShaders might be called redundantly by gSavedSettings, so return on reentrance
static bool reentrance = false;
- if (!gPipeline.mInitialized || !sInitialized || reentrance)
+ if (!gPipeline.mInitialized || !sInitialized || reentrance || sSkipReload)
{
return;
}
- //setup preprocessor definitions
- LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")));
- LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
+ LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")), 1);
+
+ //NEVER use more than 16 texture channels (work around for prevalent driver bug)
+ LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
reentrance = true;
+ if (LLRender::sGLCoreProfile)
+ {
+ if (!gSavedSettings.getBOOL("VertexShaderEnable"))
+ { //vertex shaders MUST be enabled to use core profile
+ gSavedSettings.setBOOL("VertexShaderEnable", TRUE);
+ }
+ }
+
+ //setup preprocessor definitions
+ LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
+
// Make sure the compiled shader map is cleared before we recompile shaders.
mShaderObjects.clear();
@@ -446,6 +414,7 @@ void LLViewerShaderMgr::setShaders()
mMaxAvatarShaderLevel = 0;
LLGLSLShader::sNoFixedFunction = false;
+ LLVertexBuffer::unbind();
if (LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")
&& gSavedSettings.getBOOL("VertexShaderEnable"))
{
@@ -466,15 +435,8 @@ void LLViewerShaderMgr::setShaders()
gSavedSettings.getBOOL("WindLightUseAtmosShaders"))
{
if (gSavedSettings.getS32("RenderShadowDetail") > 0)
- {
- if (gSavedSettings.getBOOL("RenderDeferredGI"))
- { //shadows + gi
- deferred_class = 3;
- }
- else
- { //shadows
- deferred_class = 2;
- }
+ { //shadows
+ deferred_class = 2;
}
else
{ //no shadows
@@ -497,11 +459,7 @@ void LLViewerShaderMgr::setShaders()
wl_class = 1;
}
- if(!gSavedSettings.getBOOL("EnableRippleWater"))
- {
- water_class = 0;
- }
-
+
// Trigger a full rebuild of the fallback skybox / cubemap if we've toggled windlight shaders
if (mVertexShaderLevel[SHADER_WINDLIGHT] != wl_class && gSky.mVOSkyp.notNull())
{
@@ -633,13 +591,21 @@ void LLViewerShaderMgr::setShaders()
void LLViewerShaderMgr::unloadShaders()
{
gOcclusionProgram.unload();
+ gDebugProgram.unload();
+ gAlphaMaskProgram.unload();
gUIProgram.unload();
gCustomAlphaProgram.unload();
gGlowCombineProgram.unload();
+ gSplatTextureRectProgram.unload();
+ gGlowCombineFXAAProgram.unload();
gTwoTextureAddProgram.unload();
+ gOneTextureNoColorProgram.unload();
gSolidColorProgram.unload();
+ gObjectFullbrightNoColorProgram.unload();
+ gObjectFullbrightNoColorWaterProgram.unload();
gObjectSimpleProgram.unload();
+ gObjectPreviewProgram.unload();
gImpostorProgram.unload();
gObjectSimpleAlphaMaskProgram.unload();
gObjectBumpProgram.unload();
@@ -647,6 +613,8 @@ void LLViewerShaderMgr::unloadShaders()
gObjectSimpleWaterAlphaMaskProgram.unload();
gObjectFullbrightProgram.unload();
gObjectFullbrightWaterProgram.unload();
+ gObjectEmissiveProgram.unload();
+ gObjectEmissiveWaterProgram.unload();
gObjectFullbrightAlphaMaskProgram.unload();
gObjectFullbrightWaterAlphaMaskProgram.unload();
@@ -656,11 +624,19 @@ void LLViewerShaderMgr::unloadShaders()
gObjectShinyWaterProgram.unload();
gObjectSimpleNonIndexedProgram.unload();
+ gObjectSimpleNonIndexedTexGenProgram.unload();
+ gObjectSimpleNonIndexedTexGenWaterProgram.unload();
gObjectSimpleNonIndexedWaterProgram.unload();
gObjectAlphaMaskNonIndexedProgram.unload();
gObjectAlphaMaskNonIndexedWaterProgram.unload();
+ gObjectAlphaMaskNoColorProgram.unload();
+ gObjectAlphaMaskNoColorWaterProgram.unload();
gObjectFullbrightNonIndexedProgram.unload();
gObjectFullbrightNonIndexedWaterProgram.unload();
+ gObjectEmissiveNonIndexedProgram.unload();
+ gObjectEmissiveNonIndexedWaterProgram.unload();
+ gTreeProgram.unload();
+ gTreeWaterProgram.unload();
gObjectShinyNonIndexedProgram.unload();
gObjectFullbrightShinyNonIndexedProgram.unload();
@@ -669,11 +645,13 @@ void LLViewerShaderMgr::unloadShaders()
gSkinnedObjectSimpleProgram.unload();
gSkinnedObjectFullbrightProgram.unload();
+ gSkinnedObjectEmissiveProgram.unload();
gSkinnedObjectFullbrightShinyProgram.unload();
gSkinnedObjectShinySimpleProgram.unload();
gSkinnedObjectSimpleWaterProgram.unload();
gSkinnedObjectFullbrightWaterProgram.unload();
+ gSkinnedObjectEmissiveWaterProgram.unload();
gSkinnedObjectFullbrightShinyWaterProgram.unload();
gSkinnedObjectShinySimpleWaterProgram.unload();
@@ -699,6 +677,7 @@ void LLViewerShaderMgr::unloadShaders()
gDeferredDiffuseProgram.unload();
gDeferredDiffuseAlphaMaskProgram.unload();
gDeferredNonIndexedDiffuseAlphaMaskProgram.unload();
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.unload();
gDeferredNonIndexedDiffuseProgram.unload();
gDeferredSkinnedDiffuseProgram.unload();
gDeferredSkinnedBumpProgram.unload();
@@ -750,8 +729,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
// (in order of shader function call depth for reference purposes, deepest level first)
vector< pair<string, S32> > shaders;
- shaders.reserve(10);
shaders.push_back( make_pair( "windlight/atmosphericsVarsV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
+ shaders.push_back( make_pair( "windlight/atmosphericsVarsWaterV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "windlight/atmosphericsHelpersV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "lighting/lightFuncV.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
shaders.push_back( make_pair( "lighting/sumLightsV.glsl", sum_lights_class ) );
@@ -762,6 +741,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
shaders.push_back( make_pair( "windlight/atmosphericsV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "avatar/avatarSkinV.glsl", 1 ) );
shaders.push_back( make_pair( "avatar/objectSkinV.glsl", 1 ) );
+ shaders.push_back( make_pair( "objects/indexedTextureV.glsl", 1 ) );
+ shaders.push_back( make_pair( "objects/nonindexedTextureV.glsl", 1 ) );
// We no longer have to bind the shaders to global glhandles, they are automatically added to a map now.
for (U32 i = 0; i < shaders.size(); i++)
@@ -777,8 +758,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
// (in order of shader function call depth for reference purposes, deepest level first)
shaders.clear();
- shaders.reserve(13);
- S32 ch = gGLManager.mNumTextureImageUnits-1;
+ S32 ch = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
if (gGLManager.mGLVersion < 3.1f)
{ //force to 1 texture index channel for old drivers
@@ -787,6 +767,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
std::vector<S32> index_channels;
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
+ index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsWaterF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/gammaF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT]) );
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/transportF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
@@ -844,6 +825,8 @@ BOOL LLViewerShaderMgr::loadShadersEnvironment()
gTerrainProgram.mFeatures.calculatesLighting = true;
gTerrainProgram.mFeatures.calculatesAtmospherics = true;
gTerrainProgram.mFeatures.hasAtmospherics = true;
+ gTerrainProgram.mFeatures.mIndexedTextureChannels = 0;
+ gTerrainProgram.mFeatures.disableTextureIndex = true;
gTerrainProgram.mFeatures.hasGamma = true;
gTerrainProgram.mShaderFiles.clear();
gTerrainProgram.mShaderFiles.push_back(make_pair("environment/terrainV.glsl", GL_VERTEX_SHADER_ARB));
@@ -912,6 +895,8 @@ BOOL LLViewerShaderMgr::loadShadersWater()
gTerrainWaterProgram.mFeatures.calculatesAtmospherics = true;
gTerrainWaterProgram.mFeatures.hasAtmospherics = true;
gTerrainWaterProgram.mFeatures.hasWaterFog = true;
+ gTerrainWaterProgram.mFeatures.mIndexedTextureChannels = 0;
+ gTerrainWaterProgram.mFeatures.disableTextureIndex = true;
gTerrainWaterProgram.mShaderFiles.clear();
gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainV.glsl", GL_VERTEX_SHADER_ARB));
gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -950,9 +935,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
{
BOOL success = TRUE;
- U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
- bool multisample = samples > 1 && LLPipeline::sRenderDeferred && gGLManager.mHasTextureMultisample;
-
if (mVertexShaderLevel[SHADER_EFFECT] == 0)
{
gGlowProgram.unload();
@@ -978,21 +960,10 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
if (success)
{
- std::string fragment;
-
- if (multisample)
- {
- fragment = "effects/glowExtractMSF.glsl";
- }
- else
- {
- fragment = "effects/glowExtractF.glsl";
- }
-
gGlowExtractProgram.mName = "Glow Extract Shader (Post)";
gGlowExtractProgram.mShaderFiles.clear();
gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractV.glsl", GL_VERTEX_SHADER_ARB));
- gGlowExtractProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractF.glsl", GL_FRAGMENT_SHADER_ARB));
gGlowExtractProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
success = gGlowExtractProgram.createShader(NULL, &mGlowExtractUniforms);
if (!success)
@@ -1001,51 +972,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
}
}
-#if 0
- // disabling loading of postprocess shaders until we fix
- // ATI sampler2DRect compatibility.
-
- //load Color Filter Shader
- if (success)
- {
- vector<string> shaderUniforms;
- shaderUniforms.reserve(7);
- shaderUniforms.push_back("RenderTexture");
- shaderUniforms.push_back("gamma");
- shaderUniforms.push_back("brightness");
- shaderUniforms.push_back("contrast");
- shaderUniforms.push_back("contrastBase");
- shaderUniforms.push_back("saturation");
- shaderUniforms.push_back("lumWeights");
-
- gPostColorFilterProgram.mName = "Color Filter Shader (Post)";
- gPostColorFilterProgram.mShaderFiles.clear();
- gPostColorFilterProgram.mShaderFiles.push_back(make_pair("effects/colorFilterF.glsl", GL_FRAGMENT_SHADER_ARB));
- gPostColorFilterProgram.mShaderFiles.push_back(make_pair("effects/drawQuadV.glsl", GL_VERTEX_SHADER_ARB));
- gPostColorFilterProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
- success = gPostColorFilterProgram.createShader(NULL, &shaderUniforms);
- }
-
- //load Night Vision Shader
- if (success)
- {
- vector<string> shaderUniforms;
- shaderUniforms.reserve(5);
- shaderUniforms.push_back("RenderTexture");
- shaderUniforms.push_back("NoiseTexture");
- shaderUniforms.push_back("brightMult");
- shaderUniforms.push_back("noiseStrength");
- shaderUniforms.push_back("lumWeights");
-
- gPostNightVisionProgram.mName = "Night Vision Shader (Post)";
- gPostNightVisionProgram.mShaderFiles.clear();
- gPostNightVisionProgram.mShaderFiles.push_back(make_pair("effects/nightVisionF.glsl", GL_FRAGMENT_SHADER_ARB));
- gPostNightVisionProgram.mShaderFiles.push_back(make_pair("effects/drawQuadV.glsl", GL_VERTEX_SHADER_ARB));
- gPostNightVisionProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
- success = gPostNightVisionProgram.createShader(NULL, &shaderUniforms);
- }
- #endif
-
return success;
}
@@ -1055,9 +981,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (mVertexShaderLevel[SHADER_DEFERRED] == 0)
{
gDeferredTreeProgram.unload();
+ gDeferredTreeShadowProgram.unload();
gDeferredDiffuseProgram.unload();
gDeferredDiffuseAlphaMaskProgram.unload();
gDeferredNonIndexedDiffuseAlphaMaskProgram.unload();
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.unload();
gDeferredNonIndexedDiffuseProgram.unload();
gDeferredSkinnedDiffuseProgram.unload();
gDeferredSkinnedBumpProgram.unload();
@@ -1080,34 +1008,29 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAvatarAlphaProgram.unload();
gDeferredAlphaProgram.unload();
gDeferredFullbrightProgram.unload();
+ gDeferredEmissiveProgram.unload();
gDeferredAvatarEyesProgram.unload();
- gDeferredPostGIProgram.unload();
- gDeferredEdgeProgram.unload();
gDeferredPostProgram.unload();
- gLuminanceGatherProgram.unload();
- gDeferredGIProgram.unload();
- gDeferredGIFinalProgram.unload();
+ gDeferredCoFProgram.unload();
+ gDeferredDoFCombineProgram.unload();
+ gFXAAProgram.unload();
gDeferredWaterProgram.unload();
gDeferredWLSkyProgram.unload();
gDeferredWLCloudProgram.unload();
gDeferredStarProgram.unload();
+ gNormalMapGenProgram.unload();
return TRUE;
}
- mVertexShaderLevel[SHADER_AVATAR] = 1;
-
BOOL success = TRUE;
- U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
- bool multisample = samples > 1 && gGLManager.mHasTextureMultisample;
-
if (success)
{
gDeferredDiffuseProgram.mName = "Deferred Diffuse Shader";
gDeferredDiffuseProgram.mShaderFiles.clear();
gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredDiffuseProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredDiffuseProgram.createShader(NULL, NULL);
}
@@ -1118,7 +1041,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredDiffuseAlphaMaskProgram.mShaderFiles.clear();
gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredDiffuseAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredDiffuseAlphaMaskProgram.createShader(NULL, NULL);
}
@@ -1132,6 +1055,16 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredNonIndexedDiffuseAlphaMaskProgram.createShader(NULL, NULL);
}
+
+ if (success)
+ {
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mName = "Deferred Diffuse Non-Indexed Alpha Mask Shader";
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.clear();
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskNoColorF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.createShader(NULL, NULL);
+ }
if (success)
{
@@ -1205,6 +1138,16 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
+ gDeferredTreeShadowProgram.mName = "Deferred Tree Shadow Shader";
+ gDeferredTreeShadowProgram.mShaderFiles.clear();
+ gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowV.glsl", GL_VERTEX_SHADER_ARB));
+ gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredTreeShadowProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gDeferredTreeShadowProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gDeferredImpostorProgram.mName = "Deferred Impostor Shader";
gDeferredImpostorProgram.mShaderFiles.clear();
gDeferredImpostorProgram.mShaderFiles.push_back(make_pair("deferred/impostorV.glsl", GL_VERTEX_SHADER_ARB));
@@ -1214,84 +1157,41 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
}
if (success)
- {
- std::string fragment;
-
- if (multisample)
- {
- fragment = "deferred/pointLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/pointLightF.glsl";
- }
-
+ {
gDeferredLightProgram.mName = "Deferred Light Shader";
gDeferredLightProgram.mShaderFiles.clear();
gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredLightProgram.createShader(NULL, NULL);
}
if (success)
{
- std::string fragment;
- if (multisample)
- {
- fragment = "deferred/multiPointLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/multiPointLightF.glsl";
- }
-
gDeferredMultiLightProgram.mName = "Deferred MultiLight Shader";
gDeferredMultiLightProgram.mShaderFiles.clear();
gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredMultiLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredMultiLightProgram.createShader(NULL, NULL);
}
if (success)
{
- std::string fragment;
-
- if (multisample)
- {
- fragment = "deferred/spotLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/multiSpotLightF.glsl";
- }
-
gDeferredSpotLightProgram.mName = "Deferred SpotLight Shader";
gDeferredSpotLightProgram.mShaderFiles.clear();
gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredSpotLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredSpotLightProgram.createShader(NULL, NULL);
}
if (success)
{
- std::string fragment;
-
- if (multisample)
- {
- fragment = "deferred/multiSpotLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/multiSpotLightF.glsl";
- }
-
gDeferredMultiSpotLightProgram.mName = "Deferred MultiSpotLight Shader";
gDeferredMultiSpotLightProgram.mShaderFiles.clear();
gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredMultiSpotLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredMultiSpotLightProgram.createShader(NULL, NULL);
}
@@ -1302,25 +1202,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (gSavedSettings.getBOOL("RenderDeferredSSAO"))
{
- if (multisample)
- {
- fragment = "deferred/sunLightSSAOMSF.glsl";
- }
- else
- {
- fragment = "deferred/sunLightSSAOF.glsl";
- }
+ fragment = "deferred/sunLightSSAOF.glsl";
}
else
{
- if (multisample)
- {
- fragment = "deferred/sunLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/sunLightF.glsl";
- }
+ fragment = "deferred/sunLightF.glsl";
}
gDeferredSunProgram.mName = "Deferred Sun Shader";
@@ -1333,21 +1219,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
- std::string fragment;
-
- if (multisample)
- {
- fragment = "deferred/blurLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/blurLightF.glsl";
- }
-
gDeferredBlurLightProgram.mName = "Deferred Blur Light Shader";
gDeferredBlurLightProgram.mShaderFiles.clear();
gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredBlurLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredBlurLightProgram.createShader(NULL, NULL);
}
@@ -1363,11 +1238,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAlphaProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels
if (mVertexShaderLevel[SHADER_DEFERRED] < 1)
{
- gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
}
else
{ //shave off some texture units for shadow maps
- gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits - 6;
+ gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels - 6, 1);
}
gDeferredAlphaProgram.mShaderFiles.clear();
@@ -1397,7 +1272,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredFullbrightProgram.mFeatures.calculatesAtmospherics = true;
gDeferredFullbrightProgram.mFeatures.hasGamma = true;
gDeferredFullbrightProgram.mFeatures.hasTransport = true;
- gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredFullbrightProgram.mShaderFiles.clear();
gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -1407,6 +1282,20 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
+ gDeferredEmissiveProgram.mName = "Deferred Emissive Shader";
+ gDeferredEmissiveProgram.mFeatures.calculatesAtmospherics = true;
+ gDeferredEmissiveProgram.mFeatures.hasGamma = true;
+ gDeferredEmissiveProgram.mFeatures.hasTransport = true;
+ gDeferredEmissiveProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
+ gDeferredEmissiveProgram.mShaderFiles.clear();
+ gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+ gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredEmissiveProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gDeferredEmissiveProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
// load water shader
gDeferredWaterProgram.mName = "Deferred Water Shader";
gDeferredWaterProgram.mFeatures.calculatesAtmospherics = true;
@@ -1421,21 +1310,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
- std::string fragment;
-
- if (multisample)
- {
- fragment = "deferred/softenLightMSF.glsl";
- }
- else
- {
- fragment = "deferred/softenLightF.glsl";
- }
-
gDeferredSoftenProgram.mName = "Deferred Soften Shader";
gDeferredSoftenProgram.mShaderFiles.clear();
gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredSoftenProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredSoftenProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
@@ -1460,6 +1338,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
gDeferredShadowAlphaMaskProgram.mName = "Deferred Shadow Alpha Mask Shader";
+ gDeferredShadowAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredShadowAlphaMaskProgram.mShaderFiles.clear();
gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -1475,7 +1354,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredAvatarShadowProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredAvatarShadowProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+ success = gDeferredAvatarShadowProgram.createShader(NULL, &mAvatarUniforms);
}
if (success)
@@ -1507,7 +1386,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredAvatarProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredAvatarProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+ success = gDeferredAvatarProgram.createShader(NULL, &mAvatarUniforms);
}
if (success)
@@ -1522,47 +1401,57 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAvatarAlphaProgram.mFeatures.disableTextureIndex = true;
gDeferredAvatarAlphaProgram.mShaderFiles.clear();
gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedNoColorF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredAvatarAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredAvatarAlphaProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+ success = gDeferredAvatarAlphaProgram.createShader(NULL, &mAvatarUniforms);
}
if (success)
{
- std::string fragment;
- if (multisample)
- {
- fragment = "deferred/postDeferredMSF.glsl";
- }
- else
- {
- fragment = "deferred/postDeferredF.glsl";
- }
+ gFXAAProgram.mName = "FXAA Shader";
+ gFXAAProgram.mShaderFiles.clear();
+ gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+ gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/fxaaF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gFXAAProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gFXAAProgram.createShader(NULL, NULL);
+ }
+ if (success)
+ {
gDeferredPostProgram.mName = "Deferred Post Shader";
gDeferredPostProgram.mShaderFiles.clear();
gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredPostProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredPostProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredPostProgram.createShader(NULL, NULL);
}
if (success)
{
- std::string fragment;
- if (multisample)
- {
- fragment = "deferred/postDeferredNoDoFMSF.glsl";
- }
- else
- {
- fragment = "deferred/postDeferredNoDoFF.glsl";
- }
+ gDeferredCoFProgram.mName = "Deferred CoF Shader";
+ gDeferredCoFProgram.mShaderFiles.clear();
+ gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+ gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/cofF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredCoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gDeferredCoFProgram.createShader(NULL, NULL);
+ }
+ if (success)
+ {
+ gDeferredDoFCombineProgram.mName = "Deferred DoFCombine Shader";
+ gDeferredDoFCombineProgram.mShaderFiles.clear();
+ gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+ gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/dofCombineF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredDoFCombineProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gDeferredDoFCombineProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gDeferredPostNoDoFProgram.mName = "Deferred Post Shader";
gDeferredPostNoDoFProgram.mShaderFiles.clear();
gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDoFF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredPostNoDoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredPostNoDoFProgram.createShader(NULL, NULL);
}
@@ -1601,70 +1490,15 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
success = gDeferredStarProgram.createShader(NULL, &mWLUniforms);
}
- if (mVertexShaderLevel[SHADER_DEFERRED] > 1)
+ if (success)
{
- if (success)
- {
- std::string fragment;
- if (multisample)
- {
- fragment = "deferred/edgeMSF.glsl";
- }
- else
- {
- fragment = "deferred/edgeF.glsl";
- }
-
- gDeferredEdgeProgram.mName = "Deferred Edge Shader";
- gDeferredEdgeProgram.mShaderFiles.clear();
- gDeferredEdgeProgram.mShaderFiles.push_back(make_pair("deferred/edgeV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredEdgeProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
- gDeferredEdgeProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredEdgeProgram.createShader(NULL, NULL);
- }
- }
-
- if (mVertexShaderLevel[SHADER_DEFERRED] > 2)
- {
- if (success)
- {
- gDeferredPostGIProgram.mName = "Deferred Post GI Shader";
- gDeferredPostGIProgram.mShaderFiles.clear();
- gDeferredPostGIProgram.mShaderFiles.push_back(make_pair("deferred/postgiV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredPostGIProgram.mShaderFiles.push_back(make_pair("deferred/postgiF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredPostGIProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredPostGIProgram.createShader(NULL, NULL);
- }
-
- if (success)
- {
- gDeferredGIProgram.mName = "Deferred GI Shader";
- gDeferredGIProgram.mShaderFiles.clear();
- gDeferredGIProgram.mShaderFiles.push_back(make_pair("deferred/giV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredGIProgram.mShaderFiles.push_back(make_pair("deferred/giF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredGIProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredGIProgram.createShader(NULL, NULL);
- }
-
- if (success)
- {
- gDeferredGIFinalProgram.mName = "Deferred GI Final Shader";
- gDeferredGIFinalProgram.mShaderFiles.clear();
- gDeferredGIFinalProgram.mShaderFiles.push_back(make_pair("deferred/giFinalV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredGIFinalProgram.mShaderFiles.push_back(make_pair("deferred/giFinalF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredGIFinalProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gDeferredGIFinalProgram.createShader(NULL, NULL);
- }
-
- if (success)
- {
- gLuminanceGatherProgram.mName = "Luminance Gather Shader";
- gLuminanceGatherProgram.mShaderFiles.clear();
- gLuminanceGatherProgram.mShaderFiles.push_back(make_pair("deferred/luminanceV.glsl", GL_VERTEX_SHADER_ARB));
- gLuminanceGatherProgram.mShaderFiles.push_back(make_pair("deferred/luminanceF.glsl", GL_FRAGMENT_SHADER_ARB));
- gLuminanceGatherProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
- success = gLuminanceGatherProgram.createShader(NULL, NULL);
- }
+ gNormalMapGenProgram.mName = "Normal Map Generation Program";
+ gNormalMapGenProgram.mShaderFiles.clear();
+ gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenV.glsl", GL_VERTEX_SHADER_ARB));
+ gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gNormalMapGenProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ gNormalMapGenProgram.mShaderGroup = LLGLSLShader::SG_SKY;
+ success = gNormalMapGenProgram.createShader(NULL, NULL);
}
return success;
@@ -1680,12 +1514,17 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectFullbrightShinyProgram.unload();
gObjectFullbrightShinyWaterProgram.unload();
gObjectShinyWaterProgram.unload();
+ gObjectFullbrightNoColorProgram.unload();
+ gObjectFullbrightNoColorWaterProgram.unload();
gObjectSimpleProgram.unload();
+ gObjectPreviewProgram.unload();
gImpostorProgram.unload();
gObjectSimpleAlphaMaskProgram.unload();
gObjectBumpProgram.unload();
gObjectSimpleWaterProgram.unload();
gObjectSimpleWaterAlphaMaskProgram.unload();
+ gObjectEmissiveProgram.unload();
+ gObjectEmissiveWaterProgram.unload();
gObjectFullbrightProgram.unload();
gObjectFullbrightAlphaMaskProgram.unload();
gObjectFullbrightWaterProgram.unload();
@@ -1694,20 +1533,29 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectFullbrightShinyNonIndexedProgram.unload();
gObjectFullbrightShinyNonIndexedWaterProgram.unload();
gObjectShinyNonIndexedWaterProgram.unload();
- gObjectSimpleNonIndexedProgram.unload();
+ gObjectSimpleNonIndexedTexGenProgram.unload();
+ gObjectSimpleNonIndexedTexGenWaterProgram.unload();
gObjectSimpleNonIndexedWaterProgram.unload();
gObjectAlphaMaskNonIndexedProgram.unload();
gObjectAlphaMaskNonIndexedWaterProgram.unload();
+ gObjectAlphaMaskNoColorProgram.unload();
+ gObjectAlphaMaskNoColorWaterProgram.unload();
gObjectFullbrightNonIndexedProgram.unload();
gObjectFullbrightNonIndexedWaterProgram.unload();
+ gObjectEmissiveNonIndexedProgram.unload();
+ gObjectEmissiveNonIndexedWaterProgram.unload();
gSkinnedObjectSimpleProgram.unload();
gSkinnedObjectFullbrightProgram.unload();
+ gSkinnedObjectEmissiveProgram.unload();
gSkinnedObjectFullbrightShinyProgram.unload();
gSkinnedObjectShinySimpleProgram.unload();
gSkinnedObjectSimpleWaterProgram.unload();
gSkinnedObjectFullbrightWaterProgram.unload();
+ gSkinnedObjectEmissiveWaterProgram.unload();
gSkinnedObjectFullbrightShinyWaterProgram.unload();
gSkinnedObjectShinySimpleWaterProgram.unload();
+ gTreeProgram.unload();
+ gTreeWaterProgram.unload();
return TRUE;
}
@@ -1730,6 +1578,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gObjectSimpleNonIndexedTexGenProgram.mName = "Non indexed tex-gen Shader";
+ gObjectSimpleNonIndexedTexGenProgram.mFeatures.calculatesLighting = true;
+ gObjectSimpleNonIndexedTexGenProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasGamma = true;
+ gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasAtmospherics = true;
+ gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasLighting = true;
+ gObjectSimpleNonIndexedTexGenProgram.mFeatures.disableTextureIndex = true;
+ gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.clear();
+ gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectSimpleNonIndexedTexGenProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectSimpleNonIndexedTexGenProgram.createShader(NULL, NULL);
+ }
+
+
+ if (success)
+ {
gObjectSimpleNonIndexedWaterProgram.mName = "Non indexed Water Shader";
gObjectSimpleNonIndexedWaterProgram.mFeatures.calculatesLighting = true;
gObjectSimpleNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true;
@@ -1747,6 +1612,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gObjectSimpleNonIndexedTexGenWaterProgram.mName = "Non indexed tex-gen Water Shader";
+ gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.calculatesLighting = true;
+ gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasWaterFog = true;
+ gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasAtmospherics = true;
+ gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasLighting = true;
+ gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.disableTextureIndex = true;
+ gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.clear();
+ gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectSimpleNonIndexedTexGenWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gObjectSimpleNonIndexedTexGenWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gObjectSimpleNonIndexedTexGenWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gObjectAlphaMaskNonIndexedProgram.mName = "Non indexed alpha mask Shader";
gObjectAlphaMaskNonIndexedProgram.mFeatures.calculatesLighting = true;
gObjectAlphaMaskNonIndexedProgram.mFeatures.calculatesAtmospherics = true;
@@ -1756,7 +1638,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectAlphaMaskNonIndexedProgram.mFeatures.disableTextureIndex = true;
gObjectAlphaMaskNonIndexedProgram.mFeatures.hasAlphaMask = true;
gObjectAlphaMaskNonIndexedProgram.mShaderFiles.clear();
- gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER_ARB));
gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
gObjectAlphaMaskNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
success = gObjectAlphaMaskNonIndexedProgram.createShader(NULL, NULL);
@@ -1773,7 +1655,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectAlphaMaskNonIndexedWaterProgram.mFeatures.disableTextureIndex = true;
gObjectAlphaMaskNonIndexedWaterProgram.mFeatures.hasAlphaMask = true;
gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.clear();
- gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER_ARB));
gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
gObjectAlphaMaskNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
gObjectAlphaMaskNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
@@ -1782,6 +1664,76 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gObjectAlphaMaskNoColorProgram.mName = "No color alpha mask Shader";
+ gObjectAlphaMaskNoColorProgram.mFeatures.calculatesLighting = true;
+ gObjectAlphaMaskNoColorProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectAlphaMaskNoColorProgram.mFeatures.hasGamma = true;
+ gObjectAlphaMaskNoColorProgram.mFeatures.hasAtmospherics = true;
+ gObjectAlphaMaskNoColorProgram.mFeatures.hasLighting = true;
+ gObjectAlphaMaskNoColorProgram.mFeatures.disableTextureIndex = true;
+ gObjectAlphaMaskNoColorProgram.mFeatures.hasAlphaMask = true;
+ gObjectAlphaMaskNoColorProgram.mShaderFiles.clear();
+ gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectAlphaMaskNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectAlphaMaskNoColorProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gObjectAlphaMaskNoColorWaterProgram.mName = "No color alpha mask Water Shader";
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.calculatesLighting = true;
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasWaterFog = true;
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasAtmospherics = true;
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasLighting = true;
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.disableTextureIndex = true;
+ gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasAlphaMask = true;
+ gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.clear();
+ gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectAlphaMaskNoColorWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gObjectAlphaMaskNoColorWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gObjectAlphaMaskNoColorWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gTreeProgram.mName = "Tree Shader";
+ gTreeProgram.mFeatures.calculatesLighting = true;
+ gTreeProgram.mFeatures.calculatesAtmospherics = true;
+ gTreeProgram.mFeatures.hasGamma = true;
+ gTreeProgram.mFeatures.hasAtmospherics = true;
+ gTreeProgram.mFeatures.hasLighting = true;
+ gTreeProgram.mFeatures.disableTextureIndex = true;
+ gTreeProgram.mFeatures.hasAlphaMask = true;
+ gTreeProgram.mShaderFiles.clear();
+ gTreeProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER_ARB));
+ gTreeProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gTreeProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gTreeProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gTreeWaterProgram.mName = "Tree Water Shader";
+ gTreeWaterProgram.mFeatures.calculatesLighting = true;
+ gTreeWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gTreeWaterProgram.mFeatures.hasWaterFog = true;
+ gTreeWaterProgram.mFeatures.hasAtmospherics = true;
+ gTreeWaterProgram.mFeatures.hasLighting = true;
+ gTreeWaterProgram.mFeatures.disableTextureIndex = true;
+ gTreeWaterProgram.mFeatures.hasAlphaMask = true;
+ gTreeWaterProgram.mShaderFiles.clear();
+ gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER_ARB));
+ gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gTreeWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gTreeWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gTreeWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gObjectFullbrightNonIndexedProgram.mName = "Non Indexed Fullbright Shader";
gObjectFullbrightNonIndexedProgram.mFeatures.calculatesAtmospherics = true;
gObjectFullbrightNonIndexedProgram.mFeatures.hasGamma = true;
@@ -1813,6 +1765,68 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gObjectEmissiveNonIndexedProgram.mName = "Non Indexed Emissive Shader";
+ gObjectEmissiveNonIndexedProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectEmissiveNonIndexedProgram.mFeatures.hasGamma = true;
+ gObjectEmissiveNonIndexedProgram.mFeatures.hasTransport = true;
+ gObjectEmissiveNonIndexedProgram.mFeatures.isFullbright = true;
+ gObjectEmissiveNonIndexedProgram.mFeatures.disableTextureIndex = true;
+ gObjectEmissiveNonIndexedProgram.mShaderFiles.clear();
+ gObjectEmissiveNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectEmissiveNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectEmissiveNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectEmissiveNonIndexedProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gObjectEmissiveNonIndexedWaterProgram.mName = "Non Indexed Emissive Water Shader";
+ gObjectEmissiveNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectEmissiveNonIndexedWaterProgram.mFeatures.isFullbright = true;
+ gObjectEmissiveNonIndexedWaterProgram.mFeatures.hasWaterFog = true;
+ gObjectEmissiveNonIndexedWaterProgram.mFeatures.hasTransport = true;
+ gObjectEmissiveNonIndexedWaterProgram.mFeatures.disableTextureIndex = true;
+ gObjectEmissiveNonIndexedWaterProgram.mShaderFiles.clear();
+ gObjectEmissiveNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectEmissiveNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectEmissiveNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gObjectEmissiveNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gObjectEmissiveNonIndexedWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gObjectFullbrightNoColorProgram.mName = "Non Indexed no color Fullbright Shader";
+ gObjectFullbrightNoColorProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectFullbrightNoColorProgram.mFeatures.hasGamma = true;
+ gObjectFullbrightNoColorProgram.mFeatures.hasTransport = true;
+ gObjectFullbrightNoColorProgram.mFeatures.isFullbright = true;
+ gObjectFullbrightNoColorProgram.mFeatures.disableTextureIndex = true;
+ gObjectFullbrightNoColorProgram.mShaderFiles.clear();
+ gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectFullbrightNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectFullbrightNoColorProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gObjectFullbrightNoColorWaterProgram.mName = "Non Indexed no color Fullbright Water Shader";
+ gObjectFullbrightNoColorWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectFullbrightNoColorWaterProgram.mFeatures.isFullbright = true;
+ gObjectFullbrightNoColorWaterProgram.mFeatures.hasWaterFog = true;
+ gObjectFullbrightNoColorWaterProgram.mFeatures.hasTransport = true;
+ gObjectFullbrightNoColorWaterProgram.mFeatures.disableTextureIndex = true;
+ gObjectFullbrightNoColorWaterProgram.mShaderFiles.clear();
+ gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectFullbrightNoColorWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gObjectFullbrightNoColorWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gObjectFullbrightNoColorWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gObjectShinyNonIndexedProgram.mName = "Non Indexed Shiny Shader";
gObjectShinyNonIndexedProgram.mFeatures.calculatesAtmospherics = true;
gObjectShinyNonIndexedProgram.mFeatures.calculatesLighting = true;
@@ -1891,6 +1905,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gObjectPreviewProgram.mName = "Simple Shader";
+ gObjectPreviewProgram.mFeatures.calculatesLighting = true;
+ gObjectPreviewProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectPreviewProgram.mFeatures.hasGamma = true;
+ gObjectPreviewProgram.mFeatures.hasAtmospherics = true;
+ gObjectPreviewProgram.mFeatures.hasLighting = true;
+ gObjectPreviewProgram.mFeatures.mIndexedTextureChannels = 0;
+ gObjectPreviewProgram.mFeatures.disableTextureIndex = true;
+ gObjectPreviewProgram.mShaderFiles.clear();
+ gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectPreviewProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectPreviewProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gObjectSimpleProgram.mName = "Simple Shader";
gObjectSimpleProgram.mFeatures.calculatesLighting = true;
gObjectSimpleProgram.mFeatures.calculatesAtmospherics = true;
@@ -1907,19 +1938,19 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
- gObjectSimpleAlphaMaskProgram.mName = "Simple Alpha Mask Shader";
- gObjectSimpleAlphaMaskProgram.mFeatures.calculatesLighting = true;
- gObjectSimpleAlphaMaskProgram.mFeatures.calculatesAtmospherics = true;
- gObjectSimpleAlphaMaskProgram.mFeatures.hasGamma = true;
- gObjectSimpleAlphaMaskProgram.mFeatures.hasAtmospherics = true;
- gObjectSimpleAlphaMaskProgram.mFeatures.hasLighting = true;
- gObjectSimpleAlphaMaskProgram.mFeatures.hasAlphaMask = true;
- gObjectSimpleAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;
- gObjectSimpleAlphaMaskProgram.mShaderFiles.clear();
- gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
- gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
- gObjectSimpleAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
- success = gObjectSimpleAlphaMaskProgram.createShader(NULL, NULL);
+ gObjectSimpleWaterProgram.mName = "Simple Water Shader";
+ gObjectSimpleWaterProgram.mFeatures.calculatesLighting = true;
+ gObjectSimpleWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectSimpleWaterProgram.mFeatures.hasWaterFog = true;
+ gObjectSimpleWaterProgram.mFeatures.hasAtmospherics = true;
+ gObjectSimpleWaterProgram.mFeatures.hasLighting = true;
+ gObjectSimpleWaterProgram.mFeatures.mIndexedTextureChannels = 0;
+ gObjectSimpleWaterProgram.mShaderFiles.clear();
+ gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectSimpleWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gObjectSimpleWaterProgram.createShader(NULL, NULL);
}
if (success)
@@ -1936,25 +1967,34 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB));
gObjectBumpProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
success = gObjectBumpProgram.createShader(NULL, NULL);
+
+ if (success)
+ { //lldrawpoolbump assumes "texture0" has channel 0 and "texture1" has channel 1
+ gObjectBumpProgram.bind();
+ gObjectBumpProgram.uniform1i("texture0", 0);
+ gObjectBumpProgram.uniform1i("texture1", 1);
+ gObjectBumpProgram.unbind();
+ }
}
+
if (success)
{
- gObjectSimpleWaterProgram.mName = "Simple Water Shader";
- gObjectSimpleWaterProgram.mFeatures.calculatesLighting = true;
- gObjectSimpleWaterProgram.mFeatures.calculatesAtmospherics = true;
- gObjectSimpleWaterProgram.mFeatures.hasWaterFog = true;
- gObjectSimpleWaterProgram.mFeatures.hasAtmospherics = true;
- gObjectSimpleWaterProgram.mFeatures.hasLighting = true;
- gObjectSimpleWaterProgram.mFeatures.mIndexedTextureChannels = 0;
- gObjectSimpleWaterProgram.mShaderFiles.clear();
- gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
- gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
- gObjectSimpleWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
- gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
- success = gObjectSimpleWaterProgram.createShader(NULL, NULL);
+ gObjectSimpleAlphaMaskProgram.mName = "Simple Alpha Mask Shader";
+ gObjectSimpleAlphaMaskProgram.mFeatures.calculatesLighting = true;
+ gObjectSimpleAlphaMaskProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectSimpleAlphaMaskProgram.mFeatures.hasGamma = true;
+ gObjectSimpleAlphaMaskProgram.mFeatures.hasAtmospherics = true;
+ gObjectSimpleAlphaMaskProgram.mFeatures.hasLighting = true;
+ gObjectSimpleAlphaMaskProgram.mFeatures.hasAlphaMask = true;
+ gObjectSimpleAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;
+ gObjectSimpleAlphaMaskProgram.mShaderFiles.clear();
+ gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectSimpleAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectSimpleAlphaMaskProgram.createShader(NULL, NULL);
}
-
+
if (success)
{
gObjectSimpleWaterAlphaMaskProgram.mName = "Simple Water Alpha Mask Shader";
@@ -2006,6 +2046,37 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gObjectEmissiveProgram.mName = "Emissive Shader";
+ gObjectEmissiveProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectEmissiveProgram.mFeatures.hasGamma = true;
+ gObjectEmissiveProgram.mFeatures.hasTransport = true;
+ gObjectEmissiveProgram.mFeatures.isFullbright = true;
+ gObjectEmissiveProgram.mFeatures.mIndexedTextureChannels = 0;
+ gObjectEmissiveProgram.mShaderFiles.clear();
+ gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectEmissiveProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gObjectEmissiveProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gObjectEmissiveWaterProgram.mName = "Emissive Water Shader";
+ gObjectEmissiveWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gObjectEmissiveWaterProgram.mFeatures.isFullbright = true;
+ gObjectEmissiveWaterProgram.mFeatures.hasWaterFog = true;
+ gObjectEmissiveWaterProgram.mFeatures.hasTransport = true;
+ gObjectEmissiveWaterProgram.mFeatures.mIndexedTextureChannels = 0;
+ gObjectEmissiveWaterProgram.mShaderFiles.clear();
+ gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+ gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gObjectEmissiveWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ gObjectEmissiveWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+ success = gObjectEmissiveWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gObjectFullbrightAlphaMaskProgram.mName = "Fullbright Alpha Mask Shader";
gObjectFullbrightAlphaMaskProgram.mFeatures.calculatesAtmospherics = true;
gObjectFullbrightAlphaMaskProgram.mFeatures.hasGamma = true;
@@ -2141,6 +2212,39 @@ BOOL LLViewerShaderMgr::loadShadersObject()
if (success)
{
+ gSkinnedObjectEmissiveProgram.mName = "Skinned Emissive Shader";
+ gSkinnedObjectEmissiveProgram.mFeatures.calculatesAtmospherics = true;
+ gSkinnedObjectEmissiveProgram.mFeatures.hasGamma = true;
+ gSkinnedObjectEmissiveProgram.mFeatures.hasTransport = true;
+ gSkinnedObjectEmissiveProgram.mFeatures.isFullbright = true;
+ gSkinnedObjectEmissiveProgram.mFeatures.hasObjectSkinning = true;
+ gSkinnedObjectEmissiveProgram.mFeatures.disableTextureIndex = true;
+ gSkinnedObjectEmissiveProgram.mShaderFiles.clear();
+ gSkinnedObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/emissiveSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
+ gSkinnedObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gSkinnedObjectEmissiveProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gSkinnedObjectEmissiveProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gSkinnedObjectEmissiveWaterProgram.mName = "Skinned Emissive Water Shader";
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.calculatesAtmospherics = true;
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.hasGamma = true;
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.hasTransport = true;
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.isFullbright = true;
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.hasObjectSkinning = true;
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.disableTextureIndex = true;
+ gSkinnedObjectEmissiveWaterProgram.mFeatures.hasWaterFog = true;
+ gSkinnedObjectEmissiveWaterProgram.mShaderFiles.clear();
+ gSkinnedObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
+ gSkinnedObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gSkinnedObjectEmissiveWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gSkinnedObjectEmissiveWaterProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
gSkinnedObjectFullbrightShinyProgram.mName = "Skinned Fullbright Shiny Shader";
gSkinnedObjectFullbrightShinyProgram.mFeatures.calculatesAtmospherics = true;
gSkinnedObjectFullbrightShinyProgram.mFeatures.hasGamma = true;
@@ -2287,7 +2391,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER_ARB));
gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarF.glsl", GL_FRAGMENT_SHADER_ARB));
gAvatarProgram.mShaderLevel = mVertexShaderLevel[SHADER_AVATAR];
- success = gAvatarProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+ success = gAvatarProgram.createShader(NULL, &mAvatarUniforms);
if (success)
{
@@ -2306,7 +2410,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
// Note: no cloth under water:
gAvatarWaterProgram.mShaderLevel = llmin(mVertexShaderLevel[SHADER_AVATAR], 1);
gAvatarWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
- success = gAvatarWaterProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+ success = gAvatarWaterProgram.createShader(NULL, &mAvatarUniforms);
}
/// Keep track of avatar levels
@@ -2325,7 +2429,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarV.glsl", GL_VERTEX_SHADER_ARB));
gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarF.glsl", GL_FRAGMENT_SHADER_ARB));
gAvatarPickProgram.mShaderLevel = mVertexShaderLevel[SHADER_AVATAR];
- success = gAvatarPickProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+ success = gAvatarPickProgram.createShader(NULL, &mAvatarUniforms);
}
if (success)
@@ -2398,6 +2502,22 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
if (success)
{
+ gSplatTextureRectProgram.mName = "Splat Texture Rect Shader";
+ gSplatTextureRectProgram.mShaderFiles.clear();
+ gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectV.glsl", GL_VERTEX_SHADER_ARB));
+ gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gSplatTextureRectProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+ success = gSplatTextureRectProgram.createShader(NULL, NULL);
+ if (success)
+ {
+ gSplatTextureRectProgram.bind();
+ gSplatTextureRectProgram.uniform1i("screenMap", 0);
+ gSplatTextureRectProgram.unbind();
+ }
+ }
+
+ if (success)
+ {
gGlowCombineProgram.mName = "Glow Combine Shader";
gGlowCombineProgram.mShaderFiles.clear();
gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineV.glsl", GL_VERTEX_SHADER_ARB));
@@ -2415,6 +2535,24 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
if (success)
{
+ gGlowCombineFXAAProgram.mName = "Glow CombineFXAA Shader";
+ gGlowCombineFXAAProgram.mShaderFiles.clear();
+ gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAV.glsl", GL_VERTEX_SHADER_ARB));
+ gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gGlowCombineFXAAProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+ success = gGlowCombineFXAAProgram.createShader(NULL, NULL);
+ if (success)
+ {
+ gGlowCombineFXAAProgram.bind();
+ gGlowCombineFXAAProgram.uniform1i("glowMap", 0);
+ gGlowCombineFXAAProgram.uniform1i("screenMap", 1);
+ gGlowCombineFXAAProgram.unbind();
+ }
+ }
+
+
+ if (success)
+ {
gTwoTextureAddProgram.mName = "Two Texture Add Shader";
gTwoTextureAddProgram.mShaderFiles.clear();
gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddV.glsl", GL_VERTEX_SHADER_ARB));
@@ -2431,6 +2569,21 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
if (success)
{
+ gOneTextureNoColorProgram.mName = "One Texture No Color Shader";
+ gOneTextureNoColorProgram.mShaderFiles.clear();
+ gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorV.glsl", GL_VERTEX_SHADER_ARB));
+ gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gOneTextureNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+ success = gOneTextureNoColorProgram.createShader(NULL, NULL);
+ if (success)
+ {
+ gOneTextureNoColorProgram.bind();
+ gOneTextureNoColorProgram.uniform1i("tex0", 0);
+ }
+ }
+
+ if (success)
+ {
gSolidColorProgram.mName = "Solid Color Shader";
gSolidColorProgram.mShaderFiles.clear();
gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorV.glsl", GL_VERTEX_SHADER_ARB));
@@ -2455,6 +2608,26 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
success = gOcclusionProgram.createShader(NULL, NULL);
}
+ if (success)
+ {
+ gDebugProgram.mName = "Debug Shader";
+ gDebugProgram.mShaderFiles.clear();
+ gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugV.glsl", GL_VERTEX_SHADER_ARB));
+ gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDebugProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+ success = gDebugProgram.createShader(NULL, NULL);
+ }
+
+ if (success)
+ {
+ gAlphaMaskProgram.mName = "Alpha Mask Shader";
+ gAlphaMaskProgram.mShaderFiles.clear();
+ gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER_ARB));
+ gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+ success = gAlphaMaskProgram.createShader(NULL, NULL);
+ }
+
if( !success )
{
mVertexShaderLevel[SHADER_INTERFACE] = 0;
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index d4040f11e1..95eb551bf1 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -33,6 +33,7 @@ class LLViewerShaderMgr: public LLShaderMgr
{
public:
static BOOL sInitialized;
+ static bool sSkipReload;
LLViewerShaderMgr();
/* virtual */ ~LLViewerShaderMgr();
@@ -71,76 +72,6 @@ public:
SHADER_COUNT
};
- typedef enum
- {
- MATERIAL_COLOR = 0,
- SPECULAR_COLOR,
- BINORMAL,
- OBJECT_WEIGHT,
- END_RESERVED_ATTRIBS
- } eGLSLReservedAttribs;
-
- typedef enum
- {
- DIFFUSE_MAP = 0,
- SPECULAR_MAP,
- BUMP_MAP,
- ENVIRONMENT_MAP,
- CLOUD_NOISE_MAP,
- FULLBRIGHT,
- LIGHTNORM,
- SUNLIGHT_COLOR,
- AMBIENT,
- BLUE_HORIZON,
- BLUE_DENSITY,
- HAZE_HORIZON,
- HAZE_DENSITY,
- CLOUD_SHADOW,
- DENSITY_MULTIPLIER,
- DISTANCE_MULTIPLIER,
- MAX_Y,
- GLOW,
- CLOUD_COLOR,
- CLOUD_POS_DENSITY1,
- CLOUD_POS_DENSITY2,
- CLOUD_SCALE,
- GAMMA,
- SCENE_LIGHT_STRENGTH,
- DEFERRED_DEPTH,
- DEFERRED_SHADOW0,
- DEFERRED_SHADOW1,
- DEFERRED_SHADOW2,
- DEFERRED_SHADOW3,
- DEFERRED_SHADOW4,
- DEFERRED_SHADOW5,
- DEFERRED_NORMAL,
- DEFERRED_POSITION,
- DEFERRED_DIFFUSE,
- DEFERRED_SPECULAR,
- DEFERRED_NOISE,
- DEFERRED_LIGHTFUNC,
- DEFERRED_LIGHT,
- DEFERRED_LUMINANCE,
- DEFERRED_GI_LIGHT,
- DEFERRED_GI_MIP,
- DEFERRED_EDGE,
- DEFERRED_BLOOM,
- DEFERRED_SUN_LIGHT,
- DEFERRED_LOCAL_LIGHT,
- DEFERRED_PROJECTION,
- DEFERRED_GI_DIFFUSE,
- DEFERRED_GI_SPECULAR,
- DEFERRED_GI_NORMAL,
- DEFERRED_GI_MIN_POS,
- DEFERRED_GI_MAX_POS,
- DEFERRED_GI_DEPTH,
- DEFERRED_GI_LAST_DIFFUSE,
- DEFERRED_GI_LAST_NORMAL,
- DEFERRED_GI_LAST_MIN_POS,
- DEFERRED_GI_LAST_MAX_POS,
- END_RESERVED_UNIFORMS
- } eGLSLReservedUniforms;
-
typedef enum
{
SHINY_ORIGIN = END_RESERVED_UNIFORMS
@@ -186,16 +117,10 @@ public:
typedef enum
{
- AVATAR_WEIGHT = END_RESERVED_ATTRIBS,
- AVATAR_CLOTHING,
+ AVATAR_MATRIX = END_RESERVED_UNIFORMS,
AVATAR_WIND,
AVATAR_SINWAVE,
- AVATAR_GRAVITY
- } eAvatarAttribs;
-
- typedef enum
- {
- AVATAR_MATRIX = END_RESERVED_UNIFORMS
+ AVATAR_GRAVITY,
} eAvatarUniforms;
// simple model of forward iterator
@@ -265,9 +190,6 @@ private:
std::vector<std::string> mGlowExtractUniforms;
- //avatar shader parameter tables
- std::vector<std::string> mAvatarAttribs;
-
std::vector<std::string> mAvatarUniforms;
// the list of shaders we need to propagate parameters to.
@@ -291,26 +213,45 @@ extern LLVector4 gShinyOrigin;
extern LLGLSLShader gOcclusionProgram;
extern LLGLSLShader gCustomAlphaProgram;
extern LLGLSLShader gGlowCombineProgram;
+extern LLGLSLShader gSplatTextureRectProgram;
+extern LLGLSLShader gGlowCombineFXAAProgram;
+extern LLGLSLShader gDebugProgram;
+extern LLGLSLShader gAlphaMaskProgram;
//output tex0[tc0] + tex1[tc1]
extern LLGLSLShader gTwoTextureAddProgram;
-
+
+extern LLGLSLShader gOneTextureNoColorProgram;
+
//object shaders
extern LLGLSLShader gObjectSimpleProgram;
+extern LLGLSLShader gObjectPreviewProgram;
extern LLGLSLShader gObjectSimpleAlphaMaskProgram;
extern LLGLSLShader gObjectSimpleWaterProgram;
extern LLGLSLShader gObjectSimpleWaterAlphaMaskProgram;
extern LLGLSLShader gObjectSimpleNonIndexedProgram;
+extern LLGLSLShader gObjectSimpleNonIndexedTexGenProgram;
+extern LLGLSLShader gObjectSimpleNonIndexedTexGenWaterProgram;
extern LLGLSLShader gObjectSimpleNonIndexedWaterProgram;
extern LLGLSLShader gObjectAlphaMaskNonIndexedProgram;
extern LLGLSLShader gObjectAlphaMaskNonIndexedWaterProgram;
+extern LLGLSLShader gObjectAlphaMaskNoColorProgram;
+extern LLGLSLShader gObjectAlphaMaskNoColorWaterProgram;
extern LLGLSLShader gObjectFullbrightProgram;
extern LLGLSLShader gObjectFullbrightWaterProgram;
+extern LLGLSLShader gObjectFullbrightNoColorProgram;
+extern LLGLSLShader gObjectFullbrightNoColorWaterProgram;
+extern LLGLSLShader gObjectEmissiveProgram;
+extern LLGLSLShader gObjectEmissiveWaterProgram;
extern LLGLSLShader gObjectFullbrightAlphaMaskProgram;
extern LLGLSLShader gObjectFullbrightWaterAlphaMaskProgram;
extern LLGLSLShader gObjectFullbrightNonIndexedProgram;
extern LLGLSLShader gObjectFullbrightNonIndexedWaterProgram;
+extern LLGLSLShader gObjectEmissiveNonIndexedProgram;
+extern LLGLSLShader gObjectEmissiveNonIndexedWaterProgram;
extern LLGLSLShader gObjectBumpProgram;
+extern LLGLSLShader gTreeProgram;
+extern LLGLSLShader gTreeWaterProgram;
extern LLGLSLShader gObjectSimpleLODProgram;
extern LLGLSLShader gObjectFullbrightLODProgram;
@@ -327,11 +268,13 @@ extern LLGLSLShader gObjectShinyNonIndexedWaterProgram;
extern LLGLSLShader gSkinnedObjectSimpleProgram;
extern LLGLSLShader gSkinnedObjectFullbrightProgram;
+extern LLGLSLShader gSkinnedObjectEmissiveProgram;
extern LLGLSLShader gSkinnedObjectFullbrightShinyProgram;
extern LLGLSLShader gSkinnedObjectShinySimpleProgram;
extern LLGLSLShader gSkinnedObjectSimpleWaterProgram;
extern LLGLSLShader gSkinnedObjectFullbrightWaterProgram;
+extern LLGLSLShader gSkinnedObjectEmissiveWaterProgram;
extern LLGLSLShader gSkinnedObjectFullbrightShinyWaterProgram;
extern LLGLSLShader gSkinnedObjectShinySimpleWaterProgram;
@@ -363,11 +306,11 @@ extern LLGLSLShader gPostNightVisionProgram;
// Deferred rendering shaders
extern LLGLSLShader gDeferredImpostorProgram;
-extern LLGLSLShader gDeferredEdgeProgram;
extern LLGLSLShader gDeferredWaterProgram;
extern LLGLSLShader gDeferredDiffuseProgram;
extern LLGLSLShader gDeferredDiffuseAlphaMaskProgram;
extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskProgram;
+extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
extern LLGLSLShader gDeferredNonIndexedDiffuseProgram;
extern LLGLSLShader gDeferredSkinnedDiffuseProgram;
extern LLGLSLShader gDeferredSkinnedBumpProgram;
@@ -375,34 +318,32 @@ extern LLGLSLShader gDeferredSkinnedAlphaProgram;
extern LLGLSLShader gDeferredBumpProgram;
extern LLGLSLShader gDeferredTerrainProgram;
extern LLGLSLShader gDeferredTreeProgram;
+extern LLGLSLShader gDeferredTreeShadowProgram;
extern LLGLSLShader gDeferredLightProgram;
extern LLGLSLShader gDeferredMultiLightProgram;
extern LLGLSLShader gDeferredSpotLightProgram;
extern LLGLSLShader gDeferredMultiSpotLightProgram;
extern LLGLSLShader gDeferredSunProgram;
-extern LLGLSLShader gDeferredGIProgram;
-extern LLGLSLShader gDeferredGIFinalProgram;
extern LLGLSLShader gDeferredBlurLightProgram;
extern LLGLSLShader gDeferredAvatarProgram;
extern LLGLSLShader gDeferredSoftenProgram;
extern LLGLSLShader gDeferredShadowProgram;
extern LLGLSLShader gDeferredShadowAlphaMaskProgram;
-extern LLGLSLShader gDeferredPostGIProgram;
extern LLGLSLShader gDeferredPostProgram;
+extern LLGLSLShader gDeferredCoFProgram;
+extern LLGLSLShader gDeferredDoFCombineProgram;
+extern LLGLSLShader gFXAAProgram;
extern LLGLSLShader gDeferredPostNoDoFProgram;
extern LLGLSLShader gDeferredAvatarShadowProgram;
extern LLGLSLShader gDeferredAttachmentShadowProgram;
extern LLGLSLShader gDeferredAlphaProgram;
extern LLGLSLShader gDeferredFullbrightProgram;
+extern LLGLSLShader gDeferredEmissiveProgram;
extern LLGLSLShader gDeferredAvatarEyesProgram;
extern LLGLSLShader gDeferredAvatarAlphaProgram;
extern LLGLSLShader gDeferredWLSkyProgram;
extern LLGLSLShader gDeferredWLCloudProgram;
extern LLGLSLShader gDeferredStarProgram;
-extern LLGLSLShader gLuminanceGatherProgram;
-
-//current avatar shader parameter pointer
-extern GLint gAvatarMatrixParam;
-
+extern LLGLSLShader gNormalMapGenProgram;
#endif
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 0fb94bc44b..c88122f22c 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -854,7 +854,7 @@ void send_stats()
body["DisplayNamesEnabled"] = gSavedSettings.getBOOL("UseDisplayNames");
body["DisplayNamesShowUsername"] = gSavedSettings.getBOOL("NameTagShowUsernames");
- body["MinimalSkin"] = !gSavedSettings.getString("SessionSettingsFile").empty();
+ body["MinimalSkin"] = false;
LLViewerStats::getInstance()->addToMessage(body);
LLHTTPClient::post(url, body, new ViewerStatsResponder());
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 4798bb536f..b41ed00f17 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -32,6 +32,7 @@
#include "llaudioengine.h"
#include "llavataractions.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llfocusmgr.h"
#include "llinventorybridge.h"
@@ -50,7 +51,6 @@
#include "llpreviewtexture.h"
#include "llscrollbar.h"
#include "llscrollcontainer.h"
-#include "llsidetray.h"
#include "lltooldraganddrop.h"
#include "lltooltip.h"
#include "lltrans.h"
@@ -80,7 +80,7 @@ public:
LLSD key;
key["type"] = "landmark";
key["id"] = landmark_inv_id;
- LLSideTray::getInstance()->showPanel("panel_places", key);
+ LLFloaterSidePanelContainer::showPanel("places", key);
}
static void processForeignLandmark(LLLandmark* landmark,
const LLUUID& object_id, const LLUUID& notecard_inventory_id,
@@ -88,12 +88,12 @@ public:
{
LLVector3d global_pos;
landmark->getGlobalPos(global_pos);
- LLViewerInventoryItem* agent_lanmark =
+ LLViewerInventoryItem* agent_landmark =
LLLandmarkActions::findLandmarkForGlobalPos(global_pos);
- if (agent_lanmark)
+ if (agent_landmark)
{
- showInfo(agent_lanmark->getUUID());
+ showInfo(agent_landmark->getUUID());
}
else
{
@@ -104,8 +104,13 @@ public:
}
else
{
+ LLInventoryItem* item = item_ptr.get();
LLPointer<LLEmbeddedLandmarkCopied> cb = new LLEmbeddedLandmarkCopied();
- copy_inventory_from_notecard(object_id, notecard_inventory_id, item_ptr.get(), gInventoryCallbacks.registerCB(cb));
+ copy_inventory_from_notecard(get_folder_by_itemtype(item),
+ object_id,
+ notecard_inventory_id,
+ item,
+ gInventoryCallbacks.registerCB(cb));
}
}
}
@@ -1266,9 +1271,11 @@ bool LLViewerTextEditor::importStream(std::istream& str)
void LLViewerTextEditor::copyInventory(const LLInventoryItem* item, U32 callback_id)
{
- copy_inventory_from_notecard(mObjectID,
+ copy_inventory_from_notecard(LLUUID::null, // Don't specify a destination -- let the sim do that
+ mObjectID,
mNotecardInventoryID,
- item, callback_id);
+ item,
+ callback_id);
}
bool LLViewerTextEditor::hasEmbeddedInventory()
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 280337be0f..f4bbc2b067 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -417,6 +417,48 @@ const S32 min_non_tex_system_mem = (128<<20); // 128 MB
F32 texmem_lower_bound_scale = 0.85f;
F32 texmem_middle_bound_scale = 0.925f;
+//static
+bool LLViewerTexture::isMemoryForTextureLow()
+{
+ const static S32 MIN_FREE_TEXTURE_MEMORY = 5 ; //MB
+ const static S32 MIN_FREE_MAIN_MEMORy = 100 ; //MB
+
+ bool low_mem = false ;
+ if (gGLManager.mHasATIMemInfo)
+ {
+ S32 meminfo[4];
+ glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, meminfo);
+
+ if(meminfo[0] / 1024 < MIN_FREE_TEXTURE_MEMORY)
+ {
+ low_mem = true ;
+ }
+ }
+#if 0 //ignore nVidia cards
+ else if (gGLManager.mHasNVXMemInfo)
+ {
+ S32 free_memory;
+ glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &free_memory);
+
+ if(free_memory / 1024 < MIN_FREE_TEXTURE_MEMORY)
+ {
+ low_mem = true ;
+ }
+ }
+#endif
+
+ if(!low_mem) //check main memory, only works for windows.
+ {
+ LLMemory::updateMemoryInfo() ;
+ if(LLMemory::getAvailableMemKB() / 1024 < MIN_FREE_MAIN_MEMORy)
+ {
+ low_mem = true ;
+ }
+ }
+
+ return low_mem ;
+}
+
//static
void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity)
{
@@ -449,6 +491,11 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity
sEvaluationTimer.reset();
}
}
+ else if(sEvaluationTimer.getElapsedTimeF32() > discard_delta_time && isMemoryForTextureLow())
+ {
+ sDesiredDiscardBias += discard_bias_delta;
+ sEvaluationTimer.reset();
+ }
else if (sDesiredDiscardBias > 0.0f &&
BYTES_TO_MEGA_BYTES(sBoundTextureMemoryInBytes) < sMaxBoundTextureMemInMegaBytes * texmem_lower_bound_scale &&
BYTES_TO_MEGA_BYTES(sTotalTextureMemoryInBytes) < sMaxTotalTextureMemInMegaBytes * texmem_lower_bound_scale)
@@ -2222,6 +2269,7 @@ void LLViewerFetchedTexture::unpauseLoadedCallbacks(const LLLoadedCallbackEntry:
}
}
mPauseLoadedCallBacks = FALSE ;
+ mLastCallBackActiveTime = sCurrentTime ;
if(need_raw)
{
mSaveRawImage = TRUE ;
@@ -2261,13 +2309,18 @@ void LLViewerFetchedTexture::pauseLoadedCallbacks(const LLLoadedCallbackEntry::s
bool LLViewerFetchedTexture::doLoadedCallbacks()
{
- static const F32 MAX_INACTIVE_TIME = 120.f ; //seconds
+ static const F32 MAX_INACTIVE_TIME = 900.f ; //seconds
if (mNeedsCreateTexture)
{
return false;
}
- if(sCurrentTime - mLastCallBackActiveTime > MAX_INACTIVE_TIME)
+ if(mPauseLoadedCallBacks)
+ {
+ destroyRawImage();
+ return false; //paused
+ }
+ if(sCurrentTime - mLastCallBackActiveTime > MAX_INACTIVE_TIME && !mIsFetching)
{
clearCallbackEntryList() ; //remove all callbacks.
return false ;
@@ -2290,12 +2343,8 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
// Remove ourself from the global list of textures with callbacks
gTextureList.mCallbackList.erase(this);
- }
- if(mPauseLoadedCallBacks)
- {
- destroyRawImage();
- return res; //paused
- }
+ return false ;
+ }
S32 gl_discard = getDiscardLevel();
@@ -2557,7 +2606,11 @@ bool LLViewerFetchedTexture::needsToSaveRawImage()
void LLViewerFetchedTexture::destroyRawImage()
{
- if (mAuxRawImage.notNull()) sAuxCount--;
+ if (mAuxRawImage.notNull())
+ {
+ sAuxCount--;
+ mAuxRawImage = NULL;
+ }
if (mRawImage.notNull())
{
@@ -2571,12 +2624,12 @@ void LLViewerFetchedTexture::destroyRawImage()
}
setCachedRawImage() ;
}
+
+ mRawImage = NULL;
+
+ mIsRawImageValid = FALSE;
+ mRawDiscardLevel = INVALID_DISCARD_LEVEL;
}
-
- mRawImage = NULL;
- mAuxRawImage = NULL;
- mIsRawImageValid = FALSE;
- mRawDiscardLevel = INVALID_DISCARD_LEVEL;
}
//use the mCachedRawImage to (re)generate the gl texture.
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index a4a5ae0a5b..b96441127d 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -267,6 +267,7 @@ private:
/*virtual*/ LLImageGL* getGLTexture() const ;
virtual void switchToCachedImage();
+ static bool isMemoryForTextureLow() ;
protected:
LLUUID mID;
S32 mBoostLevel; // enum describing priority level
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 30ef8b8a29..cddf7dcfea 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -530,9 +530,11 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image)
}
llerrs << "LLViewerTextureList::removeImageFromList - Image not in list" << llendl;
}
- if(mImageList.erase(image) != 1)
+
+ S32 count = mImageList.erase(image) ;
+ if(count != 1)
{
- llerrs << "Error happens when remove image from mImageList!" << llendl ;
+ llerrs << "Error happens when remove image from mImageList: " << count << llendl ;
}
image->setInImageList(FALSE) ;
@@ -586,6 +588,11 @@ void LLViewerTextureList::dirtyImage(LLViewerFetchedTexture *image)
////////////////////////////////////////////////////////////////////////////
static LLFastTimer::DeclareTimer FTM_IMAGE_MARK_DIRTY("Dirty Images");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_PRIORITIES("Prioritize");
+static LLFastTimer::DeclareTimer FTM_IMAGE_CALLBACKS("Callbacks");
+static LLFastTimer::DeclareTimer FTM_IMAGE_FETCH("Fetch");
+static LLFastTimer::DeclareTimer FTM_IMAGE_CREATE("Create");
+static LLFastTimer::DeclareTimer FTM_IMAGE_STATS("Stats");
void LLViewerTextureList::updateImages(F32 max_time)
{
@@ -597,14 +604,25 @@ void LLViewerTextureList::updateImages(F32 max_time)
LLViewerStats::getInstance()->mGLBoundMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageGL::sBoundTextureMemoryInBytes));
LLViewerStats::getInstance()->mRawMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageRaw::sGlobalRawMemory));
LLViewerStats::getInstance()->mFormattedMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageFormatted::sGlobalFormattedMemory));
-
- updateImagesDecodePriorities();
+
+
+ {
+ LLFastTimer t(FTM_IMAGE_UPDATE_PRIORITIES);
+ updateImagesDecodePriorities();
+ }
F32 total_max_time = max_time;
- max_time -= updateImagesFetchTextures(max_time);
+
+ {
+ LLFastTimer t(FTM_IMAGE_FETCH);
+ max_time -= updateImagesFetchTextures(max_time);
+ }
- max_time = llmax(max_time, total_max_time*.50f); // at least 50% of max_time
- max_time -= updateImagesCreateTextures(max_time);
+ {
+ LLFastTimer t(FTM_IMAGE_CREATE);
+ max_time = llmax(max_time, total_max_time*.50f); // at least 50% of max_time
+ max_time -= updateImagesCreateTextures(max_time);
+ }
if (!mDirtyTextureList.empty())
{
@@ -612,24 +630,32 @@ void LLViewerTextureList::updateImages(F32 max_time)
gPipeline.dirtyPoolObjectTextures(mDirtyTextureList);
mDirtyTextureList.clear();
}
- bool didone = false;
- for (image_list_t::iterator iter = mCallbackList.begin();
- iter != mCallbackList.end(); )
+
{
- //trigger loaded callbacks on local textures immediately
- LLViewerFetchedTexture* image = *iter++;
- if (!image->getUrl().empty())
+ LLFastTimer t(FTM_IMAGE_CALLBACKS);
+ bool didone = false;
+ for (image_list_t::iterator iter = mCallbackList.begin();
+ iter != mCallbackList.end(); )
{
- // Do stuff to handle callbacks, update priorities, etc.
- didone = image->doLoadedCallbacks();
- }
- else if (!didone)
- {
- // Do stuff to handle callbacks, update priorities, etc.
- didone = image->doLoadedCallbacks();
+ //trigger loaded callbacks on local textures immediately
+ LLViewerFetchedTexture* image = *iter++;
+ if (!image->getUrl().empty())
+ {
+ // Do stuff to handle callbacks, update priorities, etc.
+ didone = image->doLoadedCallbacks();
+ }
+ else if (!didone)
+ {
+ // Do stuff to handle callbacks, update priorities, etc.
+ didone = image->doLoadedCallbacks();
+ }
}
}
- updateImagesUpdateStats();
+
+ {
+ LLFastTimer t(FTM_IMAGE_STATS);
+ updateImagesUpdateStats();
+ }
}
void LLViewerTextureList::updateImagesDecodePriorities()
@@ -747,7 +773,6 @@ void LLViewerTextureList::updateImagesDecodePriorities()
return type_from_host;
}
*/
-static LLFastTimer::DeclareTimer FTM_IMAGE_CREATE("Create Images");
F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
{
@@ -757,8 +782,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
// Create GL textures for all textures that need them (images which have been
// decoded, but haven't been pushed into GL).
//
- LLFastTimer t(FTM_IMAGE_CREATE);
-
+
LLTimer create_timer;
image_list_t::iterator enditer = mCreateTextureList.begin();
for (image_list_t::iterator iter = mCreateTextureList.begin();
@@ -1053,6 +1077,13 @@ S32 LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)
// Treat any card with < 32 MB (shudder) as having 32 MB
// - it's going to be swapping constantly regardless
S32 max_vram = gGLManager.mVRAM;
+
+ if(gGLManager.mIsATI)
+ {
+ //shrink the availabe vram for ATI cards because some of them do not handel texture swapping well.
+ max_vram = (S32)(max_vram * 0.75f);
+ }
+
max_vram = llmax(max_vram, getMinVideoRamSetting());
max_texmem = max_vram;
if (!get_recommended)
@@ -1060,10 +1091,19 @@ S32 LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)
}
else
{
- if (get_recommended)
- max_texmem = 128;
- else
+ if (!get_recommended)
+ {
+ max_texmem = 512;
+ }
+ else if (gSavedSettings.getBOOL("NoHardwareProbe")) //did not do hardware detection at startup
+ {
max_texmem = 512;
+ }
+ else
+ {
+ max_texmem = 128;
+ }
+
llwarns << "VRAM amount not detected, defaulting to " << max_texmem << " MB" << llendl;
}
@@ -1342,7 +1382,8 @@ LLUIImagePtr LLUIImageList::getUIImageByID(const LLUUID& image_id, S32 priority)
const BOOL use_mips = FALSE;
const LLRect scale_rect = LLRect::null;
- return loadUIImageByID(image_id, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+ const LLRect clip_rect = LLRect::null;
+ return loadUIImageByID(image_id, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
}
LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priority)
@@ -1356,32 +1397,33 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori
const BOOL use_mips = FALSE;
const LLRect scale_rect = LLRect::null;
- return loadUIImageByName(image_name, image_name, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+ const LLRect clip_rect = LLRect::null;
+ return loadUIImageByName(image_name, image_name, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
}
LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename,
- BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority )
+ BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority )
{
if (boost_priority == LLViewerTexture::BOOST_NONE)
{
boost_priority = LLViewerTexture::BOOST_UI;
}
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
- return loadUIImage(imagep, name, use_mips, scale_rect);
+ return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
}
LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
- BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority)
+ BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority)
{
if (boost_priority == LLViewerTexture::BOOST_NONE)
{
boost_priority = LLViewerTexture::BOOST_UI;
}
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
- return loadUIImage(imagep, id.asString(), use_mips, scale_rect);
+ return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
}
-LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
{
if (!imagep) return NULL;
@@ -1402,13 +1444,14 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
LLUIImageLoadData* datap = new LLUIImageLoadData;
datap->mImageName = name;
datap->mImageScaleRegion = scale_rect;
+ datap->mImageClipRegion = clip_rect;
imagep->setLoadedCallback(onUIImageLoaded, 0, FALSE, FALSE, datap, NULL);
}
return new_imagep;
}
-LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
{
// look for existing image
uuid_ui_image_map_t::iterator found_it = mUIImages.find(name);
@@ -1418,7 +1461,7 @@ LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::s
llerrs << "UI Image " << name << " already loaded." << llendl;
}
- return loadUIImageByName(name, filename, use_mips, scale_rect);
+ return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect);
}
//static
@@ -1432,6 +1475,7 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
LLUIImageLoadData* image_datap = (LLUIImageLoadData*)user_data;
std::string ui_image_name = image_datap->mImageName;
LLRect scale_rect = image_datap->mImageScaleRegion;
+ LLRect clip_rect = image_datap->mImageClipRegion;
if (final)
{
delete image_datap;
@@ -1448,9 +1492,21 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
// from power-of-2 gl image
if (success && imagep.notNull() && src_vi && (src_vi->getUrl().compare(0, 7, "file://")==0))
{
- F32 clip_x = (F32)src_vi->getOriginalWidth() / (F32)src_vi->getFullWidth();
- F32 clip_y = (F32)src_vi->getOriginalHeight() / (F32)src_vi->getFullHeight();
- imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+ F32 full_width = (F32)src_vi->getFullWidth();
+ F32 full_height = (F32)src_vi->getFullHeight();
+ F32 clip_x = (F32)src_vi->getOriginalWidth() / full_width;
+ F32 clip_y = (F32)src_vi->getOriginalHeight() / full_height;
+ if (clip_rect != LLRect::null)
+ {
+ imagep->setClipRegion(LLRectf(llclamp((F32)clip_rect.mLeft / full_width, 0.f, 1.f),
+ llclamp((F32)clip_rect.mTop / full_height, 0.f, 1.f),
+ llclamp((F32)clip_rect.mRight / full_width, 0.f, 1.f),
+ llclamp((F32)clip_rect.mBottom / full_height, 0.f, 1.f)));
+ }
+ else
+ {
+ imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+ }
if (scale_rect != LLRect::null)
{
imagep->setScaleRegion(
@@ -1471,6 +1527,7 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>
Optional<std::string> file_name;
Optional<bool> preload;
Optional<LLRect> scale;
+ Optional<LLRect> clip;
Optional<bool> use_mips;
UIImageDeclaration()
@@ -1478,6 +1535,7 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>
file_name("file_name"),
preload("preload", false),
scale("scale"),
+ clip("clip"),
use_mips("use_mips", false)
{}
};
@@ -1572,7 +1630,7 @@ bool LLUIImageList::initFromFile()
{
continue;
}
- preloadUIImage(image.name, file_name, image.use_mips, image.scale);
+ preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip);
}
if (cur_pass == PASS_DECODE_NOW && !gSavedSettings.getBOOL("NoPreload"))
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index 7f4dd0ae88..e0a362596d 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -220,24 +220,27 @@ public:
bool initFromFile();
- LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect);
+ LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect);
static void onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );
private:
LLPointer<LLUIImage> loadUIImageByName(const std::string& name, const std::string& filename,
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
+ const LLRect& clip_rect = LLRect::null,
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
LLPointer<LLUIImage> loadUIImageByID(const LLUUID& id,
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
+ const LLRect& clip_rect = LLRect::null,
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
- LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null);
+ LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null);
struct LLUIImageLoadData
{
std::string mImageName;
LLRect mImageScaleRegion;
+ LLRect mImageClipRegion;
};
typedef std::map< std::string, LLPointer<LLUIImage> > uuid_ui_image_map_t;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 98ae746ca7..31dfa1923c 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -85,6 +85,7 @@
// newview includes
#include "llagent.h"
#include "llbox.h"
+#include "llchicletbar.h"
#include "llconsole.h"
#include "llviewercontrol.h"
#include "llcylinder.h"
@@ -133,7 +134,6 @@
#include "llpreviewtexture.h"
#include "llprogressview.h"
#include "llresmgr.h"
-#include "llsidetray.h"
#include "llselectmgr.h"
#include "llrootview.h"
#include "llrendersphere.h"
@@ -148,6 +148,7 @@
#include "lltexturefetch.h"
#include "lltextureview.h"
#include "lltool.h"
+#include "lltoolbarview.h"
#include "lltoolcomp.h"
#include "lltooldraganddrop.h"
#include "lltoolface.h"
@@ -187,7 +188,6 @@
#include "llviewerjoystick.h"
#include "llviewernetwork.h"
#include "llpostprocess.h"
-#include "llbottomtray.h"
#include "llnearbychatbar.h"
#include "llagentui.h"
#include "llwearablelist.h"
@@ -489,6 +489,7 @@ public:
{
F32 cost = 0.f;
S32 count = 0;
+ S32 vcount = 0;
S32 object_count = 0;
S32 total_bytes = 0;
S32 visible_bytes = 0;
@@ -510,7 +511,9 @@ public:
S32 bytes = 0;
S32 visible = 0;
cost += object->getStreamingCost(&bytes, &visible);
- count += object->getTriangleCount();
+ S32 vt = 0;
+ count += object->getTriangleCount(&vt);
+ vcount += vt;
total_bytes += bytes;
visible_bytes += visible;
}
@@ -521,20 +524,20 @@ public:
{
label = "Selection";
cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectStreamingCost(&total_bytes, &visible_bytes);
- count = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectTriangleCount();
+ count = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectTriangleCount(&vcount);
object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
}
addText(xpos,ypos, llformat("%s streaming cost: %.1f", label, cost));
ypos += y_inc;
- addText(xpos, ypos, llformat(" %.3f KTris, %.1f/%.1f KB, %d objects",
- count/1000.f, visible_bytes/1024.f, total_bytes/1024.f, object_count));
+ addText(xpos, ypos, llformat(" %.3f KTris, %.3f KVerts, %.1f/%.1f KB, %d objects",
+ count/1000.f, vcount/1000.f, visible_bytes/1024.f, total_bytes/1024.f, object_count));
ypos += y_inc;
}
- addText(xpos, ypos, llformat("%d MB Vertex Data", LLVertexBuffer::sAllocatedBytes/(1024*1024)));
+ addText(xpos, ypos, llformat("%d MB Vertex Data (%d MB Pooled)", LLVertexBuffer::sAllocatedBytes/(1024*1024), LLVBOPool::sBytesPooled/(1024*1024)));
ypos += y_inc;
addText(xpos, ypos, llformat("%d Vertex Buffers", LLVertexBuffer::sGLCount));
@@ -737,37 +740,6 @@ public:
}
}
- //temporary hack to give feedback on mesh upload progress
- if (!gMeshRepo.mUploads.empty())
- {
- for (std::vector<LLMeshUploadThread*>::iterator iter = gMeshRepo.mUploads.begin();
- iter != gMeshRepo.mUploads.end(); ++iter)
- {
- LLMeshUploadThread* thread = *iter;
-
- addText(xpos, ypos, llformat("Mesh Uploads: %d",
- thread->mPendingUploads));
- ypos += y_inc;
- }
- }
-
- if (!gMeshRepo.mPendingRequests.empty() ||
- !gMeshRepo.mThread->mHeaderReqQ.empty() ||
- !gMeshRepo.mThread->mLODReqQ.empty())
- {
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
- S32 pending = (S32) gMeshRepo.mPendingRequests.size();
- S32 header = (S32) gMeshRepo.mThread->mHeaderReqQ.size();
- S32 lod = (S32) gMeshRepo.mThread->mLODReqQ.size();
-
- addText(xpos, ypos, llformat ("Mesh Queue - %d pending (%d:%d header | %d:%d LOD)",
- pending,
- LLMeshRepoThread::sActiveHeaderRequests, header,
- LLMeshRepoThread::sActiveLODRequests, lod));
-
- ypos += y_inc;
- }
-
if (gSavedSettings.getBOOL("DebugShowTextureInfo"))
{
LLViewerObject* objectp = NULL ;
@@ -838,6 +810,20 @@ void LLViewerWindow::updateDebugText()
// LLViewerWindow
//
+LLViewerWindow::Params::Params()
+: title("title"),
+ name("name"),
+ x("x"),
+ y("y"),
+ width("width"),
+ height("height"),
+ min_width("min_width"),
+ min_height("min_height"),
+ fullscreen("fullscreen", false),
+ ignore_pixel_depth("ignore_pixel_depth", false)
+{}
+
+
BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down)
{
const char* buttonname = "";
@@ -940,6 +926,11 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK
// }
//}
+ // Mark the click as handled and return if we aren't within the root view to avoid spurious bugs
+ if( !mRootView->pointInView(x, y) )
+ {
+ return TRUE;
+ }
// Give the UI views a chance to process the click
if( mRootView->handleAnyMouseClick(x, y, mask, clicktype, down) )
{
@@ -1341,7 +1332,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
{
if (activated)
{
- mActive = TRUE;
+ mActive = true;
send_agent_resume();
gAgent.clearAFK();
@@ -1350,7 +1341,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
}
else
{
- mActive = FALSE;
+ mActive = false;
// if the user has chosen to go Away automatically after some time, then go Away when minimizing
if (gSavedSettings.getS32("AFKTimeout"))
@@ -1526,17 +1517,13 @@ std::string LLViewerWindow::translateString(const char* tag,
//
// Classes
//
-LLViewerWindow::LLViewerWindow(
- const std::string& title, const std::string& name,
- S32 x, S32 y,
- S32 width, S32 height,
- BOOL fullscreen, BOOL ignore_pixel_depth) // fullscreen is no longer used
- :
- mWindow(NULL),
- mActive(TRUE),
- mWindowRectRaw(0, height, width, 0),
- mWindowRectScaled(0, height, width, 0),
- mWorldViewRectRaw(0, height, width, 0),
+LLViewerWindow::LLViewerWindow(const Params& p)
+: mWindow(NULL),
+ mActive(true),
+ mUIVisible(true),
+ mWindowRectRaw(0, p.height, p.width, 0),
+ mWindowRectScaled(0, p.height, p.width, 0),
+ mWorldViewRectRaw(0, p.height, p.width, 0),
mLeftMouseDown(FALSE),
mMiddleMouseDown(FALSE),
mRightMouseDown(FALSE),
@@ -1572,14 +1559,20 @@ LLViewerWindow::LLViewerWindow(
// create window
mWindow = LLWindowManager::createWindow(this,
- title, name, x, y, width, height, 0,
- fullscreen,
+ p.title, p.name, p.x, p.y, p.width, p.height, 0,
+ p.fullscreen,
gHeadlessClient,
gSavedSettings.getBOOL("DisableVerticalSync"),
!gHeadlessClient,
- ignore_pixel_depth,
+ p.ignore_pixel_depth,
gSavedSettings.getBOOL("RenderDeferred") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
+ if (!LLViewerShaderMgr::sInitialized)
+ { //immediately initialize shaders
+ LLViewerShaderMgr::sInitialized = TRUE;
+ LLViewerShaderMgr::instance()->setShaders();
+ }
+
if (NULL == mWindow)
{
LLSplashScreen::update(LLTrans::getString("StartupRequireDriverUpdate"));
@@ -1604,10 +1597,12 @@ LLViewerWindow::LLViewerWindow(
LL_WARNS("Window") << " Someone took over my signal/exception handler (post createWindow)!" << LL_ENDL;
}
+ const bool do_not_enforce = false;
+ mWindow->setMinSize(p.min_width, p.min_height, do_not_enforce); // root view not set
LLCoordScreen scr;
mWindow->getSize(&scr);
- if(fullscreen && ( scr.mX!=width || scr.mY!=height))
+ if(p.fullscreen && ( scr.mX!=p.width || scr.mY!=p.height))
{
llwarns << "Fullscreen has forced us in to a different resolution now using "<<scr.mX<<" x "<<scr.mY<<llendl;
gSavedSettings.setS32("FullScreenWidth",scr.mX);
@@ -1651,7 +1646,7 @@ LLViewerWindow::LLViewerWindow(
if (LLFeatureManager::getInstance()->isSafe()
|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
- || (gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass())
+ || (gSavedSettings.getString("LastGPUString") != LLFeatureManager::getInstance()->getGPUString())
|| (gSavedSettings.getBOOL("ProbeHardwareOnStartup")))
{
LLFeatureManager::getInstance()->applyRecommendedSettings();
@@ -1716,32 +1711,30 @@ LLViewerWindow::LLViewerWindow(
void LLViewerWindow::initGLDefaults()
{
gGL.setSceneBlendType(LLRender::BT_ALPHA);
- glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
- F32 ambient[4] = {0.f,0.f,0.f,0.f };
- F32 diffuse[4] = {1.f,1.f,1.f,1.f };
- glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,ambient);
- glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,diffuse);
-
- glPixelStorei(GL_PACK_ALIGNMENT,1);
- glPixelStorei(GL_UNPACK_ALIGNMENT,1);
+ if (!LLGLSLShader::sNoFixedFunction)
+ { //initialize fixed function state
+ glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
- gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
+ glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,LLColor4::black.mV);
+ glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,LLColor4::white.mV);
- // lights for objects
- glShadeModel( GL_SMOOTH );
+ // lights for objects
+ glShadeModel( GL_SMOOTH );
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
-
- gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+ gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+ }
+ glPixelStorei(GL_PACK_ALIGNMENT,1);
+ glPixelStorei(GL_UNPACK_ALIGNMENT,1);
+
+ gGL.setAmbientLightColor(LLColor4::black);
+
glCullFace(GL_BACK);
// RN: Need this for translation and stretch manip.
- gCone.prerender();
gBox.prerender();
- gSphere.prerender();
- gCylinder.prerender();
}
struct MainPanel : public LLPanel
@@ -1778,12 +1771,19 @@ void LLViewerWindow::initBase()
// placeholder widget that controls where "world" is rendered
mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle();
- mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle();
- mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle();
mPopupView = main_view->getChild<LLPopupView>("popup_holder");
mHintHolder = main_view->getChild<LLView>("hint_holder")->getHandle();
mLoginPanelHolder = main_view->getChild<LLView>("login_panel_holder")->getHandle();
+ // Create the toolbar view
+ // Get a pointer to the toolbar view holder
+ LLPanel* panel_holder = main_view->getChild<LLPanel>("toolbar_view_holder");
+ // Load the toolbar view from file
+ gToolBarView = LLUICtrlFactory::getInstance()->createFromFile<LLToolBarView>("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
+ gToolBarView->setShape(panel_holder->getLocalRect());
+ // Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
+ gToolBarView->setVisible(FALSE);
+
// Constrain floaters to inside the menu and status bar regions.
gFloaterView = main_view->getChild<LLFloaterView>("Floater View");
gFloaterView->setFloaterSnapView(main_view->getChild<LLView>("floater_snap_region")->getHandle());
@@ -1843,13 +1843,12 @@ void LLViewerWindow::initWorldUI()
//getRootView()->sendChildToFront(gFloaterView);
//getRootView()->sendChildToFront(gSnapshotFloaterView);
- // new bottom panel
- LLPanel* bottom_tray_container = getRootView()->getChild<LLPanel>("bottom_tray_container");
- LLBottomTray* bottom_tray = LLBottomTray::getInstance();
- bottom_tray->setShape(bottom_tray_container->getLocalRect());
- bottom_tray->setFollowsAll();
- bottom_tray_container->addChild(bottom_tray);
- bottom_tray_container->setVisible(TRUE);
+ LLPanel* chiclet_container = getRootView()->getChild<LLPanel>("chiclet_container");
+ LLChicletBar* chiclet_bar = LLChicletBar::getInstance();
+ chiclet_bar->setShape(chiclet_container->getLocalRect());
+ chiclet_bar->setFollowsAll();
+ chiclet_container->addChild(chiclet_bar);
+ chiclet_container->setVisible(TRUE);
LLRect morph_view_rect = full_window;
morph_view_rect.stretch( -STATUS_BAR_HEIGHT );
@@ -1877,7 +1876,7 @@ void LLViewerWindow::initWorldUI()
gStatusBar->setShape(status_bar_container->getLocalRect());
// sync bg color with menu bar
gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor().get() );
- status_bar_container->addChild(gStatusBar);
+ status_bar_container->addChildInBack(gStatusBar);
status_bar_container->setVisible(TRUE);
// Navigation bar
@@ -1891,12 +1890,7 @@ void LLViewerWindow::initWorldUI()
if (!gSavedSettings.getBOOL("ShowNavbarNavigationPanel"))
{
- navbar->showNavigationPanel(FALSE);
- }
-
- if (!gSavedSettings.getBOOL("ShowNavbarFavoritesPanel"))
- {
- navbar->showFavoritesPanel(FALSE);
+ navbar->setVisible(FALSE);
}
// Top Info bar
@@ -1922,8 +1916,7 @@ void LLViewerWindow::initWorldUI()
hud_rect.mTop -= gMenuBarView->getRect().getHeight();
}
gHUDView = new LLHUDView(hud_rect);
- // put behind everything else in the UI
- getRootView()->addChildInBack(gHUDView);
+ getRootView()->addChild(gHUDView);
}
LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container");
@@ -1931,40 +1924,30 @@ void LLViewerWindow::initWorldUI()
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
- // put sidetray in container
- LLPanel* side_tray_container = getRootView()->getChild<LLPanel>("side_tray_container");
- LLSideTray* sidetrayp = LLSideTray::getInstance();
- sidetrayp->setShape(side_tray_container->getLocalRect());
- // don't follow right edge to avoid spurious resizes, since we are using a fixed width layout
- sidetrayp->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_BOTTOM);
- side_tray_container->addChild(sidetrayp);
- side_tray_container->setVisible(FALSE);
-
- // put sidetray buttons in their own panel
- LLPanel* buttons_panel = sidetrayp->getButtonsPanel();
- LLPanel* buttons_panel_container = getRootView()->getChild<LLPanel>("side_bar_tabs");
- buttons_panel->setShape(buttons_panel_container->getLocalRect());
- buttons_panel->setFollowsAll();
- buttons_panel_container->addChild(buttons_panel);
-
- LLView* avatar_picker_destination_guide_container = gViewerWindow->getRootView()->getChild<LLView>("avatar_picker_and_destination_guide_container");
- avatar_picker_destination_guide_container->getChild<LLButton>("close")->setCommitCallback(boost::bind(toggle_destination_and_avatar_picker, LLSD()));
- LLMediaCtrl* destinations = avatar_picker_destination_guide_container->findChild<LLMediaCtrl>("destination_guide_contents");
- LLMediaCtrl* avatar_picker = avatar_picker_destination_guide_container->findChild<LLMediaCtrl>("avatar_picker_contents");
+ // Load and make the toolbars visible
+ // Note: we need to load the toolbars only *after* the user is logged in and IW
+ if (gToolBarView)
+ {
+ gToolBarView->loadToolbars();
+ gToolBarView->setVisible(TRUE);
+ }
+
+ LLMediaCtrl* destinations = LLFloaterReg::getInstance("destinations")->getChild<LLMediaCtrl>("destination_guide_contents");
if (destinations)
{
destinations->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
- destinations->navigateTo(gSavedSettings.getString("DestinationGuideURL"), "text/html");
+ std::string url = gSavedSettings.getString("DestinationGuideURL");
+ url = LLWeb::expandURLSubstitutions(url, LLSD());
+ destinations->navigateTo(url, "text/html");
}
-
+ LLMediaCtrl* avatar_picker = LLFloaterReg::getInstance("avatar")->findChild<LLMediaCtrl>("avatar_picker_contents");
if (avatar_picker)
{
avatar_picker->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
- avatar_picker->navigateTo(gSavedSettings.getString("AvatarPickerURL"), "text/html");
+ std::string url = gSavedSettings.getString("AvatarPickerURL");
+ url = LLWeb::expandURLSubstitutions(url, LLSD());
+ avatar_picker->navigateTo(url, "text/html");
}
-
- // show destinations by default
- toggle_destination_and_avatar_picker(gSavedSettings.getS32("DestinationsAndAvatarsVisibility"));
}
// Destroy the UI
@@ -1990,7 +1973,7 @@ void LLViewerWindow::shutdownViews()
// *TODO: Make LLNavigationBar part of gViewerWindow
if (LLNavigationBar::instanceExists())
{
- delete LLNavigationBar::getInstance();
+ delete LLNavigationBar::getInstance();
}
// destroy menus after instantiating navbar above, as it needs
@@ -2006,6 +1989,7 @@ void LLViewerWindow::shutdownViews()
gIMMgr = NULL;
gToolTipView = NULL;
+ gToolBarView = NULL;
gFloaterView = NULL;
gMorphView = NULL;
@@ -2156,16 +2140,19 @@ void LLViewerWindow::reshape(S32 width, S32 height)
sendShapeToSim();
// store new settings for the mode we are in, regardless
- // Only save size if not maximized
BOOL maximized = mWindow->getMaximized();
gSavedSettings.setBOOL("WindowMaximized", maximized);
- LLCoordScreen window_size;
- if (!maximized
- && mWindow->getSize(&window_size))
+ if (!maximized)
{
- gSavedSettings.setS32("WindowWidth", window_size.mX);
- gSavedSettings.setS32("WindowHeight", window_size.mY);
+ U32 min_window_width=gSavedSettings.getU32("MinWindowWidth");
+ U32 min_window_height=gSavedSettings.getU32("MinWindowHeight");
+ // tell the OS specific window code about min window size
+ mWindow->setMinSize(min_window_width, min_window_height);
+
+ // Only save size if not maximized
+ gSavedSettings.setU32("WindowWidth", mWindowRectRaw.getWidth());
+ gSavedSettings.setU32("WindowHeight", mWindowRectRaw.getHeight());
}
LLViewerStats::getInstance()->setStat(LLViewerStats::ST_WINDOW_WIDTH, (F64)width);
@@ -2177,10 +2164,10 @@ void LLViewerWindow::reshape(S32 width, S32 height)
// Hide normal UI when a logon fails
void LLViewerWindow::setNormalControlsVisible( BOOL visible )
{
- if(LLBottomTray::instanceExists())
+ if(LLChicletBar::instanceExists())
{
- LLBottomTray::getInstance()->setVisible(visible);
- LLBottomTray::getInstance()->setEnabled(visible);
+ LLChicletBar::getInstance()->setVisible(visible);
+ LLChicletBar::getInstance()->setEnabled(visible);
}
if ( gMenuBarView )
@@ -2202,7 +2189,9 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible )
LLNavigationBar* navbarp = LLUI::getRootView()->findChild<LLNavigationBar>("navigation_bar");
if (navbarp)
{
- navbarp->setVisible( visible );
+ // when it's time to show navigation bar we need to ensure that the user wants to see it
+ // i.e. ShowNavbarNavigationPanel option is true
+ navbarp->setVisible( visible && gSavedSettings.getBOOL("ShowNavbarNavigationPanel") );
}
}
@@ -2253,6 +2242,10 @@ void LLViewerWindow::drawDebugText()
gGL.color4f(1,1,1,1);
gGL.pushMatrix();
gGL.pushUIMatrix();
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
{
// scale view by UI global scale factor and aspect ratio correction factor
gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f);
@@ -2262,6 +2255,10 @@ void LLViewerWindow::drawDebugText()
gGL.popMatrix();
gGL.flush();
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.unbind();
+ }
}
void LLViewerWindow::draw()
@@ -2276,9 +2273,9 @@ void LLViewerWindow::draw()
LLUI::setLineWidth(1.f);
// Reset any left-over transforms
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
- glLoadIdentity();
+ gGL.loadIdentity();
//S32 screen_x, screen_y;
@@ -2293,7 +2290,7 @@ void LLViewerWindow::draw()
// draw timecode block
std::string text;
- glLoadIdentity();
+ gGL.loadIdentity();
microsecondsToTimecodeString(gFrameTime,text);
const LLFontGL* font = LLFontGL::getFontSansSerif();
@@ -2329,10 +2326,10 @@ void LLViewerWindow::draw()
int pos_y = sub_region / llceil(zoom_factor);
int pos_x = sub_region - (pos_y*llceil(zoom_factor));
// offset for this tile
- glTranslatef((F32)getWindowWidthScaled() * -(F32)pos_x,
+ gGL.translatef((F32)getWindowWidthScaled() * -(F32)pos_x,
(F32)getWindowHeightScaled() * -(F32)pos_y,
0.f);
- glScalef(zoom_factor, zoom_factor, 1.f);
+ gGL.scalef(zoom_factor, zoom_factor, 1.f);
LLUI::sGLScaleFactor *= zoom_factor;
}
@@ -2361,7 +2358,7 @@ void LLViewerWindow::draw()
S32 screen_x, screen_y;
top_ctrl->localPointToScreen(0, 0, &screen_x, &screen_y);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
LLUI::pushMatrix();
LLUI::translate( (F32) screen_x, (F32) screen_y, 0.f);
top_ctrl->draw();
@@ -2473,7 +2470,12 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
// Traverses up the hierarchy
if( keyboard_focus )
{
- LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+ LLNearbyChatBar* nearby_chat = LLFloaterReg::findTypedInstance<LLNearbyChatBar>("chat_bar");
+
+ if (nearby_chat)
+ {
+ LLLineEditor* chat_editor = nearby_chat->getChatBox();
+
// arrow keys move avatar while chatting hack
if (chat_editor && chat_editor->hasFocus())
{
@@ -2504,7 +2506,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
}
}
}
-
+ }
if (keyboard_focus->handleKey(key, mask, FALSE))
{
return TRUE;
@@ -2535,11 +2537,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() &&
!keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) )
{
- LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+ LLLineEditor* chat_editor = LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar")->getChatBox();
if (chat_editor)
{
// passing NULL here, character will be added later when it is handled by character handler.
- LLBottomTray::getInstance()->getNearbyChatBar()->startChat(NULL);
+ LLNearbyChatBar::getInstance()->startChat(NULL);
return TRUE;
}
}
@@ -3166,7 +3168,7 @@ void LLViewerWindow::updateLayout()
//gMenuBarView->setItemVisible("BuildTools", gFloaterTools->getVisible());
}
- LLFloaterBuildOptions* build_options_floater = LLFloaterReg::getTypedInstance<LLFloaterBuildOptions>("build_options");
+ LLFloaterBuildOptions* build_options_floater = LLFloaterReg::findTypedInstance<LLFloaterBuildOptions>("build_options");
if (build_options_floater && build_options_floater->getVisible())
{
build_options_floater->updateGridMode();
@@ -3310,9 +3312,6 @@ void LLViewerWindow::updateKeyboardFocus()
// make sure floater visible order is in sync with tab order
gFloaterView->syncFloaterTabOrder();
}
-
- if(LLSideTray::instanceCreated())//just getInstance will create sidetray. we don't want this
- LLSideTray::getInstance()->highlightFocused();
}
static LLFastTimer::DeclareTimer FTM_UPDATE_WORLD_VIEW("Update World View");
@@ -3336,12 +3335,6 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
new_world_rect.mTop = llround((F32)new_world_rect.mTop * mDisplayScale.mV[VY]);
}
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- // use right edge of window, ignoring sidebar
- new_world_rect.mRight = mWindowRectRaw.mRight;
- }
-
if (mWorldViewRectRaw != new_world_rect)
{
mWorldViewRectRaw = new_world_rect;
@@ -3425,17 +3418,17 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();
// set up transform to encompass bounding box of HUD
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
F32 depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);
- glOrtho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
+ gGL.ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
- glLoadMatrixf(OGL_TO_CFR_ROTATION); // Load Cory's favorite reference frame
- glTranslatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
+ gGL.loadMatrix(OGL_TO_CFR_ROTATION); // Load Cory's favorite reference frame
+ gGL.translatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
}
// Render light for editing
@@ -3445,12 +3438,12 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
LLGLEnable gls_blend(GL_BLEND);
LLGLEnable gls_cull(GL_CULL_FACE);
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
if (selection->getSelectType() == SELECT_TYPE_HUD)
{
F32 zoom = gAgentCamera.mHUDCurZoom;
- glScalef(zoom, zoom, zoom);
+ gGL.scalef(zoom, zoom, zoom);
}
struct f : public LLSelectedObjectFunctor
@@ -3461,33 +3454,33 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
if (drawable && drawable->isLight())
{
LLVOVolume* vovolume = drawable->getVOVolume();
- glPushMatrix();
+ gGL.pushMatrix();
LLVector3 center = drawable->getPositionAgent();
- glTranslatef(center[0], center[1], center[2]);
+ gGL.translatef(center[0], center[1], center[2]);
F32 scale = vovolume->getLightRadius();
- glScalef(scale, scale, scale);
+ gGL.scalef(scale, scale, scale);
LLColor4 color(vovolume->getLightColor(), .5f);
- glColor4fv(color.mV);
+ gGL.color4fv(color.mV);
- F32 pixel_area = 100000.f;
+ //F32 pixel_area = 100000.f;
// Render Outside
- gSphere.render(pixel_area);
+ gSphere.render();
// Render Inside
glCullFace(GL_FRONT);
- gSphere.render(pixel_area);
+ gSphere.render();
glCullFace(GL_BACK);
- glPopMatrix();
+ gGL.popMatrix();
}
return true;
}
} func;
LLSelectMgr::getInstance()->getSelection()->applyToObjects(&func);
- glPopMatrix();
+ gGL.popMatrix();
}
// NOTE: The average position for the axis arrows of the selected objects should
@@ -3550,11 +3543,11 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
}
if (selection->getSelectType() == SELECT_TYPE_HUD && selection->getObjectCount())
{
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
stop_glerror();
}
}
@@ -4021,10 +4014,11 @@ BOOL LLViewerWindow::mousePointOnLandGlobal(const S32 x, const S32 y, LLVector3d
}
// Saves an image to the harddrive as "SnapshotX" where X >= 1.
-BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image)
+BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image, bool force_picker)
{
if (!image)
{
+ llwarns << "No image to save" << llendl;
return FALSE;
}
@@ -4044,7 +4038,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image)
pick_type = LLFilePicker::FFSAVE_ALL; // ???
// Get a base file location if needed.
- if ( ! isSnapshotLocSet())
+ if (force_picker || !isSnapshotLocSet())
{
std::string proposed_name( sSnapshotBaseName );
@@ -4084,6 +4078,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image)
}
while( -1 != err ); // search until the file is not found (i.e., stat() gives an error).
+ llinfos << "Saving snapshot to " << filepath << llendl;
return image->save(filepath);
}
@@ -4092,25 +4087,18 @@ void LLViewerWindow::resetSnapshotLoc()
sSnapshotDir.clear();
}
-static S32 BORDERHEIGHT = 0;
-static S32 BORDERWIDTH = 0;
-
// static
void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
{
- LLCoordScreen size;
- gViewerWindow->mWindow->getSize(&size);
- if ( (size.mX != new_width + BORDERWIDTH)
- ||(size.mY != new_height + BORDERHEIGHT))
+ LLCoordWindow size;
+ gViewerWindow->getWindow()->getSize(&size);
+ if ( size.mX != new_width
+ || size.mY != new_height)
{
- // use actual display dimensions, not virtual UI dimensions
- S32 x = gViewerWindow->getWindowWidthRaw();
- S32 y = gViewerWindow->getWindowHeightRaw();
- BORDERWIDTH = size.mX - x;
- BORDERHEIGHT = size.mY- y;
- LLCoordScreen new_size(new_width + BORDERWIDTH,
- new_height + BORDERHEIGHT);
- gViewerWindow->mWindow->setSize(new_size);
+ LLCoordWindow new_size(new_width, new_height);
+ LLCoordScreen screen_size;
+ gViewerWindow->getWindow()->convertCoords(new_size, &screen_size);
+ gViewerWindow->getWindow()->setSize(screen_size);
}
}
@@ -4668,10 +4656,7 @@ void LLViewerWindow::stopGL(BOOL save_state)
gPipeline.destroyGL();
}
- gCone.cleanupGL();
gBox.cleanupGL();
- gSphere.cleanupGL();
- gCylinder.cleanupGL();
if(gPostProcess)
{
@@ -4745,6 +4730,9 @@ void LLViewerWindow::initFonts(F32 zoom_factor)
{
LLFontGL::destroyAllGL();
// Initialize with possibly different zoom factor
+
+ LLFontManager::initClass();
+
LLFontGL::initClass( gSavedSettings.getF32("FontScreenDPI"),
mDisplayScale.mV[VX] * zoom_factor,
mDisplayScale.mV[VY] * zoom_factor,
@@ -4937,8 +4925,8 @@ S32 LLViewerWindow::getChatConsoleBottomPad()
{
S32 offset = 0;
- if(LLBottomTray::instanceExists())
- offset += LLBottomTray::getInstance()->getRect().getHeight();
+ if(gToolBarView)
+ offset += gToolBarView->getChild<LLView>("bottom_toolbar_panel")->getRect().getHeight();
return offset;
}
@@ -4994,6 +4982,35 @@ bool LLViewerWindow::onAlert(const LLSD& notify)
return false;
}
+void LLViewerWindow::setUIVisibility(bool visible)
+{
+ mUIVisible = visible;
+
+ if (!visible)
+ {
+ gAgentCamera.changeCameraToThirdPerson(FALSE);
+ gFloaterView->hideAllFloaters();
+ }
+ else
+ {
+ gFloaterView->showHiddenFloaters();
+ }
+
+ if (gToolBarView)
+ {
+ gToolBarView->setToolBarsVisible(visible);
+ }
+
+ mRootView->getChildView("topinfo_bar_container")->setVisible(visible);
+ mRootView->getChildView("nav_bar_container")->setVisible(visible);
+ mRootView->getChildView("status_bar_container")->setVisible(visible);
+}
+
+bool LLViewerWindow::getUIVisibility()
+{
+ return mUIVisible;
+}
+
////////////////////////////////////////////////////////////////////////////
//
// LLPickInfo
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index d35feb4667..6efcaeaf18 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -44,6 +44,7 @@
#include "llstat.h"
#include "llmousehandler.h"
#include "llhandle.h"
+#include "llinitparam.h"
#include <boost/function.hpp>
#include <boost/signals2.hpp>
@@ -133,7 +134,23 @@ public:
//
// CREATORS
//
- LLViewerWindow(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, BOOL fullscreen, BOOL ignore_pixel_depth);
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Mandatory<std::string> title,
+ name;
+ Mandatory<S32> x,
+ y,
+ width,
+ height,
+ min_width,
+ min_height;
+ Optional<bool> fullscreen,
+ ignore_pixel_depth;
+
+ Params();
+ };
+
+ LLViewerWindow(const Params& p);
virtual ~LLViewerWindow();
void shutdownViews();
@@ -144,6 +161,8 @@ public:
void adjustRectanglesForFirstUse(const LLRect& window);
void adjustControlRectanglesForFirstUse(const LLRect& window);
void initWorldUI();
+ void setUIVisibility(bool);
+ bool getUIVisibility();
BOOL handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down);
@@ -283,8 +302,7 @@ public:
void updateKeyboardFocus();
void updateWorldViewRect(bool use_full_window=false);
- LLView* getNonSideTrayView() { return mNonSideTrayView.get(); }
- LLView* getFloaterViewHolder() { return mFloaterViewHolder.get(); }
+ LLView* getToolBarHolder() { return mToolBarHolder.get(); }
LLView* getHintHolder() { return mHintHolder.get(); }
LLView* getLoginPanelHolder() { return mLoginPanelHolder.get(); }
BOOL handleKey(KEY key, MASK mask);
@@ -323,7 +341,7 @@ public:
BOOL thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, ESnapshotType type) ;
BOOL isSnapshotLocSet() const { return ! sSnapshotDir.empty(); }
void resetSnapshotLoc() const { sSnapshotDir.clear(); }
- BOOL saveImageNumbered(LLImageFormatted *image);
+ BOOL saveImageNumbered(LLImageFormatted *image, bool force_picker = false);
// Reset the directory where snapshots are saved.
// Client will open directory picker on next snapshot save.
@@ -395,11 +413,10 @@ private:
S32 getChatConsoleBottomPad(); // Vertical padding for child console rect, varied by bottom clutter
LLRect getChatConsoleRect(); // Get optimal cosole rect.
-public:
+private:
LLWindow* mWindow; // graphical window object
-
-protected:
- BOOL mActive;
+ bool mActive;
+ bool mUIVisible;
LLRect mWindowRectRaw; // whole window, including UI
LLRect mWindowRectScaled; // whole window, scaled by UI size
@@ -445,8 +462,7 @@ protected:
std::string mInitAlert; // Window / GL initialization requires an alert
LLHandle<LLView> mWorldViewPlaceholder; // widget that spans the portion of screen dedicated to rendering the 3d world
- LLHandle<LLView> mNonSideTrayView; // parent of world view + bottom bar, etc...everything but the side tray
- LLHandle<LLView> mFloaterViewHolder; // container for floater_view
+ LLHandle<LLView> mToolBarHolder; // container for toolbars
LLHandle<LLView> mHintHolder; // container for hints
LLHandle<LLView> mLoginPanelHolder; // container for login panel
LLPopupView* mPopupView; // container for transient popups
@@ -460,13 +476,11 @@ protected:
boost::scoped_ptr<LLWindowListener> mWindowListener;
boost::scoped_ptr<LLViewerWindowListener> mViewerWindowListener;
-protected:
static std::string sSnapshotBaseName;
static std::string sSnapshotDir;
static std::string sMovieBaseName;
-private:
// Object temporarily hovered over while dragging
LLPointer<LLViewerObject> mDragHoveredObject;
};
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index bdab250b49..4767ba2bed 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -690,7 +690,8 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
mFullyLoadedInitialized(FALSE),
mSupportsAlphaLayers(FALSE),
mLoadedCallbacksPaused(FALSE),
- mHasPelvisOffset( FALSE )
+ mHasPelvisOffset( FALSE ),
+ mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar"))
{
LLMemType mt(LLMemType::MTYPE_AVATAR);
//VTResume(); // VTune
@@ -2117,8 +2118,8 @@ void LLVOAvatar::updateMeshData()
}
else
{
- if (buff->getRequestedIndices() == num_indices &&
- buff->getRequestedVerts() == num_vertices)
+ if (buff->getNumIndices() == num_indices &&
+ buff->getNumVerts() == num_vertices)
{
terse_update = true;
}
@@ -2138,11 +2139,19 @@ void LLVOAvatar::updateMeshData()
for(S32 k = j ; k < part_index ; k++)
{
- mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update);
+ bool rigid = false;
+ if (k == MESH_ID_EYEBALL_LEFT ||
+ k == MESH_ID_EYEBALL_RIGHT)
+ { //eyeballs can't have terse updates since they're never rendered with
+ //the hardware skinning shader
+ rigid = true;
+ }
+
+ mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update && !rigid);
}
stop_glerror();
- buff->setBuffer(0);
+ buff->flush();
if(!f_num)
{
@@ -4135,7 +4144,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
LLVertexBuffer* vb = mDrawable->getFace(0)->getVertexBuffer();
if (vb)
{
- vb->setBuffer(0);
+ vb->flush();
}
}
}
@@ -6485,10 +6494,7 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
BOOL LLVOAvatar::isFullyLoaded() const
{
- if (gSavedSettings.getBOOL("RenderUnloadedAvatar"))
- return TRUE;
- else
- return mFullyLoaded;
+ return (mRenderUnloadedAvatar || mFullyLoaded);
}
bool LLVOAvatar::isTooComplex() const
@@ -8335,7 +8341,7 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d
void LLVOAvatar::idleUpdateRenderCost()
{
static const U32 ARC_BODY_PART_COST = 200;
- static const U32 ARC_LIMIT = 2048;
+ static const U32 ARC_LIMIT = 20000;
static std::set<LLUUID> all_textures;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index e53b8e3f4b..59796370ae 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -40,6 +40,7 @@
#include "lldrawpoolalpha.h"
#include "llviewerobject.h"
#include "llcharacter.h"
+#include "llcontrol.h"
#include "llviewerjointmesh.h"
#include "llviewerjointattachment.h"
#include "llrendertarget.h"
@@ -450,6 +451,8 @@ private:
F32 mImpostorDistance;
F32 mImpostorPixelArea;
LLVector3 mLastAnimExtents[2];
+
+ LLCachedControl<bool> mRenderUnloadedAvatar;
//--------------------------------------------------------------------
// Wind rippling in clothes
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 59883e0bb1..581912f844 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2558,7 +2558,7 @@ void LLVOAvatarSelf::deleteScratchTextures()
LLImageGL::decTextureCounter(tex_size, 1, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
total_tex_size -= tex_size ;
}
- if( sScratchTexNames.checkData( GL_LUMINANCE_ALPHA ) )
+ if( sScratchTexNames.checkData( LLRender::sGLCoreProfile ? GL_RG : GL_LUMINANCE_ALPHA ) )
{
LLImageGL::decTextureCounter(tex_size, 2, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
total_tex_size -= 2 * tex_size ;
@@ -2600,89 +2600,6 @@ void LLVOAvatarSelf::deleteScratchTextures()
}
}
-BOOL LLVOAvatarSelf::bindScratchTexture( LLGLenum format )
-{
- U32 texture_bytes = 0;
- S32 components = 0;
- GLuint gl_name = getScratchTexName( format, components, &texture_bytes );
- if( gl_name )
- {
- gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, gl_name);
- stop_glerror();
-
- F32* last_bind_time = sScratchTexLastBindTime.getIfThere( format );
- if( last_bind_time )
- {
- if( *last_bind_time != LLImageGL::sLastFrameTime )
- {
- *last_bind_time = LLImageGL::sLastFrameTime;
- LLImageGL::updateBoundTexMem(texture_bytes, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
- }
- }
- else
- {
- LLImageGL::updateBoundTexMem(texture_bytes, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
- sScratchTexLastBindTime.addData( format, new F32(LLImageGL::sLastFrameTime) );
- }
- return TRUE;
- }
- return FALSE;
-}
-
-LLGLuint LLVOAvatarSelf::getScratchTexName( LLGLenum format, S32& components, U32* texture_bytes )
-{
- GLenum internal_format;
- switch( format )
- {
- case GL_LUMINANCE: components = 1; internal_format = GL_LUMINANCE8; break;
- case GL_ALPHA: components = 1; internal_format = GL_ALPHA8; break;
- case GL_LUMINANCE_ALPHA: components = 2; internal_format = GL_LUMINANCE8_ALPHA8; break;
- case GL_RGB: components = 3; internal_format = GL_RGB8; break;
- case GL_RGBA: components = 4; internal_format = GL_RGBA8; break;
- default: llassert(0); components = 4; internal_format = GL_RGBA8; break;
- }
-
- *texture_bytes = components * SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT;
-
- if( sScratchTexNames.checkData( format ) )
- {
- return *( sScratchTexNames.getData( format ) );
- }
-
- LLGLSUIDefault gls_ui;
-
- U32 name = 0;
- LLImageGL::generateTextures(1, &name );
- stop_glerror();
-
- gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, name);
- stop_glerror();
-
- LLImageGL::setManualImage(
- GL_TEXTURE_2D, 0, internal_format,
- SCRATCH_TEX_WIDTH, SCRATCH_TEX_HEIGHT,
- format, GL_UNSIGNED_BYTE, NULL );
- stop_glerror();
-
- gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
- stop_glerror();
-
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- stop_glerror();
-
- sScratchTexNames.addData( format, new LLGLuint( name ) );
-
- sScratchTexBytes += *texture_bytes;
- LLImageGL::sGlobalTextureMemoryInBytes += *texture_bytes;
-
- if(gAuditTexture)
- {
- LLImageGL::incTextureCounter(SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
- }
- return name;
-}
-
// static
void LLVOAvatarSelf::dumpScratchTextureByteCount()
{
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 51f06dee5f..74ff47a3e4 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -249,10 +249,7 @@ public:
// Scratch textures (used for compositing)
//--------------------------------------------------------------------
public:
- BOOL bindScratchTexture(LLGLenum format);
static void deleteScratchTextures();
-protected:
- LLGLuint getScratchTexName(LLGLenum format, S32& components, U32* texture_bytes);
private:
static S32 sScratchTexBytes;
static LLMap< LLGLenum, LLGLuint*> sScratchTexNames;
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index 32822e1181..8a79d564d3 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -464,7 +464,7 @@ void LLVOGrass::plantBlades()
}
void LLVOGrass::getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
+ LLStrider<LLVector4a>& verticesp,
LLStrider<LLVector3>& normalsp,
LLStrider<LLVector2>& texcoordsp,
LLStrider<LLColor4U>& colorsp,
@@ -516,21 +516,24 @@ void LLVOGrass::getGeometry(S32 idx,
position.mV[0] = mPosition.mV[VX] + x + xf;
position.mV[1] = mPosition.mV[VY] + y + yf;
position.mV[2] = mRegionp->getLand().resolveHeightRegion(position);
- *verticesp++ = v1 = position + mRegionp->getOriginAgent();
- *verticesp++ = v1;
+ v1 = position + mRegionp->getOriginAgent();
+ (*verticesp++).load3(v1.mV);
+ (*verticesp++).load3(v1.mV);
position.mV[0] += dzx;
position.mV[1] += dzy;
position.mV[2] += blade_height;
- *verticesp++ = v2 = position + mRegionp->getOriginAgent();
- *verticesp++ = v2;
+ v2 = position + mRegionp->getOriginAgent();
+ (*verticesp++).load3(v2.mV);
+ (*verticesp++).load3(v2.mV);
position.mV[0] = mPosition.mV[VX] + x - xf;
position.mV[1] = mPosition.mV[VY] + y - xf;
position.mV[2] = mRegionp->getLand().resolveHeightRegion(position);
- *verticesp++ = v3 = position + mRegionp->getOriginAgent();
- *verticesp++ = v3;
+ v3 = position + mRegionp->getOriginAgent();
+ (*verticesp++).load3(v3.mV);
+ (*verticesp++).load3(v3.mV);
LLVector3 normal1 = (v1-v2) % (v2-v3);
normal1.mV[VZ] = 0.75f;
@@ -541,8 +544,9 @@ void LLVOGrass::getGeometry(S32 idx,
position.mV[0] += dzx;
position.mV[1] += dzy;
position.mV[2] += blade_height;
- *verticesp++ = v1 = position + mRegionp->getOriginAgent();
- *verticesp++ = v1;
+ v1 = position + mRegionp->getOriginAgent();
+ (*verticesp++).load3(v1.mV);
+ (*verticesp++).load3(v1.mV);
*(normalsp++) = normal1;
*(normalsp++) = normal2;
diff --git a/indra/newview/llvograss.h b/indra/newview/llvograss.h
index c262fdcc79..00a59facf7 100644
--- a/indra/newview/llvograss.h
+++ b/indra/newview/llvograss.h
@@ -59,7 +59,7 @@ public:
/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
/*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
/*virtual*/ void getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
+ LLStrider<LLVector4a>& verticesp,
LLStrider<LLVector3>& normalsp,
LLStrider<LLVector2>& texcoordsp,
LLStrider<LLColor4U>& colorsp,
diff --git a/indra/newview/llvoground.cpp b/indra/newview/llvoground.cpp
index ce256fdedf..0060f81ab5 100644
--- a/indra/newview/llvoground.cpp
+++ b/indra/newview/llvoground.cpp
@@ -162,7 +162,7 @@ BOOL LLVOGround::updateGeometry(LLDrawable *drawable)
*(texCoordsp++) = LLVector2(0.f, 1.f);
*(texCoordsp++) = LLVector2(0.5f, 0.5f);
- face->getVertexBuffer()->setBuffer(0);
+ face->getVertexBuffer()->flush();
LLPipeline::sCompiles++;
return TRUE;
}
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 56d71e96b3..df1d3f2955 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -55,13 +55,12 @@
#include "llimview.h" // for LLIMMgr
#include "llparcel.h"
#include "llviewerparcelmgr.h"
-//#include "llfirstuse.h"
+#include "llfirstuse.h"
#include "llspeakers.h"
#include "lltrans.h"
#include "llviewerwindow.h"
#include "llviewercamera.h"
-#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel
#include "llviewernetwork.h"
#include "llnotificationsutil.h"
@@ -6258,6 +6257,19 @@ void LLVivoxVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESta
it = mStatusObservers.upper_bound(observer);
}
+ // skipped to avoid speak button blinking
+ if ( status != LLVoiceClientStatusObserver::STATUS_JOINING
+ && status != LLVoiceClientStatusObserver::STATUS_LEFT_CHANNEL)
+ {
+ bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
+
+ gAgent.setVoiceConnected(voice_status);
+
+ if (voice_status)
+ {
+ LLFirstUse::speak(true);
+ }
+ }
}
void LLVivoxVoiceClient::addObserver(LLFriendObserver* observer)
@@ -7007,7 +7019,6 @@ void LLVivoxVoiceClient::captureBufferPlayStopSendMessage()
LLVivoxProtocolParser::LLVivoxProtocolParser()
{
- parser = NULL;
parser = XML_ParserCreate(NULL);
reset();
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
index a4b0910c92..5c10a80b07 100644
--- a/indra/newview/llvopartgroup.cpp
+++ b/indra/newview/llvopartgroup.cpp
@@ -274,7 +274,7 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)
}
void LLVOPartGroup::getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
+ LLStrider<LLVector4a>& verticesp,
LLStrider<LLVector3>& normalsp,
LLStrider<LLVector2>& texcoordsp,
LLStrider<LLColor4U>& colorsp,
@@ -290,37 +290,54 @@ void LLVOPartGroup::getGeometry(S32 idx,
U32 vert_offset = mDrawable->getFace(idx)->getGeomIndex();
- LLVector3 part_pos_agent(part.mPosAgent);
- LLVector3 camera_agent = getCameraPosition();
- LLVector3 at = part_pos_agent - camera_agent;
- LLVector3 up;
- LLVector3 right;
-
- right = at % LLVector3(0.f, 0.f, 1.f);
- right.normalize();
- up = right % at;
- up.normalize();
+ LLVector4a part_pos_agent;
+ part_pos_agent.load3(part.mPosAgent.mV);
+ LLVector4a camera_agent;
+ camera_agent.load3(getCameraPosition().mV);
+ LLVector4a at;
+ at.setSub(part_pos_agent, camera_agent);
+ LLVector4a up(0, 0, 1);
+ LLVector4a right;
+
+ right.setCross3(at, up);
+ right.normalize3fast();
+ up.setCross3(right, at);
+ up.normalize3fast();
if (part.mFlags & LLPartData::LL_PART_FOLLOW_VELOCITY_MASK)
{
- LLVector3 normvel = part.mVelocity;
- normvel.normalize();
+ LLVector4a normvel;
+ normvel.load3(part.mVelocity.mV);
+ normvel.normalize3fast();
LLVector2 up_fracs;
- up_fracs.mV[0] = normvel*right;
- up_fracs.mV[1] = normvel*up;
+ up_fracs.mV[0] = normvel.dot3(right).getF32();
+ up_fracs.mV[1] = normvel.dot3(up).getF32();
up_fracs.normalize();
- LLVector3 new_up;
- LLVector3 new_right;
- new_up = up_fracs.mV[0] * right + up_fracs.mV[1]*up;
- new_right = up_fracs.mV[1] * right - up_fracs.mV[0]*up;
+ LLVector4a new_up;
+ LLVector4a new_right;
+
+ //new_up = up_fracs.mV[0] * right + up_fracs.mV[1]*up;
+ LLVector4a t = right;
+ t.mul(up_fracs.mV[0]);
+ new_up = up;
+ new_up.mul(up_fracs.mV[1]);
+ new_up.add(t);
+
+ //new_right = up_fracs.mV[1] * right - up_fracs.mV[0]*up;
+ t = right;
+ t.mul(up_fracs.mV[1]);
+ new_right = up;
+ new_right.mul(up_fracs.mV[0]);
+ t.sub(new_right);
+
up = new_up;
- right = new_right;
- up.normalize();
- right.normalize();
+ right = t;
+ up.normalize3fast();
+ right.normalize3fast();
}
- right *= 0.5f*part.mScale.mV[0];
- up *= 0.5f*part.mScale.mV[1];
+ right.mul(0.5f*part.mScale.mV[0]);
+ up.mul(0.5f*part.mScale.mV[1]);
LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis();
@@ -329,14 +346,25 @@ void LLVOPartGroup::getGeometry(S32 idx,
// this works because there is actually a 4th float stored after the vertex position which is used as a texture index
// also, somebody please VECTORIZE THIS
- verticesp->mV[3] = 0.f;
- *verticesp++ = part_pos_agent + up - right;
- verticesp->mV[3] = 0.f;
- *verticesp++ = part_pos_agent - up - right;
- verticesp->mV[3] = 0.f;
- *verticesp++ = part_pos_agent + up + right;
- verticesp->mV[3] = 0.f;
- *verticesp++ = part_pos_agent - up + right;
+ LLVector4a ppapu;
+ LLVector4a ppamu;
+
+ ppapu.setAdd(part_pos_agent, up);
+ ppamu.setSub(part_pos_agent, up);
+
+ verticesp->setSub(ppapu, right);
+ (*verticesp++).getF32ptr()[3] = 0.f;
+ verticesp->setSub(ppamu, right);
+ (*verticesp++).getF32ptr()[3] = 0.f;
+ verticesp->setAdd(ppapu, right);
+ (*verticesp++).getF32ptr()[3] = 0.f;
+ verticesp->setAdd(ppamu, right);
+ (*verticesp++).getF32ptr()[3] = 0.f;
+
+ //*verticesp++ = part_pos_agent + up - right;
+ //*verticesp++ = part_pos_agent - up - right;
+ //*verticesp++ = part_pos_agent + up + right;
+ //*verticesp++ = part_pos_agent - up + right;
*colorsp++ = part.mColor;
*colorsp++ = part.mColor;
@@ -453,7 +481,7 @@ void LLParticlePartition::getGeometry(LLSpatialGroup* group)
LLVertexBuffer* buffer = group->mVertexBuffer;
LLStrider<U16> indicesp;
- LLStrider<LLVector3> verticesp;
+ LLStrider<LLVector4a> verticesp;
LLStrider<LLVector3> normalsp;
LLStrider<LLVector2> texcoordsp;
LLStrider<LLColor4U> colorsp;
@@ -513,7 +541,7 @@ void LLParticlePartition::getGeometry(LLSpatialGroup* group)
}
}
- buffer->setBuffer(0);
+ buffer->flush();
mFaceList.clear();
}
diff --git a/indra/newview/llvopartgroup.h b/indra/newview/llvopartgroup.h
index 4db893b4ef..e58fed86d9 100644
--- a/indra/newview/llvopartgroup.h
+++ b/indra/newview/llvopartgroup.h
@@ -60,7 +60,7 @@ public:
/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
/*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
void getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
+ LLStrider<LLVector4a>& verticesp,
LLStrider<LLVector3>& normalsp,
LLStrider<LLVector2>& texcoordsp,
LLStrider<LLColor4U>& colorsp,
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index ef21e7373e..e9db37821b 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -1267,7 +1267,7 @@ void LLVOSky::updateDummyVertexBuffer()
LLStrider<LLVector3> vertices ;
mFace[FACE_DUMMY]->getVertexBuffer()->getVertexStrider(vertices, 0);
*vertices = mCameraPosAgent ;
- mFace[FACE_DUMMY]->getVertexBuffer()->setBuffer(0) ;
+ mFace[FACE_DUMMY]->getVertexBuffer()->flush();
}
//----------------------------------
//end of fake vertex buffer updating
@@ -1351,7 +1351,7 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
*indicesp++ = index_offset + 3;
*indicesp++ = index_offset + 2;
- buff->setBuffer(0);
+ buff->flush();
}
}
@@ -1516,7 +1516,7 @@ BOOL LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, cons
*indicesp++ = index_offset + 2;
*indicesp++ = index_offset + 3;
- facep->getVertexBuffer()->setBuffer(0);
+ facep->getVertexBuffer()->flush();
if (is_sun)
{
@@ -2030,7 +2030,7 @@ void LLVOSky::updateReflectionGeometry(LLDrawable *drawable, F32 H,
}
}
- face->getVertexBuffer()->setBuffer(0);
+ face->getVertexBuffer()->flush();
}
@@ -2040,9 +2040,12 @@ void LLVOSky::updateFog(const F32 distance)
{
if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FOG))
{
- glFogf(GL_FOG_DENSITY, 0);
- glFogfv(GL_FOG_COLOR, (F32 *) &LLColor4::white.mV);
- glFogf(GL_FOG_END, 1000000.f);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogf(GL_FOG_DENSITY, 0);
+ glFogfv(GL_FOG_COLOR, (F32 *) &LLColor4::white.mV);
+ glFogf(GL_FOG_END, 1000000.f);
+ }
return;
}
@@ -2112,7 +2115,10 @@ void LLVOSky::updateFog(const F32 distance)
if (camera_height > water_height)
{
LLColor4 fog(render_fog_color);
- glFogfv(GL_FOG_COLOR, fog.mV);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogfv(GL_FOG_COLOR, fog.mV);
+ }
mGLFogCol = fog;
if (hide_clip_plane)
@@ -2120,13 +2126,19 @@ void LLVOSky::updateFog(const F32 distance)
// For now, set the density to extend to the cull distance.
const F32 f_log = 2.14596602628934723963618357029f; // sqrt(fabs(log(0.01f)))
fog_density = f_log/fog_distance;
- glFogi(GL_FOG_MODE, GL_EXP2);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogi(GL_FOG_MODE, GL_EXP2);
+ }
}
else
{
const F32 f_log = 4.6051701859880913680359829093687f; // fabs(log(0.01f))
fog_density = (f_log)/fog_distance;
- glFogi(GL_FOG_MODE, GL_EXP);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogi(GL_FOG_MODE, GL_EXP);
+ }
}
}
else
@@ -2146,23 +2158,29 @@ void LLVOSky::updateFog(const F32 distance)
fogCol.setAlpha(1);
// set the gl fog color
- glFogfv(GL_FOG_COLOR, (F32 *) &fogCol.mV);
mGLFogCol = fogCol;
// set the density based on what the shaders use
fog_density = water_fog_density * gSavedSettings.getF32("WaterGLFogDensityScale");
- glFogi(GL_FOG_MODE, GL_EXP2);
+
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogfv(GL_FOG_COLOR, (F32 *) &fogCol.mV);
+ glFogi(GL_FOG_MODE, GL_EXP2);
+ }
}
mFogColor = sky_fog_color;
mFogColor.setAlpha(1);
- LLGLSFog gls_fog;
+ LLDrawPoolWater::sWaterFogEnd = fog_distance*2.2f;
- glFogf(GL_FOG_END, fog_distance*2.2f);
-
- glFogf(GL_FOG_DENSITY, fog_density);
-
- glHint(GL_FOG_HINT, GL_NICEST);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ LLGLSFog gls_fog;
+ glFogf(GL_FOG_END, fog_distance*2.2f);
+ glFogf(GL_FOG_DENSITY, fog_density);
+ glHint(GL_FOG_HINT, GL_NICEST);
+ }
stop_glerror();
}
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 510525259f..c3a2e6a712 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -57,8 +57,14 @@ public:
};
// virtual
- void setupVertexBuffer(U32 data_mask) const
+ void setupVertexBuffer(U32 data_mask)
{
+ if (LLGLSLShader::sNoFixedFunction)
+ { //just use default if shaders are in play
+ LLVertexBuffer::setupVertexBuffer(data_mask & ~(MAP_TEXCOORD2 | MAP_TEXCOORD3));
+ return;
+ }
+
U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
//assume tex coords 2 and 3 are present
@@ -106,20 +112,6 @@ public:
glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
}
- if (data_mask & MAP_WEIGHT)
- {
- glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], (void*)(base + mOffsets[TYPE_WEIGHT]));
- }
-
- if (data_mask & MAP_WEIGHT4 && sWeight4Loc != -1)
- {
- glVertexAttribPointerARB(sWeight4Loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], (void*)(base+mOffsets[TYPE_WEIGHT4]));
- }
-
- if (data_mask & MAP_CLOTHWEIGHT)
- {
- glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
- }
if (data_mask & MAP_VERTEX)
{
glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
@@ -325,7 +317,6 @@ BOOL LLVOSurfacePatch::updateLOD()
void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp)
@@ -337,7 +328,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
updateMainGeometry(facep,
verticesp,
normalsp,
- colorsp,
texCoords0p,
texCoords1p,
indicesp,
@@ -345,7 +335,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
updateNorthGeometry(facep,
verticesp,
normalsp,
- colorsp,
texCoords0p,
texCoords1p,
indicesp,
@@ -353,7 +342,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
updateEastGeometry(facep,
verticesp,
normalsp,
- colorsp,
texCoords0p,
texCoords1p,
indicesp,
@@ -363,7 +351,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
@@ -404,7 +391,6 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
x = i * render_stride;
y = j * render_stride;
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
- *colorsp++ = LLColor4U::white;
verticesp++;
normalsp++;
texCoords0p++;
@@ -469,7 +455,6 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
@@ -507,7 +492,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
y = 16 - render_stride;
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
- *colorsp++ = LLColor4U::white;
verticesp++;
normalsp++;
texCoords0p++;
@@ -523,7 +507,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
vertex_count++;
@@ -562,7 +545,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
vertex_count++;
@@ -577,7 +559,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
vertex_count++;
@@ -621,7 +602,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
y = 16 - render_stride;
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
- *colorsp++ = LLColor4U::white;
verticesp++;
normalsp++;
texCoords0p++;
@@ -638,7 +618,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
vertex_count++;
@@ -676,7 +655,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
@@ -710,7 +688,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
}
@@ -723,7 +700,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
}
@@ -761,7 +737,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
}
@@ -774,7 +749,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
}
@@ -818,7 +792,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
}
@@ -831,7 +804,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
- *colorsp++ = LLColor4U::white;
texCoords0p++;
texCoords1p++;
}
@@ -1063,6 +1035,8 @@ void LLVOSurfacePatch::updateSpatialExtents(LLVector4a& newMin, LLVector4a &newM
{
LLVector3 posAgent = getPositionAgent();
LLVector3 scale = getScale();
+ //make z-axis scale at least 1 to avoid shadow artifacts on totally flat land
+ scale.mV[VZ] = llmax(scale.mV[VZ], 1.f);
newMin.load3( (posAgent-scale*0.5f).mV); // Changing to 2.f makes the culling a -little- better, but still wrong
newMax.load3( (posAgent+scale*0.5f).mV);
LLVector4a pos;
@@ -1102,14 +1076,12 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
LLStrider<LLVector3> normals;
LLStrider<LLVector2> texcoords2;
LLStrider<LLVector2> texcoords;
- LLStrider<LLColor4U> colors;
LLStrider<U16> indices;
llassert_always(buffer->getVertexStrider(vertices));
llassert_always(buffer->getNormalStrider(normals));
llassert_always(buffer->getTexCoord0Strider(texcoords));
llassert_always(buffer->getTexCoord1Strider(texcoords2));
- llassert_always(buffer->getColorStrider(colors));
llassert_always(buffer->getIndexStrider(indices));
U32 indices_index = 0;
@@ -1124,13 +1096,13 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
facep->setVertexBuffer(buffer);
LLVOSurfacePatch* patchp = (LLVOSurfacePatch*) facep->getViewerObject();
- patchp->getGeometry(vertices, normals, colors, texcoords, texcoords2, indices);
+ patchp->getGeometry(vertices, normals, texcoords, texcoords2, indices);
indices_index += facep->getIndicesCount();
index_offset += facep->getGeomCount();
}
- buffer->setBuffer(0);
+ buffer->flush();
mFaceList.clear();
}
diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h
index 8e75ff2e6e..a15878368e 100644
--- a/indra/newview/llvosurfacepatch.h
+++ b/indra/newview/llvosurfacepatch.h
@@ -44,8 +44,7 @@ public:
VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) |
(1 << LLVertexBuffer::TYPE_NORMAL) |
(1 << LLVertexBuffer::TYPE_TEXCOORD0) |
- (1 << LLVertexBuffer::TYPE_TEXCOORD1) |
- (1 << LLVertexBuffer::TYPE_COLOR)
+ (1 << LLVertexBuffer::TYPE_TEXCOORD1)
};
LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
@@ -64,7 +63,6 @@ public:
/*virtual*/ void updateFaceSize(S32 idx);
void getGeometry(LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp);
@@ -116,7 +114,6 @@ protected:
void updateMainGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
@@ -124,7 +121,6 @@ protected:
void updateNorthGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
@@ -132,7 +128,6 @@ protected:
void updateEastGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
- LLStrider<LLColor4U> &colorsp,
LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
diff --git a/indra/newview/llvotextbubble.cpp b/indra/newview/llvotextbubble.cpp
deleted file mode 100644
index a92172fe23..0000000000
--- a/indra/newview/llvotextbubble.cpp
+++ /dev/null
@@ -1,272 +0,0 @@
-/**
- * @file llvotextbubble.cpp
- * @brief Viewer-object text bubble.
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llvotextbubble.h"
-
-#include "imageids.h"
-#include "llviewercontrol.h"
-#include "llprimitive.h"
-#include "llrendersphere.h"
-
-#include "llbox.h"
-#include "lldrawable.h"
-#include "llface.h"
-#include "llviewertexturelist.h"
-#include "llvolume.h"
-#include "pipeline.h"
-#include "llvector4a.h"
-#include "llviewerregion.h"
-
-LLVOTextBubble::LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
-: LLAlphaObject(id, pcode, regionp)
-{
- setScale(LLVector3(1.5f, 1.5f, 0.25f));
- mbCanSelect = FALSE;
- mLOD = MIN_LOD;
- mVolumeChanged = TRUE;
- setVelocity(LLVector3(0.f, 0.f, 0.75f));
- LLVolumeParams volume_params;
- volume_params.setType(LL_PCODE_PROFILE_CIRCLE, LL_PCODE_PATH_LINE);
- volume_params.setBeginAndEndS(0.f, 1.f);
- volume_params.setBeginAndEndT(0.f, 1.f);
- volume_params.setRatio(0.25f, 0.25f);
- volume_params.setShear(0.f, 0.f);
- setVolume(volume_params, 0);
- mColor = LLColor4(1.0f, 0.0f, 0.0f, 1.f);
- S32 i;
- for (i = 0; i < getNumTEs(); i++)
- {
- setTEColor(i, mColor);
- setTETexture(i, LLUUID(IMG_DEFAULT));
- }
-}
-
-
-LLVOTextBubble::~LLVOTextBubble()
-{
-}
-
-
-BOOL LLVOTextBubble::isActive() const
-{
- return TRUE;
-}
-
-BOOL LLVOTextBubble::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
-{
- static LLFastTimer::DeclareTimer ftm("Text Bubble");
- LLFastTimer t(ftm);
-
- F32 dt = mUpdateTimer.getElapsedTimeF32();
- // Die after a few seconds.
- if (dt > 1.5f)
- {
- return FALSE;
- }
-
- LLViewerObject::idleUpdate(agent, world, time);
-
- setScale(0.5f * (1.f+dt) * LLVector3(1.5f, 1.5f, 0.5f));
-
- F32 alpha = 0.35f*dt;
-
- LLColor4 color = mColor;
- color.mV[VALPHA] -= alpha;
- if (color.mV[VALPHA] <= 0.05f)
- {
- return FALSE;
- }
- S32 i;
- for (i = 0; i < getNumTEs(); i++)
- {
- setTEColor(i, color);
- setTEFullbright(i, TRUE);
- }
-
- gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
- return TRUE;
-}
-
-
-void LLVOTextBubble::updateTextures()
-{
- // Update the image levels of all textures...
-
- for (U32 i = 0; i < getNumTEs(); i++)
- {
- const LLTextureEntry *te = getTE(i);
- F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT);
- texel_area_ratio = llclamp(texel_area_ratio, .125f, 16.f);
- LLViewerTexture *imagep = getTEImage(i);
- if (imagep)
- {
- imagep->addTextureStats(mPixelArea / texel_area_ratio);
- }
- }
-}
-
-
-LLDrawable *LLVOTextBubble::createDrawable(LLPipeline *pipeline)
-{
- pipeline->allocDrawable(this);
- mDrawable->setLit(FALSE);
- mDrawable->setRenderType(LLPipeline::RENDER_TYPE_VOLUME);
-
- for (U32 i = 0; i < getNumTEs(); i++)
- {
- LLViewerTexture *imagep;
- const LLTextureEntry *texture_entry = getTE(i);
- imagep = LLViewerTextureManager::getFetchedTexture(texture_entry->getID());
-
- mDrawable->addFace((LLFacePool*) NULL, imagep);
- }
-
- return mDrawable;
-}
-
-// virtual
-BOOL LLVOTextBubble::setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume)
-{
- if (LLPrimitive::setVolume(volume_params, mLOD))
- {
- if (mDrawable)
- {
- gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
- mVolumeChanged = TRUE;
- }
- return TRUE;
- }
- return FALSE;
-}
-
-
-BOOL LLVOTextBubble::updateLOD()
-{
- return FALSE;
-}
-
-BOOL LLVOTextBubble::updateGeometry(LLDrawable *drawable)
-{
- if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_VOLUME)))
- return TRUE;
-
- if (mVolumeChanged)
- {
- LLVolumeParams volume_params = getVolume()->getParams();
- setVolume(volume_params, 0);
-
- LLPipeline::sCompiles++;
-
- drawable->setNumFaces(getVolume()->getNumFaces(), drawable->getFace(0)->getPool(), getTEImage(0));
- }
-
- LLMatrix4 identity4;
- LLMatrix3 identity3;
- for (S32 i = 0; i < drawable->getNumFaces(); i++)
- {
- LLFace *face = drawable->getFace(i);
- face->setTEOffset(i);
- face->setTexture(LLViewerFetchedTexture::sSmokeImagep);
- face->setState(LLFace::FULLBRIGHT);
- }
-
- mVolumeChanged = FALSE;
-
- mDrawable->movePartition();
- return TRUE;
-}
-
-void LLVOTextBubble::updateFaceSize(S32 idx)
-{
- LLFace* face = mDrawable->getFace(idx);
-
- if (idx == 0 || idx == 2)
- {
- face->setSize(0,0);
- }
- else
- {
- const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx);
- face->setSize(vol_face.mNumVertices, vol_face.mNumIndices);
- }
-}
-
-void LLVOTextBubble::getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
- LLStrider<LLVector3>& normalsp,
- LLStrider<LLVector2>& texcoordsp,
- LLStrider<LLColor4U>& colorsp,
- LLStrider<U16>& indicesp)
-{
- if (idx == 0 || idx == 2)
- {
- return;
- }
-
- const LLVolumeFace& face = getVolume()->getVolumeFace(idx);
-
- LLVector4a pos;
- pos.load3(getPositionAgent().mV);
-
- LLVector4a scale;
- scale.load3(getScale().mV);
-
- LLColor4U color = LLColor4U(getTE(idx)->getColor());
- U32 offset = mDrawable->getFace(idx)->getGeomIndex();
-
- LLVector4a* dst_pos = (LLVector4a*) verticesp.get();
- LLVector4a* src_pos = (LLVector4a*) face.mPositions;
-
- LLVector4a* dst_norm = (LLVector4a*) normalsp.get();
- LLVector4a* src_norm = (LLVector4a*) face.mNormals;
-
- LLVector2* dst_tc = (LLVector2*) texcoordsp.get();
- LLVector2* src_tc = (LLVector2*) face.mTexCoords;
-
- LLVector4a::memcpyNonAliased16((F32*) dst_norm, (F32*) src_norm, face.mNumVertices*4*sizeof(F32));
- LLVector4a::memcpyNonAliased16((F32*) dst_tc, (F32*) src_tc, face.mNumVertices*2*sizeof(F32));
-
-
- for (U32 i = 0; i < face.mNumVertices; i++)
- {
- LLVector4a t;
- t.setMul(src_pos[i], scale);
- dst_pos[i].setAdd(t, pos);
- *colorsp++ = color;
- }
-
- for (U32 i = 0; i < face.mNumIndices; i++)
- {
- *indicesp++ = face.mIndices[i] + offset;
- }
-}
-
-U32 LLVOTextBubble::getPartitionType() const
-{
- return LLViewerRegion::PARTITION_PARTICLE;
-}
diff --git a/indra/newview/llvotextbubble.h b/indra/newview/llvotextbubble.h
deleted file mode 100644
index 9c39929711..0000000000
--- a/indra/newview/llvotextbubble.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @file llvotextbubble.h
- * @brief Description of LLVORock class, which a derivation of LLViewerObject
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLVOTEXTBUBBLE_H
-#define LL_LLVOTEXTBUBBLE_H
-
-#include "llviewerobject.h"
-#include "llframetimer.h"
-
-class LLVOTextBubble : public LLAlphaObject
-{
-public:
- LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
-
- /*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate.
- /*virtual*/ BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
-
- /*virtual*/ void updateTextures();
- /*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
- /*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
- /*virtual*/ BOOL updateLOD();
- /*virtual*/ void updateFaceSize(S32 idx);
-
- /*virtual*/ void getGeometry(S32 idx,
- LLStrider<LLVector3>& verticesp,
- LLStrider<LLVector3>& normalsp,
- LLStrider<LLVector2>& texcoordsp,
- LLStrider<LLColor4U>& colorsp,
- LLStrider<U16>& indicesp);
-
- virtual U32 getPartitionType() const;
-
- LLColor4 mColor;
- S32 mLOD;
- BOOL mVolumeChanged;
-
-protected:
- ~LLVOTextBubble();
- BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
- LLFrameTimer mUpdateTimer;
-};
-
-#endif // LL_VO_TEXT_BUBBLE
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 890861df71..4564207da4 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -341,45 +341,11 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
BOOL LLVOTree::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
{
- const U16 FRAMES_PER_WIND_UPDATE = 20; // How many frames between wind update per tree
- const F32 TREE_WIND_SENSITIVITY = 0.005f;
- const F32 TREE_TRUNK_STIFFNESS = 0.1f;
-
if (mDead || !(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_TREE)))
{
return TRUE;
}
- if (gSavedSettings.getBOOL("RenderAnimateTrees"))
- {
- F32 mass_inv;
-
- // For all tree objects, update the trunk bending with the current wind
- // Walk sprite list in order away from viewer
- if (!(mFrameCount % FRAMES_PER_WIND_UPDATE))
- {
- // If needed, Get latest wind for this tree
- mWind = mRegionp->mWind.getVelocity(getPositionRegion());
- }
- mFrameCount++;
-
- mass_inv = 1.f/(5.f + mDepth*mBranches*0.2f);
- mTrunkVel += (mWind * mass_inv * TREE_WIND_SENSITIVITY); // Pull in direction of wind
- mTrunkVel -= (mTrunkBend * mass_inv * TREE_TRUNK_STIFFNESS); // Restoring force in direction of trunk
- mTrunkBend += mTrunkVel;
- mTrunkVel *= 0.99f; // Add damping
-
- if (mTrunkBend.length() > 1.f)
- {
- mTrunkBend.normalize();
- }
-
- if (mTrunkVel.length() > 1.f)
- {
- mTrunkVel.normalize();
- }
- }
-
S32 trunk_LOD = sMAX_NUM_TREE_LOD_LEVELS ;
F32 app_angle = getAppAngle()*LLVOTree::sTreeFactor;
@@ -392,39 +358,36 @@ BOOL LLVOTree::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
}
}
- if (!gSavedSettings.getBOOL("RenderAnimateTrees"))
+ if (mReferenceBuffer.isNull())
{
- if (mReferenceBuffer.isNull())
- {
- gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
- }
- else if (trunk_LOD != mTrunkLOD)
+ gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+ }
+ else if (trunk_LOD != mTrunkLOD)
+ {
+ gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, FALSE);
+ }
+ else
+ {
+ // we're not animating but we may *still* need to
+ // regenerate the mesh if we moved, since position
+ // and rotation are baked into the mesh.
+ // *TODO: I don't know what's so special about trees
+ // that they don't get REBUILD_POSITION automatically
+ // at a higher level.
+ const LLVector3 &this_position = getPositionAgent();
+ if (this_position != mLastPosition)
{
- gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, FALSE);
+ gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
+ mLastPosition = this_position;
}
else
{
- // we're not animating but we may *still* need to
- // regenerate the mesh if we moved, since position
- // and rotation are baked into the mesh.
- // *TODO: I don't know what's so special about trees
- // that they don't get REBUILD_POSITION automatically
- // at a higher level.
- const LLVector3 &this_position = getPositionAgent();
- if (this_position != mLastPosition)
+ const LLQuaternion &this_rotation = getRotation();
+
+ if (this_rotation != mLastRotation)
{
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
- mLastPosition = this_position;
- }
- else
- {
- const LLQuaternion &this_rotation = getRotation();
-
- if (this_rotation != mLastRotation)
- {
- gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
- mLastRotation = this_rotation;
- }
+ mLastRotation = this_rotation;
}
}
}
@@ -559,7 +522,7 @@ BOOL LLVOTree::updateGeometry(LLDrawable *drawable)
max_vertices += sLODVertexCount[lod];
}
- mReferenceBuffer = new LLVertexBuffer(LLDrawPoolTree::VERTEX_DATA_MASK, gSavedSettings.getBOOL("RenderAnimateTrees") ? GL_STATIC_DRAW_ARB : 0);
+ mReferenceBuffer = new LLVertexBuffer(LLDrawPoolTree::VERTEX_DATA_MASK, 0);
mReferenceBuffer->allocateBuffer(max_vertices, max_indices, TRUE);
LLStrider<LLVector3> vertices;
@@ -858,20 +821,13 @@ BOOL LLVOTree::updateGeometry(LLDrawable *drawable)
slices /= 2;
}
- mReferenceBuffer->setBuffer(0);
+ mReferenceBuffer->flush();
llassert(vertex_count == max_vertices);
llassert(index_count == max_indices);
}
- if (gSavedSettings.getBOOL("RenderAnimateTrees"))
- {
- mDrawable->getFace(0)->setVertexBuffer(mReferenceBuffer);
- }
- else
- {
- //generate tree mesh
- updateMesh();
- }
+ //generate tree mesh
+ updateMesh();
return TRUE;
}
@@ -882,7 +838,7 @@ void LLVOTree::updateMesh()
// Translate to tree base HACK - adjustment in Z plants tree underground
const LLVector3 &pos_agent = getPositionAgent();
- //glTranslatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
+ //gGL.translatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
LLMatrix4 trans_mat;
trans_mat.setTranslation(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
trans_mat *= matrix;
@@ -940,8 +896,8 @@ void LLVOTree::updateMesh()
genBranchPipeline(vertices, normals, tex_coords, indices, idx_offset, scale_mat, mTrunkLOD, stop_depth, mDepth, mTrunkDepth, 1.0, mTwist, droop, mBranches, alpha);
- mReferenceBuffer->setBuffer(0);
- buff->setBuffer(0);
+ mReferenceBuffer->flush();
+ buff->flush();
}
void LLVOTree::appendMesh(LLStrider<LLVector3>& vertices,
@@ -1158,7 +1114,8 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD
scale_mat.mMatrix[2][2] = scale*length;
scale_mat *= matrix;
- glLoadMatrixf((F32*) scale_mat.mMatrix);
+ gGL.loadMatrix((F32*) scale_mat.mMatrix);
+ gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, sLODIndexCount[trunk_LOD], GL_UNSIGNED_SHORT, indicesp + sLODIndexOffset[trunk_LOD]);
gPipeline.addTrianglesDrawn(LEAF_INDICES);
stop_glerror();
@@ -1208,7 +1165,8 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD
scale_mat *= matrix;
- glLoadMatrixf((F32*) scale_mat.mMatrix);
+ gGL.loadMatrix((F32*) scale_mat.mMatrix);
+ gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp);
gPipeline.addTrianglesDrawn(LEAF_INDICES);
stop_glerror();
@@ -1229,19 +1187,20 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD
scale_mat *= matrix;
- glMatrixMode(GL_TEXTURE);
- glTranslatef(0.0, -0.5, 0.0);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.translatef(0.0, -0.5, 0.0);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
- glLoadMatrixf((F32*) scale_mat.mMatrix);
+ gGL.loadMatrix((F32*) scale_mat.mMatrix);
+ gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp);
gPipeline.addTrianglesDrawn(LEAF_INDICES);
stop_glerror();
ret += LEAF_INDICES;
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
return ret;
diff --git a/indra/newview/llvotree.h b/indra/newview/llvotree.h
index 1e1deede26..0554935539 100644
--- a/indra/newview/llvotree.h
+++ b/indra/newview/llvotree.h
@@ -152,7 +152,6 @@ public:
friend class LLDrawPoolTree;
protected:
LLVector3 mTrunkBend; // Accumulated wind (used for blowing trees)
- LLVector3 mTrunkVel; //
LLVector3 mWind;
LLPointer<LLVertexBuffer> mReferenceBuffer; //reference geometry for generating tree mesh
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 380d63c77b..20f8674655 100755..100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3266,13 +3266,13 @@ void LLVOVolume::updateRenderComplexity()
mRenderComplexity_current = 0;
}
-U32 LLVOVolume::getTriangleCount() const
+U32 LLVOVolume::getTriangleCount(S32* vcount) const
{
U32 count = 0;
LLVolume* volume = getVolume();
if (volume)
{
- count = volume->getNumTriangles();
+ count = volume->getNumTriangles(vcount);
}
return count;
@@ -3976,8 +3976,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
}
}
- U8 glow = (U8) (facep->getTextureEntry()->getGlow() * 255);
-
if (idx >= 0 &&
draw_vec[idx]->mVertexBuffer == facep->getVertexBuffer() &&
draw_vec[idx]->mEnd == facep->getGeomIndex()-1 &&
@@ -3986,7 +3984,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
draw_vec[idx]->mEnd - draw_vec[idx]->mStart + facep->getGeomCount() <= (U32) gGLManager.mGLMaxVertexRange &&
draw_vec[idx]->mCount + facep->getIndicesCount() <= (U32) gGLManager.mGLMaxIndexRange &&
#endif
- draw_vec[idx]->mGlowColor.mV[3] == glow &&
draw_vec[idx]->mFullbright == fullbright &&
draw_vec[idx]->mBump == bump &&
draw_vec[idx]->mTextureMatrix == tex_mat &&
@@ -4018,7 +4015,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
draw_vec.push_back(draw_info);
draw_info->mTextureMatrix = tex_mat;
draw_info->mModelMatrix = model_mat;
- draw_info->mGlowColor.setVec(0,0,0,glow);
if (type == LLRenderPass::PASS_ALPHA)
{ //for alpha sorting
facep->setDrawInfo(draw_info);
@@ -4118,6 +4114,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
U32 cur_total = 0;
+ bool emissive = false;
+
//get all the faces into a list
for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)
{
@@ -4330,6 +4328,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
}
}
+
if (cur_total > max_total || facep->getIndicesCount() <= 0 || facep->getGeomCount() <= 0)
{
facep->clearVertexBuffer();
@@ -4343,6 +4342,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
const LLTextureEntry* te = facep->getTextureEntry();
LLViewerTexture* tex = facep->getTexture();
+ if (te->getGlow() >= 1.f/255.f)
+ {
+ emissive = true;
+ }
+
if (facep->isState(LLFace::TEXTURE_ANIM))
{
if (!vobj->mTexAnimMode)
@@ -4459,6 +4463,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
U32 bump_mask = LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1 | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR;
U32 fullbright_mask = LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR;
+ if (emissive)
+ { //emissive faces are present, include emissive byte to preserve batching
+ simple_mask = simple_mask | LLVertexBuffer::MAP_EMISSIVE;
+ alpha_mask = alpha_mask | LLVertexBuffer::MAP_EMISSIVE;
+ bump_mask = bump_mask | LLVertexBuffer::MAP_EMISSIVE;
+ fullbright_mask = fullbright_mask | LLVertexBuffer::MAP_EMISSIVE;
+ }
+
bool batch_textures = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 1;
if (batch_textures)
@@ -4551,7 +4563,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
for (std::set<LLVertexBuffer*>::iterator iter = mapped_buffers.begin(); iter != mapped_buffers.end(); ++iter)
{
- (*iter)->setBuffer(0);
+ (*iter)->flush();
}
// don't forget alpha
@@ -4559,7 +4571,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
!group->mVertexBuffer.isNull() &&
group->mVertexBuffer->isLocked())
{
- group->mVertexBuffer->setBuffer(0);
+ group->mVertexBuffer->flush();
}
//if not all buffers are unmapped
@@ -4575,7 +4587,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
LLVertexBuffer* buff = face->getVertexBuffer();
if (face && buff && buff->isLocked())
{
- buff->setBuffer(0) ;
+ buff->flush();
}
}
}
@@ -4602,10 +4614,6 @@ struct CompareBatchBreakerModified
{
return lte->getFullbright() < rte->getFullbright();
}
- else if (lte->getGlow() != rte->getGlow())
- {
- return lte->getGlow() < rte->getGlow();
- }
else
{
return lhs->getTexture() < rhs->getTexture();
@@ -4616,6 +4624,19 @@ struct CompareBatchBreakerModified
void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort, BOOL batch_textures)
{
+ U32 buffer_usage = group->mBufferUsage;
+
+#if LL_DARWIN
+ // HACK from Leslie:
+ // Disable VBO usage for alpha on Mac OS X because it kills the framerate
+ // due to implicit calls to glTexSubImage that are beyond our control.
+ // (this works because the only calls here that sort by distance are alpha)
+ if (distance_sort)
+ {
+ buffer_usage = 0x0;
+ }
+#endif
+
//calculate maximum number of vertices to store in a single buffer
U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcVertexSize(group->mSpatialPartition->mVertexDataMask);
max_vertices = llmin(max_vertices, (U32) 65535);
@@ -4644,7 +4665,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
buffer_index = -1;
}
- S32 texture_index_channels = gGLManager.mNumTextureImageUnits-1; //always reserve one for shiny for now just for simplicity
+ S32 texture_index_channels = LLGLSLShader::sIndexedTextureChannels-1; //always reserve one for shiny for now just for simplicity
if (gGLManager.mGLVersion < 3.1f)
{
@@ -4658,6 +4679,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
texture_index_channels = llmin(texture_index_channels, (S32) gSavedSettings.getU32("RenderMaxTextureIndex"));
+ //NEVER use more than 16 texture index channels (workaround for prevalent driver bug)
+ texture_index_channels = llmin(texture_index_channels, 16);
while (face_iter != faces.end())
{
@@ -4795,17 +4818,15 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
if (!buffer)
{ //create new buffer if needed
- buffer = createVertexBuffer(mask,
- group->mBufferUsage);
+ buffer = createVertexBuffer(mask, buffer_usage);
buffer->allocateBuffer(geom_count, index_count, TRUE);
}
else
{ //resize pre-existing buffer
- if (LLVertexBuffer::sEnableVBOs && buffer->getUsage() != group->mBufferUsage ||
+ if (LLVertexBuffer::sEnableVBOs && buffer->getUsage() != buffer_usage ||
buffer->getTypeMask() != mask)
{
- buffer = createVertexBuffer(mask,
- group->mBufferUsage);
+ buffer = createVertexBuffer(mask, buffer_usage);
buffer->allocateBuffer(geom_count, index_count, TRUE);
}
else
@@ -4886,11 +4907,6 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
{
registerFace(group, facep, LLRenderPass::PASS_ALPHA);
}
-
- if (LLPipeline::sRenderDeferred)
- {
- registerFace(group, facep, LLRenderPass::PASS_ALPHA_SHADOW);
- }
}
else if (gPipeline.canUseVertexShaders()
&& group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD
@@ -4985,7 +5001,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
++face_iter;
}
- buffer->setBuffer(0);
+ buffer->flush();
}
group->mBufferMap[mask].clear();
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index b6347526ee..3cf434dc26 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -131,9 +131,10 @@ public:
/*virtual*/ const LLMatrix4 getRenderMatrix() const;
typedef std::map<LLUUID, S32> texture_cost_t;
U32 getRenderCost(texture_cost_t &textures) const;
- /*virtual*/ F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const;
+ F32 getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_value) const;
+ /*virtual*/ F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL) { return getStreamingCost(bytes, visible_bytes, NULL); }
- /*virtual*/ U32 getTriangleCount() const;
+ /*virtual*/ U32 getTriangleCount(S32* vcount = NULL) const;
/*virtual*/ U32 getHighLODTriangleCount();
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
S32 face = -1, // which face to check, -1 = ALL_SIDES
diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp
index e70ac0a2e7..7df50ec815 100644
--- a/indra/newview/llvowater.cpp
+++ b/indra/newview/llvowater.cpp
@@ -160,7 +160,7 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
static const unsigned int vertices_per_quad = 4;
static const unsigned int indices_per_quad = 6;
- const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") ? 16 : 1;
+ const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") && !LLGLSLShader::sNoFixedFunction ? 16 : 1;
const S32 num_quads = size * size;
face->setSize(vertices_per_quad * num_quads,
@@ -231,7 +231,7 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
}
}
- buff->setBuffer(0);
+ buff->flush();
mDrawable->movePartition();
LLPipeline::sCompiles++;
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index 7b1c725483..f1c5499d84 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -326,7 +326,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
buildFanBuffer(vertices, texCoords, indices);
- mFanVerts->setBuffer(0);
+ mFanVerts->flush();
}
{
@@ -349,6 +349,9 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
mStripsVerts.resize(strips_segments, NULL);
+ LLTimer timer;
+ timer.start();
+
for (U32 i = 0; i < strips_segments ;++i)
{
LLVertexBuffer * segment = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
@@ -388,8 +391,10 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
buildStripsBuffer(begin_stack, end_stack, vertices, texCoords, indices);
// and unlock the buffer
- segment->setBuffer(0);
+ segment->flush();
}
+
+ llinfos << "completed in " << llformat("%.2f", timer.getElapsedTimeF32()) << "seconds" << llendl;
}
#else
mStripsVerts = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
@@ -468,7 +473,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
}
}
- mStripsVerts->setBuffer(0);
+ mStripsVerts->flush();
#endif
updateStarColors();
@@ -485,7 +490,7 @@ void LLVOWLSky::drawStars(void)
if (mStarsVerts.notNull())
{
mStarsVerts->setBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK);
- mStarsVerts->drawArrays(LLRender::QUADS, 0, getStarsNumVerts()*4);
+ mStarsVerts->drawArrays(LLRender::TRIANGLES, 0, getStarsNumVerts()*4);
}
}
@@ -511,13 +516,14 @@ void LLVOWLSky::drawDome(void)
strips_segment->drawRange(
LLRender::TRIANGLE_STRIP,
- 0, strips_segment->getRequestedVerts()-1, strips_segment->getRequestedIndices(),
+ 0, strips_segment->getNumVerts()-1, strips_segment->getNumIndices(),
0);
- gPipeline.addTrianglesDrawn(strips_segment->getRequestedIndices(), LLRender::TRIANGLE_STRIP);
+ gPipeline.addTrianglesDrawn(strips_segment->getNumIndices(), LLRender::TRIANGLE_STRIP);
}
#else
mStripsVerts->setBuffer(data_mask);
+ gGL.syncMatrices();
glDrawRangeElements(
GL_TRIANGLES,
0, mStripsVerts->getNumVerts()-1, mStripsVerts->getNumIndices(),
@@ -771,7 +777,7 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
if (mStarsVerts.isNull())
{
mStarsVerts = new LLVertexBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK, GL_DYNAMIC_DRAW);
- mStarsVerts->allocateBuffer(getStarsNumVerts()*4, 0, TRUE);
+ mStarsVerts->allocateBuffer(getStarsNumVerts()*6, 0, TRUE);
}
BOOL success = mStarsVerts->getVertexStrider(verticesp)
@@ -806,19 +812,25 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
*(verticesp++) = mStarVertices[vtx];
*(verticesp++) = mStarVertices[vtx]+left;
*(verticesp++) = mStarVertices[vtx]+left+up;
+ *(verticesp++) = mStarVertices[vtx]+left;
+ *(verticesp++) = mStarVertices[vtx]+left+up;
*(verticesp++) = mStarVertices[vtx]+up;
*(texcoordsp++) = LLVector2(0,0);
*(texcoordsp++) = LLVector2(0,1);
*(texcoordsp++) = LLVector2(1,1);
+ *(texcoordsp++) = LLVector2(0,1);
+ *(texcoordsp++) = LLVector2(1,1);
*(texcoordsp++) = LLVector2(1,0);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
+ *(colorsp++) = LLColor4U(mStarColors[vtx]);
+ *(colorsp++) = LLColor4U(mStarColors[vtx]);
}
- mStarsVerts->setBuffer(0);
+ mStarsVerts->flush();
return TRUE;
}
diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp
index 1a98d4c6c2..20b34637b8 100644
--- a/indra/newview/llwaterparammanager.cpp
+++ b/indra/newview/llwaterparammanager.cpp
@@ -190,6 +190,7 @@ void LLWaterParamManager::updateShaderUniforms(LLGLSLShader * shader)
shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, LLWLParamManager::getInstance()->getRotatedLightDir().mV);
shader->uniform3fv("camPosLocal", 1, LLViewerCamera::getInstance()->getOrigin().mV);
shader->uniform4fv("waterFogColor", 1, LLDrawPoolWater::sWaterFogColor.mV);
+ shader->uniform1f("waterFogEnd", LLDrawPoolWater::sWaterFogEnd);
shader->uniform4fv("waterPlane", 1, mWaterPlane.mV);
shader->uniform1f("waterFogDensity", getFogDensity());
shader->uniform1f("waterFogKS", mWaterFogKS);
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d1c0990f90..d8aa0b7d5c 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -30,13 +30,13 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "lldictionary.h"
+#include "llfloatersidepanelcontainer.h"
#include "lllocaltextureobject.h"
#include "llnotificationsutil.h"
#include "llviewertexturelist.h"
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltexglobalcolor.h"
#include "lltrans.h"
@@ -697,7 +697,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake
if(gAgentCamera.cameraCustomizeAvatar())
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
gAgentAvatarp->updateVisualParams();
@@ -967,7 +967,7 @@ void LLWearable::revertValues()
syncImages(mSavedTEMap, mTEMap);
- LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
if( panel )
{
panel->updateScrollingPanelList();
@@ -1008,7 +1008,7 @@ void LLWearable::saveValues()
syncImages(mTEMap, mSavedTEMap);
- LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
if( panel )
{
panel->updateScrollingPanelList();
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 6f7115ff6d..d2d48dc68f 100644
--- a/indra/newview/llweb.cpp
+++ b/indra/newview/llweb.cpp
@@ -34,7 +34,6 @@
#include "llagent.h"
#include "llappviewer.h"
-#include "llfloatermediabrowser.h"
#include "llfloaterwebcontent.h"
#include "llfloaterreg.h"
#include "lllogininstance.h"
@@ -78,32 +77,15 @@ void LLWeb::initClass()
}
-// static
-void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid)
-{
- loadWebURL(url, target, uuid);
- //if(target == "_internal")
- //{
- // // Force load in the internal browser, as if with a blank target.
- // loadURLInternal(url, "", uuid);
- //}
- //else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external"))
- //{
- // loadURLExternal(url);
- //}
- //else
- //{
- // loadURLInternal(url, target, uuid);
- //}
-}
+
// static
-void LLWeb::loadWebURL(const std::string& url, const std::string& target, const std::string& uuid)
+void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid)
{
if(target == "_internal")
{
// Force load in the internal browser, as if with a blank target.
- loadWebURLInternal(url, "", uuid);
+ loadURLInternal(url, "", uuid);
}
else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external"))
{
@@ -111,21 +93,17 @@ void LLWeb::loadWebURL(const std::string& url, const std::string& target, const
}
else
{
- loadWebURLInternal(url, target, uuid);
+ loadURLInternal(url, target, uuid);
}
}
// static
-void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
-{
- LLFloaterMediaBrowser::create(url, target, uuid);
-}
-
-// static
// Explicitly open a Web URL using the Web content floater
-void LLWeb::loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
+void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
{
- LLFloaterWebContent::create(LLFloaterWebContent::Params().url(url).target(target).id(uuid));
+ LLFloaterWebContent::Params p;
+ p.url(url).target(target).id(uuid);
+ LLFloaterReg::showInstance("web_content", p);
}
// static
@@ -208,6 +186,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
substitution["VERSION_BUILD"] = LLVersionInfo::getBuild();
substitution["CHANNEL"] = LLVersionInfo::getChannel();
substitution["GRID"] = LLGridManager::getInstance()->getGridLabel();
+ substitution["GRID_LOWERCASE"] = utf8str_tolower(LLGridManager::getInstance()->getGridLabel());
substitution["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
substitution["SESSION_ID"] = gAgent.getSessionID();
substitution["FIRST_LOGIN"] = gAgent.isFirstLogin();
diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h
index dc5958e57f..0b95f664d6 100644
--- a/indra/newview/llweb.h
+++ b/indra/newview/llweb.h
@@ -42,25 +42,15 @@ class LLWeb
public:
static void initClass();
- /// Load the given url in the user's preferred web browser
- static void loadURL(const std::string& url, const std::string& target, const std::string& uuid = LLStringUtil::null);
- static void loadURL(const std::string& url) { loadURL(url, LLStringUtil::null); }
- /// Load the given url in the user's preferred web browser
- static void loadURL(const char* url, const std::string& target) { loadURL( ll_safe_string(url), target); }
- static void loadURL(const char* url) { loadURL( ll_safe_string(url), LLStringUtil::null ); }
- /// Load the given url in the Second Life internal web browser
- static void loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null);
- static void loadURLInternal(const std::string &url) { loadURLInternal(url, LLStringUtil::null); }
/// Load the given url in the operating system's web browser, async if we want to return immediately
/// before browser has spawned
- static void loadURLExternal(const std::string& url) { loadURLExternal(url, LLStringUtil::null); };
+ static void loadURLExternal(const std::string& url) {loadURLExternal(url, LLStringUtil::null);}
static void loadURLExternal(const std::string& url, const std::string& uuid);
static void loadURLExternal(const std::string& url, bool async, const std::string& uuid = LLStringUtil::null);
- // Explicitly open a Web URL using the Web content floater vs. the more general media browser
- static void loadWebURL(const std::string& url, const std::string& target, const std::string& uuid);
- static void loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid);
- static void loadWebURLInternal(const std::string &url) { loadWebURLInternal(url, LLStringUtil::null, LLStringUtil::null); }
+ static void loadURL(const std::string& url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null);
+ // load content using built-in browser
+ static void loadURLInternal(const std::string &url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null);
/// Returns escaped url (eg, " " to "%20") - used by all loadURL methods
static std::string escapeURL(const std::string& url);
diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp
new file mode 100644
index 0000000000..641f338f2c
--- /dev/null
+++ b/indra/newview/llwebprofile.cpp
@@ -0,0 +1,305 @@
+/**
+ * @file llwebprofile.cpp
+ * @brief Web profile access.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llwebprofile.h"
+
+// libs
+#include "llbufferstream.h"
+#include "llhttpclient.h"
+#include "llimagepng.h"
+#include "llplugincookiestore.h"
+
+// newview
+#include "llpanelprofile.h" // for getProfileURL(). FIXME: move the method to LLAvatarActions
+#include "llviewermedia.h" // FIXME: don't use LLViewerMedia internals
+
+// third-party
+#include "reader.h" // JSON
+
+/*
+ * Workflow:
+ * 1. LLViewerMedia::setOpenIDCookie()
+ * -> GET https://my-demo.secondlife.com/ via LLViewerMediaWebProfileResponder
+ * -> LLWebProfile::setAuthCookie()
+ * 2. LLWebProfile::uploadImage()
+ * -> GET "https://my-demo.secondlife.com/snapshots/s3_upload_config" via ConfigResponder
+ * 3. LLWebProfile::post()
+ * -> POST <config_url> via PostImageResponder
+ * -> redirect
+ * -> GET <redirect_url> via PostImageRedirectResponder
+ */
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfileResponders::ConfigResponder
+
+class LLWebProfileResponders::ConfigResponder : public LLHTTPClient::Responder
+{
+ LOG_CLASS(LLWebProfileResponders::ConfigResponder);
+
+public:
+ ConfigResponder(LLPointer<LLImageFormatted> imagep)
+ : mImagep(imagep)
+ {
+ }
+
+ /*virtual*/ void completedRaw(
+ U32 status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+ {
+ LLBufferStream istr(channels, buffer.get());
+ std::stringstream strstrm;
+ strstrm << istr.rdbuf();
+ const std::string body = strstrm.str();
+
+ if (status != 200)
+ {
+ llwarns << "Failed to get upload config (" << status << ")" << llendl;
+ LLWebProfile::reportImageUploadStatus(false);
+ return;
+ }
+
+ Json::Value root;
+ Json::Reader reader;
+ if (!reader.parse(body, root))
+ {
+ llwarns << "Failed to parse upload config: " << reader.getFormatedErrorMessages() << llendl;
+ LLWebProfile::reportImageUploadStatus(false);
+ return;
+ }
+
+ // *TODO: 404 = not supported by the grid
+ // *TODO: increase timeout or handle 499 Expired
+
+ // Convert config to LLSD.
+ const Json::Value data = root["data"];
+ const std::string upload_url = root["url"].asString();
+ LLSD config;
+ config["acl"] = data["acl"].asString();
+ config["AWSAccessKeyId"] = data["AWSAccessKeyId"].asString();
+ config["Content-Type"] = data["Content-Type"].asString();
+ config["key"] = data["key"].asString();
+ config["policy"] = data["policy"].asString();
+ config["success_action_redirect"] = data["success_action_redirect"].asString();
+ config["signature"] = data["signature"].asString();
+ config["add_loc"] = data.get("add_loc", "0").asString();
+ config["caption"] = data.get("caption", "").asString();
+
+ // Do the actual image upload using the configuration.
+ LL_DEBUGS("Snapshots") << "Got upload config, POSTing image to " << upload_url << ", config=[" << config << "]" << llendl;
+ LLWebProfile::post(mImagep, config, upload_url);
+ }
+
+private:
+ LLPointer<LLImageFormatted> mImagep;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfilePostImageRedirectResponder
+class LLWebProfileResponders::PostImageRedirectResponder : public LLHTTPClient::Responder
+{
+ LOG_CLASS(LLWebProfileResponders::PostImageRedirectResponder);
+
+public:
+ /*virtual*/ void completedRaw(
+ U32 status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+ {
+ if (status != 200)
+ {
+ llwarns << "Failed to upload image: " << status << " " << reason << llendl;
+ LLWebProfile::reportImageUploadStatus(false);
+ return;
+ }
+
+ LLBufferStream istr(channels, buffer.get());
+ std::stringstream strstrm;
+ strstrm << istr.rdbuf();
+ const std::string body = strstrm.str();
+ llinfos << "Image uploaded." << llendl;
+ LL_DEBUGS("Snapshots") << "Uploading image succeeded. Response: [" << body << "]" << llendl;
+ LLWebProfile::reportImageUploadStatus(true);
+ }
+
+private:
+ LLPointer<LLImageFormatted> mImagep;
+};
+
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfileResponders::PostImageResponder
+class LLWebProfileResponders::PostImageResponder : public LLHTTPClient::Responder
+{
+ LOG_CLASS(LLWebProfileResponders::PostImageResponder);
+
+public:
+ /*virtual*/ void completedHeader(U32 status, const std::string& reason, const LLSD& content)
+ {
+ // Viewer seems to fail to follow a 303 redirect on POST request
+ // (URLRequest Error: 65, Send failed since rewinding of the data stream failed).
+ // Handle it manually.
+ if (status == 303)
+ {
+ LLSD headers = LLViewerMedia::getHeaders();
+ headers["Cookie"] = LLWebProfile::getAuthCookie();
+ const std::string& redir_url = content["location"];
+ LL_DEBUGS("Snapshots") << "Got redirection URL: " << redir_url << llendl;
+ LLHTTPClient::get(redir_url, new LLWebProfileResponders::PostImageRedirectResponder, headers);
+ }
+ else
+ {
+ llwarns << "Unexpected POST status: " << status << " " << reason << llendl;
+ LL_DEBUGS("Snapshots") << "headers: [" << content << "]" << llendl;
+ LLWebProfile::reportImageUploadStatus(false);
+ }
+ }
+
+ // Override just to suppress warnings.
+ /*virtual*/ void completedRaw(U32 status, const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+ {
+ }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfile
+
+std::string LLWebProfile::sAuthCookie;
+LLWebProfile::status_callback_t LLWebProfile::mStatusCallback;
+
+// static
+void LLWebProfile::uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location)
+{
+ // Get upload configuration data.
+ std::string config_url(getProfileURL(LLStringUtil::null) + "snapshots/s3_upload_config");
+ config_url += "?caption=" + LLURI::escape(caption);
+ config_url += "&add_loc=" + std::string(add_location ? "1" : "0");
+
+ LL_DEBUGS("Snapshots") << "Requesting " << config_url << llendl;
+ LLSD headers = LLViewerMedia::getHeaders();
+ headers["Cookie"] = getAuthCookie();
+ LLHTTPClient::get(config_url, new LLWebProfileResponders::ConfigResponder(image), headers);
+}
+
+// static
+void LLWebProfile::setAuthCookie(const std::string& cookie)
+{
+ LL_DEBUGS("Snapshots") << "Setting auth cookie: " << cookie << llendl;
+ sAuthCookie = cookie;
+}
+
+// static
+void LLWebProfile::post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url)
+{
+ if (dynamic_cast<LLImagePNG*>(image.get()) == 0)
+ {
+ llwarns << "Image to upload is not a PNG" << llendl;
+ llassert(dynamic_cast<LLImagePNG*>(image.get()) != 0);
+ return;
+ }
+
+ const std::string boundary = "----------------------------0123abcdefab";
+
+ LLSD headers = LLViewerMedia::getHeaders();
+ headers["Cookie"] = getAuthCookie();
+ headers["Content-Type"] = "multipart/form-data; boundary=" + boundary;
+
+ std::ostringstream body;
+
+ // *NOTE: The order seems to matter.
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"key\"\r\n\r\n"
+ << config["key"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"AWSAccessKeyId\"\r\n\r\n"
+ << config["AWSAccessKeyId"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"acl\"\r\n\r\n"
+ << config["acl"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"Content-Type\"\r\n\r\n"
+ << config["Content-Type"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"policy\"\r\n\r\n"
+ << config["policy"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"signature\"\r\n\r\n"
+ << config["signature"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"success_action_redirect\"\r\n\r\n"
+ << config["success_action_redirect"].asString() << "\r\n";
+
+ body << "--" << boundary << "\r\n"
+ << "Content-Disposition: form-data; name=\"file\"; filename=\"snapshot.png\"\r\n"
+ << "Content-Type: image/png\r\n\r\n";
+
+ // Insert the image data.
+ // *FIX: Treating this as a string will probably screw it up ...
+ U8* image_data = image->getData();
+ for (S32 i = 0; i < image->getDataSize(); ++i)
+ {
+ body << image_data[i];
+ }
+
+ body << "\r\n--" << boundary << "--\r\n";
+
+ // postRaw() takes ownership of the buffer and releases it later.
+ size_t size = body.str().size();
+ U8 *data = new U8[size];
+ memcpy(data, body.str().data(), size);
+
+ // Send request, successful upload will trigger posting metadata.
+ LLHTTPClient::postRaw(url, data, size, new LLWebProfileResponders::PostImageResponder(), headers);
+}
+
+// static
+void LLWebProfile::reportImageUploadStatus(bool ok)
+{
+ if (mStatusCallback)
+ {
+ mStatusCallback(ok);
+ }
+}
+
+// static
+std::string LLWebProfile::getAuthCookie()
+{
+ // This is needed to test image uploads on Linux viewer built with OpenSSL 1.0.0 (0.9.8 works fine).
+ const char* debug_cookie = getenv("LL_SNAPSHOT_COOKIE");
+ return debug_cookie ? debug_cookie : sAuthCookie;
+}
diff --git a/indra/newview/llwebprofile.h b/indra/newview/llwebprofile.h
new file mode 100644
index 0000000000..10279bffac
--- /dev/null
+++ b/indra/newview/llwebprofile.h
@@ -0,0 +1,69 @@
+/**
+ * @file llwebprofile.h
+ * @brief Web profile access.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLWEBPROFILE_H
+#define LL_LLWEBPROFILE_H
+
+#include "llimage.h"
+
+namespace LLWebProfileResponders
+{
+ class ConfigResponder;
+ class PostImageResponder;
+ class PostImageRedirectResponder;
+};
+
+/**
+ * @class LLWebProfile
+ *
+ * Manages interaction with, a web service allowing the upload of snapshot images
+ * taken within the viewer.
+ */
+class LLWebProfile
+{
+ LOG_CLASS(LLWebProfile);
+
+public:
+ typedef boost::function<void(bool ok)> status_callback_t;
+
+ static void uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location);
+ static void setAuthCookie(const std::string& cookie);
+ static void setImageUploadResultCallback(status_callback_t cb) { mStatusCallback = cb; }
+
+private:
+ friend class LLWebProfileResponders::ConfigResponder;
+ friend class LLWebProfileResponders::PostImageResponder;
+ friend class LLWebProfileResponders::PostImageRedirectResponder;
+
+ static void post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url);
+ static void reportImageUploadStatus(bool ok);
+ static std::string getAuthCookie();
+
+ static std::string sAuthCookie;
+ static status_callback_t mStatusCallback;
+};
+
+#endif // LL_LLWEBPROFILE_H
diff --git a/indra/newview/llwind.cpp b/indra/newview/llwind.cpp
index 69d3090442..4c39fb5b74 100644
--- a/indra/newview/llwind.cpp
+++ b/indra/newview/llwind.cpp
@@ -46,16 +46,12 @@
#include "llworld.h"
-const F32 CLOUD_DIVERGENCE_COEF = 0.5f;
-
-
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
LLWind::LLWind()
-: mSize(16),
- mCloudDensityp(NULL)
+: mSize(16)
{
init();
}
@@ -65,8 +61,6 @@ LLWind::~LLWind()
{
delete [] mVelX;
delete [] mVelY;
- delete [] mCloudVelX;
- delete [] mCloudVelY;
}
@@ -77,31 +71,23 @@ LLWind::~LLWind()
void LLWind::init()
{
+ LL_DEBUGS("Wind") << "initializing wind size: "<< mSize << LL_ENDL;
+
// Initialize vector data
mVelX = new F32[mSize*mSize];
mVelY = new F32[mSize*mSize];
- mCloudVelX = new F32[mSize*mSize];
- mCloudVelY = new F32[mSize*mSize];
-
S32 i;
for (i = 0; i < mSize*mSize; i++)
{
mVelX[i] = 0.5f;
mVelY[i] = 0.5f;
- mCloudVelX[i] = 0.0f;
- mCloudVelY[i] = 0.0f;
}
}
void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
{
- if (!mCloudDensityp)
- {
- return;
- }
-
LLPatchHeader patch_header;
S32 buffer[16*16];
@@ -122,22 +108,15 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
decode_patch(bitpack, buffer);
decompress_patch(mVelY, buffer, &patch_header);
-
-
S32 i, j, k;
- // HACK -- mCloudVelXY is the same as mVelXY, except we add a divergence
- // that is proportional to the gradient of the cloud density
- // ==> this helps to clump clouds together
- // NOTE ASSUMPTION: cloud density has the same dimensions as the wind field
- // This needs to be fixed... causes discrepency at region boundaries
for (j=1; j<mSize-1; j++)
{
for (i=1; i<mSize-1; i++)
{
k = i + j * mSize;
- *(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k - 1));
- *(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k - mSize));
+ *(mVelX + k) = *(mVelX + k);
+ *(mVelY + k) = *(mVelY + k);
}
}
@@ -145,29 +124,29 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
for (j=1; j<mSize-1; j++)
{
k = i + j * mSize;
- *(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k) - *(mCloudDensityp + k - 2));
- *(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k - mSize));
+ *(mVelX + k) = *(mVelX + k);
+ *(mVelY + k) = *(mVelY + k);
}
i = 0;
for (j=1; j<mSize-1; j++)
{
k = i + j * mSize;
- *(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 2) - *(mCloudDensityp + k));
- *(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k + mSize));
+ *(mVelX + k) = *(mVelX + k);
+ *(mVelY + k) = *(mVelY + k);
}
j = mSize - 1;
for (i=1; i<mSize-1; i++)
{
k = i + j * mSize;
- *(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k - 1));
- *(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k) - *(mCloudDensityp + k - 2*mSize));
+ *(mVelX + k) = *(mVelX + k);
+ *(mVelY + k) = *(mVelY + k);
}
j = 0;
for (i=1; i<mSize-1; i++)
{
k = i + j * mSize;
- *(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k -1));
- *(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 2*mSize) - *(mCloudDensityp + k));
+ *(mVelX + k) = *(mVelX + k);
+ *(mVelY + k) = *(mVelY + k);
}
}
@@ -280,74 +259,6 @@ LLVector3 LLWind::getVelocity(const LLVector3 &pos_region)
return r_val * WIND_SCALE_HACK;
}
-
-LLVector3 LLWind::getCloudVelocity(const LLVector3 &pos_region)
-{
- llassert(mSize == 16);
- // Resolves value of wind at a location relative to SW corner of region
- //
- // Returns wind magnitude in X,Y components of vector3
- LLVector3 r_val;
- F32 dx,dy;
- S32 k;
-
- LLVector3 pos_clamped_region(pos_region);
-
- F32 region_width_meters = LLWorld::getInstance()->getRegionWidthInMeters();
-
- if (pos_clamped_region.mV[VX] < 0.f)
- {
- pos_clamped_region.mV[VX] = 0.f;
- }
- else if (pos_clamped_region.mV[VX] >= region_width_meters)
- {
- pos_clamped_region.mV[VX] = (F32) fmod(pos_clamped_region.mV[VX], region_width_meters);
- }
-
- if (pos_clamped_region.mV[VY] < 0.f)
- {
- pos_clamped_region.mV[VY] = 0.f;
- }
- else if (pos_clamped_region.mV[VY] >= region_width_meters)
- {
- pos_clamped_region.mV[VY] = (F32) fmod(pos_clamped_region.mV[VY], region_width_meters);
- }
-
-
- S32 i = llfloor(pos_clamped_region.mV[VX] * mSize / region_width_meters);
- S32 j = llfloor(pos_clamped_region.mV[VY] * mSize / region_width_meters);
- k = i + j*mSize;
- dx = ((pos_clamped_region.mV[VX] * mSize / region_width_meters) - (F32) i);
- dy = ((pos_clamped_region.mV[VY] * mSize / region_width_meters) - (F32) j);
-
- if ((i < mSize-1) && (j < mSize-1))
- {
- // Interior points, no edges
- r_val.mV[VX] = mCloudVelX[k]*(1.0f - dx)*(1.0f - dy) +
- mCloudVelX[k + 1]*dx*(1.0f - dy) +
- mCloudVelX[k + mSize]*dy*(1.0f - dx) +
- mCloudVelX[k + mSize + 1]*dx*dy;
- r_val.mV[VY] = mCloudVelY[k]*(1.0f - dx)*(1.0f - dy) +
- mCloudVelY[k + 1]*dx*(1.0f - dy) +
- mCloudVelY[k + mSize]*dy*(1.0f - dx) +
- mCloudVelY[k + mSize + 1]*dx*dy;
- }
- else
- {
- r_val.mV[VX] = mCloudVelX[k];
- r_val.mV[VY] = mCloudVelY[k];
- }
-
- r_val.mV[VZ] = 0.f;
- return r_val * WIND_SCALE_HACK;
-}
-
-
-void LLWind::setCloudDensityPointer(F32 *densityp)
-{
- mCloudDensityp = densityp;
-}
-
void LLWind::setOriginGlobal(const LLVector3d &origin_global)
{
mOriginGlobal = origin_global;
diff --git a/indra/newview/llwind.h b/indra/newview/llwind.h
index 925cb6d642..3b57f07124 100644
--- a/indra/newview/llwind.h
+++ b/indra/newview/llwind.h
@@ -27,7 +27,6 @@
#ifndef LL_LLWIND_H
#define LL_LLWIND_H
-//#include "vmath.h"
#include "llmath.h"
#include "v3math.h"
#include "v3dmath.h"
@@ -44,25 +43,21 @@ public:
~LLWind();
void renderVectors();
LLVector3 getVelocity(const LLVector3 &location); // "location" is region-local
- LLVector3 getCloudVelocity(const LLVector3 &location); // "location" is region-local
LLVector3 getVelocityNoisy(const LLVector3 &location, const F32 dim); // "location" is region-local
void decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp);
LLVector3 getAverage();
- void setCloudDensityPointer(F32 *densityp);
void setOriginGlobal(const LLVector3d &origin_global);
private:
S32 mSize;
F32 * mVelX;
F32 * mVelY;
- F32 * mCloudVelX;
- F32 * mCloudVelY;
- F32 * mCloudDensityp;
LLVector3d mOriginGlobal;
void init();
+ LOG_CLASS(LLWind);
};
#endif
diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp
index 02d914a812..5bb7025031 100644
--- a/indra/newview/llwlparamset.cpp
+++ b/indra/newview/llwlparamset.cpp
@@ -69,12 +69,18 @@ LLWLParamSet::LLWLParamSet(void) :
*/
}
+static LLFastTimer::DeclareTimer FTM_WL_PARAM_UPDATE("WL Param Update");
+
void LLWLParamSet::update(LLGLSLShader * shader) const
{
+ LLFastTimer t(FTM_WL_PARAM_UPDATE);
+
for(LLSD::map_const_iterator i = mParamValues.beginMap();
i != mParamValues.endMap();
++i)
{
+
+
const std::string& param = i->first;
if( param == "star_brightness" || param == "preset_num" || param == "sun_angle" ||
@@ -91,8 +97,9 @@ void LLWLParamSet::update(LLGLSLShader * shader) const
val.mV[1] = F32(i->second[1].asReal()) + mCloudScrollYOffset;
val.mV[2] = (F32) i->second[2].asReal();
val.mV[3] = (F32) i->second[3].asReal();
-
- shader->uniform4fv(param, 1, val.mV);
+ stop_glerror();
+ shader->uniform4fv(param, 1, val.mV);
+ stop_glerror();
}
else // param is the uniform name
{
@@ -118,8 +125,9 @@ void LLWLParamSet::update(LLGLSLShader * shader) const
{
val.mV[0] = i->second.asBoolean();
}
-
+ stop_glerror();
shader->uniform4fv(param, 1, val.mV);
+ stop_glerror();
}
}
}
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index a7ae456f3c..676287c0ad 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -589,22 +589,22 @@ void LLWorld::updateVisibilities()
{
F32 cur_far_clip = LLViewerCamera::getInstance()->getFar();
- LLViewerCamera::getInstance()->setFar(mLandFarClip);
-
- F32 diagonal_squared = F_SQRT2 * F_SQRT2 * mWidth * mWidth;
- // Go through the culled list and check for visible regions
+ // Go through the culled list and check for visible regions (region is visible if land is visible)
for (region_list_t::iterator iter = mCulledRegionList.begin();
iter != mCulledRegionList.end(); )
{
region_list_t::iterator curiter = iter++;
LLViewerRegion* regionp = *curiter;
- F32 height = regionp->getLand().getMaxZ() - regionp->getLand().getMinZ();
- F32 radius = 0.5f*(F32) sqrt(height * height + diagonal_squared);
- if (!regionp->getLand().hasZData()
- || LLViewerCamera::getInstance()->sphereInFrustum(regionp->getCenterAgent(), radius))
+
+ LLSpatialPartition* part = regionp->getSpatialPartition(LLViewerRegion::PARTITION_TERRAIN);
+ if (part)
{
- mCulledRegionList.erase(curiter);
- mVisibleRegionList.push_back(regionp);
+ LLSpatialGroup* group = (LLSpatialGroup*) part->mOctree->getListener(0);
+ if (LLViewerCamera::getInstance()->AABBInFrustum(group->mBounds[0], group->mBounds[1]))
+ {
+ mCulledRegionList.erase(curiter);
+ mVisibleRegionList.push_back(regionp);
+ }
}
}
@@ -619,17 +619,20 @@ void LLWorld::updateVisibilities()
continue;
}
- F32 height = regionp->getLand().getMaxZ() - regionp->getLand().getMinZ();
- F32 radius = 0.5f*(F32) sqrt(height * height + diagonal_squared);
- if (LLViewerCamera::getInstance()->sphereInFrustum(regionp->getCenterAgent(), radius))
- {
- regionp->calculateCameraDistance();
- regionp->getLand().updatePatchVisibilities(gAgent);
- }
- else
+ LLSpatialPartition* part = regionp->getSpatialPartition(LLViewerRegion::PARTITION_TERRAIN);
+ if (part)
{
- mVisibleRegionList.erase(curiter);
- mCulledRegionList.push_back(regionp);
+ LLSpatialGroup* group = (LLSpatialGroup*) part->mOctree->getListener(0);
+ if (LLViewerCamera::getInstance()->AABBInFrustum(group->mBounds[0], group->mBounds[1]))
+ {
+ regionp->calculateCameraDistance();
+ regionp->getLand().updatePatchVisibilities(gAgent);
+ }
+ else
+ {
+ mVisibleRegionList.erase(curiter);
+ mCulledRegionList.push_back(regionp);
+ }
}
}
@@ -815,14 +818,11 @@ void LLWorld::updateWaterObjects()
max_x = (S32)region_x + range;
max_y = (S32)region_y + range;
- F32 height = 0.f;
-
for (region_list_t::iterator iter = mRegionList.begin();
iter != mRegionList.end(); ++iter)
{
LLViewerRegion* regionp = *iter;
LLVOWater* waterp = regionp->getLand().getWaterObj();
- height += regionp->getWaterHeight();
if (waterp)
{
gObjectList.updateActive(waterp);
@@ -839,6 +839,7 @@ void LLWorld::updateWaterObjects()
// Now, get a list of the holes
S32 x, y;
+ F32 water_height = gAgent.getRegion()->getWaterHeight() + 256.f;
for (x = min_x; x <= max_x; x += rwidth)
{
for (y = min_y; y <= max_y; y += rwidth)
@@ -850,7 +851,7 @@ void LLWorld::updateWaterObjects()
waterp->setUseTexture(FALSE);
waterp->setPositionGlobal(LLVector3d(x + rwidth/2,
y + rwidth/2,
- 256.f+DEFAULT_WATER_HEIGHT));
+ water_height));
waterp->setScale(LLVector3((F32)rwidth, (F32)rwidth, 512.f));
gPipeline.createObject(waterp);
mHoleWaterObjects.push_back(waterp);
@@ -907,8 +908,7 @@ void LLWorld::updateWaterObjects()
}
waterp->setRegion(gAgent.getRegion());
- LLVector3d water_pos(water_center_x, water_center_y,
- DEFAULT_WATER_HEIGHT+256.f);
+ LLVector3d water_pos(water_center_x, water_center_y, water_height) ;
LLVector3 water_scale((F32) dim[0], (F32) dim[1], 512.f);
//stretch out to horizon
diff --git a/indra/newview/llworldmapmessage.cpp b/indra/newview/llworldmapmessage.cpp
index 66d0d698ba..8307d32336 100644
--- a/indra/newview/llworldmapmessage.cpp
+++ b/indra/newview/llworldmapmessage.cpp
@@ -210,15 +210,14 @@ void LLWorldMapMessage::processMapBlockReply(LLMessageSystem* msg, void**)
}
// Handle the SLURL callback if any
- if(LLWorldMapMessage::getInstance()->mSLURLCallback != NULL)
+ url_callback_t callback = LLWorldMapMessage::getInstance()->mSLURLCallback;
+ if(callback != NULL)
{
U64 handle = to_region_handle(x_world, y_world);
// Check if we reached the requested region
if ((LLStringUtil::compareInsensitive(LLWorldMapMessage::getInstance()->mSLURLRegionName, name)==0)
|| (LLWorldMapMessage::getInstance()->mSLURLRegionHandle == handle))
{
- url_callback_t callback = LLWorldMapMessage::getInstance()->mSLURLCallback;
-
LLWorldMapMessage::getInstance()->mSLURLCallback = NULL;
LLWorldMapMessage::getInstance()->mSLURLRegionName.clear();
LLWorldMapMessage::getInstance()->mSLURLRegionHandle = 0;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 265d5dc801..e50851b8e7 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -314,7 +314,7 @@ void LLWorldMapView::draw()
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
// Clear the background alpha to 0
gGL.flush();
@@ -422,7 +422,7 @@ void LLWorldMapView::draw()
// Draw something whenever we have enough info
if (overlayimage->hasGLTexture())
{
- gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO);
+ gGL.blendFunc(LLRender::BF_SOURCE_ALPHA, LLRender::BF_ONE_MINUS_SOURCE_ALPHA);
gGL.getTexUnit(0)->bind(overlayimage);
gGL.color4f(1.f, 1.f, 1.f, 1.f);
gGL.begin(LLRender::QUADS);
@@ -1307,7 +1307,7 @@ void LLWorldMapView::drawTrackingCircle( const LLRect& rect, S32 x, S32 y, const
end_theta -= angle_adjust_y;
}
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
gGL.translatef((F32)x, (F32)y, 0.f);
gl_washer_segment_2d(inner_radius, outer_radius, start_theta, end_theta, 40, color, color);
diff --git a/indra/newview/llworldview.cpp b/indra/newview/llworldview.cpp
deleted file mode 100644
index f5dc2a5290..0000000000
--- a/indra/newview/llworldview.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file llworldview.cpp
- * @brief LLWorldView class implementation
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llworldview.h"
-
-#include "llviewercontrol.h"
-#include "llsidetray.h"
-/////////////////////////////////////////////////////
-// LLFloaterView
-
-static LLDefaultChildRegistry::Register<LLWorldView> r("world_view");
-
-LLWorldView::LLWorldView(const Params& p)
-: LLUICtrl (p)
-{
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLWorldView::toggleSidebarCameraMovement, this, _2));
-}
-
-void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- //if (FALSE == gSavedSettings.getBOOL("SidebarCameraMovement") )
- //{
- // LLView* main_view = LLUI::getRootView()->findChild<LLView>("main_view");
- // if(main_view)
- // {
- // width = main_view->getRect().getWidth();
- // }
- //}
-
- LLUICtrl::reshape(width, height, called_from_parent);
-}
-void LLWorldView::toggleSidebarCameraMovement(const LLSD::Boolean& new_visibility)
-{
- reshape(getParent()->getRect().getWidth(),getRect().getHeight());
-}
-
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index f483ba5af8..920a9a3752 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -382,19 +382,11 @@ bool LLXMLRPCTransaction::Impl::process()
// continue onward
}
}
-
- //const F32 MAX_PROCESSING_TIME = 0.05f;
- //LLTimer timer;
-
- mCurlRequest->perform();
-
- /*while (mCurlRequest->perform() > 0)
+
+ if(!mCurlRequest->wait())
{
- if (timer.getElapsedTimeF32() >= MAX_PROCESSING_TIME)
- {
- return false;
- }
- }*/
+ return false ;
+ }
while(1)
{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index a50f66f282..657cdc0e07 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -106,26 +106,6 @@
#include "llnotifications.h"
-void check_stack_depth(S32 stack_depth)
-{
- if (gDebugGL || gDebugSession)
- {
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth != stack_depth)
- {
- if (gDebugSession)
- {
- ll_fail("GL matrix stack corrupted.");
- }
- else
- {
- llerrs << "GL matrix stack corrupted!" << llendl;
- }
- }
- }
-}
-
#ifdef _DEBUG
// Debug indices is disabled for now for debug performance - djs 4/24/02
//#define DEBUG_INDICES
@@ -133,13 +113,88 @@ void check_stack_depth(S32 stack_depth)
//#define DEBUG_INDICES
#endif
+//cached settings
+BOOL LLPipeline::RenderAvatarVP;
+BOOL LLPipeline::VertexShaderEnable;
+BOOL LLPipeline::WindLightUseAtmosShaders;
+BOOL LLPipeline::RenderDeferred;
+F32 LLPipeline::RenderDeferredSunWash;
+U32 LLPipeline::RenderFSAASamples;
+U32 LLPipeline::RenderResolutionDivisor;
+BOOL LLPipeline::RenderUIBuffer;
+S32 LLPipeline::RenderShadowDetail;
+BOOL LLPipeline::RenderDeferredSSAO;
+F32 LLPipeline::RenderShadowResolutionScale;
+BOOL LLPipeline::RenderLocalLights;
+BOOL LLPipeline::RenderDelayCreation;
+BOOL LLPipeline::RenderAnimateRes;
+BOOL LLPipeline::FreezeTime;
+S32 LLPipeline::DebugBeaconLineWidth;
+F32 LLPipeline::RenderHighlightBrightness;
+LLColor4 LLPipeline::RenderHighlightColor;
+F32 LLPipeline::RenderHighlightThickness;
+BOOL LLPipeline::RenderSpotLightsInNondeferred;
+LLColor4 LLPipeline::PreviewAmbientColor;
+LLColor4 LLPipeline::PreviewDiffuse0;
+LLColor4 LLPipeline::PreviewSpecular0;
+LLColor4 LLPipeline::PreviewDiffuse1;
+LLColor4 LLPipeline::PreviewSpecular1;
+LLColor4 LLPipeline::PreviewDiffuse2;
+LLColor4 LLPipeline::PreviewSpecular2;
+LLVector3 LLPipeline::PreviewDirection0;
+LLVector3 LLPipeline::PreviewDirection1;
+LLVector3 LLPipeline::PreviewDirection2;
+F32 LLPipeline::RenderGlowMinLuminance;
+F32 LLPipeline::RenderGlowMaxExtractAlpha;
+F32 LLPipeline::RenderGlowWarmthAmount;
+LLVector3 LLPipeline::RenderGlowLumWeights;
+LLVector3 LLPipeline::RenderGlowWarmthWeights;
+S32 LLPipeline::RenderGlowResolutionPow;
+S32 LLPipeline::RenderGlowIterations;
+F32 LLPipeline::RenderGlowWidth;
+F32 LLPipeline::RenderGlowStrength;
+BOOL LLPipeline::RenderDepthOfField;
+F32 LLPipeline::CameraFocusTransitionTime;
+F32 LLPipeline::CameraFNumber;
+F32 LLPipeline::CameraFocalLength;
+F32 LLPipeline::CameraFieldOfView;
+F32 LLPipeline::RenderShadowNoise;
+F32 LLPipeline::RenderShadowBlurSize;
+F32 LLPipeline::RenderSSAOScale;
+U32 LLPipeline::RenderSSAOMaxScale;
+F32 LLPipeline::RenderSSAOFactor;
+LLVector3 LLPipeline::RenderSSAOEffect;
+F32 LLPipeline::RenderShadowOffsetError;
+F32 LLPipeline::RenderShadowBiasError;
+F32 LLPipeline::RenderShadowOffset;
+F32 LLPipeline::RenderShadowBias;
+F32 LLPipeline::RenderSpotShadowOffset;
+F32 LLPipeline::RenderSpotShadowBias;
+F32 LLPipeline::RenderEdgeDepthCutoff;
+F32 LLPipeline::RenderEdgeNormCutoff;
+LLVector3 LLPipeline::RenderShadowGaussian;
+F32 LLPipeline::RenderShadowBlurDistFactor;
+BOOL LLPipeline::RenderDeferredAtmospheric;
+S32 LLPipeline::RenderReflectionDetail;
+F32 LLPipeline::RenderHighlightFadeTime;
+LLVector3 LLPipeline::RenderShadowClipPlanes;
+LLVector3 LLPipeline::RenderShadowOrthoClipPlanes;
+LLVector3 LLPipeline::RenderShadowNearDist;
+F32 LLPipeline::RenderFarClip;
+LLVector3 LLPipeline::RenderShadowSplitExponent;
+F32 LLPipeline::RenderShadowErrorCutoff;
+F32 LLPipeline::RenderShadowFOVCutoff;
+BOOL LLPipeline::CameraOffset;
+F32 LLPipeline::CameraMaxCoF;
+F32 LLPipeline::CameraDoFResScale;
+
const F32 BACKLIGHT_DAY_MAGNITUDE_AVATAR = 0.2f;
const F32 BACKLIGHT_NIGHT_MAGNITUDE_AVATAR = 0.1f;
const F32 BACKLIGHT_DAY_MAGNITUDE_OBJECT = 0.1f;
const F32 BACKLIGHT_NIGHT_MAGNITUDE_OBJECT = 0.08f;
const S32 MAX_OFFSCREEN_GEOMETRY_CHANGES_PER_FRAME = 10;
const U32 REFLECTION_MAP_RES = 128;
-
+const U32 DEFERRED_VB_MASK = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1;
// Max number of occluders to search for. JC
const S32 MAX_OCCLUDER_COUNT = 2;
@@ -211,23 +266,12 @@ std::string gPoolNames[] =
void drawBox(const LLVector3& c, const LLVector3& r);
void drawBoxOutline(const LLVector3& pos, const LLVector3& size);
+U32 nhpo2(U32 v);
-U32 nhpo2(U32 v)
-{
- U32 r = 1;
- while (r < v) {
- r *= 2;
- }
- return r;
-}
-
-glh::matrix4f glh_copy_matrix(GLdouble* src)
+glh::matrix4f glh_copy_matrix(F32* src)
{
glh::matrix4f ret;
- for (U32 i = 0; i < 16; i++)
- {
- ret.m[i] = (F32) src[i];
- }
+ ret.set_value(src);
return ret;
}
@@ -251,7 +295,7 @@ glh::matrix4f glh_get_last_projection()
return glh_copy_matrix(gGLLastProjection);
}
-void glh_copy_matrix(const glh::matrix4f& src, GLdouble* dst)
+void glh_copy_matrix(const glh::matrix4f& src, F32* dst)
{
for (U32 i = 0; i < 16; i++)
{
@@ -394,11 +438,14 @@ void LLPipeline::init()
{
LLMemType mt(LLMemType::MTYPE_PIPELINE_INIT);
+ refreshCachedSettings();
+
gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
+ LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO");
LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw");
sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights");
sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles");
@@ -459,7 +506,95 @@ void LLPipeline::init()
mSpotLightFade[i] = 1.f;
}
+ mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
+ mDeferredVB->allocateBuffer(8, 0, true);
setLightingDetail(-1);
+
+ //
+ // Update all settings to trigger a cached settings refresh
+ //
+
+ gSavedSettings.getControl("RenderAutoMaskAlphaDeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderAutoMaskAlphaNonDeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderUseFarClip")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderAvatarMaxVisible")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDelayVBUpdate")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+
+ gSavedSettings.getControl("UseOcclusion")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+
+ gSavedSettings.getControl("VertexShaderEnable")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderAvatarVP")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("WindLightUseAtmosShaders")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDeferredSunWash")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderFSAASamples")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderResolutionDivisor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderUIBuffer")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowDetail")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDeferredSSAO")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowResolutionScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderLocalLights")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDelayCreation")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderAnimateRes")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("FreezeTime")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("DebugBeaconLineWidth")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderHighlightBrightness")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderHighlightColor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderHighlightThickness")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSpotLightsInNondeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewAmbientColor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewDiffuse0")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewSpecular0")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewDiffuse1")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewSpecular1")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewDiffuse2")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewSpecular2")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewDirection0")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewDirection1")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("PreviewDirection2")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowMinLuminance")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowMaxExtractAlpha")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowWarmthAmount")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowLumWeights")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowWarmthWeights")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowResolutionPow")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowIterations")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowWidth")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderGlowStrength")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDepthOfField")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraFocusTransitionTime")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraFNumber")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraFocalLength")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraFieldOfView")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowNoise")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowBlurSize")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSSAOScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSSAOMaxScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSSAOFactor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSSAOEffect")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowOffsetError")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowBiasError")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowOffset")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowBias")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSpotShadowOffset")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderSpotShadowBias")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderEdgeDepthCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderEdgeNormCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowGaussian")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowBlurDistFactor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderDeferredAtmospheric")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderReflectionDetail")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderHighlightFadeTime")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowClipPlanes")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowOrthoClipPlanes")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowNearDist")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderFarClip")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowSplitExponent")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowErrorCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("RenderShadowFOVCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraOffset")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraMaxCoF")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+ gSavedSettings.getControl("CameraDoFResScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
}
LLPipeline::~LLPipeline()
@@ -537,6 +672,8 @@ void LLPipeline::cleanup()
mMovedBridge.clear();
mInitialized = FALSE;
+
+ mDeferredVB = NULL;
}
//============================================================================
@@ -606,12 +743,8 @@ void LLPipeline::allocatePhysicsBuffer()
void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
{
- U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
-
- if (gGLManager.mIsATI)
- { //ATI doesn't like the way we use multisample texture
- samples = 0;
- }
+ refreshCachedSettings();
+ U32 samples = RenderFSAASamples;
//try to allocate screen buffers at requested resolution and samples
// - on failure, shrink number of samples and try again
@@ -632,6 +765,8 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
releaseScreenBuffers();
}
+ samples = 0;
+
//reduce resolution
while (resY > 0 && resX > 0)
{
@@ -657,11 +792,13 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
{
+ refreshCachedSettings();
+
// remember these dimensions
mScreenWidth = resX;
mScreenHeight = resY;
- U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");
+ U32 res_mod = RenderResolutionDivisor;
if (res_mod > 1 && res_mod < resX && res_mod < resY)
{
@@ -669,7 +806,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
resY /= res_mod;
}
- if (gSavedSettings.getBOOL("RenderUIBuffer"))
+ if (RenderUIBuffer)
{
if (!mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE))
{
@@ -679,79 +816,40 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
if (LLPipeline::sRenderDeferred)
{
- S32 shadow_detail = gSavedSettings.getS32("RenderShadowDetail");
- BOOL ssao = gSavedSettings.getBOOL("RenderDeferredSSAO");
- bool gi = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED);
-
+ S32 shadow_detail = RenderShadowDetail;
+ BOOL ssao = RenderDeferredSSAO;
+
//allocate deferred rendering color buffers
if (!mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
if (!mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
if (!addDeferredAttachments(mDeferredScreen)) return false;
if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
-
-#if LL_DARWIN
- // As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
- if (!mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
-#else
- if (!mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
-#endif
-
- if (shadow_detail > 0 || ssao)
- { //only need mDeferredLight[0] for shadows OR ssao
- if (!mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
- }
- else
+ if (samples > 0)
{
- mDeferredLight[0].release();
- }
-
- if (ssao)
- { //only need mDeferredLight[1] for ssao
- if (!mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false;
+ if (!mFXAABuffer.allocate(nhpo2(resX), nhpo2(resY), GL_RGBA, FALSE, FALSE, LLTexUnit::TT_TEXTURE, FALSE, samples)) return false;
}
else
{
- mDeferredLight[1].release();
+ mFXAABuffer.release();
}
-
- if (gi)
- { //only need mDeferredLight[2] and mGIMapPost for gi
- if (!mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false;
- for (U32 i = 0; i < 2; i++)
- {
-#if LL_DARWIN
- // As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
- if (!mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
-#else
- if (!mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
-#endif
- }
+
+ if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0)
+ { //only need mDeferredLight for shadows OR ssao OR dof OR fxaa
+ if (!mDeferredLight.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
}
else
{
- mDeferredLight[2].release();
-
- for (U32 i = 0; i < 2; i++)
- {
- mGIMapPost[i].release();
- }
+ mDeferredLight.release();
}
- F32 scale = gSavedSettings.getF32("RenderShadowResolutionScale");
-
-#if LL_DARWIN
- U32 shadow_fmt = 0;
-#else
- //HACK: make alpha masking work on ATI depth shadows (work around for ATI driver bug)
- U32 shadow_fmt = gGLManager.mIsATI ? GL_ALPHA : 0;
-#endif
+ F32 scale = RenderShadowResolutionScale;
if (shadow_detail > 0)
{ //allocate 4 sun shadow maps
for (U32 i = 0; i < 4; i++)
{
- if (!mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
+ if (!mShadow[i].allocate(U32(resX*scale),U32(resY*scale), 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
}
}
else
@@ -769,7 +867,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
{ //allocate two spot shadow maps
for (U32 i = 4; i < 6; i++)
{
- if (!mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE)) return false;
+ if (!mShadow[i].allocate(width, height, 0, TRUE, FALSE)) return false;
}
}
else
@@ -779,31 +877,20 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
mShadow[i].release();
}
}
-
- width = nhpo2(resX)/2;
- height = nhpo2(resY)/2;
- if (!mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE)) return false;
}
else
{
- for (U32 i = 0; i < 3; i++)
- {
- mDeferredLight[i].release();
- }
- for (U32 i = 0; i < 2; i++)
- {
- mGIMapPost[i].release();
- }
+ mDeferredLight.release();
+
for (U32 i = 0; i < 6; i++)
{
mShadow[i].release();
}
+ mFXAABuffer.release();
mScreen.release();
mDeferredScreen.release(); //make sure to release any render targets that share a depth buffer with mDeferredScreen first
mDeferredDepth.release();
- mEdgeMap.release();
- mLuminanceMap.release();
-
+
if (!mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
}
@@ -822,12 +909,12 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
//static
void LLPipeline::updateRenderDeferred()
{
- BOOL deferred = ((gSavedSettings.getBOOL("RenderDeferred") &&
+ BOOL deferred = ((RenderDeferred &&
LLRenderTarget::sUseFBO &&
- LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
- gSavedSettings.getBOOL("VertexShaderEnable") &&
- gSavedSettings.getBOOL("RenderAvatarVP") &&
- gSavedSettings.getBOOL("WindLightUseAtmosShaders")) ? TRUE : FALSE) &&
+ LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
+ VertexShaderEnable &&
+ RenderAvatarVP &&
+ WindLightUseAtmosShaders) ? TRUE : FALSE) &&
!gUseWireframe;
sRenderDeferred = deferred;
@@ -838,8 +925,94 @@ void LLPipeline::updateRenderDeferred()
}
//static
-void LLPipeline::refreshRenderDeferred()
-{
+void LLPipeline::refreshCachedSettings()
+{
+ LLPipeline::sAutoMaskAlphaDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaDeferred");
+ LLPipeline::sAutoMaskAlphaNonDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaNonDeferred");
+ LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
+ LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
+ LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
+
+ LLPipeline::sUseOcclusion =
+ (!gUseWireframe
+ && LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion")
+ && gSavedSettings.getBOOL("UseOcclusion")
+ && gGLManager.mHasOcclusionQuery) ? 2 : 0;
+
+ VertexShaderEnable = gSavedSettings.getBOOL("VertexShaderEnable");
+ RenderAvatarVP = gSavedSettings.getBOOL("RenderAvatarVP");
+ WindLightUseAtmosShaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
+ RenderDeferred = gSavedSettings.getBOOL("RenderDeferred");
+ RenderDeferredSunWash = gSavedSettings.getF32("RenderDeferredSunWash");
+ RenderFSAASamples = gSavedSettings.getU32("RenderFSAASamples");
+ RenderResolutionDivisor = gSavedSettings.getU32("RenderResolutionDivisor");
+ RenderUIBuffer = gSavedSettings.getBOOL("RenderUIBuffer");
+ RenderShadowDetail = gSavedSettings.getS32("RenderShadowDetail");
+ RenderDeferredSSAO = gSavedSettings.getBOOL("RenderDeferredSSAO");
+ RenderShadowResolutionScale = gSavedSettings.getF32("RenderShadowResolutionScale");
+ RenderLocalLights = gSavedSettings.getBOOL("RenderLocalLights");
+ RenderDelayCreation = gSavedSettings.getBOOL("RenderDelayCreation");
+ RenderAnimateRes = gSavedSettings.getBOOL("RenderAnimateRes");
+ FreezeTime = gSavedSettings.getBOOL("FreezeTime");
+ DebugBeaconLineWidth = gSavedSettings.getS32("DebugBeaconLineWidth");
+ RenderHighlightBrightness = gSavedSettings.getF32("RenderHighlightBrightness");
+ RenderHighlightColor = gSavedSettings.getColor4("RenderHighlightColor");
+ RenderHighlightThickness = gSavedSettings.getF32("RenderHighlightThickness");
+ RenderSpotLightsInNondeferred = gSavedSettings.getBOOL("RenderSpotLightsInNondeferred");
+ PreviewAmbientColor = gSavedSettings.getColor4("PreviewAmbientColor");
+ PreviewDiffuse0 = gSavedSettings.getColor4("PreviewDiffuse0");
+ PreviewSpecular0 = gSavedSettings.getColor4("PreviewSpecular0");
+ PreviewDiffuse1 = gSavedSettings.getColor4("PreviewDiffuse1");
+ PreviewSpecular1 = gSavedSettings.getColor4("PreviewSpecular1");
+ PreviewDiffuse2 = gSavedSettings.getColor4("PreviewDiffuse2");
+ PreviewSpecular2 = gSavedSettings.getColor4("PreviewSpecular2");
+ PreviewDirection0 = gSavedSettings.getVector3("PreviewDirection0");
+ PreviewDirection1 = gSavedSettings.getVector3("PreviewDirection1");
+ PreviewDirection2 = gSavedSettings.getVector3("PreviewDirection2");
+ RenderGlowMinLuminance = gSavedSettings.getF32("RenderGlowMinLuminance");
+ RenderGlowMaxExtractAlpha = gSavedSettings.getF32("RenderGlowMaxExtractAlpha");
+ RenderGlowWarmthAmount = gSavedSettings.getF32("RenderGlowWarmthAmount");
+ RenderGlowLumWeights = gSavedSettings.getVector3("RenderGlowLumWeights");
+ RenderGlowWarmthWeights = gSavedSettings.getVector3("RenderGlowWarmthWeights");
+ RenderGlowResolutionPow = gSavedSettings.getS32("RenderGlowResolutionPow");
+ RenderGlowIterations = gSavedSettings.getS32("RenderGlowIterations");
+ RenderGlowWidth = gSavedSettings.getF32("RenderGlowWidth");
+ RenderGlowStrength = gSavedSettings.getF32("RenderGlowStrength");
+ RenderDepthOfField = gSavedSettings.getBOOL("RenderDepthOfField");
+ CameraFocusTransitionTime = gSavedSettings.getF32("CameraFocusTransitionTime");
+ CameraFNumber = gSavedSettings.getF32("CameraFNumber");
+ CameraFocalLength = gSavedSettings.getF32("CameraFocalLength");
+ CameraFieldOfView = gSavedSettings.getF32("CameraFieldOfView");
+ RenderShadowNoise = gSavedSettings.getF32("RenderShadowNoise");
+ RenderShadowBlurSize = gSavedSettings.getF32("RenderShadowBlurSize");
+ RenderSSAOScale = gSavedSettings.getF32("RenderSSAOScale");
+ RenderSSAOMaxScale = gSavedSettings.getU32("RenderSSAOMaxScale");
+ RenderSSAOFactor = gSavedSettings.getF32("RenderSSAOFactor");
+ RenderSSAOEffect = gSavedSettings.getVector3("RenderSSAOEffect");
+ RenderShadowOffsetError = gSavedSettings.getF32("RenderShadowOffsetError");
+ RenderShadowBiasError = gSavedSettings.getF32("RenderShadowBiasError");
+ RenderShadowOffset = gSavedSettings.getF32("RenderShadowOffset");
+ RenderShadowBias = gSavedSettings.getF32("RenderShadowBias");
+ RenderSpotShadowOffset = gSavedSettings.getF32("RenderSpotShadowOffset");
+ RenderSpotShadowBias = gSavedSettings.getF32("RenderSpotShadowBias");
+ RenderEdgeDepthCutoff = gSavedSettings.getF32("RenderEdgeDepthCutoff");
+ RenderEdgeNormCutoff = gSavedSettings.getF32("RenderEdgeNormCutoff");
+ RenderShadowGaussian = gSavedSettings.getVector3("RenderShadowGaussian");
+ RenderShadowBlurDistFactor = gSavedSettings.getF32("RenderShadowBlurDistFactor");
+ RenderDeferredAtmospheric = gSavedSettings.getBOOL("RenderDeferredAtmospheric");
+ RenderReflectionDetail = gSavedSettings.getS32("RenderReflectionDetail");
+ RenderHighlightFadeTime = gSavedSettings.getF32("RenderHighlightFadeTime");
+ RenderShadowClipPlanes = gSavedSettings.getVector3("RenderShadowClipPlanes");
+ RenderShadowOrthoClipPlanes = gSavedSettings.getVector3("RenderShadowOrthoClipPlanes");
+ RenderShadowNearDist = gSavedSettings.getVector3("RenderShadowNearDist");
+ RenderFarClip = gSavedSettings.getF32("RenderFarClip");
+ RenderShadowSplitExponent = gSavedSettings.getVector3("RenderShadowSplitExponent");
+ RenderShadowErrorCutoff = gSavedSettings.getF32("RenderShadowErrorCutoff");
+ RenderShadowFOVCutoff = gSavedSettings.getF32("RenderShadowFOVCutoff");
+ CameraOffset = gSavedSettings.getBOOL("CameraOffset");
+ CameraMaxCoF = gSavedSettings.getF32("CameraMaxCoF");
+ CameraDoFResScale = gSavedSettings.getF32("CameraDoFResScale");
+
updateRenderDeferred();
}
@@ -883,21 +1056,14 @@ void LLPipeline::releaseScreenBuffers()
{
mUIScreen.release();
mScreen.release();
+ mFXAABuffer.release();
mPhysicsDisplay.release();
mDeferredScreen.release();
mDeferredDepth.release();
- for (U32 i = 0; i < 3; i++)
- {
- mDeferredLight[i].release();
- }
-
- mEdgeMap.release();
- mGIMap.release();
- mGIMapPost[0].release();
- mGIMapPost[1].release();
- mHighlight.release();
- mLuminanceMap.release();
+ mDeferredLight.release();
+ mHighlight.release();
+
for (U32 i = 0; i < 6; i++)
{
mShadow[i].release();
@@ -907,6 +1073,7 @@ void LLPipeline::releaseScreenBuffers()
void LLPipeline::createGLBuffers()
{
+ stop_glerror();
LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS);
assertInitialized();
@@ -1011,18 +1178,12 @@ void LLPipeline::createGLBuffers()
LLImageGL::generateTextures(1, &mLightFunc);
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc);
- LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_ALPHA, lightResX, lightResY, GL_ALPHA, GL_UNSIGNED_BYTE, lg);
+ LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_R8, lightResX, lightResY, GL_RED, GL_UNSIGNED_BYTE, lg);
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
delete [] lg;
}
-
- if (gSavedSettings.getBOOL("RenderDeferredGI"))
- {
- mGIMap.allocate(512,512,GL_RGBA, TRUE, FALSE);
- addDeferredAttachments(mGIMap);
- }
}
gBumpImageList.restoreGL();
@@ -1123,10 +1284,11 @@ S32 LLPipeline::getMaxLightingDetail() const
S32 LLPipeline::setLightingDetail(S32 level)
{
LLMemType mt_ld(LLMemType::MTYPE_PIPELINE_LIGHTING_DETAIL);
+ refreshCachedSettings();
if (level < 0)
{
- if (gSavedSettings.getBOOL("RenderLocalLights"))
+ if (RenderLocalLights)
{
level = 1;
}
@@ -1447,7 +1609,7 @@ U32 LLPipeline::addObject(LLViewerObject *vobj)
{
LLMemType mt_ao(LLMemType::MTYPE_PIPELINE_ADD_OBJECT);
- if (gSavedSettings.getBOOL("RenderDelayCreation"))
+ if (RenderDelayCreation)
{
mCreateQ.push_back(vobj);
}
@@ -1510,7 +1672,7 @@ void LLPipeline::createObject(LLViewerObject* vobj)
markRebuild(drawablep, LLDrawable::REBUILD_ALL, TRUE);
- if (drawablep->getVOVolume() && gSavedSettings.getBOOL("RenderAnimateRes"))
+ if (drawablep->getVOVolume() && RenderAnimateRes)
{
// fun animated res
drawablep->updateXform(TRUE);
@@ -1549,7 +1711,7 @@ void LLPipeline::resetFrameStats()
//external functions for asynchronous updating
void LLPipeline::updateMoveDampedAsync(LLDrawable* drawablep)
{
- if (gSavedSettings.getBOOL("FreezeTime"))
+ if (FreezeTime)
{
return;
}
@@ -1579,7 +1741,7 @@ void LLPipeline::updateMoveDampedAsync(LLDrawable* drawablep)
void LLPipeline::updateMoveNormalAsync(LLDrawable* drawablep)
{
- if (gSavedSettings.getBOOL("FreezeTime"))
+ if (FreezeTime)
{
return;
}
@@ -1636,7 +1798,7 @@ void LLPipeline::updateMove()
LLFastTimer t(FTM_UPDATE_MOVE);
LLMemType mt_um(LLMemType::MTYPE_PIPELINE_UPDATE_MOVE);
- if (gSavedSettings.getBOOL("FreezeTime"))
+ if (FreezeTime)
{
return;
}
@@ -2009,13 +2171,13 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
gGL.setColorMask(false, false);
}
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadMatrixd(gGLLastProjection);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadMatrix(gGLLastProjection);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLLastModelView);
+ gGL.loadMatrix(gGLLastModelView);
LLVertexBuffer::unbind();
@@ -2120,10 +2282,10 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
}
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
if (sUseOcclusion > 1)
{
@@ -2761,6 +2923,11 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
{
markVisible(*i, camera);
}
+
+ if (!sDelayVBUpdate)
+ { //rebuild mesh as soon as we know it's visible
+ group->rebuildMesh();
+ }
}
}
@@ -2811,6 +2978,11 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
{
group->setVisible();
stateSort(group, camera);
+
+ if (!sDelayVBUpdate)
+ { //rebuild mesh as soon as we know it's visible
+ group->rebuildMesh();
+ }
}
}
@@ -2826,11 +2998,7 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
}
}
}
- {
- LLFastTimer ftm(FTM_CLIENT_COPY);
- LLVertexBuffer::clientCopy();
- }
-
+
postSort(camera);
}
@@ -2986,7 +3154,7 @@ void renderScriptedBeacons(LLDrawable* drawablep)
{
if (gPipeline.sRenderBeacons)
{
- gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+ gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
}
if (gPipeline.sRenderHighlight)
@@ -3012,7 +3180,7 @@ void renderScriptedTouchBeacons(LLDrawable* drawablep)
{
if (gPipeline.sRenderBeacons)
{
- gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+ gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
}
if (gPipeline.sRenderHighlight)
@@ -3037,7 +3205,7 @@ void renderPhysicalBeacons(LLDrawable* drawablep)
{
if (gPipeline.sRenderBeacons)
{
- gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(0.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+ gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(0.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
}
if (gPipeline.sRenderHighlight)
@@ -3073,7 +3241,7 @@ void renderMOAPBeacons(LLDrawable* drawablep)
{
if (gPipeline.sRenderBeacons)
{
- gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 1.f, 1.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+ gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 1.f, 1.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
}
if (gPipeline.sRenderHighlight)
@@ -3098,7 +3266,7 @@ void renderParticleBeacons(LLDrawable* drawablep)
if (gPipeline.sRenderBeacons)
{
LLColor4 light_blue(0.5f, 0.5f, 1.f, 0.5f);
- gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", light_blue, LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+ gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", light_blue, LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
}
if (gPipeline.sRenderHighlight)
@@ -3243,19 +3411,6 @@ void LLPipeline::postSort(LLCamera& camera)
if (!sShadowRender)
{
- //sort by texture or bump map
- for (U32 i = 0; i < LLRenderPass::NUM_RENDER_TYPES; ++i)
- {
- if (i == LLRenderPass::PASS_BUMP)
- {
- std::sort(sCull->beginRenderMap(i), sCull->endRenderMap(i), LLDrawInfo::CompareBump());
- }
- else
- {
- std::sort(sCull->beginRenderMap(i), sCull->endRenderMap(i), LLDrawInfo::CompareTexturePtrMatrix());
- }
- }
-
std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());
}
llpushcallstacks ;
@@ -3304,7 +3459,7 @@ void LLPipeline::postSort(LLCamera& camera)
if (gPipeline.sRenderBeacons)
{
//pos += LLVector3(0.f, 0.f, 0.2f);
- gObjectList.addDebugBeacon(pos, "", LLColor4(1.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+ gObjectList.addDebugBeacon(pos, "", LLColor4(1.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), DebugBeaconLineWidth);
}
}
// now deal with highlights for all those seeable sound sources
@@ -3369,7 +3524,7 @@ void render_hud_elements()
if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
{
- LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+ LLGLEnable multisample(LLPipeline::RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
gViewerWindow->renderSelections(FALSE, FALSE, FALSE); // For HUD version in render_ui_3d()
// Draw the tracking overlays
@@ -3441,10 +3596,10 @@ void LLPipeline::renderHighlights()
//gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
gGL.pushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.pushMatrix();
- glLoadIdentity();
+ gGL.loadIdentity();
gGL.getTexUnit(0)->bind(&mHighlight);
@@ -3456,9 +3611,9 @@ void LLPipeline::renderHighlights()
gGL.begin(LLRender::TRIANGLES);
- F32 scale = gSavedSettings.getF32("RenderHighlightBrightness");
- LLColor4 color = gSavedSettings.getColor4("RenderHighlightColor");
- F32 thickness = gSavedSettings.getF32("RenderHighlightThickness");
+ F32 scale = RenderHighlightBrightness;
+ LLColor4 color = RenderHighlightColor;
+ F32 thickness = RenderHighlightThickness;
for (S32 pass = 0; pass < 2; ++pass)
{
@@ -3504,7 +3659,7 @@ void LLPipeline::renderHighlights()
gGL.end();
gGL.popMatrix();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.popMatrix();
//gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -3513,7 +3668,7 @@ void LLPipeline::renderHighlights()
if ((LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_INTERFACE) > 0))
{
gHighlightProgram.bind();
- gHighlightProgram.vertexAttrib4f(LLViewerShaderMgr::MATERIAL_COLOR,1,1,1,0.5f);
+ gGL.diffuseColor4f(1,1,1,0.5f);
}
if (hasRenderDebugFeatureMask(RENDER_DEBUG_FEATURE_SELECTED))
@@ -3543,10 +3698,7 @@ void LLPipeline::renderHighlights()
{
// Paint 'em red!
color.setVec(1.f, 0.f, 0.f, 0.5f);
- if ((LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_INTERFACE) > 0))
- {
- gHighlightProgram.vertexAttrib4f(LLViewerShaderMgr::MATERIAL_COLOR,1,0,0,0.5f);
- }
+
int count = mHighlightFaces.size();
for (S32 i = 0; i < count; i++)
{
@@ -3575,8 +3727,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
assertInitialized();
- F64 saved_modelview[16];
- F64 saved_projection[16];
+ F32 saved_modelview[16];
+ F32 saved_projection[16];
//HACK: preserve/restore matrices around HUD render
if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))
@@ -3588,13 +3740,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
}
}
- S32 stack_depth = 0;
-
- if (gDebugGL)
- {
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &stack_depth);
- }
-
///////////////////////////////////////////
//
// Sync and verify GL state
@@ -3620,12 +3765,12 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLAppViewer::instance()->pingMainloopTimeout("Pipeline:ForceVBO");
// Initialize lots of GL state to "safe" values
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_TEXTURE);
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
LLGLSPipeline gls_pipeline;
- LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+ LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
LLGLState gls_color_material(GL_COLOR_MATERIAL, mLightingDetail < 2);
@@ -3691,7 +3836,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
{
occlude = FALSE;
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
LLGLSLShader::bindNoShader();
doOcclusion(camera);
}
@@ -3702,7 +3847,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLFastTimer t(FTM_POOLRENDER);
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
for( S32 i = 0; i < poolp->getNumPasses(); i++ )
{
@@ -3722,7 +3867,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
if (gDebugGL)
{
- check_stack_depth(stack_depth);
std::string msg = llformat("pass %d", i);
LLGLState::checkStates(msg);
//LLGLState::checkTextureChannels(msg);
@@ -3751,13 +3895,13 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
if (occlude)
{
occlude = FALSE;
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
LLGLSLShader::bindNoShader();
doOcclusion(camera);
}
@@ -3851,7 +3995,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
}
}
- LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+ LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
LLVertexBuffer::unbind();
@@ -3877,7 +4021,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
LLFastTimer t(FTM_POOLRENDER);
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
for( S32 i = 0; i < poolp->getNumDeferredPasses(); i++ )
{
@@ -3898,12 +4042,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
if (gDebugGL || gDebugPipeline)
{
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth > 3)
- {
- llerrs << "GL matrix stack corrupted!" << llendl;
- }
LLGLState::checkStates();
}
}
@@ -3925,7 +4063,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
}
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
gGL.setColorMask(true, false);
}
@@ -3938,7 +4076,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
LLGLEnable cull(GL_CULL_FACE);
- LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+ LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
calcNearbyLights(camera);
setupHWLights(NULL);
@@ -3958,7 +4096,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
{
occlude = FALSE;
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
LLGLSLShader::bindNoShader();
doOcclusion(camera);
gGL.setColorMask(true, false);
@@ -3970,7 +4108,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
LLFastTimer t(FTM_POOLRENDER);
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
for( S32 i = 0; i < poolp->getNumPostDeferredPasses(); i++ )
{
@@ -3991,12 +4129,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
if (gDebugGL || gDebugPipeline)
{
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth > 3)
- {
- llerrs << "GL matrix stack corrupted!" << llendl;
- }
LLGLState::checkStates();
}
}
@@ -4018,17 +4150,17 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
}
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
if (occlude)
{
occlude = FALSE;
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
LLGLSLShader::bindNoShader();
doOcclusion(camera);
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
}
}
@@ -4052,8 +4184,10 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
pool_set_t::iterator iter2 = iter1;
if (hasRenderType(poolp->getType()) && poolp->getNumShadowPasses() > 0)
{
+ poolp->prerender() ;
+
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
for( S32 i = 0; i < poolp->getNumShadowPasses(); i++ )
{
@@ -4092,7 +4226,7 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
}
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
}
@@ -4139,6 +4273,11 @@ void LLPipeline::renderPhysicsDisplay()
gGL.setColorMask(true, false);
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gDebugProgram.bind();
+ }
+
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
{
@@ -4161,15 +4300,20 @@ void LLPipeline::renderPhysicsDisplay()
LLSpatialBridge* bridge = *i;
if (!bridge->isDead() && hasRenderType(bridge->mDrawableType))
{
- glPushMatrix();
- glMultMatrixf((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
+ gGL.pushMatrix();
+ gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
bridge->renderPhysicsShapes();
- glPopMatrix();
+ gGL.popMatrix();
}
}
-
gGL.flush();
+
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gDebugProgram.unbind();
+ }
+
mPhysicsDisplay.flush();
}
@@ -4183,13 +4327,21 @@ void LLPipeline::renderDebug()
gGL.color4f(1,1,1,1);
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
gGL.setColorMask(true, false);
bool hud_only = hasRenderType(LLPipeline::RENDER_TYPE_HUD);
+
if (!hud_only && !mDebugBlips.empty())
{ //render debug blips
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
+ gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep, true);
+
glPointSize(8.f);
LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
@@ -4243,13 +4395,18 @@ void LLPipeline::renderDebug()
LLSpatialBridge* bridge = *i;
if (!bridge->isDead() && hasRenderType(bridge->mDrawableType))
{
- glPushMatrix();
- glMultMatrixf((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
+ gGL.pushMatrix();
+ gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
bridge->renderDebug();
- glPopMatrix();
+ gGL.popMatrix();
}
}
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
{
LLVertexBuffer::unbind();
@@ -4383,6 +4540,11 @@ void LLPipeline::renderDebug()
}
}
+ if (mRenderDebugMask & RENDER_DEBUG_WIND_VECTORS)
+ {
+ gAgent.getRegion()->mWind.renderVectors();
+ }
+
if (mRenderDebugMask & RENDER_DEBUG_COMPOSITION)
{
// Debug composition layers
@@ -4429,7 +4591,7 @@ void LLPipeline::renderDebug()
gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep);
gGL.pushMatrix();
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
gGLLastMatrix = NULL;
for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ2.begin(); iter != mGroupQ2.end(); ++iter)
@@ -4450,7 +4612,7 @@ void LLPipeline::renderDebug()
if (bridge)
{
gGL.pushMatrix();
- glMultMatrixf((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
+ gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
}
F32 alpha = llclamp((F32) (size-count)/size, 0.f, 1.f);
@@ -4474,8 +4636,10 @@ void LLPipeline::renderDebug()
}
gGL.flush();
-
- gPipeline.renderPhysicsDisplay();
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.unbind();
+ }
}
void LLPipeline::rebuildPools()
@@ -5024,10 +5188,14 @@ void LLPipeline::calcNearbyLights(LLCamera& camera)
void LLPipeline::setupHWLights(LLDrawPool* pool)
{
assertInitialized();
-
+
// Ambient
- LLColor4 ambient = gSky.getTotalAmbientColor();
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ gGL.syncMatrices();
+ LLColor4 ambient = gSky.getTotalAmbientColor();
+ gGL.setAmbientLightColor(ambient);
+ }
// Light 0 = Sun or Moon (All objects)
{
@@ -5137,8 +5305,9 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
light_state->setQuadraticAttenuation(0.f);
}
+
if (light->isLightSpotlight() // directional (spot-)light
- && (LLPipeline::sRenderDeferred || gSavedSettings.getBOOL("RenderSpotLightsInNondeferred"))) // these are only rendered as GL spotlights if we're in deferred rendering mode *or* the setting forces them on
+ && (LLPipeline::sRenderDeferred || RenderSpotLightsInNondeferred)) // these are only rendered as GL spotlights if we're in deferred rendering mode *or* the setting forces them on
{
LLVector3 spotparams = light->getSpotLightParams();
LLQuaternion quat = light->getRenderRotation();
@@ -5205,7 +5374,11 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
}
// Init GL state
- glDisable(GL_LIGHTING);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glDisable(GL_LIGHTING);
+ }
+
for (S32 i = 0; i < 8; ++i)
{
gGL.getLight(i)->disable();
@@ -5226,7 +5399,10 @@ void LLPipeline::enableLights(U32 mask)
stop_glerror();
if (!mLightMask)
{
- glEnable(GL_LIGHTING);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glEnable(GL_LIGHTING);
+ }
}
if (mask)
{
@@ -5249,13 +5425,16 @@ void LLPipeline::enableLights(U32 mask)
}
else
{
- glDisable(GL_LIGHTING);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glDisable(GL_LIGHTING);
+ }
}
- stop_glerror();
mLightMask = mask;
- LLColor4 ambient = gSky.getTotalAmbientColor();
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV);
stop_glerror();
+
+ LLColor4 ambient = gSky.getTotalAmbientColor();
+ gGL.setAmbientLightColor(ambient);
}
}
@@ -5304,21 +5483,24 @@ void LLPipeline::enableLightsPreview()
{
disableLights();
- glEnable(GL_LIGHTING);
- LLColor4 ambient = gSavedSettings.getColor4("PreviewAmbientColor");
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glEnable(GL_LIGHTING);
+ }
+ LLColor4 ambient = PreviewAmbientColor;
+ gGL.setAmbientLightColor(ambient);
- LLColor4 diffuse0 = gSavedSettings.getColor4("PreviewDiffuse0");
- LLColor4 specular0 = gSavedSettings.getColor4("PreviewSpecular0");
- LLColor4 diffuse1 = gSavedSettings.getColor4("PreviewDiffuse1");
- LLColor4 specular1 = gSavedSettings.getColor4("PreviewSpecular1");
- LLColor4 diffuse2 = gSavedSettings.getColor4("PreviewDiffuse2");
- LLColor4 specular2 = gSavedSettings.getColor4("PreviewSpecular2");
+ LLColor4 diffuse0 = PreviewDiffuse0;
+ LLColor4 specular0 = PreviewSpecular0;
+ LLColor4 diffuse1 = PreviewDiffuse1;
+ LLColor4 specular1 = PreviewSpecular1;
+ LLColor4 diffuse2 = PreviewDiffuse2;
+ LLColor4 specular2 = PreviewSpecular2;
- LLVector3 dir0 = gSavedSettings.getVector3("PreviewDirection0");
- LLVector3 dir1 = gSavedSettings.getVector3("PreviewDirection1");
- LLVector3 dir2 = gSavedSettings.getVector3("PreviewDirection2");
+ LLVector3 dir0 = PreviewDirection0;
+ LLVector3 dir1 = PreviewDirection1;
+ LLVector3 dir2 = PreviewDirection2;
dir0.normVec();
dir1.normVec();
@@ -5365,7 +5547,7 @@ void LLPipeline::enableLightsAvatarEdit(const LLColor4& color)
setupAvatarLights(TRUE);
enableLights(mask);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV);
+ gGL.setAmbientLightColor(color);
}
void LLPipeline::enableLightsFullbright(const LLColor4& color)
@@ -5374,7 +5556,7 @@ void LLPipeline::enableLightsFullbright(const LLColor4& color)
U32 mask = 0x1000; // Non-0 mask, set ambient
enableLights(mask);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV);
+ gGL.setAmbientLightColor(color);
}
void LLPipeline::disableLights()
@@ -6030,11 +6212,8 @@ void LLPipeline::resetVertexBuffers()
gSky.resetVertexBuffers();
- if (LLVertexBuffer::sGLCount > 0)
- {
- LLVertexBuffer::cleanupClass();
- }
-
+ LLVertexBuffer::cleanupClass();
+
//delete all name pool caches
LLGLNamePool::cleanupPools();
@@ -6043,35 +6222,32 @@ void LLPipeline::resetVertexBuffers()
llwarns << "VBO wipe failed." << llendl;
}
- if (!LLVertexBuffer::sStreamIBOPool.mNameList.empty() ||
- !LLVertexBuffer::sStreamVBOPool.mNameList.empty() ||
- !LLVertexBuffer::sDynamicIBOPool.mNameList.empty() ||
- !LLVertexBuffer::sDynamicVBOPool.mNameList.empty())
- {
- llwarns << "VBO name pool cleanup failed." << llendl;
- }
+ llassert(LLVertexBuffer::sGLCount == 0);
LLVertexBuffer::unbind();
sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
+ LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO");
LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw");
LLVertexBuffer::sEnableVBOs = gSavedSettings.getBOOL("RenderVBOEnable");
LLVertexBuffer::sDisableVBOMapping = LLVertexBuffer::sEnableVBOs && gSavedSettings.getBOOL("RenderVBOMappingDisable") ;
sBakeSunlight = gSavedSettings.getBOOL("RenderBakeSunlight");
sNoAlpha = gSavedSettings.getBOOL("RenderNoAlpha");
LLPipeline::sTextureBindTest = gSavedSettings.getBOOL("RenderDebugTextureBind");
+
+ LLVertexBuffer::initClass(LLVertexBuffer::sEnableVBOs, LLVertexBuffer::sDisableVBOMapping);
}
-void LLPipeline::renderObjects(U32 type, U32 mask, BOOL texture)
+void LLPipeline::renderObjects(U32 type, U32 mask, BOOL texture, BOOL batch_texture)
{
LLMemType mt_ro(LLMemType::MTYPE_PIPELINE_RENDER_OBJECTS);
assertInitialized();
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
gGLLastMatrix = NULL;
- mSimplePool->pushBatches(type, mask);
- glLoadMatrixd(gGLModelView);
+ mSimplePool->pushBatches(type, mask, texture, batch_texture);
+ gGL.loadMatrix(gGLModelView);
gGLLastMatrix = NULL;
}
@@ -6080,25 +6256,25 @@ void apply_cube_face_rotation(U32 face)
switch (face)
{
case 0:
- glRotatef(90.f, 0, 1, 0);
- glRotatef(180.f, 1, 0, 0);
+ gGL.rotatef(90.f, 0, 1, 0);
+ gGL.rotatef(180.f, 1, 0, 0);
break;
case 2:
- glRotatef(-90.f, 1, 0, 0);
+ gGL.rotatef(-90.f, 1, 0, 0);
break;
case 4:
- glRotatef(180.f, 0, 1, 0);
- glRotatef(180.f, 0, 0, 1);
+ gGL.rotatef(180.f, 0, 1, 0);
+ gGL.rotatef(180.f, 0, 0, 1);
break;
case 1:
- glRotatef(-90.f, 0, 1, 0);
- glRotatef(180.f, 1, 0, 0);
+ gGL.rotatef(-90.f, 0, 1, 0);
+ gGL.rotatef(180.f, 1, 0, 0);
break;
case 3:
- glRotatef(90, 1, 0, 0);
+ gGL.rotatef(90, 1, 0, 0);
break;
case 5:
- glRotatef(180, 0, 0, 1);
+ gGL.rotatef(180, 0, 0, 1);
break;
}
}
@@ -6141,8 +6317,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
{
LLMemType mt_ru(LLMemType::MTYPE_PIPELINE_RENDER_BLOOM);
if (!(gPipeline.canUseVertexShaders() &&
- sRenderGlow) ||
- (!sRenderDeferred && hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES)))
+ sRenderGlow))
{
return;
}
@@ -6158,11 +6333,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
- U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");
+ U32 res_mod = RenderResolutionDivisor;
LLVector2 tc1(0,0);
- LLVector2 tc2((F32) gViewerWindow->getWorldViewWidthRaw()*2,
- (F32) gViewerWindow->getWorldViewHeightRaw()*2);
+ LLVector2 tc2((F32) mScreen.getWidth()*2,
+ (F32) mScreen.getHeight()*2);
if (res_mod > 1)
{
@@ -6177,12 +6352,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
enableLightsFullbright(LLColor4(1,1,1,1));
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
LLGLDisable test(GL_ALPHA_TEST);
@@ -6197,16 +6372,18 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
}
gGlowExtractProgram.bind();
- F32 minLum = llmax(gSavedSettings.getF32("RenderGlowMinLuminance"), 0.0f);
- F32 maxAlpha = gSavedSettings.getF32("RenderGlowMaxExtractAlpha");
- F32 warmthAmount = gSavedSettings.getF32("RenderGlowWarmthAmount");
- LLVector3 lumWeights = gSavedSettings.getVector3("RenderGlowLumWeights");
- LLVector3 warmthWeights = gSavedSettings.getVector3("RenderGlowWarmthWeights");
- gGlowExtractProgram.uniform1f("minLuminance", minLum);
- gGlowExtractProgram.uniform1f("maxExtractAlpha", maxAlpha);
- gGlowExtractProgram.uniform3f("lumWeights", lumWeights.mV[0], lumWeights.mV[1], lumWeights.mV[2]);
- gGlowExtractProgram.uniform3f("warmthWeights", warmthWeights.mV[0], warmthWeights.mV[1], warmthWeights.mV[2]);
- gGlowExtractProgram.uniform1f("warmthAmount", warmthAmount);
+ F32 minLum = llmax((F32) RenderGlowMinLuminance, 0.0f);
+ F32 maxAlpha = RenderGlowMaxExtractAlpha;
+ F32 warmthAmount = RenderGlowWarmthAmount;
+ LLVector3 lumWeights = RenderGlowLumWeights;
+ LLVector3 warmthWeights = RenderGlowWarmthWeights;
+
+
+ gGlowExtractProgram.uniform1f(LLShaderMgr::GLOW_MIN_LUMINANCE, minLum);
+ gGlowExtractProgram.uniform1f(LLShaderMgr::GLOW_MAX_EXTRACT_ALPHA, maxAlpha);
+ gGlowExtractProgram.uniform3f(LLShaderMgr::GLOW_LUM_WEIGHTS, lumWeights.mV[0], lumWeights.mV[1], lumWeights.mV[2]);
+ gGlowExtractProgram.uniform3f(LLShaderMgr::GLOW_WARMTH_WEIGHTS, warmthWeights.mV[0], warmthWeights.mV[1], warmthWeights.mV[2]);
+ gGlowExtractProgram.uniform1f(LLShaderMgr::GLOW_WARMTH_AMOUNT, warmthAmount);
LLGLEnable blend_on(GL_BLEND);
LLGLEnable test(GL_ALPHA_TEST);
@@ -6237,22 +6414,22 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
tc2.setVec(2,2);
// power of two between 1 and 1024
- U32 glowResPow = gSavedSettings.getS32("RenderGlowResolutionPow");
+ U32 glowResPow = RenderGlowResolutionPow;
const U32 glow_res = llmax(1,
llmin(1024, 1 << glowResPow));
- S32 kernel = gSavedSettings.getS32("RenderGlowIterations")*2;
- F32 delta = gSavedSettings.getF32("RenderGlowWidth") / glow_res;
+ S32 kernel = RenderGlowIterations*2;
+ F32 delta = RenderGlowWidth / glow_res;
// Use half the glow width if we have the res set to less than 9 so that it looks
// almost the same in either case.
if (glowResPow < 9)
{
delta *= 0.5f;
}
- F32 strength = gSavedSettings.getF32("RenderGlowStrength");
+ F32 strength = RenderGlowStrength;
gGlowProgram.bind();
- gGlowProgram.uniform1f("glowStrength", strength);
+ gGlowProgram.uniform1f(LLShaderMgr::GLOW_STRENGTH, strength);
for (S32 i = 0; i < kernel; i++)
{
@@ -6273,11 +6450,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
if (i%2 == 0)
{
- gGlowProgram.uniform2f("glowDelta", delta, 0);
+ gGlowProgram.uniform2f(LLShaderMgr::GLOW_DELTA, delta, 0);
}
else
{
- gGlowProgram.uniform2f("glowDelta", 0, delta);
+ gGlowProgram.uniform2f(LLShaderMgr::GLOW_DELTA, 0, delta);
}
gGL.begin(LLRender::TRIANGLE_STRIP);
@@ -6309,8 +6486,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
- tc2.setVec((F32) gViewerWindow->getWorldViewWidthRaw(),
- (F32) gViewerWindow->getWorldViewHeightRaw());
+ tc2.setVec((F32) mScreen.getWidth(),
+ (F32) mScreen.getHeight());
gGL.flush();
@@ -6318,28 +6495,22 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
if (LLPipeline::sRenderDeferred)
{
- bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater();
- LLGLSLShader* shader = &gDeferredPostProgram;
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
- {
- shader = &gDeferredGIFinalProgram;
- dof_enabled = false;
- }
- else if (!dof_enabled || LLToolMgr::getInstance()->inBuildMode() || !gSavedSettings.getBOOL("RenderDepthOfField"))
- { //squish focal length when in build mode (or if DoF is disabled) so DoF doesn't make editing objects difficult
- shader = &gDeferredPostNoDoFProgram;
- dof_enabled = false;
- }
-
-
- LLGLDisable blend(GL_BLEND);
- bindDeferredShader(*shader);
+ bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater() &&
+ !LLToolMgr::getInstance()->inBuildMode() &&
+ RenderDepthOfField;
+
+ bool multisample = RenderFSAASamples > 1 && mFXAABuffer.isComplete();
+
+ gViewerWindow->setup3DViewport();
+
if (dof_enabled)
{
- //depth of field focal plane calculations
+ LLGLSLShader* shader = &gDeferredPostProgram;
+ LLGLDisable blend(GL_BLEND);
+ //depth of field focal plane calculations
static F32 current_distance = 16.f;
static F32 start_distance = 16.f;
static F32 transition_time = 1.f;
@@ -6369,8 +6540,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
else if (gAgentCamera.cameraMouselook())
{ //focus on point under mouselook crosshairs
gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
- NULL,
- &focus_point);
+ NULL,
+ &focus_point);
}
else
{
@@ -6401,7 +6572,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
}
else if (transition_time < 1.f)
{ //currently in a transition, continue interpolating
- transition_time += 1.f/gSavedSettings.getF32("CameraFocusTransitionTime")*gFrameIntervalSeconds;
+ transition_time += 1.f/CameraFocusTransitionTime*gFrameIntervalSeconds;
transition_time = llmin(transition_time, 1.f);
F32 t = cosf(transition_time*F_PI+F_PI)*0.5f+0.5f;
@@ -6414,12 +6585,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
//convert to mm
F32 subject_distance = current_distance*1000.f;
- F32 fnumber = gSavedSettings.getF32("CameraFNumber");
- F32 default_focal_length = gSavedSettings.getF32("CameraFocalLength");
+ F32 fnumber = CameraFNumber;
+ F32 default_focal_length = CameraFocalLength;
F32 fov = LLViewerCamera::getInstance()->getView();
- const F32 default_fov = gSavedSettings.getF32("CameraFieldOfView") * F_PI/180.f;
+ const F32 default_fov = CameraFieldOfView * F_PI/180.f;
//const F32 default_aspect_ratio = gSavedSettings.getF32("CameraAspectRatio");
//F32 aspect_ratio = (F32) mScreen.getWidth()/(F32)mScreen.getHeight();
@@ -6442,36 +6613,217 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
blur_constant /= 1000.f; //convert to meters for shader
F32 magnification = focal_length/(subject_distance-focal_length);
- shader->uniform1f("focal_distance", -subject_distance/1000.f);
- shader->uniform1f("blur_constant", blur_constant);
- shader->uniform1f("tan_pixel_angle", tanf(1.f/LLDrawable::sCurPixelAngle));
- shader->uniform1f("magnification", magnification);
- }
+ { //build diffuse+bloom+CoF
+ mDeferredLight.bindTarget();
+ shader = &gDeferredCoFProgram;
- S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
- if (channel > -1)
- {
- mScreen.bindTexture(0, channel);
+ bindDeferredShader(*shader);
+
+ S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+ if (channel > -1)
+ {
+ mScreen.bindTexture(0, channel);
+ }
+
+ shader->uniform1f(LLShaderMgr::DOF_FOCAL_DISTANCE, -subject_distance/1000.f);
+ shader->uniform1f(LLShaderMgr::DOF_BLUR_CONSTANT, blur_constant);
+ shader->uniform1f(LLShaderMgr::DOF_TAN_PIXEL_ANGLE, tanf(1.f/LLDrawable::sCurPixelAngle));
+ shader->uniform1f(LLShaderMgr::DOF_MAGNIFICATION, magnification);
+ shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
+ shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+ gGL.vertex2f(-1,-1);
+
+ gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+ gGL.vertex2f(-1,3);
+
+ gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+ gGL.vertex2f(3,-1);
+
+ gGL.end();
+
+ unbindDeferredShader(*shader);
+ mDeferredLight.flush();
+ }
+
+ { //perform DoF sampling at half-res (preserve alpha channel)
+ mScreen.bindTarget();
+ glViewport(0,0,(GLsizei) (mScreen.getWidth()*CameraDoFResScale), (GLsizei) (mScreen.getHeight()*CameraDoFResScale));
+ gGL.setColorMask(true, false);
+
+ shader = &gDeferredPostProgram;
+ bindDeferredShader(*shader);
+ S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
+ if (channel > -1)
+ {
+ mDeferredLight.bindTexture(0, channel);
+ }
+
+ shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
+ shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+ gGL.vertex2f(-1,-1);
+
+ gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+ gGL.vertex2f(-1,3);
+
+ gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+ gGL.vertex2f(3,-1);
+
+ gGL.end();
+
+ unbindDeferredShader(*shader);
+ mScreen.flush();
+ gGL.setColorMask(true, true);
+ }
+
+ { //combine result based on alpha
+ if (multisample)
+ {
+ mDeferredLight.bindTarget();
+ glViewport(0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
+ }
+ else
+ {
+ gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
+ gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
+ gGLViewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth();
+ gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
+ glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
+ }
+
+ shader = &gDeferredDoFCombineProgram;
+ bindDeferredShader(*shader);
+
+ S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+ if (channel > -1)
+ {
+ mScreen.bindTexture(0, channel);
+ gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
+ }
+
+ shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
+ shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+ gGL.vertex2f(-1,-1);
+
+ gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+ gGL.vertex2f(-1,3);
+
+ gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+ gGL.vertex2f(3,-1);
+
+ gGL.end();
+
+ unbindDeferredShader(*shader);
+
+ if (multisample)
+ {
+ mDeferredLight.flush();
+ }
+ }
}
- //channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, LLTexUnit::TT_RECT_TEXTURE);
- //if (channel > -1)
- //{
- //gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- //}
+ else
+ {
+ if (multisample)
+ {
+ mDeferredLight.bindTarget();
+ }
+ LLGLSLShader* shader = &gDeferredPostNoDoFProgram;
+
+ bindDeferredShader(*shader);
+
+ S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+ if (channel > -1)
+ {
+ mScreen.bindTexture(0, channel);
+ }
- gGL.begin(LLRender::TRIANGLE_STRIP);
- gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
- gGL.vertex2f(-1,-1);
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+ gGL.vertex2f(-1,-1);
- gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
- gGL.vertex2f(-1,3);
+ gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+ gGL.vertex2f(-1,3);
- gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
- gGL.vertex2f(3,-1);
+ gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+ gGL.vertex2f(3,-1);
- gGL.end();
+ gGL.end();
+
+ unbindDeferredShader(*shader);
+
+ if (multisample)
+ {
+ mDeferredLight.flush();
+ }
+ }
+
+ if (multisample)
+ {
+ //bake out texture2D with RGBL for FXAA shader
+ mFXAABuffer.bindTarget();
+
+ S32 width = mScreen.getWidth();
+ S32 height = mScreen.getHeight();
+ glViewport(0, 0, width, height);
+
+ LLGLSLShader* shader = &gGlowCombineFXAAProgram;
+
+ shader->bind();
+ shader->uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, width, height);
+
+ S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
+ if (channel > -1)
+ {
+ mDeferredLight.bindTexture(0, channel);
+ }
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.vertex2f(-1,-1);
+ gGL.vertex2f(-1,3);
+ gGL.vertex2f(3,-1);
+ gGL.end();
+
+ gGL.flush();
+
+ shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
+ shader->unbind();
+
+ mFXAABuffer.flush();
+
+ shader = &gFXAAProgram;
+ shader->bind();
+
+ channel = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP, mFXAABuffer.getUsage());
+ if (channel > -1)
+ {
+ mFXAABuffer.bindTexture(0, channel);
+ gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
+ }
+
+ F32 scale_x = (F32) width/mFXAABuffer.getWidth();
+ F32 scale_y = (F32) height/mFXAABuffer.getHeight();
+ shader->uniform2f(LLShaderMgr::FXAA_TC_SCALE, scale_x, scale_y);
+ shader->uniform2f(LLShaderMgr::FXAA_RCP_SCREEN_RES, 1.f/width*scale_x, 1.f/height*scale_y);
+ shader->uniform4f(LLShaderMgr::FXAA_RCP_FRAME_OPT, -0.5f/width*scale_x, -0.5f/height*scale_y, 0.5f/width*scale_x, 0.5f/height*scale_y);
+ shader->uniform4f(LLShaderMgr::FXAA_RCP_FRAME_OPT2, -2.f/width*scale_x, -2.f/height*scale_y, 2.f/width*scale_x, 2.f/height*scale_y);
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.vertex2f(-1,-1);
+ gGL.vertex2f(-1,3);
+ gGL.vertex2f(3,-1);
+ gGL.end();
- unbindDeferredShader(*shader);
+ gGL.flush();
+ shader->unbind();
+ }
}
else
{
@@ -6504,7 +6856,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
v[1] = LLVector3(-1,3,0);
v[2] = LLVector3(3,-1,0);
- buff->setBuffer(0);
+ buff->flush();
LLGLDisable blend(GL_BLEND);
@@ -6523,7 +6875,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGL.getTexUnit(0)->bind(&mGlow[1]);
gGL.getTexUnit(1)->bind(&mScreen);
- LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+ LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
buff->setBuffer(mask);
buff->drawArrays(LLRender::TRIANGLE_STRIP, 0, 3);
@@ -6543,19 +6895,13 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
}
- if (LLRenderTarget::sUseFBO)
- { //copy depth buffer from mScreen to framebuffer
- LLRenderTarget::copyContentsToFramebuffer(mScreen, 0, 0, mScreen.getWidth(), mScreen.getHeight(),
- 0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);
- }
-
gGL.setSceneBlendType(LLRender::BT_ALPHA);
if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES))
{
if (LLGLSLShader::sNoFixedFunction)
{
- gUIProgram.bind();
+ gSplatTextureRectProgram.bind();
}
gGL.setColorMask(true, false);
@@ -6569,7 +6915,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGL.getTexUnit(0)->bind(&mPhysicsDisplay);
- gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.begin(LLRender::TRIANGLES);
gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
gGL.vertex2f(-1,-1);
@@ -6584,15 +6930,22 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
if (LLGLSLShader::sNoFixedFunction)
{
- gUIProgram.unbind();
+ gSplatTextureRectProgram.unbind();
}
+ }
+
+ if (LLRenderTarget::sUseFBO)
+ { //copy depth buffer from mScreen to framebuffer
+ LLRenderTarget::copyContentsToFramebuffer(mScreen, 0, 0, mScreen.getWidth(), mScreen.getHeight(),
+ 0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);
}
+
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
LLVertexBuffer::unbind();
@@ -6603,7 +6956,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
static LLFastTimer::DeclareTimer FTM_BIND_DEFERRED("Bind Deferred");
-void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRenderTarget* gi_source, LLRenderTarget* last_gi_post, U32 noise_map)
+void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 noise_map)
{
LLFastTimer t(FTM_BIND_DEFERRED);
@@ -6614,146 +6967,28 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
shader.bind();
S32 channel = 0;
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
if (channel > -1)
{
mDeferredScreen.bindTexture(0,channel);
gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
}
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
if (channel > -1)
{
mDeferredScreen.bindTexture(1, channel);
gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
}
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
if (channel > -1)
{
mDeferredScreen.bindTexture(2, channel);
gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
}
- if (gi_source)
- {
- BOOL has_gi = FALSE;
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_DIFFUSE);
- if (channel > -1)
- {
- has_gi = TRUE;
- gi_source->bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_SPECULAR);
- if (channel > -1)
- {
- has_gi = TRUE;
- gi_source->bindTexture(1, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_NORMAL);
- if (channel > -1)
- {
- has_gi = TRUE;
- gi_source->bindTexture(2, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_MIN_POS);
- if (channel > -1)
- {
- has_gi = TRUE;
- gi_source->bindTexture(1, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_MAX_POS);
- if (channel > -1)
- {
- has_gi = TRUE;
- gi_source->bindTexture(3, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_DIFFUSE);
- if (channel > -1)
- {
- has_gi = TRUE;
- last_gi_post->bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_NORMAL);
- if (channel > -1)
- {
- has_gi = TRUE;
- last_gi_post->bindTexture(2, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MAX_POS);
- if (channel > -1)
- {
- has_gi = TRUE;
- last_gi_post->bindTexture(1, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MIN_POS);
- if (channel > -1)
- {
- has_gi = TRUE;
- last_gi_post->bindTexture(3, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_DEPTH);
- if (channel > -1)
- {
- has_gi = TRUE;
- gGL.getTexUnit(channel)->bind(gi_source, TRUE);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
- stop_glerror();
-
- glTexParameteri(LLTexUnit::getInternalType(mGIMap.getUsage()), GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
- glTexParameteri(LLTexUnit::getInternalType(mGIMap.getUsage()), GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA);
-
- stop_glerror();
- }
-
- if (has_gi)
- {
- F32 range_x = llmin(mGIRange.mV[0], 1.f);
- F32 range_y = llmin(mGIRange.mV[1], 1.f);
-
- LLVector2 scale(range_x,range_y);
-
- LLVector2 kern[25];
-
- for (S32 i = 0; i < 5; ++i)
- {
- for (S32 j = 0; j < 5; ++j)
- {
- S32 idx = i*5+j;
- kern[idx].mV[0] = (i-2)*0.5f;
- kern[idx].mV[1] = (j-2)*0.5f;
- kern[idx].scaleVec(scale);
- }
- }
-
- shader.uniform2fv("gi_kern", 25, (F32*) kern);
- shader.uniformMatrix4fv("gi_mat", 1, FALSE, mGIMatrix.m);
- shader.uniformMatrix4fv("gi_mat_proj", 1, FALSE, mGIMatrixProj.m);
- shader.uniformMatrix4fv("gi_inv_proj", 1, FALSE, mGIInvProj.m);
- shader.uniformMatrix4fv("gi_norm_mat", 1, FALSE, mGINormalMatrix.m);
- }
- }
- stop_glerror();
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, mDeferredDepth.getUsage());
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_DEPTH, mDeferredDepth.getUsage());
if (channel > -1)
{
gGL.getTexUnit(channel)->bind(&mDeferredDepth, TRUE);
@@ -6767,21 +7002,21 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
glh::matrix4f projection = glh_get_current_projection();
glh::matrix4f inv_proj = projection.inverse();
- shader.uniformMatrix4fv("inv_proj", 1, FALSE, inv_proj.m);
- shader.uniform4f("viewport", (F32) gGLViewport[0],
+ shader.uniformMatrix4fv(LLShaderMgr::INVERSE_PROJECTION_MATRIX, 1, FALSE, inv_proj.m);
+ shader.uniform4f(LLShaderMgr::VIEWPORT, (F32) gGLViewport[0],
(F32) gGLViewport[1],
(F32) gGLViewport[2],
(F32) gGLViewport[3]);
}
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_NOISE);
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_NOISE);
if (channel > -1)
{
gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, noise_map);
gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
}
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LIGHTFUNC);
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_LIGHTFUNC);
if (channel > -1)
{
gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc);
@@ -6789,60 +7024,31 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
stop_glerror();
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, mDeferredLight[light_index].getUsage());
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_LIGHT, mDeferredLight.getUsage());
if (channel > -1)
{
- mDeferredLight[light_index].bindTexture(0, channel);
+ if (light_index > 0)
+ {
+ mScreen.bindTexture(0, channel);
+ }
+ else
+ {
+ mDeferredLight.bindTexture(0, channel);
+ }
gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
}
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LUMINANCE);
- if (channel > -1)
- {
- gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, mLuminanceMap.getTexture(), true);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_BLOOM);
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_BLOOM);
if (channel > -1)
{
mGlow[1].bindTexture(0, channel);
}
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
- if (channel > -1)
- {
- gi_source->bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_EDGE, LLTexUnit::TT_RECT_TEXTURE);
- if (channel > -1)
- {
- mEdgeMap.bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SUN_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
- if (channel > -1)
- {
- mDeferredLight[1].bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
- }
-
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LOCAL_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
- if (channel > -1)
- {
- mDeferredLight[2].bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
- }
-
-
stop_glerror();
for (U32 i = 0; i < 4; i++)
{
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE);
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE);
stop_glerror();
if (channel > -1)
{
@@ -6860,7 +7066,7 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
for (U32 i = 4; i < 6; i++)
{
- channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i);
+ channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0+i);
stop_glerror();
if (channel > -1)
{
@@ -6889,12 +7095,11 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
mat[i+80] = mSunShadowMatrix[5].m[i];
}
- shader.uniformMatrix4fv("shadow_matrix[0]", 6, FALSE, mat);
- shader.uniformMatrix4fv("shadow_matrix", 6, FALSE, mat);
+ shader.uniformMatrix4fv(LLShaderMgr::DEFERRED_SHADOW_MATRIX, 6, FALSE, mat);
stop_glerror();
- channel = shader.enableTexture(LLViewerShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
+ channel = shader.enableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
if (channel > -1)
{
LLCubeMap* cube_map = gSky.mVOSkyp ? gSky.mVOSkyp->getCubeMap() : NULL;
@@ -6902,31 +7107,29 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
{
cube_map->enable(channel);
cube_map->bind();
- F64* m = gGLModelView;
-
-
+ F32* m = gGLModelView;
+
F32 mat[] = { m[0], m[1], m[2],
m[4], m[5], m[6],
m[8], m[9], m[10] };
- shader.uniform3fv("env_mat[0]", 3, mat);
- shader.uniform3fv("env_mat", 3, mat);
+ shader.uniformMatrix3fv(LLShaderMgr::DEFERRED_ENV_MAT, 1, TRUE, mat);
}
}
- shader.uniform4fv("shadow_clip", 1, mSunClipPlanes.mV);
- shader.uniform1f("sun_wash", gSavedSettings.getF32("RenderDeferredSunWash"));
- shader.uniform1f("shadow_noise", gSavedSettings.getF32("RenderShadowNoise"));
- shader.uniform1f("blur_size", gSavedSettings.getF32("RenderShadowBlurSize"));
+ shader.uniform4fv(LLShaderMgr::DEFERRED_SHADOW_CLIP, 1, mSunClipPlanes.mV);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SUN_WASH, RenderDeferredSunWash);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SHADOW_NOISE, RenderShadowNoise);
+ shader.uniform1f(LLShaderMgr::DEFERRED_BLUR_SIZE, RenderShadowBlurSize);
- shader.uniform1f("ssao_radius", gSavedSettings.getF32("RenderSSAOScale"));
- shader.uniform1f("ssao_max_radius", gSavedSettings.getU32("RenderSSAOMaxScale"));
+ shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_RADIUS, RenderSSAOScale);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_MAX_RADIUS, RenderSSAOMaxScale);
- F32 ssao_factor = gSavedSettings.getF32("RenderSSAOFactor");
- shader.uniform1f("ssao_factor", ssao_factor);
- shader.uniform1f("ssao_factor_inv", 1.0/ssao_factor);
+ F32 ssao_factor = RenderSSAOFactor;
+ shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_FACTOR, ssao_factor);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_FACTOR_INV, 1.0/ssao_factor);
- LLVector3 ssao_effect = gSavedSettings.getVector3("RenderSSAOEffect");
+ LLVector3 ssao_effect = RenderSSAOEffect;
F32 matrix_diag = (ssao_effect[0] + 2.0*ssao_effect[1])/3.0;
F32 matrix_nondiag = (ssao_effect[0] - ssao_effect[1])/3.0;
// This matrix scales (proj of color onto <1/rt(3),1/rt(3),1/rt(3)>) by
@@ -6934,35 +7137,23 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
F32 ssao_effect_mat[] = { matrix_diag, matrix_nondiag, matrix_nondiag,
matrix_nondiag, matrix_diag, matrix_nondiag,
matrix_nondiag, matrix_nondiag, matrix_diag};
- shader.uniformMatrix3fv("ssao_effect_mat", 1, GL_FALSE, ssao_effect_mat);
-
- F32 shadow_offset_error = 1.f + gSavedSettings.getF32("RenderShadowOffsetError") * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
- F32 shadow_bias_error = 1.f + gSavedSettings.getF32("RenderShadowBiasError") * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
-
- shader.uniform2f("screen_res", mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
- shader.uniform1f("near_clip", LLViewerCamera::getInstance()->getNear()*2.f);
- shader.uniform1f ("shadow_offset", gSavedSettings.getF32("RenderShadowOffset")*shadow_offset_error);
- shader.uniform1f("shadow_bias", gSavedSettings.getF32("RenderShadowBias")*shadow_bias_error);
- shader.uniform1f ("spot_shadow_offset", gSavedSettings.getF32("RenderSpotShadowOffset"));
- shader.uniform1f("spot_shadow_bias", gSavedSettings.getF32("RenderSpotShadowBias"));
-
- shader.uniform1f("lum_scale", gSavedSettings.getF32("RenderLuminanceScale"));
- shader.uniform1f("sun_lum_scale", gSavedSettings.getF32("RenderSunLuminanceScale"));
- shader.uniform1f("sun_lum_offset", gSavedSettings.getF32("RenderSunLuminanceOffset"));
- shader.uniform1f("lum_lod", gSavedSettings.getF32("RenderLuminanceDetail"));
- shader.uniform1f("gi_range", gSavedSettings.getF32("RenderGIRange"));
- shader.uniform1f("gi_brightness", gSavedSettings.getF32("RenderGIBrightness"));
- shader.uniform1f("gi_luminance", gSavedSettings.getF32("RenderGILuminance"));
- shader.uniform1f("gi_edge_weight", gSavedSettings.getF32("RenderGIBlurEdgeWeight"));
- shader.uniform1f("gi_blur_brightness", gSavedSettings.getF32("RenderGIBlurBrightness"));
- shader.uniform1f("gi_sample_width", mGILightRadius);
- shader.uniform1f("gi_noise", gSavedSettings.getF32("RenderGINoise"));
- shader.uniform1f("gi_attenuation", gSavedSettings.getF32("RenderGIAttenuation"));
- shader.uniform1f("gi_ambiance", gSavedSettings.getF32("RenderGIAmbiance"));
- shader.uniform2f("shadow_res", mShadow[0].getWidth(), mShadow[0].getHeight());
- shader.uniform2f("proj_shadow_res", mShadow[4].getWidth(), mShadow[4].getHeight());
- shader.uniform1f("depth_cutoff", gSavedSettings.getF32("RenderEdgeDepthCutoff"));
- shader.uniform1f("norm_cutoff", gSavedSettings.getF32("RenderEdgeNormCutoff"));
+ shader.uniformMatrix3fv(LLShaderMgr::DEFERRED_SSAO_EFFECT_MAT, 1, GL_FALSE, ssao_effect_mat);
+
+ F32 shadow_offset_error = 1.f + RenderShadowOffsetError * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
+ F32 shadow_bias_error = 1.f + RenderShadowBiasError * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
+
+ shader.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
+ shader.uniform1f(LLShaderMgr::DEFERRED_NEAR_CLIP, LLViewerCamera::getInstance()->getNear()*2.f);
+ shader.uniform1f (LLShaderMgr::DEFERRED_SHADOW_OFFSET, RenderShadowOffset*shadow_offset_error);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SHADOW_BIAS, RenderShadowBias*shadow_bias_error);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SPOT_SHADOW_OFFSET, RenderSpotShadowOffset);
+ shader.uniform1f(LLShaderMgr::DEFERRED_SPOT_SHADOW_BIAS, RenderSpotShadowBias);
+
+ shader.uniform3fv(LLShaderMgr::DEFERRED_SUN_DIR, 1, mTransformedSunDir.mV);
+ shader.uniform2f(LLShaderMgr::DEFERRED_SHADOW_RES, mShadow[0].getWidth(), mShadow[0].getHeight());
+ shader.uniform2f(LLShaderMgr::DEFERRED_PROJ_SHADOW_RES, mShadow[4].getWidth(), mShadow[4].getHeight());
+ shader.uniform1f(LLShaderMgr::DEFERRED_DEPTH_CUTOFF, RenderEdgeDepthCutoff);
+ shader.uniform1f(LLShaderMgr::DEFERRED_NORM_CUTOFF, RenderEdgeNormCutoff);
if (shader.getUniformLocation("norm_mat") >= 0)
@@ -7001,7 +7192,7 @@ void LLPipeline::renderDeferredLighting()
0, 0, mDeferredDepth.getWidth(), mDeferredDepth.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);
}
- LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+ LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))
{
@@ -7023,38 +7214,40 @@ void LLPipeline::renderDeferredLighting()
glh::matrix4f mat = glh_copy_matrix(gGLModelView);
- F32 vert[] =
- {
- -1,1,
- -1,-3,
- 3,1,
- };
- glVertexPointer(2, GL_FLOAT, 0, vert);
- glColor3f(1,1,1);
+ LLStrider<LLVector3> vert;
+ mDeferredVB->getVertexStrider(vert);
+ LLStrider<LLVector2> tc0;
+ LLStrider<LLVector2> tc1;
+ mDeferredVB->getTexCoord0Strider(tc0);
+ mDeferredVB->getTexCoord1Strider(tc1);
+ vert[0].set(-1,1,0);
+ vert[1].set(-1,-3,0);
+ vert[2].set(3,1,0);
+
{
setupHWLights(NULL); //to set mSunDir;
LLVector4 dir(mSunDir, 0.f);
glh::vec4f tc(dir.mV);
mat.mult_matrix_vec(tc);
- glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], 0);
+ mTransformedSunDir.set(tc.v);
}
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
+ gGL.pushMatrix();
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
- if (gSavedSettings.getBOOL("RenderDeferredSSAO") || gSavedSettings.getS32("RenderShadowDetail") > 0)
+ if (RenderDeferredSSAO || RenderShadowDetail > 0)
{
- mDeferredLight[0].bindTarget();
+ mDeferredLight.bindTarget();
{ //paint shadow/SSAO light map (direct lighting lightmap)
LLFastTimer ftm(FTM_SUN_SHADOW);
bindDeferredShader(gDeferredSunProgram, 0);
-
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glClearColor(1,1,1,1);
- mDeferredLight[0].clear(GL_COLOR_BUFFER_BIT);
+ mDeferredLight.clear(GL_COLOR_BUFFER_BIT);
glClearColor(0,0,0,0);
glh::matrix4f inv_trans = glh_get_current_modelview().inverse().transpose();
@@ -7077,141 +7270,36 @@ void LLPipeline::renderDeferredLighting()
}
gDeferredSunProgram.uniform3fv("offset", slice, offset);
- gDeferredSunProgram.uniform2f("screenRes", mDeferredLight[0].getWidth(), mDeferredLight[0].getHeight());
+ gDeferredSunProgram.uniform2f("screenRes", mDeferredLight.getWidth(), mDeferredLight.getHeight());
{
LLGLDisable blend(GL_BLEND);
LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS);
stop_glerror();
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
stop_glerror();
}
unbindDeferredShader(gDeferredSunProgram);
}
- mDeferredLight[0].flush();
+ mDeferredLight.flush();
}
- { //global illumination specific block (still experimental)
- if (gSavedSettings.getBOOL("RenderDeferredBlurLight") &&
- gSavedSettings.getBOOL("RenderDeferredGI"))
- {
- LLFastTimer ftm(FTM_EDGE_DETECTION);
- //generate edge map
- LLGLDisable blend(GL_BLEND);
- LLGLDisable test(GL_ALPHA_TEST);
- LLGLDepthTest depth(GL_FALSE);
- LLGLDisable stencil(GL_STENCIL_TEST);
-
- {
- gDeferredEdgeProgram.bind();
- mEdgeMap.bindTarget();
- bindDeferredShader(gDeferredEdgeProgram);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
- unbindDeferredShader(gDeferredEdgeProgram);
- mEdgeMap.flush();
- }
- }
-
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
- {
- { //get luminance map from previous frame's light map
- LLGLEnable blend(GL_BLEND);
- LLGLDisable test(GL_ALPHA_TEST);
- LLGLDepthTest depth(GL_FALSE);
- LLGLDisable stencil(GL_STENCIL_TEST);
-
- //static F32 fade = 1.f;
-
- {
- gGL.setSceneBlendType(LLRender::BT_ALPHA);
- gLuminanceGatherProgram.bind();
- gLuminanceGatherProgram.uniform2f("screen_res", mDeferredLight[0].getWidth(), mDeferredLight[0].getHeight());
- mLuminanceMap.bindTarget();
- bindDeferredShader(gLuminanceGatherProgram);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
- unbindDeferredShader(gLuminanceGatherProgram);
- mLuminanceMap.flush();
- gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLuminanceMap.getTexture(), true);
- gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
- glGenerateMipmap(GL_TEXTURE_2D);
- }
- }
-
- { //paint noisy GI map (bounce lighting lightmap)
- LLFastTimer ftm(FTM_GI_TRACE);
- LLGLDisable blend(GL_BLEND);
- LLGLDepthTest depth(GL_FALSE);
- LLGLDisable test(GL_ALPHA_TEST);
-
- mGIMapPost[0].bindTarget();
-
- bindDeferredShader(gDeferredGIProgram, 0, &mGIMap, 0, mTrueNoiseMap);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
- unbindDeferredShader(gDeferredGIProgram);
- mGIMapPost[0].flush();
- }
-
- U32 pass_count = 0;
- if (gSavedSettings.getBOOL("RenderDeferredBlurLight"))
- {
- pass_count = llclamp(gSavedSettings.getU32("RenderGIBlurPasses"), (U32) 1, (U32) 128);
- }
-
- for (U32 i = 0; i < pass_count; ++i)
- { //gather/soften indirect lighting map
- LLFastTimer ftm(FTM_GI_GATHER);
- bindDeferredShader(gDeferredPostGIProgram, 0, &mGIMapPost[0], NULL, mTrueNoiseMap);
- F32 blur_size = gSavedSettings.getF32("RenderGIBlurSize")/((F32) i * gSavedSettings.getF32("RenderGIBlurIncrement")+1.f);
- gDeferredPostGIProgram.uniform2f("delta", 1.f, 0.f);
- gDeferredPostGIProgram.uniform1f("kern_scale", blur_size);
- gDeferredPostGIProgram.uniform1f("gi_blur_brightness", gSavedSettings.getF32("RenderGIBlurBrightness"));
-
- mGIMapPost[1].bindTarget();
- {
- LLGLDisable blend(GL_BLEND);
- LLGLDepthTest depth(GL_FALSE);
- stop_glerror();
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
- stop_glerror();
- }
-
- mGIMapPost[1].flush();
- unbindDeferredShader(gDeferredPostGIProgram);
- bindDeferredShader(gDeferredPostGIProgram, 0, &mGIMapPost[1], NULL, mTrueNoiseMap);
- mGIMapPost[0].bindTarget();
-
- gDeferredPostGIProgram.uniform2f("delta", 0.f, 1.f);
-
- {
- LLGLDisable blend(GL_BLEND);
- LLGLDepthTest depth(GL_FALSE);
- stop_glerror();
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- stop_glerror();
- }
- mGIMapPost[0].flush();
- unbindDeferredShader(gDeferredPostGIProgram);
- }
- }
- }
-
- if (gSavedSettings.getBOOL("RenderDeferredSSAO"))
+ if (RenderDeferredSSAO)
{ //soften direct lighting lightmap
LLFastTimer ftm(FTM_SOFTEN_SHADOW);
//blur lightmap
- mDeferredLight[1].bindTarget();
-
+ mScreen.bindTarget();
glClearColor(1,1,1,1);
- mDeferredLight[1].clear(GL_COLOR_BUFFER_BIT);
+ mScreen.clear(GL_COLOR_BUFFER_BIT);
glClearColor(0,0,0,0);
bindDeferredShader(gDeferredBlurLightProgram);
-
- LLVector3 go = gSavedSettings.getVector3("RenderShadowGaussian");
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+ LLVector3 go = RenderShadowGaussian;
const U32 kern_length = 4;
- F32 blur_size = gSavedSettings.getF32("RenderShadowBlurSize");
- F32 dist_factor = gSavedSettings.getF32("RenderShadowBlurDistFactor");
+ F32 blur_size = RenderShadowBlurSize;
+ F32 dist_factor = RenderShadowBlurDistFactor;
// sample symmetrically with the middle sample falling exactly on 0.0
F32 x = 0.f;
@@ -7235,15 +7323,16 @@ void LLPipeline::renderDeferredLighting()
LLGLDisable blend(GL_BLEND);
LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS);
stop_glerror();
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
stop_glerror();
}
- mDeferredLight[1].flush();
+ mScreen.flush();
unbindDeferredShader(gDeferredBlurLightProgram);
bindDeferredShader(gDeferredBlurLightProgram, 1);
- mDeferredLight[0].bindTarget();
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+ mDeferredLight.bindTarget();
gDeferredBlurLightProgram.uniform2f("delta", 0.f, 1.f);
@@ -7251,69 +7340,59 @@ void LLPipeline::renderDeferredLighting()
LLGLDisable blend(GL_BLEND);
LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS);
stop_glerror();
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
stop_glerror();
}
- mDeferredLight[0].flush();
+ mDeferredLight.flush();
unbindDeferredShader(gDeferredBlurLightProgram);
}
stop_glerror();
- glPopMatrix();
+ gGL.popMatrix();
stop_glerror();
- glMatrixMode(GL_MODELVIEW);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
stop_glerror();
- glPopMatrix();
+ gGL.popMatrix();
stop_glerror();
//copy depth and stencil from deferred screen
//mScreen.copyContents(mDeferredScreen, 0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight(),
// 0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
- {
- mDeferredLight[1].bindTarget();
- // clear color buffer here (GI) - zeroing alpha (glow) is important or it will accumulate against sky
- glClearColor(0,0,0,0);
- mScreen.clear(GL_COLOR_BUFFER_BIT);
- }
- else
- {
- mScreen.bindTarget();
- // clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky
- glClearColor(0,0,0,0);
- mScreen.clear(GL_COLOR_BUFFER_BIT);
- }
-
- if (gSavedSettings.getBOOL("RenderDeferredAtmospheric"))
+ mScreen.bindTarget();
+ // clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky
+ glClearColor(0,0,0,0);
+ mScreen.clear(GL_COLOR_BUFFER_BIT);
+
+ if (RenderDeferredAtmospheric)
{ //apply sunlight contribution
LLFastTimer ftm(FTM_ATMOSPHERICS);
- bindDeferredShader(gDeferredSoftenProgram, 0, &mGIMapPost[0]);
+ bindDeferredShader(gDeferredSoftenProgram);
{
LLGLDepthTest depth(GL_FALSE);
LLGLDisable blend(GL_BLEND);
LLGLDisable test(GL_ALPHA_TEST);
//full screen blit
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
+ gGL.pushMatrix();
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
- glVertexPointer(2, GL_FLOAT, 0, vert);
-
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
+
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
}
unbindDeferredShader(gDeferredSoftenProgram);
}
- { //render sky
+ { //render non-deferred geometry (fullbright, alpha, etc)
LLGLDisable blend(GL_BLEND);
LLGLDisable stencil(GL_STENCIL_TEST);
gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -7330,15 +7409,8 @@ void LLPipeline::renderDeferredLighting()
gPipeline.popRenderTypeMask();
}
- BOOL render_local = gSavedSettings.getBOOL("RenderLocalLights");
+ BOOL render_local = RenderLocalLights;
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
- {
- mDeferredLight[1].flush();
- mDeferredLight[2].bindTarget();
- mDeferredLight[2].clear(GL_COLOR_BUFFER_BIT);
- }
-
if (render_local)
{
gGL.setSceneBlendType(LLRender::BT_ADD);
@@ -7354,12 +7426,12 @@ void LLPipeline::renderDeferredLighting()
std::list<LLVector4> light_colors;
LLVertexBuffer::unbind();
+ LLVector4a* v = (LLVector4a*) vert.get();
- F32 v[24];
- glVertexPointer(3, GL_FLOAT, 0, v);
-
{
bindDeferredShader(gDeferredLightProgram);
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
for (LLDrawable::drawable_set_t::iterator iter = mLights.begin(); iter != mLights.end(); ++iter)
{
@@ -7414,15 +7486,16 @@ void LLPipeline::renderDeferredLighting()
//correspond to their axis facing, with bit position 3,2,1 matching
//axis facing x,y,z, bit set meaning positive facing, bit clear
//meaning negative facing
- v[0] = c[0]-s; v[1] = c[1]-s; v[2] = c[2]-s; // 0 - 0000
- v[3] = c[0]-s; v[4] = c[1]-s; v[5] = c[2]+s; // 1 - 0001
- v[6] = c[0]-s; v[7] = c[1]+s; v[8] = c[2]-s; // 2 - 0010
- v[9] = c[0]-s; v[10] = c[1]+s; v[11] = c[2]+s; // 3 - 0011
+ mDeferredVB->getVertexStrider(vert);
+ v[0].set(c[0]-s,c[1]-s,c[2]-s); // 0 - 0000
+ v[1].set(c[0]-s,c[1]-s,c[2]+s); // 1 - 0001
+ v[2].set(c[0]-s,c[1]+s,c[2]-s); // 2 - 0010
+ v[3].set(c[0]-s,c[1]+s,c[2]+s); // 3 - 0011
- v[12] = c[0]+s; v[13] = c[1]-s; v[14] = c[2]-s; // 4 - 0100
- v[15] = c[0]+s; v[16] = c[1]-s; v[17] = c[2]+s; // 5 - 0101
- v[18] = c[0]+s; v[19] = c[1]+s; v[20] = c[2]-s; // 6 - 0110
- v[21] = c[0]+s; v[22] = c[1]+s; v[23] = c[2]+s; // 7 - 0111
+ v[4].set(c[0]+s,c[1]-s,c[2]-s); // 4 - 0100
+ v[5].set(c[0]+s,c[1]-s,c[2]+s); // 5 - 0101
+ v[6].set(c[0]+s,c[1]+s,c[2]-s); // 6 - 0110
+ v[7].set(c[0]+s,c[1]+s,c[2]+s); // 7 - 0111
if (camera->getOrigin().mV[0] > c[0] + s + 0.2f ||
camera->getOrigin().mV[0] < c[0] - s - 0.2f ||
@@ -7441,10 +7514,16 @@ void LLPipeline::renderDeferredLighting()
}
LLFastTimer ftm(FTM_LOCAL_LIGHTS);
- glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
- glColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
+ //glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
+ gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
+ gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
+ gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+ gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
+ //gGL.diffuseColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
+ gGL.syncMatrices();
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
- GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
+ GL_UNSIGNED_SHORT, get_box_fan_indices_ptr(camera, center));
stop_glerror();
}
}
@@ -7469,7 +7548,9 @@ void LLPipeline::renderDeferredLighting()
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
bindDeferredShader(gDeferredSpotLightProgram);
- gDeferredSpotLightProgram.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+
+ gDeferredSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION);
for (LLDrawable::drawable_list_t::iterator iter = spot_lights.begin(); iter != spot_lights.end(); ++iter)
{
@@ -7497,36 +7578,49 @@ void LLPipeline::renderDeferredLighting()
//correspond to their axis facing, with bit position 3,2,1 matching
//axis facing x,y,z, bit set meaning positive facing, bit clear
//meaning negative facing
- v[0] = c[0]-s; v[1] = c[1]-s; v[2] = c[2]-s; // 0 - 0000
- v[3] = c[0]-s; v[4] = c[1]-s; v[5] = c[2]+s; // 1 - 0001
- v[6] = c[0]-s; v[7] = c[1]+s; v[8] = c[2]-s; // 2 - 0010
- v[9] = c[0]-s; v[10] = c[1]+s; v[11] = c[2]+s; // 3 - 0011
+ mDeferredVB->getVertexStrider(vert);
+ v[0].set(c[0]-s,c[1]-s,c[2]-s); // 0 - 0000
+ v[1].set(c[0]-s,c[1]-s,c[2]+s); // 1 - 0001
+ v[2].set(c[0]-s,c[1]+s,c[2]-s); // 2 - 0010
+ v[3].set(c[0]-s,c[1]+s,c[2]+s); // 3 - 0011
- v[12] = c[0]+s; v[13] = c[1]-s; v[14] = c[2]-s; // 4 - 0100
- v[15] = c[0]+s; v[16] = c[1]-s; v[17] = c[2]+s; // 5 - 0101
- v[18] = c[0]+s; v[19] = c[1]+s; v[20] = c[2]-s; // 6 - 0110
- v[21] = c[0]+s; v[22] = c[1]+s; v[23] = c[2]+s; // 7 - 0111
-
- glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
- glColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
+ v[4].set(c[0]+s,c[1]-s,c[2]-s); // 4 - 0100
+ v[5].set(c[0]+s,c[1]-s,c[2]+s); // 5 - 0101
+ v[6].set(c[0]+s,c[1]+s,c[2]-s); // 6 - 0110
+ v[7].set(c[0]+s,c[1]+s,c[2]+s); // 7 - 0111
+
+ gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
+ gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
+ gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+ gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
+ gGL.syncMatrices();
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
- GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
+ GL_UNSIGNED_SHORT, get_box_fan_indices_ptr(camera, center));
}
- gDeferredSpotLightProgram.disableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+ gDeferredSpotLightProgram.disableTexture(LLShaderMgr::DEFERRED_PROJECTION);
unbindDeferredShader(gDeferredSpotLightProgram);
}
+ //reset mDeferredVB to fullscreen triangle
+ mDeferredVB->getVertexStrider(vert);
+ vert[0].set(-1,1,0);
+ vert[1].set(-1,-3,0);
+ vert[2].set(3,1,0);
+
{
bindDeferredShader(gDeferredMultiLightProgram);
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+
LLGLDepthTest depth(GL_FALSE);
//full screen blit
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
+ gGL.pushMatrix();
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
U32 count = 0;
@@ -7534,7 +7628,7 @@ void LLPipeline::renderDeferredLighting()
LLVector4 light[max_count];
LLVector4 col[max_count];
- glVertexPointer(2, GL_FLOAT, 0, vert);
+// glVertexPointer(2, GL_FLOAT, 0, vert);
F32 far_z = 0.f;
@@ -7551,13 +7645,13 @@ void LLPipeline::renderDeferredLighting()
count++;
if (count == max_count || fullscreen_lights.empty())
{
- gDeferredMultiLightProgram.uniform1i("light_count", count);
- gDeferredMultiLightProgram.uniform4fv("light", count, (GLfloat*) light);
- gDeferredMultiLightProgram.uniform4fv("light_col", count, (GLfloat*) col);
- gDeferredMultiLightProgram.uniform1f("far_z", far_z);
+ gDeferredMultiLightProgram.uniform1i(LLShaderMgr::MULTI_LIGHT_COUNT, count);
+ gDeferredMultiLightProgram.uniform4fv(LLShaderMgr::MULTI_LIGHT, count, (GLfloat*) light);
+ gDeferredMultiLightProgram.uniform4fv(LLShaderMgr::MULTI_LIGHT_COL, count, (GLfloat*) col);
+ gDeferredMultiLightProgram.uniform1f(LLShaderMgr::MULTI_LIGHT_FAR_Z, far_z);
far_z = 0.f;
- count = 0;
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ count = 0;
+ mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
}
}
@@ -7565,7 +7659,9 @@ void LLPipeline::renderDeferredLighting()
bindDeferredShader(gDeferredMultiSpotLightProgram);
- gDeferredMultiSpotLightProgram.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+ gDeferredMultiSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION);
+
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
for (LLDrawable::drawable_list_t::iterator iter = fullscreen_spot_lights.begin(); iter != fullscreen_spot_lights.end(); ++iter)
{
@@ -7588,62 +7684,23 @@ void LLPipeline::renderDeferredLighting()
LLColor3 col = volume->getLightColor();
col *= volume->getLightIntensity();
- glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
- glColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
+ gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
+ gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+ gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
+ mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
}
- gDeferredMultiSpotLightProgram.disableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+ gDeferredMultiSpotLightProgram.disableTexture(LLShaderMgr::DEFERRED_PROJECTION);
unbindDeferredShader(gDeferredMultiSpotLightProgram);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
}
}
gGL.setColorMask(true, true);
-
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
- {
- mDeferredLight[2].flush();
-
- mScreen.bindTarget();
- mScreen.clear(GL_COLOR_BUFFER_BIT);
-
- gGL.setSceneBlendType(LLRender::BT_ALPHA);
-
- { //mix various light maps (local, sun, gi)
- LLFastTimer ftm(FTM_POST);
- LLGLDisable blend(GL_BLEND);
- LLGLDisable test(GL_ALPHA_TEST);
- LLGLDepthTest depth(GL_FALSE);
- LLGLDisable stencil(GL_STENCIL_TEST);
-
- bindDeferredShader(gDeferredPostProgram, 0, &mGIMapPost[0]);
-
- gDeferredPostProgram.bind();
-
- LLVertexBuffer::unbind();
-
- glVertexPointer(2, GL_FLOAT, 0, vert);
- glColor3f(1,1,1);
-
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
-
- glDrawArrays(GL_TRIANGLES, 0, 3);
-
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
-
- unbindDeferredShader(gDeferredPostProgram);
- }
- }
}
{ //render non-deferred geometry (alpha, fullbright, glow)
@@ -7759,13 +7816,13 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
F32 proj_range = far_clip - near_clip;
glh::matrix4f light_proj = gl_perspective(fovy, aspect, near_clip, far_clip);
screen_to_light = trans * light_proj * screen_to_light;
- shader.uniformMatrix4fv("proj_mat", 1, FALSE, screen_to_light.m);
- shader.uniform1f("proj_near", near_clip);
- shader.uniform3fv("proj_p", 1, p1.v);
- shader.uniform3fv("proj_n", 1, n.v);
- shader.uniform3fv("proj_origin", 1, screen_origin.v);
- shader.uniform1f("proj_range", proj_range);
- shader.uniform1f("proj_ambiance", params.mV[2]);
+ shader.uniformMatrix4fv(LLShaderMgr::PROJECTOR_MATRIX, 1, FALSE, screen_to_light.m);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_NEAR, near_clip);
+ shader.uniform3fv(LLShaderMgr::PROJECTOR_P, 1, p1.v);
+ shader.uniform3fv(LLShaderMgr::PROJECTOR_N, 1, n.v);
+ shader.uniform3fv(LLShaderMgr::PROJECTOR_ORIGIN, 1, screen_origin.v);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_RANGE, proj_range);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_AMBIANCE, params.mV[2]);
S32 s_idx = -1;
for (U32 i = 0; i < 2; i++)
@@ -7776,15 +7833,15 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
}
}
- shader.uniform1i("proj_shadow_idx", s_idx);
+ shader.uniform1i(LLShaderMgr::PROJECTOR_SHADOW_INDEX, s_idx);
if (s_idx >= 0)
{
- shader.uniform1f("shadow_fade", 1.f-mSpotLightFade[s_idx]);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_SHADOW_FADE, 1.f-mSpotLightFade[s_idx]);
}
else
{
- shader.uniform1f("shadow_fade", 1.f);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_SHADOW_FADE, 1.f);
}
{
@@ -7818,7 +7875,7 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
img = LLViewerFetchedTexture::sWhiteImagep;
}
- S32 channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+ S32 channel = shader.enableTexture(LLShaderMgr::DEFERRED_PROJECTION);
if (channel > -1)
{
@@ -7828,9 +7885,9 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
F32 lod_range = logf(img->getWidth())/logf(2.f);
- shader.uniform1f("proj_focus", focus);
- shader.uniform1f("proj_lod", lod_range);
- shader.uniform1f("proj_ambient_lod", llclamp((proj_range-focus)/proj_range*lod_range, 0.f, 1.f));
+ shader.uniform1f(LLShaderMgr::PROJECTOR_FOCUS, focus);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_LOD, lod_range);
+ shader.uniform1f(LLShaderMgr::PROJECTOR_AMBIENT_LOD, llclamp((proj_range-focus)/proj_range*lod_range, 0.f, 1.f));
}
}
@@ -7839,33 +7896,17 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
void LLPipeline::unbindDeferredShader(LLGLSLShader &shader)
{
stop_glerror();
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, mDeferredScreen.getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, mDeferredLight[0].getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_EDGE, mEdgeMap.getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_SUN_LIGHT, mDeferredLight[1].getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_LOCAL_LIGHT, mDeferredLight[2].getUsage());
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_LUMINANCE);
- shader.disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MIP);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_BLOOM);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_NORMAL);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_DIFFUSE);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_SPECULAR);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_DEPTH);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MIN_POS);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MAX_POS);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_NORMAL);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_DIFFUSE);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MIN_POS);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MAX_POS);
+ shader.disableTexture(LLShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
+ shader.disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
+ shader.disableTexture(LLShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
+ shader.disableTexture(LLShaderMgr::DEFERRED_DEPTH, mDeferredScreen.getUsage());
+ shader.disableTexture(LLShaderMgr::DEFERRED_LIGHT, mDeferredLight.getUsage());
+ shader.disableTexture(LLShaderMgr::DIFFUSE_MAP);
+ shader.disableTexture(LLShaderMgr::DEFERRED_BLOOM);
for (U32 i = 0; i < 4; i++)
{
- if (shader.disableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE) > -1)
+ if (shader.disableTexture(LLShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE) > -1)
{
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
}
@@ -7873,16 +7914,16 @@ void LLPipeline::unbindDeferredShader(LLGLSLShader &shader)
for (U32 i = 4; i < 6; i++)
{
- if (shader.disableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i) > -1)
+ if (shader.disableTexture(LLShaderMgr::DEFERRED_SHADOW0+i) > -1)
{
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
}
}
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_NOISE);
- shader.disableTexture(LLViewerShaderMgr::DEFERRED_LIGHTFUNC);
+ shader.disableTexture(LLShaderMgr::DEFERRED_NOISE);
+ shader.disableTexture(LLShaderMgr::DEFERRED_LIGHTFUNC);
- S32 channel = shader.disableTexture(LLViewerShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
+ S32 channel = shader.disableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
if (channel > -1)
{
LLCubeMap* cube_map = gSky.mVOSkyp ? gSky.mVOSkyp->getCubeMap() : NULL;
@@ -7908,11 +7949,11 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
{
BOOL skip_avatar_update = FALSE;
- if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
+ if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK || !LLVOAvatar::sVisibleInFirstPerson)
{
skip_avatar_update = TRUE;
}
-
+
if (!skip_avatar_update)
{
gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
@@ -7977,7 +8018,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
stop_glerror();
- glPushMatrix();
+ gGL.pushMatrix();
mat.set_scale(glh::vec3f(1,1,-1));
mat.set_translate(glh::vec3f(0,0,height*2.f));
@@ -7987,7 +8028,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
mat = current * mat;
glh_set_current_modelview(mat);
- glLoadMatrixf(mat.m);
+ gGL.loadMatrix(mat.m);
LLViewerCamera::updateFrustumPlanes(camera, FALSE, TRUE);
@@ -8030,7 +8071,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLPipeline::RENDER_TYPE_CLOUDS,
LLPipeline::END_RENDER_TYPES);
- S32 detail = gSavedSettings.getS32("RenderReflectionDetail");
+ S32 detail = RenderReflectionDetail;
if (detail > 0)
{ //mask out selected geometry based on reflection detail
if (detail < 4)
@@ -8054,7 +8095,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
if (LLDrawPoolWater::sNeedsDistortionUpdate)
{
- if (gSavedSettings.getS32("RenderReflectionDetail") > 0)
+ if (RenderReflectionDetail > 0)
{
gPipeline.grabReferences(ref_result);
LLGLUserClipPlane clip_plane(plane, mat, projection);
@@ -8065,7 +8106,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
gPipeline.popRenderTypeMask();
}
glCullFace(GL_BACK);
- glPopMatrix();
+ gGL.popMatrix();
mWaterRef.flush();
glh_set_current_modelview(current);
LLPipeline::sUseOcclusion = occlusion;
@@ -8234,7 +8275,14 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
}
LLPipeline::sShadowRender = TRUE;
- U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY, LLRenderPass::PASS_BUMP, LLRenderPass::PASS_FULLBRIGHT_SHINY };
+ U32 types[] = {
+ LLRenderPass::PASS_SIMPLE,
+ LLRenderPass::PASS_FULLBRIGHT,
+ LLRenderPass::PASS_SHINY,
+ LLRenderPass::PASS_BUMP,
+ LLRenderPass::PASS_FULLBRIGHT_SHINY
+ };
+
LLGLEnable cull(GL_CULL_FACE);
if (use_shader)
@@ -8246,12 +8294,12 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
stateSort(shadow_cam, result);
//generate shadow map
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadMatrixf(proj.m);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadMatrixd(gGLModelView);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadMatrix(proj.m);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
+ gGL.loadMatrix(gGLModelView);
stop_glerror();
gGLLastMatrix = NULL;
@@ -8262,12 +8310,8 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
}
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
- glColor4f(1,1,1,1);
stop_glerror();
-
- gGL.setColorMask(false, false);
//glCullFace(GL_FRONT);
@@ -8278,6 +8322,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
{ //occlusion program is general purpose depth-only no-textures
gOcclusionProgram.bind();
}
+
+ gGL.diffuseColor4f(1,1,1,1);
+ gGL.setColorMask(false, false);
+
LLFastTimer ftm(FTM_SHADOW_SIMPLE);
gGL.getTexUnit(0)->disable();
for (U32 i = 0; i < sizeof(types)/sizeof(U32); ++i)
@@ -8305,16 +8353,26 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
{
LLFastTimer ftm(FTM_SHADOW_ALPHA);
gDeferredShadowAlphaMaskProgram.bind();
- gDeferredShadowAlphaMaskProgram.setAlphaRange(0.6f, 1.f);
- renderObjects(LLRenderPass::PASS_ALPHA_SHADOW, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR, TRUE);
- glColor4f(1,1,1,1);
+ gDeferredShadowAlphaMaskProgram.setMinimumAlpha(0.598f);
+
+ U32 mask = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_COLOR |
+ LLVertexBuffer::MAP_TEXTURE_INDEX;
+
+ renderObjects(LLRenderPass::PASS_ALPHA_MASK, mask, TRUE, TRUE);
+ renderObjects(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, mask, TRUE, TRUE);
+ renderObjects(LLRenderPass::PASS_ALPHA, mask, TRUE, TRUE);
+ gDeferredTreeShadowProgram.bind();
+ gDeferredTreeShadowProgram.setMinimumAlpha(0.598f);
renderObjects(LLRenderPass::PASS_GRASS, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, TRUE);
}
//glCullFace(GL_BACK);
+ gDeferredShadowProgram.bind();
gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
+ gGL.loadMatrix(gGLModelView);
doOcclusion(shadow_cam);
if (use_shader)
@@ -8324,10 +8382,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
gGL.setColorMask(true, true);
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
gGLLastMatrix = NULL;
LLPipeline::sUseOcclusion = occlude;
@@ -8509,184 +8567,6 @@ BOOL LLPipeline::getVisiblePointCloud(LLCamera& camera, LLVector3& min, LLVector
return TRUE;
}
-void LLPipeline::generateGI(LLCamera& camera, LLVector3& lightDir, std::vector<LLVector3>& vpc)
-{
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) < 3)
- {
- return;
- }
-
- LLVector3 up;
-
- //LLGLEnable depth_clamp(GL_DEPTH_CLAMP_NV);
-
- if (lightDir.mV[2] > 0.5f)
- {
- up = LLVector3(1,0,0);
- }
- else
- {
- up = LLVector3(0, 0, 1);
- }
-
-
- F32 gi_range = gSavedSettings.getF32("RenderGIRange");
-
- U32 res = mGIMap.getWidth();
-
- F32 atten = llmax(gSavedSettings.getF32("RenderGIAttenuation"), 0.001f);
-
- //set radius to range at which distance attenuation of incoming photons is near 0
-
- F32 lrad = sqrtf(1.f/(atten*0.01f));
-
- F32 lrange = lrad+gi_range*0.5f;
-
- LLVector3 pad(lrange,lrange,lrange);
-
- glh::matrix4f view = look(LLVector3(128.f,128.f,128.f), lightDir, up);
-
- LLVector3 cp = camera.getOrigin()+camera.getAtAxis()*(gi_range*0.5f);
-
- glh::vec3f scp(cp.mV);
- view.mult_matrix_vec(scp);
- cp.setVec(scp.v);
-
- F32 pix_width = lrange/(res*0.5f);
-
- //move cp to the nearest pix_width
- for (U32 i = 0; i < 3; i++)
- {
- cp.mV[i] = llround(cp.mV[i], pix_width);
- }
-
- LLVector3 min = cp-pad;
- LLVector3 max = cp+pad;
-
- //set mGIRange to range in tc space[0,1] that covers texture block of intersecting lights around a point
- mGIRange.mV[0] = (max.mV[0]-min.mV[0])/res;
- mGIRange.mV[1] = (max.mV[1]-min.mV[1])/res;
- mGILightRadius = lrad/lrange*0.5f;
-
- glh::matrix4f proj = gl_ortho(min.mV[0], max.mV[0],
- min.mV[1], max.mV[1],
- -max.mV[2], -min.mV[2]);
-
- LLCamera sun_cam = camera;
-
- glh::matrix4f eye_view = glh_get_current_modelview();
-
- //get eye space to camera space matrix
- mGIMatrix = view*eye_view.inverse();
- mGINormalMatrix = mGIMatrix.inverse().transpose();
- mGIInvProj = proj.inverse();
- mGIMatrixProj = proj*mGIMatrix;
-
- //translate and scale to [0,1]
- glh::matrix4f trans(.5f, 0.f, 0.f, .5f,
- 0.f, 0.5f, 0.f, 0.5f,
- 0.f, 0.f, 0.5f, 0.5f,
- 0.f, 0.f, 0.f, 1.f);
-
- mGIMatrixProj = trans*mGIMatrixProj;
-
- glh_set_current_modelview(view);
- glh_set_current_projection(proj);
-
- LLViewerCamera::updateFrustumPlanes(sun_cam, TRUE, FALSE, TRUE);
-
- sun_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
- static LLCullResult result;
-
- pushRenderTypeMask();
-
- andRenderTypeMask(LLPipeline::RENDER_TYPE_SIMPLE,
- LLPipeline::RENDER_TYPE_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_BUMP,
- LLPipeline::RENDER_TYPE_VOLUME,
- LLPipeline::RENDER_TYPE_TREE,
- LLPipeline::RENDER_TYPE_TERRAIN,
- LLPipeline::RENDER_TYPE_WATER,
- LLPipeline::RENDER_TYPE_VOIDWATER,
- LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW,
- LLPipeline::RENDER_TYPE_AVATAR,
- LLPipeline::RENDER_TYPE_PASS_SIMPLE,
- LLPipeline::RENDER_TYPE_PASS_BUMP,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_PASS_SHINY,
- END_RENDER_TYPES);
-
-
-
- S32 occlude = LLPipeline::sUseOcclusion;
- //LLPipeline::sUseOcclusion = 0;
- LLPipeline::sShadowRender = TRUE;
-
- //only render large objects into GI map
- sMinRenderSize = gSavedSettings.getF32("RenderGIMinRenderSize");
-
- LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_GI_SOURCE;
- mGIMap.bindTarget();
-
- F64 last_modelview[16];
- F64 last_projection[16];
- for (U32 i = 0; i < 16; i++)
- {
- last_modelview[i] = gGLLastModelView[i];
- last_projection[i] = gGLLastProjection[i];
- gGLLastModelView[i] = mGIModelview.m[i];
- gGLLastProjection[i] = mGIProjection.m[i];
- }
-
- sun_cam.setOrigin(0.f, 0.f, 0.f);
- updateCull(sun_cam, result);
- stateSort(sun_cam, result);
-
- for (U32 i = 0; i < 16; i++)
- {
- gGLLastModelView[i] = last_modelview[i];
- gGLLastProjection[i] = last_projection[i];
- }
-
- mGIProjection = proj;
- mGIModelview = view;
-
- LLGLEnable cull(GL_CULL_FACE);
-
- //generate GI map
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadMatrixf(proj.m);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadMatrixf(view.m);
-
- stop_glerror();
- gGLLastMatrix = NULL;
-
- mGIMap.clear();
-
- {
- //LLGLEnable enable(GL_DEPTH_CLAMP_NV);
- renderGeomDeferred(camera);
- }
-
- mGIMap.flush();
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
- gGLLastMatrix = NULL;
-
- LLPipeline::sUseOcclusion = occlude;
- LLPipeline::sShadowRender = FALSE;
- sMinRenderSize = 0.f;
-
- popRenderTypeMask();
-
-}
-
void LLPipeline::renderHighlight(const LLViewerObject* obj, F32 fade)
{
if (obj && obj->getVolume())
@@ -8721,7 +8601,7 @@ void LLPipeline::generateHighlight(LLCamera& camera)
if (!mHighlightSet.empty())
{
- F32 transition = gFrameIntervalSeconds/gSavedSettings.getF32("RenderHighlightFadeTime");
+ F32 transition = gFrameIntervalSeconds/RenderHighlightFadeTime;
LLGLDisable test(GL_ALPHA_TEST);
LLGLDepthTest depth(GL_FALSE);
@@ -8767,11 +8647,23 @@ void LLPipeline::generateHighlight(LLCamera& camera)
void LLPipeline::generateSunShadow(LLCamera& camera)
{
- if (!sRenderDeferred || gSavedSettings.getS32("RenderShadowDetail") <= 0)
+ if (!sRenderDeferred || RenderShadowDetail <= 0)
{
return;
}
+ BOOL skip_avatar_update = FALSE;
+ if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK || !LLVOAvatar::sVisibleInFirstPerson)
+ {
+
+ skip_avatar_update = TRUE;
+ }
+
+ if (!skip_avatar_update)
+ {
+ gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
+ }
+
F64 last_modelview[16];
F64 last_projection[16];
for (U32 i = 0; i < 16; i++)
@@ -8792,7 +8684,9 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
LLPipeline::RENDER_TYPE_TERRAIN,
LLPipeline::RENDER_TYPE_WATER,
LLPipeline::RENDER_TYPE_VOIDWATER,
- LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW,
+ LLPipeline::RENDER_TYPE_PASS_ALPHA,
+ LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK,
+ LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK,
LLPipeline::RENDER_TYPE_PASS_GRASS,
LLPipeline::RENDER_TYPE_PASS_SIMPLE,
LLPipeline::RENDER_TYPE_PASS_BUMP,
@@ -8814,25 +8708,25 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
glh::matrix4f proj[6];
//clip contains parallel split distances for 3 splits
- LLVector3 clip = gSavedSettings.getVector3("RenderShadowClipPlanes");
+ LLVector3 clip = RenderShadowClipPlanes;
//F32 slope_threshold = gSavedSettings.getF32("RenderShadowSlopeThreshold");
//far clip on last split is minimum of camera view distance and 128
mSunClipPlanes = LLVector4(clip, clip.mV[2] * clip.mV[2]/clip.mV[1]);
- clip = gSavedSettings.getVector3("RenderShadowOrthoClipPlanes");
+ clip = RenderShadowOrthoClipPlanes;
mSunOrthoClipPlanes = LLVector4(clip, clip.mV[2]*clip.mV[2]/clip.mV[1]);
//currently used for amount to extrude frusta corners for constructing shadow frusta
- LLVector3 n = gSavedSettings.getVector3("RenderShadowNearDist");
+ LLVector3 n = RenderShadowNearDist;
//F32 nearDist[] = { n.mV[0], n.mV[1], n.mV[2], n.mV[2] };
//put together a universal "near clip" plane for shadow frusta
LLPlane shadow_near_clip;
{
LLVector3 p = gAgent.getPositionAgent();
- p += mSunDir * gSavedSettings.getF32("RenderFarClip")*2.f;
+ p += mSunDir * RenderFarClip*2.f;
shadow_near_clip.setVec(p, mSunDir);
}
@@ -8885,11 +8779,15 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
mShadowFrustPoints[3].clear();
}
popRenderTypeMask();
+
+ if (!skip_avatar_update)
+ {
+ gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
+ }
+
return;
}
- generateGI(camera, lightDir, fp);
-
//get good split distances for frustum
for (U32 i = 0; i < fp.size(); ++i)
{
@@ -8915,7 +8813,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
F32 range = far_clip-near_clip;
- LLVector3 split_exp = gSavedSettings.getVector3("RenderShadowSplitExponent");
+ LLVector3 split_exp = RenderShadowSplitExponent;
F32 da = 1.f-llmax( fabsf(lightDir*up), fabsf(lightDir*camera.getLeftAxis()) );
@@ -8936,384 +8834,399 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
// convenience array of 4 near clip plane distances
F32 dist[] = { near_clip, mSunClipPlanes.mV[0], mSunClipPlanes.mV[1], mSunClipPlanes.mV[2], mSunClipPlanes.mV[3] };
- for (S32 j = 0; j < 4; j++)
- {
- if (!hasRenderDebugMask(RENDER_DEBUG_SHADOW_FRUSTA))
+
+ if (mSunDiffuse == LLColor4::black)
+ { //sun diffuse is totally black, shadows don't matter
+ LLGLDepthTest depth(GL_TRUE);
+
+ for (S32 j = 0; j < 4; j++)
{
- mShadowFrustPoints[j].clear();
+ mShadow[j].bindTarget();
+ mShadow[j].clear();
+ mShadow[j].flush();
}
+ }
+ else
+ {
+ for (S32 j = 0; j < 4; j++)
+ {
+ if (!hasRenderDebugMask(RENDER_DEBUG_SHADOW_FRUSTA))
+ {
+ mShadowFrustPoints[j].clear();
+ }
- LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW0+j;
+ LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW0+j;
- //restore render matrices
- glh_set_current_modelview(saved_view);
- glh_set_current_projection(saved_proj);
+ //restore render matrices
+ glh_set_current_modelview(saved_view);
+ glh_set_current_projection(saved_proj);
- LLVector3 eye = camera.getOrigin();
+ LLVector3 eye = camera.getOrigin();
- //camera used for shadow cull/render
- LLCamera shadow_cam;
+ //camera used for shadow cull/render
+ LLCamera shadow_cam;
- //create world space camera frustum for this split
- shadow_cam = camera;
- shadow_cam.setFar(16.f);
+ //create world space camera frustum for this split
+ shadow_cam = camera;
+ shadow_cam.setFar(16.f);
- LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+ LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
- LLVector3* frust = shadow_cam.mAgentFrustum;
+ LLVector3* frust = shadow_cam.mAgentFrustum;
- LLVector3 pn = shadow_cam.getAtAxis();
+ LLVector3 pn = shadow_cam.getAtAxis();
- LLVector3 min, max;
+ LLVector3 min, max;
- //construct 8 corners of split frustum section
- for (U32 i = 0; i < 4; i++)
- {
- LLVector3 delta = frust[i+4]-eye;
- delta += (frust[i+4]-frust[(i+2)%4+4])*0.05f;
- delta.normVec();
- F32 dp = delta*pn;
- frust[i] = eye + (delta*dist[j]*0.95f)/dp;
- frust[i+4] = eye + (delta*dist[j+1]*1.05f)/dp;
- }
+ //construct 8 corners of split frustum section
+ for (U32 i = 0; i < 4; i++)
+ {
+ LLVector3 delta = frust[i+4]-eye;
+ delta += (frust[i+4]-frust[(i+2)%4+4])*0.05f;
+ delta.normVec();
+ F32 dp = delta*pn;
+ frust[i] = eye + (delta*dist[j]*0.95f)/dp;
+ frust[i+4] = eye + (delta*dist[j+1]*1.05f)/dp;
+ }
- shadow_cam.calcAgentFrustumPlanes(frust);
- shadow_cam.mFrustumCornerDist = 0.f;
+ shadow_cam.calcAgentFrustumPlanes(frust);
+ shadow_cam.mFrustumCornerDist = 0.f;
- if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
- {
- mShadowCamera[j] = shadow_cam;
- }
-
- std::vector<LLVector3> fp;
-
- if (!gPipeline.getVisiblePointCloud(shadow_cam, min, max, fp, lightDir))
- {
- //no possible shadow receivers
if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
{
- mShadowExtents[j][0] = LLVector3();
- mShadowExtents[j][1] = LLVector3();
- mShadowCamera[j+4] = shadow_cam;
- }
-
- mShadow[j].bindTarget();
- {
- LLGLDepthTest depth(GL_TRUE);
- mShadow[j].clear();
+ mShadowCamera[j] = shadow_cam;
}
- mShadow[j].flush();
-
- mShadowError.mV[j] = 0.f;
- mShadowFOV.mV[j] = 0.f;
- continue;
- }
+ std::vector<LLVector3> fp;
- if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
- {
- mShadowExtents[j][0] = min;
- mShadowExtents[j][1] = max;
- mShadowFrustPoints[j] = fp;
- }
-
+ if (!gPipeline.getVisiblePointCloud(shadow_cam, min, max, fp, lightDir))
+ {
+ //no possible shadow receivers
+ if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+ {
+ mShadowExtents[j][0] = LLVector3();
+ mShadowExtents[j][1] = LLVector3();
+ mShadowCamera[j+4] = shadow_cam;
+ }
- //find a good origin for shadow projection
- LLVector3 origin;
+ mShadow[j].bindTarget();
+ {
+ LLGLDepthTest depth(GL_TRUE);
+ mShadow[j].clear();
+ }
+ mShadow[j].flush();
- //get a temporary view projection
- view[j] = look(camera.getOrigin(), lightDir, -up);
+ mShadowError.mV[j] = 0.f;
+ mShadowFOV.mV[j] = 0.f;
- std::vector<LLVector3> wpf;
+ continue;
+ }
- for (U32 i = 0; i < fp.size(); i++)
- {
- glh::vec3f p = glh::vec3f(fp[i].mV);
- view[j].mult_matrix_vec(p);
- wpf.push_back(LLVector3(p.v));
- }
+ if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+ {
+ mShadowExtents[j][0] = min;
+ mShadowExtents[j][1] = max;
+ mShadowFrustPoints[j] = fp;
+ }
+
- min = wpf[0];
- max = wpf[0];
+ //find a good origin for shadow projection
+ LLVector3 origin;
- for (U32 i = 0; i < fp.size(); ++i)
- { //get AABB in camera space
- update_min_max(min, max, wpf[i]);
- }
-
- // Construct a perspective transform with perspective along y-axis that contains
- // points in wpf
- //Known:
- // - far clip plane
- // - near clip plane
- // - points in frustum
- //Find:
- // - origin
-
- //get some "interesting" points of reference
- LLVector3 center = (min+max)*0.5f;
- LLVector3 size = (max-min)*0.5f;
- LLVector3 near_center = center;
- near_center.mV[1] += size.mV[1]*2.f;
-
-
- //put all points in wpf in quadrant 0, reletive to center of min/max
- //get the best fit line using least squares
- F32 bfm = 0.f;
- F32 bfb = 0.f;
+ //get a temporary view projection
+ view[j] = look(camera.getOrigin(), lightDir, -up);
- for (U32 i = 0; i < wpf.size(); ++i)
- {
- wpf[i] -= center;
- wpf[i].mV[0] = fabsf(wpf[i].mV[0]);
- wpf[i].mV[2] = fabsf(wpf[i].mV[2]);
- }
+ std::vector<LLVector3> wpf;
- if (!wpf.empty())
- {
- F32 sx = 0.f;
- F32 sx2 = 0.f;
- F32 sy = 0.f;
- F32 sxy = 0.f;
-
- for (U32 i = 0; i < wpf.size(); ++i)
- {
- sx += wpf[i].mV[0];
- sx2 += wpf[i].mV[0]*wpf[i].mV[0];
- sy += wpf[i].mV[1];
- sxy += wpf[i].mV[0]*wpf[i].mV[1];
+ for (U32 i = 0; i < fp.size(); i++)
+ {
+ glh::vec3f p = glh::vec3f(fp[i].mV);
+ view[j].mult_matrix_vec(p);
+ wpf.push_back(LLVector3(p.v));
}
- bfm = (sy*sx-wpf.size()*sxy)/(sx*sx-wpf.size()*sx2);
- bfb = (sx*sxy-sy*sx2)/(sx*sx-bfm*sx2);
- }
-
- {
- // best fit line is y=bfm*x+bfb
-
- //find point that is furthest to the right of line
- F32 off_x = -1.f;
- LLVector3 lp;
-
- for (U32 i = 0; i < wpf.size(); ++i)
- {
- //y = bfm*x+bfb
- //x = (y-bfb)/bfm
- F32 lx = (wpf[i].mV[1]-bfb)/bfm;
+ min = wpf[0];
+ max = wpf[0];
- lx = wpf[i].mV[0]-lx;
-
- if (off_x < lx)
- {
- off_x = lx;
- lp = wpf[i];
- }
+ for (U32 i = 0; i < fp.size(); ++i)
+ { //get AABB in camera space
+ update_min_max(min, max, wpf[i]);
}
- //get line with slope bfm through lp
- // bfb = y-bfm*x
- bfb = lp.mV[1]-bfm*lp.mV[0];
+ // Construct a perspective transform with perspective along y-axis that contains
+ // points in wpf
+ //Known:
+ // - far clip plane
+ // - near clip plane
+ // - points in frustum
+ //Find:
+ // - origin
- //calculate error
- mShadowError.mV[j] = 0.f;
+ //get some "interesting" points of reference
+ LLVector3 center = (min+max)*0.5f;
+ LLVector3 size = (max-min)*0.5f;
+ LLVector3 near_center = center;
+ near_center.mV[1] += size.mV[1]*2.f;
+
+
+ //put all points in wpf in quadrant 0, reletive to center of min/max
+ //get the best fit line using least squares
+ F32 bfm = 0.f;
+ F32 bfb = 0.f;
for (U32 i = 0; i < wpf.size(); ++i)
{
- F32 lx = (wpf[i].mV[1]-bfb)/bfm;
- mShadowError.mV[j] += fabsf(wpf[i].mV[0]-lx);
+ wpf[i] -= center;
+ wpf[i].mV[0] = fabsf(wpf[i].mV[0]);
+ wpf[i].mV[2] = fabsf(wpf[i].mV[2]);
}
- mShadowError.mV[j] /= wpf.size();
- mShadowError.mV[j] /= size.mV[0];
+ if (!wpf.empty())
+ {
+ F32 sx = 0.f;
+ F32 sx2 = 0.f;
+ F32 sy = 0.f;
+ F32 sxy = 0.f;
+
+ for (U32 i = 0; i < wpf.size(); ++i)
+ {
+ sx += wpf[i].mV[0];
+ sx2 += wpf[i].mV[0]*wpf[i].mV[0];
+ sy += wpf[i].mV[1];
+ sxy += wpf[i].mV[0]*wpf[i].mV[1];
+ }
- if (mShadowError.mV[j] > gSavedSettings.getF32("RenderShadowErrorCutoff"))
- { //just use ortho projection
- mShadowFOV.mV[j] = -1.f;
- origin.clearVec();
- proj[j] = gl_ortho(min.mV[0], max.mV[0],
- min.mV[1], max.mV[1],
- -max.mV[2], -min.mV[2]);
+ bfm = (sy*sx-wpf.size()*sxy)/(sx*sx-wpf.size()*sx2);
+ bfb = (sx*sxy-sy*sx2)/(sx*sx-bfm*sx2);
}
- else
+
{
- //origin is where line x = 0;
- origin.setVec(0,bfb,0);
-
- F32 fovz = 1.f;
- F32 fovx = 1.f;
-
- LLVector3 zp;
- LLVector3 xp;
+ // best fit line is y=bfm*x+bfb
+
+ //find point that is furthest to the right of line
+ F32 off_x = -1.f;
+ LLVector3 lp;
for (U32 i = 0; i < wpf.size(); ++i)
{
- LLVector3 atz = wpf[i]-origin;
- atz.mV[0] = 0.f;
- atz.normVec();
- if (fovz > -atz.mV[1])
- {
- zp = wpf[i];
- fovz = -atz.mV[1];
- }
-
- LLVector3 atx = wpf[i]-origin;
- atx.mV[2] = 0.f;
- atx.normVec();
- if (fovx > -atx.mV[1])
+ //y = bfm*x+bfb
+ //x = (y-bfb)/bfm
+ F32 lx = (wpf[i].mV[1]-bfb)/bfm;
+
+ lx = wpf[i].mV[0]-lx;
+
+ if (off_x < lx)
{
- fovx = -atx.mV[1];
- xp = wpf[i];
+ off_x = lx;
+ lp = wpf[i];
}
}
- fovx = acos(fovx);
- fovz = acos(fovz);
+ //get line with slope bfm through lp
+ // bfb = y-bfm*x
+ bfb = lp.mV[1]-bfm*lp.mV[0];
- F32 cutoff = llmin(gSavedSettings.getF32("RenderShadowFOVCutoff"), 1.4f);
-
- mShadowFOV.mV[j] = fovx;
-
- if (fovx < cutoff && fovz > cutoff)
+ //calculate error
+ mShadowError.mV[j] = 0.f;
+
+ for (U32 i = 0; i < wpf.size(); ++i)
{
- //x is a good fit, but z is too big, move away from zp enough so that fovz matches cutoff
- F32 d = zp.mV[2]/tan(cutoff);
- F32 ny = zp.mV[1] + fabsf(d);
+ F32 lx = (wpf[i].mV[1]-bfb)/bfm;
+ mShadowError.mV[j] += fabsf(wpf[i].mV[0]-lx);
+ }
- origin.mV[1] = ny;
+ mShadowError.mV[j] /= wpf.size();
+ mShadowError.mV[j] /= size.mV[0];
- fovz = 1.f;
- fovx = 1.f;
+ if (mShadowError.mV[j] > RenderShadowErrorCutoff)
+ { //just use ortho projection
+ mShadowFOV.mV[j] = -1.f;
+ origin.clearVec();
+ proj[j] = gl_ortho(min.mV[0], max.mV[0],
+ min.mV[1], max.mV[1],
+ -max.mV[2], -min.mV[2]);
+ }
+ else
+ {
+ //origin is where line x = 0;
+ origin.setVec(0,bfb,0);
+
+ F32 fovz = 1.f;
+ F32 fovx = 1.f;
+
+ LLVector3 zp;
+ LLVector3 xp;
for (U32 i = 0; i < wpf.size(); ++i)
{
LLVector3 atz = wpf[i]-origin;
atz.mV[0] = 0.f;
atz.normVec();
- fovz = llmin(fovz, -atz.mV[1]);
-
+ if (fovz > -atz.mV[1])
+ {
+ zp = wpf[i];
+ fovz = -atz.mV[1];
+ }
+
LLVector3 atx = wpf[i]-origin;
atx.mV[2] = 0.f;
atx.normVec();
- fovx = llmin(fovx, -atx.mV[1]);
+ if (fovx > -atx.mV[1])
+ {
+ fovx = -atx.mV[1];
+ xp = wpf[i];
+ }
}
fovx = acos(fovx);
fovz = acos(fovz);
- mShadowFOV.mV[j] = cutoff;
- }
+ F32 cutoff = llmin((F32) RenderShadowFOVCutoff, 1.4f);
+
+ mShadowFOV.mV[j] = fovx;
+
+ if (fovx < cutoff && fovz > cutoff)
+ {
+ //x is a good fit, but z is too big, move away from zp enough so that fovz matches cutoff
+ F32 d = zp.mV[2]/tan(cutoff);
+ F32 ny = zp.mV[1] + fabsf(d);
+
+ origin.mV[1] = ny;
+
+ fovz = 1.f;
+ fovx = 1.f;
+
+ for (U32 i = 0; i < wpf.size(); ++i)
+ {
+ LLVector3 atz = wpf[i]-origin;
+ atz.mV[0] = 0.f;
+ atz.normVec();
+ fovz = llmin(fovz, -atz.mV[1]);
+
+ LLVector3 atx = wpf[i]-origin;
+ atx.mV[2] = 0.f;
+ atx.normVec();
+ fovx = llmin(fovx, -atx.mV[1]);
+ }
+
+ fovx = acos(fovx);
+ fovz = acos(fovz);
+
+ mShadowFOV.mV[j] = cutoff;
+ }
- origin += center;
+ origin += center;
- F32 ynear = -(max.mV[1]-origin.mV[1]);
- F32 yfar = -(min.mV[1]-origin.mV[1]);
+ F32 ynear = -(max.mV[1]-origin.mV[1]);
+ F32 yfar = -(min.mV[1]-origin.mV[1]);
- if (ynear < 0.1f) //keep a sensible near clip plane
- {
- F32 diff = 0.1f-ynear;
- origin.mV[1] += diff;
- ynear += diff;
- yfar += diff;
- }
+ if (ynear < 0.1f) //keep a sensible near clip plane
+ {
+ F32 diff = 0.1f-ynear;
+ origin.mV[1] += diff;
+ ynear += diff;
+ yfar += diff;
+ }
- if (fovx > cutoff)
- { //just use ortho projection
- origin.clearVec();
- mShadowError.mV[j] = -1.f;
- proj[j] = gl_ortho(min.mV[0], max.mV[0],
- min.mV[1], max.mV[1],
- -max.mV[2], -min.mV[2]);
- }
- else
- {
- //get perspective projection
- view[j] = view[j].inverse();
+ if (fovx > cutoff)
+ { //just use ortho projection
+ origin.clearVec();
+ mShadowError.mV[j] = -1.f;
+ proj[j] = gl_ortho(min.mV[0], max.mV[0],
+ min.mV[1], max.mV[1],
+ -max.mV[2], -min.mV[2]);
+ }
+ else
+ {
+ //get perspective projection
+ view[j] = view[j].inverse();
- glh::vec3f origin_agent(origin.mV);
+ glh::vec3f origin_agent(origin.mV);
- //translate view to origin
- view[j].mult_matrix_vec(origin_agent);
+ //translate view to origin
+ view[j].mult_matrix_vec(origin_agent);
- eye = LLVector3(origin_agent.v);
+ eye = LLVector3(origin_agent.v);
- if (!hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
- {
- mShadowFrustOrigin[j] = eye;
- }
+ if (!hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+ {
+ mShadowFrustOrigin[j] = eye;
+ }
- view[j] = look(LLVector3(origin_agent.v), lightDir, -up);
+ view[j] = look(LLVector3(origin_agent.v), lightDir, -up);
- F32 fx = 1.f/tanf(fovx);
- F32 fz = 1.f/tanf(fovz);
+ F32 fx = 1.f/tanf(fovx);
+ F32 fz = 1.f/tanf(fovz);
- proj[j] = glh::matrix4f(-fx, 0, 0, 0,
- 0, (yfar+ynear)/(ynear-yfar), 0, (2.f*yfar*ynear)/(ynear-yfar),
- 0, 0, -fz, 0,
- 0, -1.f, 0, 0);
+ proj[j] = glh::matrix4f(-fx, 0, 0, 0,
+ 0, (yfar+ynear)/(ynear-yfar), 0, (2.f*yfar*ynear)/(ynear-yfar),
+ 0, 0, -fz, 0,
+ 0, -1.f, 0, 0);
+ }
}
}
- }
- //shadow_cam.setFar(128.f);
- shadow_cam.setOriginAndLookAt(eye, up, center);
+ //shadow_cam.setFar(128.f);
+ shadow_cam.setOriginAndLookAt(eye, up, center);
- shadow_cam.setOrigin(0,0,0);
+ shadow_cam.setOrigin(0,0,0);
- glh_set_current_modelview(view[j]);
- glh_set_current_projection(proj[j]);
+ glh_set_current_modelview(view[j]);
+ glh_set_current_projection(proj[j]);
- LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+ LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
- //shadow_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
- shadow_cam.getAgentPlane(LLCamera::AGENT_PLANE_NEAR).set(shadow_near_clip);
+ //shadow_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
+ shadow_cam.getAgentPlane(LLCamera::AGENT_PLANE_NEAR).set(shadow_near_clip);
- //translate and scale to from [-1, 1] to [0, 1]
- glh::matrix4f trans(0.5f, 0.f, 0.f, 0.5f,
- 0.f, 0.5f, 0.f, 0.5f,
- 0.f, 0.f, 0.5f, 0.5f,
- 0.f, 0.f, 0.f, 1.f);
+ //translate and scale to from [-1, 1] to [0, 1]
+ glh::matrix4f trans(0.5f, 0.f, 0.f, 0.5f,
+ 0.f, 0.5f, 0.f, 0.5f,
+ 0.f, 0.f, 0.5f, 0.5f,
+ 0.f, 0.f, 0.f, 1.f);
- glh_set_current_modelview(view[j]);
- glh_set_current_projection(proj[j]);
+ glh_set_current_modelview(view[j]);
+ glh_set_current_projection(proj[j]);
- for (U32 i = 0; i < 16; i++)
- {
- gGLLastModelView[i] = mShadowModelview[j].m[i];
- gGLLastProjection[i] = mShadowProjection[j].m[i];
- }
+ for (U32 i = 0; i < 16; i++)
+ {
+ gGLLastModelView[i] = mShadowModelview[j].m[i];
+ gGLLastProjection[i] = mShadowProjection[j].m[i];
+ }
- mShadowModelview[j] = view[j];
- mShadowProjection[j] = proj[j];
+ mShadowModelview[j] = view[j];
+ mShadowProjection[j] = proj[j];
- mSunShadowMatrix[j] = trans*proj[j]*view[j]*inv_view;
+ mSunShadowMatrix[j] = trans*proj[j]*view[j]*inv_view;
- stop_glerror();
+ stop_glerror();
- mShadow[j].bindTarget();
- mShadow[j].getViewport(gGLViewport);
- mShadow[j].clear();
+ mShadow[j].bindTarget();
+ mShadow[j].getViewport(gGLViewport);
+ mShadow[j].clear();
- {
- static LLCullResult result[4];
+ {
+ static LLCullResult result[4];
- //LLGLEnable enable(GL_DEPTH_CLAMP_NV);
- renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE);
- }
+ //LLGLEnable enable(GL_DEPTH_CLAMP_NV);
+ renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE);
+ }
- mShadow[j].flush();
+ mShadow[j].flush();
- if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
- {
- LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
- mShadowCamera[j+4] = shadow_cam;
+ if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+ {
+ LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+ mShadowCamera[j+4] = shadow_cam;
+ }
}
}
//hack to disable projector shadows
- bool gen_shadow = gSavedSettings.getS32("RenderShadowDetail") > 1;
+ bool gen_shadow = RenderShadowDetail > 1;
if (gen_shadow)
{
@@ -9452,7 +9365,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
}
- if (!gSavedSettings.getBOOL("CameraOffset"))
+ if (!CameraOffset)
{
glh_set_current_modelview(saved_view);
glh_set_current_projection(saved_proj);
@@ -9461,10 +9374,10 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
{
glh_set_current_modelview(view[1]);
glh_set_current_projection(proj[1]);
- glLoadMatrixf(view[1].m);
- glMatrixMode(GL_PROJECTION);
- glLoadMatrixf(proj[1].m);
- glMatrixMode(GL_MODELVIEW);
+ gGL.loadMatrix(view[1].m);
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.loadMatrix(proj[1].m);
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
}
gGL.setColorMask(true, false);
@@ -9475,6 +9388,11 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
}
popRenderTypeMask();
+
+ if (!skip_avatar_update)
+ {
+ gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
+ }
}
void LLPipeline::renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture)
@@ -9596,24 +9514,24 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
tdim.mV[0] = fabsf(half_height.dot3(left).getF32());
tdim.mV[1] = fabsf(half_height.dot3(up).getF32());
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
F32 distance = (pos-camera.getOrigin()).length();
F32 fov = atanf(tdim.mV[1]/distance)*2.f*RAD_TO_DEG;
F32 aspect = tdim.mV[0]/tdim.mV[1];
glh::matrix4f persp = gl_perspective(fov, aspect, 1.f, 256.f);
glh_set_current_projection(persp);
- glLoadMatrixf(persp.m);
+ gGL.loadMatrix(persp.m);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.pushMatrix();
glh::matrix4f mat;
camera.getOpenGLTransform(mat.m);
mat = glh::matrix4f((GLfloat*) OGL_TO_CFR_ROTATION) * mat;
- glLoadMatrixf(mat.m);
+ gGL.loadMatrix(mat.m);
glh_set_current_modelview(mat);
glClearColor(0.0f,0.0f,0.0f,0.0f);
@@ -9681,14 +9599,19 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
gGL.flush();
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
+ gGL.pushMatrix();
+ gGL.loadIdentity();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.pushMatrix();
+ gGL.loadIdentity();
static const F32 clip_plane = 0.99999f;
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.bind();
+ }
+
gGL.color4ub(64,64,64,255);
gGL.begin(LLRender::QUADS);
gGL.vertex3f(-1, -1, clip_plane);
@@ -9698,9 +9621,14 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
gGL.end();
gGL.flush();
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gUIProgram.unbind();
+ }
+
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
}
avatar->mImpostor.flush();
@@ -9714,10 +9642,10 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
sShadowRender = FALSE;
popRenderTypeMask();
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ gGL.matrixMode(LLRender::MM_PROJECTION);
+ gGL.popMatrix();
+ gGL.matrixMode(LLRender::MM_MODELVIEW);
+ gGL.popMatrix();
avatar->mNeedsImpostorUpdate = FALSE;
avatar->cacheImpostorValues();
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 27ee2745b5..2815d736e4 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -72,7 +72,7 @@ BOOL compute_min_max(LLMatrix4& box, LLVector2& min, LLVector2& max); // Shouldn
bool LLRayAABB(const LLVector3 &center, const LLVector3 &size, const LLVector3& origin, const LLVector3& dir, LLVector3 &coord, F32 epsilon = 0);
BOOL setup_hud_matrices(); // use whole screen to render hud
BOOL setup_hud_matrices(const LLRect& screen_region); // specify portion of screen (in pixels) to render hud attachments from (for picking)
-glh::matrix4f glh_copy_matrix(GLdouble* src);
+glh::matrix4f glh_copy_matrix(F32* src);
glh::matrix4f glh_get_current_modelview();
void glh_set_current_modelview(const glh::matrix4f& mat);
glh::matrix4f glh_get_current_projection();
@@ -231,7 +231,7 @@ public:
void postSort(LLCamera& camera);
void forAllVisibleDrawables(void (*func)(LLDrawable*));
- void renderObjects(U32 type, U32 mask, BOOL texture = TRUE);
+ void renderObjects(U32 type, U32 mask, BOOL texture = TRUE, BOOL batch_texture = FALSE);
void renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture);
void grabReferences(LLCullResult& result);
@@ -248,7 +248,7 @@ public:
void renderGeomDeferred(LLCamera& camera);
void renderGeomPostDeferred(LLCamera& camera);
void renderGeomShadow(LLCamera& camera);
- void bindDeferredShader(LLGLSLShader& shader, U32 light_index = 0, LLRenderTarget* gi_source = NULL, LLRenderTarget* last_gi_post = NULL, U32 noise_map = 0xFFFFFFFF);
+ void bindDeferredShader(LLGLSLShader& shader, U32 light_index = 0, U32 noise_map = 0xFFFFFFFF);
void setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep);
void unbindDeferredShader(LLGLSLShader& shader);
@@ -262,7 +262,6 @@ public:
void renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera& camera, LLCullResult& result, BOOL use_shader = TRUE, BOOL use_occlusion = TRUE);
- void generateGI(LLCamera& camera, LLVector3& lightDir, std::vector<LLVector3>& vpc);
void renderHighlights();
void renderDebug();
void renderPhysicsDisplay();
@@ -360,7 +359,7 @@ public:
static BOOL getRenderHighlights(void* data);
static void updateRenderDeferred();
- static void refreshRenderDeferred();
+ static void refreshCachedSettings();
static void throttleNewMemoryAllocation(BOOL disable);
@@ -408,7 +407,6 @@ public:
RENDER_TYPE_PASS_ALPHA = LLRenderPass::PASS_ALPHA,
RENDER_TYPE_PASS_ALPHA_MASK = LLRenderPass::PASS_ALPHA_MASK,
RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK = LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK,
- RENDER_TYPE_PASS_ALPHA_SHADOW = LLRenderPass::PASS_ALPHA_SHADOW,
// Following are object types (only used in drawable mRenderType)
RENDER_TYPE_HUD = LLRenderPass::NUM_RENDER_TYPES,
RENDER_TYPE_VOLUME,
@@ -438,7 +436,7 @@ public:
RENDER_DEBUG_VERIFY = 0x0000002,
RENDER_DEBUG_BBOXES = 0x0000004,
RENDER_DEBUG_OCTREE = 0x0000008,
- RENDER_DEBUG_PICKING = 0x0000010,
+ RENDER_DEBUG_WIND_VECTORS = 0x0000010,
RENDER_DEBUG_OCCLUSION = 0x0000020,
RENDER_DEBUG_POINTS = 0x0000040,
RENDER_DEBUG_TEXTURE_PRIORITY = 0x0000080,
@@ -531,15 +529,16 @@ public:
LLRenderTarget mScreen;
LLRenderTarget mUIScreen;
LLRenderTarget mDeferredScreen;
+ LLRenderTarget mFXAABuffer;
LLRenderTarget mEdgeMap;
LLRenderTarget mDeferredDepth;
- LLRenderTarget mDeferredLight[3];
- LLRenderTarget mGIMap;
- LLRenderTarget mGIMapPost[2];
- LLRenderTarget mLuminanceMap;
+ LLRenderTarget mDeferredLight;
LLRenderTarget mHighlight;
LLRenderTarget mPhysicsDisplay;
+ //utility buffer for rendering post effects, gets abused by renderDeferredLighting
+ LLPointer<LLVertexBuffer> mDeferredVB;
+
//sun shadow map
LLRenderTarget mShadow[6];
std::vector<LLVector3> mShadowFrustPoints[4];
@@ -585,6 +584,7 @@ public:
LLColor4 mSunDiffuse;
LLVector3 mSunDir;
+ LLVector3 mTransformedSunDir;
BOOL mInitialized;
BOOL mVertexShadersEnabled;
@@ -770,6 +770,81 @@ public:
//debug use
static U32 sCurRenderPoolType ;
+
+ //cached settings
+ static BOOL WindLightUseAtmosShaders;
+ static BOOL VertexShaderEnable;
+ static BOOL RenderAvatarVP;
+ static BOOL RenderDeferred;
+ static F32 RenderDeferredSunWash;
+ static U32 RenderFSAASamples;
+ static U32 RenderResolutionDivisor;
+ static BOOL RenderUIBuffer;
+ static S32 RenderShadowDetail;
+ static BOOL RenderDeferredSSAO;
+ static F32 RenderShadowResolutionScale;
+ static BOOL RenderLocalLights;
+ static BOOL RenderDelayCreation;
+ static BOOL RenderAnimateRes;
+ static BOOL FreezeTime;
+ static S32 DebugBeaconLineWidth;
+ static F32 RenderHighlightBrightness;
+ static LLColor4 RenderHighlightColor;
+ static F32 RenderHighlightThickness;
+ static BOOL RenderSpotLightsInNondeferred;
+ static LLColor4 PreviewAmbientColor;
+ static LLColor4 PreviewDiffuse0;
+ static LLColor4 PreviewSpecular0;
+ static LLColor4 PreviewDiffuse1;
+ static LLColor4 PreviewSpecular1;
+ static LLColor4 PreviewDiffuse2;
+ static LLColor4 PreviewSpecular2;
+ static LLVector3 PreviewDirection0;
+ static LLVector3 PreviewDirection1;
+ static LLVector3 PreviewDirection2;
+ static F32 RenderGlowMinLuminance;
+ static F32 RenderGlowMaxExtractAlpha;
+ static F32 RenderGlowWarmthAmount;
+ static LLVector3 RenderGlowLumWeights;
+ static LLVector3 RenderGlowWarmthWeights;
+ static S32 RenderGlowResolutionPow;
+ static S32 RenderGlowIterations;
+ static F32 RenderGlowWidth;
+ static F32 RenderGlowStrength;
+ static BOOL RenderDepthOfField;
+ static F32 CameraFocusTransitionTime;
+ static F32 CameraFNumber;
+ static F32 CameraFocalLength;
+ static F32 CameraFieldOfView;
+ static F32 RenderShadowNoise;
+ static F32 RenderShadowBlurSize;
+ static F32 RenderSSAOScale;
+ static U32 RenderSSAOMaxScale;
+ static F32 RenderSSAOFactor;
+ static LLVector3 RenderSSAOEffect;
+ static F32 RenderShadowOffsetError;
+ static F32 RenderShadowBiasError;
+ static F32 RenderShadowOffset;
+ static F32 RenderShadowBias;
+ static F32 RenderSpotShadowOffset;
+ static F32 RenderSpotShadowBias;
+ static F32 RenderEdgeDepthCutoff;
+ static F32 RenderEdgeNormCutoff;
+ static LLVector3 RenderShadowGaussian;
+ static F32 RenderShadowBlurDistFactor;
+ static BOOL RenderDeferredAtmospheric;
+ static S32 RenderReflectionDetail;
+ static F32 RenderHighlightFadeTime;
+ static LLVector3 RenderShadowClipPlanes;
+ static LLVector3 RenderShadowOrthoClipPlanes;
+ static LLVector3 RenderShadowNearDist;
+ static F32 RenderFarClip;
+ static LLVector3 RenderShadowSplitExponent;
+ static F32 RenderShadowErrorCutoff;
+ static F32 RenderShadowFOVCutoff;
+ static BOOL CameraOffset;
+ static F32 CameraMaxCoF;
+ static F32 CameraDoFResScale;
};
void render_bbox(const LLVector3 &min, const LLVector3 &max);
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index b5cc949ebf..8baaa14595 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -795,6 +795,10 @@
<color
name="DirectChatColor"
reference="LtOrange" />
+
+ <color
+ name="ToolbarDropZoneColor"
+ value=".48 .69 1 .5" />
<!-- Generic color names (legacy) -->
<color
diff --git a/indra/newview/skins/default/textures/arrow_keys.png b/indra/newview/skins/default/textures/arrow_keys.png
deleted file mode 100644
index f19af59251..0000000000
--- a/indra/newview/skins/default/textures/arrow_keys.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.png b/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.png
deleted file mode 100644
index b5781718ec..0000000000
--- a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/CameraView_Press.png b/indra/newview/skins/default/textures/bottomtray/CameraView_Press.png
deleted file mode 100644
index 5a9346fd39..0000000000
--- a/indra/newview/skins/default/textures/bottomtray/CameraView_Press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png
deleted file mode 100644
index 20fa40e127..0000000000
--- a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png
deleted file mode 100644
index f1420e0002..0000000000
--- a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png
deleted file mode 100644
index 89a6269edc..0000000000
--- a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.png
new file mode 100644
index 0000000000..857fa1e047
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.png
new file mode 100644
index 0000000000..453bb53673
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.png
new file mode 100644
index 0000000000..135a66ca0d
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.png
new file mode 100644
index 0000000000..a63aec5e6d
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.png
new file mode 100644
index 0000000000..1719eb3e84
--- /dev/null
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/checkerboard_transparency_bg.png b/indra/newview/skins/default/textures/checkerboard_transparency_bg.png
deleted file mode 100644
index 9a16935204..0000000000
--- a/indra/newview/skins/default/textures/checkerboard_transparency_bg.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/circle.tga b/indra/newview/skins/default/textures/circle.tga
deleted file mode 100644
index d7097e3a35..0000000000
--- a/indra/newview/skins/default/textures/circle.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.png
deleted file mode 100644
index e47f913db1..0000000000
--- a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.png
deleted file mode 100644
index e2c67de9c0..0000000000
--- a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Over.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Over.png
deleted file mode 100644
index 295cd89a57..0000000000
--- a/indra/newview/skins/default/textures/containers/TabTop_Left_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Over.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Over.png
deleted file mode 100644
index 0758cbcf0d..0000000000
--- a/indra/newview/skins/default/textures/containers/TabTop_Middle_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Over.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Over.png
deleted file mode 100644
index c2cbc2b1e5..0000000000
--- a/indra/newview/skins/default/textures/containers/TabTop_Right_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icn_label_web.tga b/indra/newview/skins/default/textures/icn_label_web.tga
deleted file mode 100644
index 7c9131dfff..0000000000
--- a/indra/newview/skins/default/textures/icn_label_web.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icn_media.tga b/indra/newview/skins/default/textures/icn_media.tga
deleted file mode 100644
index 43dd342c9d..0000000000
--- a/indra/newview/skins/default/textures/icn_media.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icn_voice-groupfocus.tga b/indra/newview/skins/default/textures/icn_voice-groupfocus.tga
deleted file mode 100644
index 9f48d4609d..0000000000
--- a/indra/newview/skins/default/textures/icn_voice-groupfocus.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icn_voice-localchat.tga b/indra/newview/skins/default/textures/icn_voice-localchat.tga
deleted file mode 100644
index 7cf267eaf5..0000000000
--- a/indra/newview/skins/default/textures/icn_voice-localchat.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icn_voice-pvtfocus.tga b/indra/newview/skins/default/textures/icn_voice-pvtfocus.tga
deleted file mode 100644
index abadb09aaf..0000000000
--- a/indra/newview/skins/default/textures/icn_voice-pvtfocus.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icon_day_cycle.tga b/indra/newview/skins/default/textures/icon_day_cycle.tga
deleted file mode 100644
index 2d5dee1e94..0000000000
--- a/indra/newview/skins/default/textures/icon_day_cycle.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icon_event_adult.tga b/indra/newview/skins/default/textures/icon_event_adult.tga
deleted file mode 100644
index f548126e5a..0000000000
--- a/indra/newview/skins/default/textures/icon_event_adult.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icon_lock.tga b/indra/newview/skins/default/textures/icon_lock.tga
deleted file mode 100644
index 23521aa113..0000000000
--- a/indra/newview/skins/default/textures/icon_lock.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/AddItem_Over.png b/indra/newview/skins/default/textures/icons/AddItem_Over.png
deleted file mode 100644
index cad6e8d52f..0000000000
--- a/indra/newview/skins/default/textures/icons/AddItem_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/BackArrow_Over.png b/indra/newview/skins/default/textures/icons/BackArrow_Over.png
deleted file mode 100644
index b36e03a8cf..0000000000
--- a/indra/newview/skins/default/textures/icons/BackArrow_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/DragHandle.png b/indra/newview/skins/default/textures/icons/DragHandle.png
deleted file mode 100644
index c3cbc07a33..0000000000
--- a/indra/newview/skins/default/textures/icons/DragHandle.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Generic_Object.png b/indra/newview/skins/default/textures/icons/Generic_Object.png
deleted file mode 100644
index e3a80b2aef..0000000000
--- a/indra/newview/skins/default/textures/icons/Generic_Object.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Gift.png b/indra/newview/skins/default/textures/icons/Inv_Gift.png
deleted file mode 100644
index 5afe85d72d..0000000000
--- a/indra/newview/skins/default/textures/icons/Inv_Gift.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Over.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Over.png
deleted file mode 100644
index fcabd4c6d3..0000000000
--- a/indra/newview/skins/default/textures/icons/OptionsMenu_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.png b/indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.png
deleted file mode 100644
index 0e60b417b0..0000000000
--- a/indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png b/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png
deleted file mode 100644
index d72f02f708..0000000000
--- a/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.png b/indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.png
deleted file mode 100644
index f82354959e..0000000000
--- a/indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Over.png b/indra/newview/skins/default/textures/icons/TrashItem_Over.png
deleted file mode 100644
index 1a0eea6c67..0000000000
--- a/indra/newview/skins/default/textures/icons/TrashItem_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/parcel_color_EVRY.png b/indra/newview/skins/default/textures/icons/parcel_color_EVRY.png
deleted file mode 100644
index b5508423eb..0000000000
--- a/indra/newview/skins/default/textures/icons/parcel_color_EVRY.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/parcel_color_EXP.png b/indra/newview/skins/default/textures/icons/parcel_color_EXP.png
deleted file mode 100644
index 4813d37198..0000000000
--- a/indra/newview/skins/default/textures/icons/parcel_color_EXP.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/parcel_color_M.png b/indra/newview/skins/default/textures/icons/parcel_color_M.png
deleted file mode 100644
index 41984c43e4..0000000000
--- a/indra/newview/skins/default/textures/icons/parcel_color_M.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/image_edit_icon.tga b/indra/newview/skins/default/textures/image_edit_icon.tga
deleted file mode 100644
index 8666f0bbe6..0000000000
--- a/indra/newview/skins/default/textures/image_edit_icon.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/inv_folder_animation.tga b/indra/newview/skins/default/textures/inv_folder_animation.tga
deleted file mode 100644
index 1b4df7a2d8..0000000000
--- a/indra/newview/skins/default/textures/inv_folder_animation.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/inv_folder_inbox.tga b/indra/newview/skins/default/textures/inv_folder_inbox.tga
deleted file mode 100644
index 04539c2cc4..0000000000
--- a/indra/newview/skins/default/textures/inv_folder_inbox.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/map_avatar_above_8.tga b/indra/newview/skins/default/textures/map_avatar_above_8.tga
deleted file mode 100644
index 193428e530..0000000000
--- a/indra/newview/skins/default/textures/map_avatar_above_8.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/map_avatar_below_8.tga b/indra/newview/skins/default/textures/map_avatar_below_8.tga
deleted file mode 100644
index 9e14bfab90..0000000000
--- a/indra/newview/skins/default/textures/map_avatar_below_8.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/map_event_adult.tga b/indra/newview/skins/default/textures/map_event_adult.tga
deleted file mode 100644
index f548126e5a..0000000000
--- a/indra/newview/skins/default/textures/map_event_adult.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/map_event_mature.tga b/indra/newview/skins/default/textures/map_event_mature.tga
deleted file mode 100644
index 71067c0dfd..0000000000
--- a/indra/newview/skins/default/textures/map_event_mature.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/map_track_8.tga b/indra/newview/skins/default/textures/map_track_8.tga
deleted file mode 100644
index 53425ff45b..0000000000
--- a/indra/newview/skins/default/textures/map_track_8.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/divider_line.png b/indra/newview/skins/default/textures/model_wizard/divider_line.png
deleted file mode 100644
index 76c9e68767..0000000000
--- a/indra/newview/skins/default/textures/model_wizard/divider_line.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/mute_icon.tga b/indra/newview/skins/default/textures/mute_icon.tga
deleted file mode 100644
index 879b9e6188..0000000000
--- a/indra/newview/skins/default/textures/mute_icon.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Left_Over.png b/indra/newview/skins/default/textures/navbar/Arrow_Left_Over.png
deleted file mode 100644
index a91b74819f..0000000000
--- a/indra/newview/skins/default/textures/navbar/Arrow_Left_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Right_Over.png b/indra/newview/skins/default/textures/navbar/Arrow_Right_Over.png
deleted file mode 100644
index a2caf227a7..0000000000
--- a/indra/newview/skins/default/textures/navbar/Arrow_Right_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Help_Over.png b/indra/newview/skins/default/textures/navbar/Help_Over.png
deleted file mode 100644
index b9bc0d0f87..0000000000
--- a/indra/newview/skins/default/textures/navbar/Help_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Home_Over.png b/indra/newview/skins/default/textures/navbar/Home_Over.png
deleted file mode 100644
index d9c6b3842e..0000000000
--- a/indra/newview/skins/default/textures/navbar/Home_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.png
new file mode 100644
index 0000000000..b93e5791a7
--- /dev/null
+++ b/indra/newview/skins/default/textures/navbar/separator.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/places_rating_adult.tga b/indra/newview/skins/default/textures/places_rating_adult.tga
deleted file mode 100644
index c344fb1e78..0000000000
--- a/indra/newview/skins/default/textures/places_rating_adult.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/places_rating_mature.tga b/indra/newview/skins/default/textures/places_rating_mature.tga
deleted file mode 100644
index 61c879bc92..0000000000
--- a/indra/newview/skins/default/textures/places_rating_mature.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/places_rating_pg.tga b/indra/newview/skins/default/textures/places_rating_pg.tga
deleted file mode 100644
index 7805dbce60..0000000000
--- a/indra/newview/skins/default/textures/places_rating_pg.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/propertyline.tga b/indra/newview/skins/default/textures/propertyline.tga
deleted file mode 100644
index 0c504eea71..0000000000
--- a/indra/newview/skins/default/textures/propertyline.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/avatar_free_mode.png b/indra/newview/skins/default/textures/quick_tips/avatar_free_mode.png
deleted file mode 100644
index be7c87efb6..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/avatar_free_mode.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_free_mode.png b/indra/newview/skins/default/textures/quick_tips/camera_free_mode.png
deleted file mode 100644
index 9a3f3703b2..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/camera_free_mode.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.png b/indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.png
deleted file mode 100644
index dd72cc0162..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_pan_mode.png b/indra/newview/skins/default/textures/quick_tips/camera_pan_mode.png
deleted file mode 100644
index b537dcbe46..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/camera_pan_mode.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.png b/indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.png
deleted file mode 100644
index 7674a75ac3..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.png b/indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.png
deleted file mode 100644
index 9c9b923a5a..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.png b/indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.png
deleted file mode 100644
index 15c3053491..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_fly_first.png b/indra/newview/skins/default/textures/quick_tips/move_fly_first.png
deleted file mode 100644
index b6e2ce60e4..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/move_fly_first.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_fly_second.png b/indra/newview/skins/default/textures/quick_tips/move_fly_second.png
deleted file mode 100644
index 84b63cc338..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/move_fly_second.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_run_first.png b/indra/newview/skins/default/textures/quick_tips/move_run_first.png
deleted file mode 100644
index 16093dc683..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/move_run_first.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_run_second.png b/indra/newview/skins/default/textures/quick_tips/move_run_second.png
deleted file mode 100644
index 19fa43ec32..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/move_run_second.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_walk_first.png b/indra/newview/skins/default/textures/quick_tips/move_walk_first.png
deleted file mode 100644
index 92d120d53e..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/move_walk_first.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_walk_second.png b/indra/newview/skins/default/textures/quick_tips/move_walk_second.png
deleted file mode 100644
index f8e28722be..0000000000
--- a/indra/newview/skins/default/textures/quick_tips/move_walk_second.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/show_btn.tga b/indra/newview/skins/default/textures/show_btn.tga
deleted file mode 100644
index 5f05f377e3..0000000000
--- a/indra/newview/skins/default/textures/show_btn.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/show_btn_selected.tga b/indra/newview/skins/default/textures/show_btn_selected.tga
deleted file mode 100644
index 00a2f34a37..0000000000
--- a/indra/newview/skins/default/textures/show_btn_selected.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/smicon_warn.tga b/indra/newview/skins/default/textures/smicon_warn.tga
deleted file mode 100644
index 90ccaa07e5..0000000000
--- a/indra/newview/skins/default/textures/smicon_warn.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/snapshot_download.png b/indra/newview/skins/default/textures/snapshot_download.png
new file mode 100644
index 0000000000..6aa1abded5
--- /dev/null
+++ b/indra/newview/skins/default/textures/snapshot_download.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/snapshot_email.png b/indra/newview/skins/default/textures/snapshot_email.png
new file mode 100644
index 0000000000..dee784a9bf
--- /dev/null
+++ b/indra/newview/skins/default/textures/snapshot_email.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/spacer35.tga b/indra/newview/skins/default/textures/spacer35.tga
deleted file mode 100644
index b88bc6680a..0000000000
--- a/indra/newview/skins/default/textures/spacer35.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/square_btn_32x128.tga b/indra/newview/skins/default/textures/square_btn_32x128.tga
deleted file mode 100644
index d7ce58dac3..0000000000
--- a/indra/newview/skins/default/textures/square_btn_32x128.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/square_btn_selected_32x128.tga b/indra/newview/skins/default/textures/square_btn_selected_32x128.tga
deleted file mode 100644
index 59ca365aa4..0000000000
--- a/indra/newview/skins/default/textures/square_btn_selected_32x128.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/startup_logo.j2c b/indra/newview/skins/default/textures/startup_logo.j2c
deleted file mode 100644
index d1b991f17f..0000000000
--- a/indra/newview/skins/default/textures/startup_logo.j2c
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/status_busy.tga b/indra/newview/skins/default/textures/status_busy.tga
deleted file mode 100644
index 7743d9c7bb..0000000000
--- a/indra/newview/skins/default/textures/status_busy.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.png
deleted file mode 100644
index 0b91abfb0d..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.png
deleted file mode 100644
index 33a47236a5..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.png
deleted file mode 100644
index 421f5e1705..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.png
deleted file mode 100644
index 905d4c973e..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.png
deleted file mode 100644
index 909f0d0a47..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.png
deleted file mode 100644
index cc505c4a30..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png
deleted file mode 100644
index 8e0fb9661e..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.png
deleted file mode 100644
index d4ac451c8e..0000000000
--- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 68f456bec3..8702ebde2a 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -39,7 +39,7 @@ with the same filename but different name
<texture name="Accordion_Over" file_name="containers/Accordion_Over.png" preload="false" />
<texture name="Accordion_Selected" file_name="containers/Accordion_Selected.png" preload="false" />
-<texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
+ <texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
<texture name="AddItem_Disabled" file_name="icons/AddItem_Disabled.png" preload="false" />
<texture name="AddItem_Off" file_name="icons/AddItem_Off.png" preload="false" />
@@ -48,9 +48,6 @@ with the same filename but different name
<texture name="Arrow_Left_Off" file_name="navbar/Arrow_Left_Off.png" preload="true" />
<texture name="Arrow_Right_Off" file_name="navbar/Arrow_Right_Off.png" preload="true" />
-<!--
--->
-
<texture name="Arrow_Small_Up" file_name="widgets/Arrow_Small_Up.png" preload="true" />
<texture name="Arrow_Small_Left" file_name="widgets/Arrow_Small_Left.png" preload="true" />
<texture name="Arrow_Small_Right" file_name="widgets/Arrow_Small_Right.png" preload="true" />
@@ -125,10 +122,38 @@ with the same filename but different name
<texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
<texture name="Check_Mark" file_name="icons/check_mark.png" preload="true" />
+ <texture name="Command_AboutLand_Icon" file_name="toolbar_icons/land.png" preload="true" />
+ <texture name="Command_Appearance_Icon" file_name="toolbar_icons/appearance.png" preload="true" />
+ <texture name="Command_Avatar_Icon" file_name="toolbar_icons/avatars.png" preload="true" />
+ <texture name="Command_Build_Icon" file_name="toolbar_icons/build.png" preload="true" />
+ <texture name="Command_Chat_Icon" file_name="toolbar_icons/chat.png" preload="true" />
+ <texture name="Command_Compass_Icon" file_name="toolbar_icons/land.png" preload="true" />
+ <texture name="Command_Destinations_Icon" file_name="toolbar_icons/destinations.png" preload="true" />
+ <texture name="Command_Gestures_Icon" file_name="toolbar_icons/gestures.png" preload="true" />
+ <texture name="Command_HowTo_Icon" file_name="toolbar_icons/howto.png" preload="true" />
+ <texture name="Command_Inventory_Icon" file_name="toolbar_icons/inventory.png" preload="true" />
+ <texture name="Command_Map_Icon" file_name="toolbar_icons/map.png" preload="true" />
+ <texture name="Command_Marketplace_Icon" file_name="toolbar_icons/marketplace.png" preload="true" />
+ <texture name="Command_MiniCart_Icon" file_name="toolbar_icons/mini_cart.png" preload="true" />
+ <texture name="Command_MiniMap_Icon" file_name="toolbar_icons/mini_map.png" preload="true" />
+ <texture name="Command_Move_Icon" file_name="toolbar_icons/move.png" preload="true" />
+ <texture name="Command_People_Icon" file_name="toolbar_icons/people.png" preload="true" />
+ <texture name="Command_Picks_Icon" file_name="toolbar_icons/picks.png" preload="true" />
+ <texture name="Command_Places_Icon" file_name="toolbar_icons/places.png" preload="true" />
+ <texture name="Command_Preferences_Icon" file_name="toolbar_icons/preferences.png" preload="true" />
+ <texture name="Command_Profile_Icon" file_name="toolbar_icons/profile.png" preload="true" />
+ <texture name="Command_Search_Icon" file_name="toolbar_icons/search.png" preload="true" />
+ <texture name="Command_Snapshot_Icon" file_name="toolbar_icons/snapshot.png" preload="true" />
+ <texture name="Command_Speak_Icon" file_name="toolbar_icons/speak.png" preload="true" />
+ <texture name="Command_View_Icon" file_name="toolbar_icons/view.png" preload="true" />
+ <texture name="Command_Voice_Icon" file_name="toolbar_icons/nearbyvoice.png" preload="true" />
+ <texture name="Caret_Bottom_Icon" file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
+ <texture name="Caret_Right_Icon" file_name="toolbar_icons/caret_right.png" preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
+ <texture name="Caret_Left_Icon" file_name="toolbar_icons/caret_left.png" preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
+
<texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
@@ -161,6 +186,10 @@ with the same filename but different name
<texture name="Flag" file_name="navbar/Flag.png" preload="false" />
+ <texture name="Flyout_Left" file_name="windows/Flyout_Left.png" preload="false" />
+ <texture name="Flyout_Pointer" file_name="windows/Flyout_Pointer.png" preload="false" />
+ <texture name="Flyout_Right" file_name="windows/Flyout_Right.png" preload="false" />
+
<texture name="Folder_Arrow" file_name="folder_arrow.tga" preload="false" />
<texture name="ForSale_Badge" file_name="icons/ForSale_Badge.png" preload="false" />
<texture name="ForwardArrow_Off" file_name="icons/ForwardArrow_Off.png" preload="false" />
@@ -432,6 +461,7 @@ with the same filename but different name
<texture name="PushButton_Off" file_name="widgets/PushButton_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_On" file_name="widgets/PushButton_On.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_On_Selected" file_name="widgets/PushButton_On_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+ <texture name="PushButton_Over" file_name="widgets/PushButton_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Press" file_name="widgets/PushButton_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Selected" file_name="widgets/PushButton_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Selected_Press" file_name="widgets/PushButton_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
@@ -449,7 +479,11 @@ with the same filename but different name
<texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" />
- <texture name="Rounded_Rect" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="24" scale.right="58" scale.bottom="6" />
+ <texture name="Rounded_Rect" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="26" scale.right="58" scale.bottom="6" />
+ <texture name="Rounded_Rect_Top" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="8" scale.right="58" scale.bottom="0" clip.left="0" clip.right="64" clip.bottom="16" clip.top="32" />
+ <texture name="Rounded_Rect_Bottom" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="16" scale.right="58" scale.bottom="8" clip.left="0" clip.right="64" clip.bottom="0" clip.top="16" />
+ <texture name="Rounded_Rect_Left" file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="26" scale.right="32" scale.bottom="6" clip.left="0" clip.right="32" clip.bottom="0" clip.top="32" />
+ <texture name="Rounded_Rect_Right" file_name="Rounded_Rect.png" preload="true" scale.left="0" scale.top="26" scale.right="26" scale.bottom="6" clip.left="32" clip.right="64" clip.bottom="0" clip.top="32" />
<texture name="Rounded_Square" file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" />
<texture name="Row_Selection" file_name="navbar/Row_Selection.png" preload="false" />
@@ -513,6 +547,10 @@ with the same filename but different name
<texture name="Unknown_Icon" file_name="icons/unknown_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_Download" file_name="snapshot_download.png" preload="false" />
+ <texture name="Snapshot_Email" file_name="snapshot_email.png" preload="false" />
+ <texture name="Snapshot_Inventory" file_name="toolbar_icons/inventory.png" preload="false" />
+ <texture name="Snapshot_Profile" file_name="toolbar_icons/profile.png" preload="false" />
<texture name="startup_logo" file_name="windows/startup_logo.png" preload="true" />
@@ -534,21 +572,13 @@ with the same filename but different name
<texture name="Sync_Progress_5" file_name="icons/Sync_Progress_5.png" preload="true" />
<texture name="Sync_Progress_6" file_name="icons/Sync_Progress_6.png" preload="true" />
- <texture name="TabIcon_Appearance_Off" file_name="taskpanel/TabIcon_Appearance_Off.png" preload="false" />
- <texture name="TabIcon_Appearance_Selected" file_name="taskpanel/TabIcon_Appearance_Selected.png" preload="false" />
<texture name="TabIcon_Close_Off" file_name="taskpanel/TabIcon_Close_Off.png" preload="false" />
- <texture name="TabIcon_Home_Off" file_name="taskpanel/TabIcon_Home_Off.png" preload="false" />
<texture name="TabIcon_Home_Selected" file_name="taskpanel/TabIcon_Home_Selected.png" preload="false" />
<texture name="TabIcon_Me_Off" file_name="taskpanel/TabIcon_Me_Off.png" preload="false" />
- <texture name="TabIcon_Me_Selected" file_name="taskpanel/TabIcon_Me_Selected.png" preload="false" />
<texture name="TabIcon_Open_Off" file_name="taskpanel/TabIcon_Open_Off.png" preload="false" />
<texture name="TabIcon_People_Off" file_name="taskpanel/TabIcon_People_Off.png" preload="false" />
- <texture name="TabIcon_People_Selected" file_name="taskpanel/TabIcon_People_Selected.png" preload="false" />
- <texture name="TabIcon_Places_Large" file_name="taskpanel/TabIcon_Places_Large.png" preload="false" />
<texture name="TabIcon_Places_Off" file_name="taskpanel/TabIcon_Places_Off.png" preload="false" />
- <texture name="TabIcon_Places_Selected" file_name="taskpanel/TabIcon_Places_Selected.png" preload="false" />
<texture name="TabIcon_Things_Off" file_name="taskpanel/TabIcon_Things_Off.png" preload="false" />
- <texture name="TabIcon_Things_Selected" file_name="taskpanel/TabIcon_Things_Selected.png" preload="false" />
<texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
<texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
@@ -612,6 +642,12 @@ with the same filename but different name
<texture name="VoicePTT_Lvl3" file_name="bottomtray/VoicePTT_Lvl3.png" preload="false" />
<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="VoicePTT_Lvl1_Dark" file_name="bottomtray/VoicePTT_Lvl1_Dark.png" preload="false" />
+ <texture name="VoicePTT_Lvl2_Dark" file_name="bottomtray/VoicePTT_Lvl2_Dark.png" preload="false" />
+ <texture name="VoicePTT_Lvl3_Dark" file_name="bottomtray/VoicePTT_Lvl3_Dark.png" preload="false" />
+ <texture name="VoicePTT_Off_Dark" file_name="bottomtray/VoicePTT_Off_Dark.png" preload="false" />
+ <texture name="VoicePTT_On_Dark" file_name="bottomtray/VoicePTT_On_Dark.png" preload="false" />
<texture name="Wearables_Divider" file_name="windows/Wearables_Divider.png" preload="false" />
@@ -644,9 +680,6 @@ with the same filename but different name
<!--WARNING OLD ART BELOW *do not use*-->
<texture name="icn_media_web.tga" preload="true" />
<texture name="icn_media_movie.tga" preload="true" />
- <texture name="icn_voice-localchat.tga" />
- <texture name="icn_voice-groupfocus.tga" />
- <texture name="icn_voice-pvtfocus.tga" />
<texture name="jump_left_out.tga" file_name="widgets/jump_left_out.png" />
<texture name="jump_left_in.tga" file_name="widgets/jump_left_in.png" />
@@ -680,7 +713,6 @@ with the same filename but different name
<texture name="icon_avatar_offline.tga" />
<texture name="icon_avatar_online.tga" />
- <texture name="icon_day_cycle.tga" />
<texture name="icon_diurnal.tga" />
<texture name="icon_for_sale.tga" file_name="icons/Icon_For_Sale.png" />
<texture name="icon_top_pick.tga" />
@@ -697,7 +729,6 @@ with the same filename but different name
<texture name="map_avatar_16.tga" />
<texture name="map_avatar_8.tga" />
<texture name="map_event.tga" />
- <texture name="map_event_mature.tga" />
<texture name="map_home.tga" />
<texture name="map_infohub.tga" />
<texture name="map_telehub.tga" />
@@ -737,4 +768,5 @@ with the same filename but different name
<texture name="Yellow_Gradient" file_name="windows/yellow_gradient.png"/>
<texture name="Popup_Caution" file_name="icons/pop_up_caution.png"/>
<texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/>
+ <texture name="NavBar Separator" file_name="navbar/separator.png"/>
</textures>
diff --git a/indra/newview/skins/default/textures/toolbar_icons/appearance.png b/indra/newview/skins/default/textures/toolbar_icons/appearance.png
new file mode 100644
index 0000000000..e6b1365388
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/appearance.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/avatars.png b/indra/newview/skins/default/textures/toolbar_icons/avatars.png
new file mode 100644
index 0000000000..8fa0600cee
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/avatars.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/build.png b/indra/newview/skins/default/textures/toolbar_icons/build.png
new file mode 100644
index 0000000000..e21ab3f0e4
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/build.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
new file mode 100644
index 0000000000..5f6a01eaa1
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
new file mode 100644
index 0000000000..0b8090314c
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
new file mode 100644
index 0000000000..044751560f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/chat.png b/indra/newview/skins/default/textures/toolbar_icons/chat.png
new file mode 100644
index 0000000000..e0dbac495f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/chat.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/destinations.png b/indra/newview/skins/default/textures/toolbar_icons/destinations.png
new file mode 100644
index 0000000000..e2325f083a
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/destinations.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/gestures.png b/indra/newview/skins/default/textures/toolbar_icons/gestures.png
new file mode 100644
index 0000000000..2404bb4e25
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/gestures.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/howto.png b/indra/newview/skins/default/textures/toolbar_icons/howto.png
new file mode 100644
index 0000000000..8594d71113
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/howto.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/inventory.png b/indra/newview/skins/default/textures/toolbar_icons/inventory.png
new file mode 100644
index 0000000000..ab3191255e
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/inventory.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/land.png b/indra/newview/skins/default/textures/toolbar_icons/land.png
new file mode 100644
index 0000000000..89ea7604a4
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/land.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/map.png b/indra/newview/skins/default/textures/toolbar_icons/map.png
new file mode 100644
index 0000000000..ed1049b7db
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/map.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/marketplace.png b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png
new file mode 100644
index 0000000000..62bad20be6
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
new file mode 100644
index 0000000000..9fcf46794d
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_map.png b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png
new file mode 100644
index 0000000000..ab0a654056
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/move.png b/indra/newview/skins/default/textures/toolbar_icons/move.png
new file mode 100644
index 0000000000..5c2ced7375
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/move.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
new file mode 100644
index 0000000000..77a7cd5f44
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/people.png b/indra/newview/skins/default/textures/toolbar_icons/people.png
new file mode 100644
index 0000000000..7228ae8e2f
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/people.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/picks.png b/indra/newview/skins/default/textures/toolbar_icons/picks.png
new file mode 100644
index 0000000000..befda04b42
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/picks.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/places.png b/indra/newview/skins/default/textures/toolbar_icons/places.png
new file mode 100644
index 0000000000..97d9fa066c
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/places.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/preferences.png b/indra/newview/skins/default/textures/toolbar_icons/preferences.png
new file mode 100644
index 0000000000..4ccd7b8ae1
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/preferences.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/profile.png b/indra/newview/skins/default/textures/toolbar_icons/profile.png
new file mode 100644
index 0000000000..32fe2bf8ac
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/profile.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/search.png b/indra/newview/skins/default/textures/toolbar_icons/search.png
new file mode 100644
index 0000000000..bcb11e950d
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/search.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/snapshot.png b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png
new file mode 100644
index 0000000000..d26da9b1d2
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/speak.png b/indra/newview/skins/default/textures/toolbar_icons/speak.png
new file mode 100644
index 0000000000..10cd354c5c
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/speak.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/view.png b/indra/newview/skins/default/textures/toolbar_icons/view.png
new file mode 100644
index 0000000000..ddf0df7c26
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/view.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On_Over.png b/indra/newview/skins/default/textures/widgets/Checkbox_On_Over.png
deleted file mode 100644
index bc504d130e..0000000000
--- a/indra/newview/skins/default/textures/widgets/Checkbox_On_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Over.png b/indra/newview/skins/default/textures/widgets/Checkbox_Over.png
deleted file mode 100644
index 5a7162addf..0000000000
--- a/indra/newview/skins/default/textures/widgets/Checkbox_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png b/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png
deleted file mode 100644
index fd1d11dd0b..0000000000
--- a/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.png b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.png
deleted file mode 100644
index 45bcb0464e..0000000000
--- a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.png b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.png
deleted file mode 100644
index dabbd85b34..0000000000
--- a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_On_Over.png
deleted file mode 100644
index 064a4c4f7f..0000000000
--- a/indra/newview/skins/default/textures/widgets/PushButton_On_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.png
deleted file mode 100644
index 064a4c4f7f..0000000000
--- a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On_Over.png b/indra/newview/skins/default/textures/widgets/RadioButton_On_Over.png
deleted file mode 100644
index 3e7d803a28..0000000000
--- a/indra/newview/skins/default/textures/widgets/RadioButton_On_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Over.png b/indra/newview/skins/default/textures/widgets/RadioButton_Over.png
deleted file mode 100644
index a5c8cbe293..0000000000
--- a/indra/newview/skins/default/textures/widgets/RadioButton_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.png
deleted file mode 100644
index 605d159eaa..0000000000
--- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.png
deleted file mode 100644
index c79547dffd..0000000000
--- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.png
deleted file mode 100644
index e353542ad9..0000000000
--- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.png
deleted file mode 100644
index dd2fceb716..0000000000
--- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.png
deleted file mode 100644
index cf78ea3924..0000000000
--- a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.png
deleted file mode 100644
index 53587197da..0000000000
--- a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.png
deleted file mode 100644
index 7afb9c99c3..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.png
deleted file mode 100644
index 77c4224539..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.png
deleted file mode 100644
index 8b93dd551e..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.png
deleted file mode 100644
index 3f207cbea2..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.png
deleted file mode 100644
index 220df9db25..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.png
deleted file mode 100644
index 5bbcdcb0b4..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.png
deleted file mode 100644
index dde367f05e..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.png
deleted file mode 100644
index d4f30b9adb..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.png
deleted file mode 100644
index 5bbcdcb0b4..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.png
deleted file mode 100644
index 467c43fc90..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.png
deleted file mode 100644
index 2049736897..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.png
deleted file mode 100644
index 2049736897..0000000000
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Over.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Over.png
deleted file mode 100644
index b6f900d3bd..0000000000
--- a/indra/newview/skins/default/textures/widgets/SliderThumb_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Over.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Over.png
deleted file mode 100644
index 01e0a2d9f1..0000000000
--- a/indra/newview/skins/default/textures/widgets/Stepper_Down_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Over.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Over.png
deleted file mode 100644
index 2ce84ea5be..0000000000
--- a/indra/newview/skins/default/textures/widgets/Stepper_Up_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout.png b/indra/newview/skins/default/textures/windows/Flyout.png
deleted file mode 100644
index 5596b194c9..0000000000
--- a/indra/newview/skins/default/textures/windows/Flyout.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Left.png b/indra/newview/skins/default/textures/windows/Flyout_Left.png
new file mode 100644
index 0000000000..6ac9fe2efd
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/Flyout_Left.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png b/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png
deleted file mode 100644
index 361fab59e0..0000000000
--- a/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Right.png b/indra/newview/skins/default/textures/windows/Flyout_Right.png
new file mode 100644
index 0000000000..aa1f0625aa
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/Flyout_Right.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png
deleted file mode 100644
index 67bd399358..0000000000
--- a/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Undock_Press.png b/indra/newview/skins/default/textures/windows/Icon_Undock_Press.png
deleted file mode 100644
index 3ab8c3666a..0000000000
--- a/indra/newview/skins/default/textures/windows/Icon_Undock_Press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml
index 0ccaab73ba..fc8bc33096 100644
--- a/indra/newview/skins/default/xui/da/floater_about.xml
+++ b/indra/newview/skins/default/xui/da/floater_about.xml
@@ -10,7 +10,7 @@
<floater.string name="AboutPosition">
Du er ved [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] i regionen [REGION] lokaliseret ved &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]
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 ec47b2f445..3c0428b2b0 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
@@ -46,7 +46,7 @@
L$ [AMT]
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
</text>
<text name="exchange_rate_note">
Indtast beløbet for at se nyeste valutakurs.
diff --git a/indra/newview/skins/default/xui/da/floater_camera.xml b/indra/newview/skins/default/xui/da/floater_camera.xml
index 5b7ef6db54..b5d5e8bc08 100644
--- a/indra/newview/skins/default/xui/da/floater_camera.xml
+++ b/indra/newview/skins/default/xui/da/floater_camera.xml
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Flyt kamera op og ned, til venstre og højre
</floater.string>
- <floater.string name="camera_modes_title">
- Kamera valg
- </floater.string>
- <floater.string name="pan_mode_title">
- Kredsløb zoom panorering
- </floater.string>
- <floater.string name="presets_mode_title">
- Forvalg
- </floater.string>
<floater.string name="free_mode_title">
Se objekt
</floater.string>
diff --git a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
index bd17224259..76bc40edac 100644
--- a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="CHAT NÆRVED">
- <check_box label="Oversæt chat (håndteret af Google)" name="translate_chat_checkbox"/>
+ <check_box label="Oversæt chat" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index 3ccdfc036a..cf6f1ccdd9 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -438,7 +438,7 @@ Tilbyd venskab til [NAME]?
</form>
</notification>
<notification name="RemoveFromFriends">
- Ønsker du at fjerne [NAME] fra din venneliste?
+ Ønsker du at fjerne &lt;nolink&gt;[NAME]&lt;/nolink&gt; fra din venneliste?
</notification>
<notification name="ConfirmItemDeleteHasLinks">
Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere. Det anbefales kraftigt at fjerne lænkninger først.
@@ -1023,10 +1023,10 @@ Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokati
Erstattet manglende tøj/kropsdele med standard.
</notification>
<notification name="FriendOnline">
- [NAME] er logget på
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; er logget på
</notification>
<notification name="FriendOffline">
- [NAME] er logget af
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; er logget af
</notification>
<notification name="AddSelfFriend">
Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
@@ -1404,10 +1404,10 @@ Prøv igen om lidt.
(Som udgangspunkt, vil du være i stand til at se den andens online status)
</notification>
<notification name="FriendshipAccepted">
- [NAME] accepterede dit tilbud om venskab.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; accepterede dit tilbud om venskab.
</notification>
<notification name="FriendshipDeclined">
- [NAME] afviste dit tilbud om venskab.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; afviste dit tilbud om venskab.
</notification>
<notification name="FriendshipAcceptedByMe">
Tilbud om venskab accepteret.
diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml
deleted file mode 100644
index 94da58389f..0000000000
--- a/indra/newview/skins/default/xui/da/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="no_partner_text" value="Ingen"/>
- <string name="no_group_text" value="Ingen"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Brugernavn
- </text>
- <text name="name_descr_text">
- Visningsnavn
- </text>
- <button label="Profil" name="see_profile_btn" tool_tip="Se profil for denne avatar"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_notes.xml b/indra/newview/skins/default/xui/da/panel_notes.xml
deleted file mode 100644
index 7d8097f6ff..0000000000
--- a/indra/newview/skins/default/xui/da/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Noter &amp; Privatliv" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_panel">
- <text name="status_message" value="Min private noter:"/>
- <text name="status_message2" value="Tillad denne person at:"/>
- <check_box label="Se min online status" name="status_check"/>
- <check_box label="Se mig på kortet" name="map_check"/>
- <check_box label="Editére, slette og tage mine objekter" name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboer"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Åben session med personlige beskeder"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Kort" name="show_on_map_btn" tool_tip="Vis denne beboer på kortet"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
index 19c82509cd..890a3038ef 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
<spinner label="Tid før chatvisning forsvinder:" name="nearby_toasts_fadingtime"/>
<check_box name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Benyt maskinel oversættelse ved chat (håndteret af Google)
+ Benyt maskinel oversættelse ved chat
</text>
<text name="translate_language_text" width="110">
Oversæt chat til :
@@ -51,7 +51,7 @@
<combo_box.item label="Русский (Russisk)" name="Russian"/>
<combo_box.item label="Türkçe (Tyrkisk)" name="Turkish"/>
<combo_box.item label="Українська (Ukrainsk)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (Kinesisk)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Kinesisk)" name="Chinese"/>
<combo_box.item label="日本語 (Japansk)" name="Japanese"/>
<combo_box.item label="한국어 (Koreansk)" name="Korean"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml
deleted file mode 100644
index db85eb23a8..0000000000
--- a/indra/newview/skins/default/xui/da/panel_profile.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="no_partner_text" value="Ingen"/>
- <string name="no_group_text" value="Ingen"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="Real World:"/>
- </panel>
- <text name="title_member_text" value="Beboer siden:"/>
- <text name="title_acc_status_text" value="Konto status:"/>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text initial_value="(henter)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Grupper:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboeren"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="Personlig besked" name="im" tool_tip="Åben session med personlig besked"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Betal eller del beholdning med denne beboer"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/>
- </layout_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
deleted file mode 100644
index e6e8ca4d10..0000000000
--- a/indra/newview/skins/default/xui/da/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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 name="display_name_label" value="Visningsnavn:"/>
- <text name="solo_username_label" value="Brugernavn:"/>
- <text name="status" value="Online"/>
- <text name="user_name_small" value="Se på mig med dette enormt ekstremt super lange navn"/>
- <button name="copy_to_clipboard" tool_tip="Kopiér til udskriftsholder"/>
- <text name="user_label" value="Brugernavn:"/>
- <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/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 165d47c931..11d100eeff 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -560,6 +560,9 @@ Prøv venligst om lidt igen.
<string name="mesh">
mesh
</string>
+ <string name="AvatarEditingAppearance">
+ (Redigering Udseende)
+ </string>
<string name="AvatarAway">
Væk
</string>
diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml
index 071aab46f4..0d89fae986 100644
--- a/indra/newview/skins/default/xui/da/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/da/teleport_strings.xml
@@ -20,6 +20,10 @@ Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for a
Beklager, systemet kunne ikke fuldføre teleport forbindelse.
Prøv igen om lidt.
</message>
+ <message name="NoHelpIslandTP">
+ Du kan ikke teleportere tilbage til Welcome Island.
+Gå til &apos;Welcome Island Puclic&apos; for at prøve tutorial igen.
+ </message>
<message name="noaccess_tport">
Beklager, du har ikke adgang til denne teleport destination.
</message>
diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml
index 519efe9ce8..145cc1e30b 100644
--- a/indra/newview/skins/default/xui/de/floater_about.xml
+++ b/indra/newview/skins/default/xui/de/floater_about.xml
@@ -10,7 +10,7 @@
<floater.string name="AboutPosition">
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]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU: [CPU]
@@ -37,6 +37,9 @@ Voice-Serverversion: [VOICE_VERSION]
<floater.string name="AboutTraffic">
Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Fehler beim Abrufen der URL für die Server-Versionshinweise.
+ </floater.string>
<tab_container name="about_tab">
<panel label="Info" name="support_panel">
<button label="In Zwischenablage kopieren" name="copy_btn"/>
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 c65dc5f41d..3cf3a16247 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -214,19 +214,19 @@ werden.
Objektbonusfaktor in Region: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Prim-Verwendung:
+ Regionskapazität:
</text>
<text name="objects_available">
[COUNT] von [MAX] ([AVAILABLE] verfügbar)
</text>
<text name="Primitives parcel supports:">
- Von Parzelle unterstützte Prims:
+ Parzellenlandkapazität:
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- Prims auf Parzelle:
+ Parzellenlandauswirkung:
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/de/floater_avatar.xml b/indra/newview/skins/default/xui/de/floater_avatar.xml
new file mode 100644
index 0000000000..1470c4bcd6
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="AVATAR-AUSWAHL"/>
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 38321b7906..e766b622f7 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
@@ -46,7 +46,7 @@
[AMT] L$
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE Zahlungsart] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE Währung] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE Umtauschrate]
+ [http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE Zahlungsart] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE Währung]
</text>
<text name="exchange_rate_note">
Geben Sie den Betrag erneut ein, um die aktuellste Umtauschrate anzuzeigen.
diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml
index d49c207f98..7e9ebdb643 100644
--- a/indra/newview/skins/default/xui/de/floater_camera.xml
+++ b/indra/newview/skins/default/xui/de/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="ANSICHT">
<floater.string name="rotate_tooltip">
Kamera um Fokus drehen
</floater.string>
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Kamera nach oben, unten, links und rechts bewegen
</floater.string>
- <floater.string name="camera_modes_title">
- Kameramodi
- </floater.string>
- <floater.string name="pan_mode_title">
- Kreisen - Zoomen - Schwenken
- </floater.string>
- <floater.string name="presets_mode_title">
- Ansichten
- </floater.string>
<floater.string name="free_mode_title">
Objekt ansehen
</floater.string>
diff --git a/indra/newview/skins/default/xui/de/floater_chat_bar.xml b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
new file mode 100644
index 0000000000..dc5a7cd681
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="CHAT IN DER NÄHE">
+ <panel>
+ <line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabetaste zum Sprechen, Strg+Eingabe zum Rufen"/>
+ <button name="show_nearby_chat" tool_tip="Chatprotokoll in der Nähe ein-/ausblenden"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_destinations.xml b/indra/newview/skins/default/xui/de/floater_destinations.xml
new file mode 100644
index 0000000000..57881488fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="ZIELE"/>
diff --git a/indra/newview/skins/default/xui/de/floater_fast_timers.xml b/indra/newview/skins/default/xui/de/floater_fast_timers.xml
new file mode 100644
index 0000000000..e61e542688
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Pause
+ </string>
+ <string name="run">
+ Rennen
+ </string>
+ <button label="Pause" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_how_to.xml b/indra/newview/skins/default/xui/de/floater_how_to.xml
new file mode 100644
index 0000000000..caea221f83
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="INFOS"/>
diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml
index f6d9db8d53..c4c42af66d 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" title="">
+<floater name="Map" title="MINIKARTE">
<floater.string name="ToolTipMsg">
[REGION](Doppelklicken, um Karte zu öffnen; Umschalt-Taste gedrückt halten und ziehen, um zu schwenken)
</floater.string>
@@ -7,7 +7,7 @@
[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)
</floater.string>
<floater.string name="mini_map_caption">
- MINI-KARTE
+ Minikarte
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml
index 330893c326..7f6cd9944f 100644
--- a/indra/newview/skins/default/xui/de/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Modell hochladen">
- <string name="status_idle">
- Inaktiv
- </string>
+<floater name="Model Preview" title="MODELL HOCHLADEN">
+ <string name="status_idle"/>
<string name="status_parse_error">
- DAE-Parsing-Fehler. Details siehe Protokoll.
+ Fehler: Fehler beim DAE-Parsen – Details siehe Protokoll.
</string>
<string name="status_reading_file">
Laden...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
Erforderliche Detailstufe fehlt.
</string>
+ <string name="mesh_status_invalid_material_list">
+ Detailstufenmaterial ist keine Teilmenge des Referenzmodells.
+ </string>
<string name="layer_all">
Alle
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
noch nicht festgelegt
</string>
- <text name="name_label">
- Name:
- </text>
- <text name="lod_label">
- Vorschau:
- </text>
- <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
- <combo_item name="high">
- Detailstufe: Hoch
- </combo_item>
- <combo_item name="medium">
- Detailstufe: Mittel
- </combo_item>
- <combo_item name="low">
- Detailstufe: Niedrig
- </combo_item>
- <combo_item name="lowest">
- Detailstufe: Niedrigste
- </combo_item>
- </combo_box>
- <text name="warning_title">
- ACHTUNG:
- </text>
- <text name="warning_message">
- Sie können dieses Modell nicht auf die Second Life-Server hochladen. [[VURL] Weitere Infos], wie Sie das Hochladen von Netzmodellen freischalten können.
- </text>
- <text name="weights_text">
- Herunterladen:
-Physik:
-Server:
-
-Prim-Äquivalenz:
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="Detailstufe" name="lod_panel">
- <text name="lod_table_header">
- Detailstufe auswählen
- </text>
- <text name="high_label" value="Hoch"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="Mittel"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="Niedrig"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="Niedrigste"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- Detailstufe: [DETAIL]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="Aus Datei laden" name="lod_from_file"/>
- <radio_item label="Automatisch generieren" name="lod_auto_generate"/>
- <radio_item label="Keine" name="lod_none"/>
- </radio_group>
- <button label="Durchsuchen..." name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- Dreiecklimit
- </combo_item>
- <combo_item name="error_threshold">
- Fehlerschwelle
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- Konstruktionsoperator:
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Modellname:
</text>
- <text name="queue_mode_text">
- Warteschlangenmodus:
+ <text name="model_category_label">
+ Dieses Modell repräsentiert...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- Kantenkollaps
- </combo_item>
- <combo_item name="half_edge_collapse">
- Halbkantenkollaps
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- Strikt
- </combo_item>
- <combo_item name="lazy">
- Locker
- </combo_item>
- <combo_item name="independent">
- Unabhängig
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="Eine auswählen..." name="Choose one"/>
+ <combo_item label="Avatarform" name="Avatar shape"/>
+ <combo_item label="Avatar-Anhang" name="Avatar attachment"/>
+ <combo_item label="Mobile Objekte (Fahrzeug, Tier)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Baukomponenten" name="Building Component"/>
+ <combo_item label="Groß, unbeweglich usw." name="Large, non moving etc"/>
+ <combo_item label="Kleiner, unbeweglich usw." name="Smaller, non-moving etc"/>
+ <combo_item label="Keine der oben genannten" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- Grenzenmodus:
- </text>
- <text name="share_tolderance_text">
- Sharetoleranz:
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- Freigeben
- </combo_item>
- <combo_item name="border_lock">
- Sperren
- </combo_item>
- </combo_box>
- <text name="crease_label">
- Knitterwinkel:
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="Physik" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="Datei:" name="physics_load_from_file"/>
- <radio_item label="Detailstufe verwenden:" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="Detailstufe für physische Form">
- <combo_item name="physics_lowest">
- Niedrigste
- </combo_item>
- <combo_item name="physics_low">
- Niedrig
- </combo_item>
- <combo_item name="physics_medium">
- Mittel
- </combo_item>
- <combo_item name="physics_high">
- Hoch
- </combo_item>
- </combo_box>
- <button label="Durchsuchen..." name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="Detailstufe" name="lod_panel" title="Detailstufe">
+ <text initial_value="Quelle" name="source" value="Quelle"/>
+ <text initial_value="Dreiecke" name="triangles" value="Dreiecke"/>
+ <text initial_value="Scheitelpunkte" name="vertices" value="Scheitelpunkte"/>
+ <text initial_value="Hoch" name="high_label" value="Hoch"/>
+ <button label="Durchsuchen..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Mittel" name="medium_label" value="Mittel"/>
+ <button label="Durchsuchen..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Niedrig" name="low_label" value="Niedrig"/>
+ <button label="Durchsuchen..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Niedrigste" name="lowest_label" value="Niedrigste"/>
+ <button label="Durchsuchen..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Normalen generieren" name="gen_normals"/>
+ <text initial_value="Knitterwinkel:" name="crease_label" value="Knitterwinkel:"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="Glätten:" name="Smooth"/>
- <check_box label="Löcher schließen (langsam)" name="Close Holes (Slow)"/>
- <button label="Analysieren" name="Decompose"/>
- <button label="Abbrechen" name="decompose_cancel"/>
+ <panel label="Physik" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Schritt 1: Detailstufe
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Detailstufe für Physikform">
+ <combo_item name="choose_one">
+ Eine auswählen...
+ </combo_item>
+ <combo_item name="physics_high">
+ Hoch
+ </combo_item>
+ <combo_item name="physics_medium">
+ Mittel
+ </combo_item>
+ <combo_item name="physics_low">
+ Niedrig
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Niedrigste
+ </combo_item>
+ <combo_item name="load_from_file">
+ Aus Datei
+ </combo_item>
+ </combo_box>
+ <button label="Durchsuchen..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Schritt 2: Analyse
+ </text>
+ <text name="analysis_method_label">
+ Methode:
+ </text>
+ <text name="quality_label">
+ Qualität:
+ </text>
+ <text name="smooth_method_label">
+ Glätten:
+ </text>
+ <check_box label="Löcher schließen" name="Close Holes (Slow)"/>
+ <button label="Analysieren" name="Decompose"/>
+ <button label="Abbrechen" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Schritt 3: Vereinfachen
+ </text>
+ <text name="simp_method_header">
+ Methode:
+ </text>
+ <text name="pass_method_header">
+ Durchläufe:
+ </text>
+ <text name="Detail Scale label">
+ Detailskalierung:
+ </text>
+ <text name="Retain%_label">
+ Beibehalten:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Vereinfachen" name="Simplify"/>
+ <button label="Abbrechen" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Ergebnisse:
+ </text>
+ <text name="physics_triangles">
+ Dreiecke: [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Scheitelpunkte: [POINTS],
+ </text>
+ <text name="physics_hulls">
+ Hüllen: [HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="Durchläufe:" name="Combine Quality"/>
- <slider label="Detailskala:" name="Detail Scale"/>
- <slider label="Beibehalten:" name="Retain%"/>
- <button label="Vereinfachen" name="Simplify"/>
- <button label="Abbrechen" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="Vorschaudehnung:" name="physics_explode"/>
- <text name="physics_triangles">
- Dreiecke: [TRIANGLES]
+ <panel label="Hochladeoptionen" name="modifiers_panel">
+ <text name="scale_label">
+ Skalierung (1=keine Skalierung):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Dimensionen:
</text>
- <text name="physics_points">
- Vertices: [POINTS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- Hüllen: [HULLS]
+ <check_box label="Texturen einschließen" name="upload_textures"/>
+ <text name="include_label">
+ Nur für Avatarmodelle:
</text>
+ <check_box label="Skingewicht einschließen" name="upload_skin"/>
+ <check_box label="Gelenkpositionen einschließen" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Z-Offset (Avatar anheben oder senken):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="Modifizierer" name="modifiers_panel">
- <spinner name="import_scale" value="1,0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Gewichte und Gebühr berechnen" name="calculate_btn" tool_tip="Gewichte und Gebühr berechnen"/>
+ <button label="Abbrechen" name="cancel_btn"/>
+ <button label="Hochladen" name="ok_btn" tool_tip="Auf Simulator hochladen"/>
+ <button label="Einstellungen löschen und Formular zurücksetzen" name="reset_btn"/>
+ <text name="upload_fee">
+ Gebühr für Hochladen: [FEE] L$
+ </text>
+ <text name="prim_weight">
+ Auswirkung auf Land: [EQ]
+ </text>
+ <text name="download_weight">
+ Herunterladen: [ST]
+ </text>
+ <text name="physics_weight">
+ Physik: [PH]
+ </text>
+ <text name="server_weight">
+ Server: [SIM]
+ </text>
+ <text name="warning_title">
+ HINWEIS:
+ </text>
+ <text name="warning_message">
+ Sie haben keine Berechtigung zum Hochladen von Netzmodellen. [[VURL] Weitere Infos], wie Sie sich zertifizieren lassen können.
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="Texturen" name="upload_textures"/>
- <check_box label="Skingewicht" name="upload_skin"/>
- <check_box label="Gelenkpositionen" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0,0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- Gebühr für Hochladen: [FEE] L$
+ </panel>
+ <text name="lod_label">
+ Vorschau:
</text>
- <button label="Auf Standardwerte setzen" name="reset_btn" tool_tip="Auf Standardwerte setzen"/>
- <button label="Gewichte und Gebühr berechnen" name="calculate_btn" tool_tip="Gewichte und Gebühr berechnen"/>
- <button label="Hochladen" name="ok_btn" tool_tip="An Simulator hochladen"/>
- <button label="Abbrechen" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
+ <combo_item name="high">
+ Hoch
+ </combo_item>
+ <combo_item name="medium">
+ Mittel
+ </combo_item>
+ <combo_item name="low">
+ Niedrig
+ </combo_item>
+ <combo_item name="lowest">
+ Niedrigste
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Anzeige...
+ </text>
+ <check_box label="Kanten" name="show_edges"/>
+ <check_box label="Physik" name="show_physics"/>
+ <check_box label="Texturen" name="show_textures"/>
+ <check_box label="Skingewichte" name="show_skin_weight"/>
+ <check_box label="Gelenke" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Vorschaudehnung:
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_model_wizard.xml b/indra/newview/skins/default/xui/de/floater_model_wizard.xml
index 7103757b40..354a505901 100644
--- a/indra/newview/skins/default/xui/de/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/de/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. Optimieren" name="optimize_btn"/>
<button label="1. Datei auswählen" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Modelldatei auswählen
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
Fortgeschrittene Benutzer: Wenn Sie bereits mit Tools zur Erstellung von 3D-Inhalten vertraut sind, können Sie den erweiterten Uploader verwenden.
</text>
<button label="Auf Erweitert wechseln" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
Hochzuladende Modelldatei auswählen
</text>
<button label="Durchsuchen..." label_selected="Durchsuchen..." name="browse"/>
- <text name="support_collada_text">
- Second Life unterstützt COLLADA-Dateien (.dae).
- </text>
- <text name="dimensions_label">
- Abmessungen (m):
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Modell optimieren
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
Wir haben das Modell auf Leistung optimiert. Sie können es bei Bedarf weiter anpassen.
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- Detailstufe generieren
- </text>
+ <panel name="content">
<text name="high_detail_text">
Detailstufe generieren: Hoch
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- Leistung
- </text>
- <text name="optimize_faster_rendering_text">
- Schnellere Darstellung
-Weniger Details
-Niedrigeres Prim-Gewicht
- </text>
- <text name="optimize_accuracy_text">
- Genauigkeit
- </text>
- <text name="optimize_slower_rendering_text">
- Langsamere Darstellung
-Mehr Details
-Höheres Prim-Gewicht
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="Geometrie neu berechnen" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
Geometrievorschau
</text>
<combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
Viel Details
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
Mittlere Details
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
Wenig Details
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
Wenigste Details
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Physik anpassen
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
Wir erstellen eine Form für die Außenhülle des Modells. Passen Sie die Detailstufe der Form wie für den beabsichtigten Zweck erforderlich an.
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- Leistung
- </text>
- <text name="physics_faster_rendering_text">
- Schnellere Darstellung
-Weniger Details
-Niedrigeres Prim-Gewicht
- </text>
- <text name="physics_accuracy_text">
- Genauigkeit
- </text>
- <text name="physics_slower_dendering_text">
- Langsamere Darstellung
-Mehr Details
-Höheres Prim-Gewicht
- </text>
- <text name="physics_example_1">
- Beispiele:
-Mobile Objekte
-Fliegende Objekte
-Fahrzeuge
- </text>
- <text name="physics_example_2">
- Beispiele:
-Kleine statische Objekte
-Objekte mit weniger Details
-Einfache Möbel
- </text>
- <text name="physics_example_3">
- Beispiele:
-Statische Objekte
-Objekte mit viel Details
-Gebäude
- </text>
+ <panel name="content">
<button label="Physik neu berechnen" name="recalculate_physics_btn"/>
<button label="Neu berechnen..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
Physikvorschau
</text>
<combo_box name="preview_lod_combo2" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
Viel Details
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
Mittlere Details
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
Wenig Details
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
Wenigste Details
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Überprüfen
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
Auswirkung auf Parzelle/Region: Prim-Äquivalenzwert [EQUIV]
</text>
@@ -193,8 +125,8 @@ Gebäude
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Upload abgeschlossen
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml
index 4333392582..e8cc77c038 100644
--- a/indra/newview/skins/default/xui/de/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/de/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="BEWEGEN">
<string name="walk_forward_tooltip">
Vorwärts gehen (Nach-oben-Pfeil oder W drücken)
</string>
@@ -58,14 +58,14 @@
Fliegen
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E&quot; drücken"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/>
<joystick_slide name="move left btn" tool_tip="Nach links gehen (Umschalt + Links-Pfeil oder A drücken)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C&quot; drücken"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/>
<joystick_slide name="move right btn" tool_tip="Nach rechts fliegen (Umschalt + Rechts-Pfeil oder D drücken)"/>
<joystick_turn name="forward btn" tool_tip="Vorwärts gehen (Nach-oben-Pfeil oder W drücken)"/>
<joystick_turn name="backward btn" tool_tip="Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E&quot; drücken"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C&quot; drücken"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="Gehen"/>
diff --git a/indra/newview/skins/default/xui/de/floater_my_appearance.xml b/indra/newview/skins/default/xui/de/floater_my_appearance.xml
new file mode 100644
index 0000000000..e26b2434cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="AUSSEHEN">
+ <panel label="Aussehen bearbeiten" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_my_inventory.xml b/indra/newview/skins/default/xui/de/floater_my_inventory.xml
new file mode 100644
index 0000000000..0cfa17562e
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTAR"/>
diff --git a/indra/newview/skins/default/xui/de/floater_nearby_chat.xml b/indra/newview/skins/default/xui/de/floater_nearby_chat.xml
index bbb4114200..2aabbb18f2 100644
--- a/indra/newview/skins/default/xui/de/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/de/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="CHAT IN DER NÄHE">
- <check_box label="Chat übersetzen (Service von Google)" name="translate_chat_checkbox"/>
+ <check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_object_weights.xml b/indra/newview/skins/default/xui/de/floater_object_weights.xml
new file mode 100644
index 0000000000..e6641d3d18
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="ERWEITERT">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="AUSGEWÄHLT"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Objekte"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Primitive"/>
+ <text name="weights_of_selected_text" value="GEWICHT DER AUSGEWÄHLTEN"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Herunterladen"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Physik"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Server"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Anzeige"/>
+ <text name="land_impacts_text" value="AUSWIRKUNGEN AUF LAND"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Ausgewählt"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Auf Land gerezzt"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Verbleibende Kapazität"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Gesamtkapazität"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights Was ist das?...]"/>
+</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 8c110e5516..7481e6d4b7 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,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Outfit speichern">
+<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:">
diff --git a/indra/newview/skins/default/xui/de/floater_people.xml b/indra/newview/skins/default/xui/de/floater_people.xml
new file mode 100644
index 0000000000..fd1db148ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="LEUTE">
+ <panel_container name="main_panel">
+ <panel label="Gruppenprofil" name="panel_group_info_sidetray"/>
+ <panel label="Blockierte Einwohner und Objekte" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_picks.xml b/indra/newview/skins/default/xui/de/floater_picks.xml
new file mode 100644
index 0000000000..2521920e83
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Auswahlen"/>
diff --git a/indra/newview/skins/default/xui/de/floater_places.xml b/indra/newview/skins/default/xui/de/floater_places.xml
new file mode 100644
index 0000000000..80a1490afd
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="ORTE">
+ <panel label="Orte" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml
index 7575ad9e2a..22ccb2c1a2 100644
--- a/indra/newview/skins/default/xui/de/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/de/floater_sound_devices.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Audiogeräte">
+<floater name="floater_sound_devices" title="SOUNDGERÄTE">
<text name="voice_label">
Voice-Chat
</text>
diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml
index 1eb2dd4288..f6dc9fe15d 100644
--- a/indra/newview/skins/default/xui/de/floater_stats.xml
+++ b/indra/newview/skins/default/xui/de/floater_stats.xml
@@ -10,8 +10,8 @@
</stat_view>
<stat_view label="Erweitert" name="advanced">
<stat_view label="Darstellung" name="render">
- <stat_bar label="Gezeichnete KTris" name="ktrisframe"/>
- <stat_bar label="Gezeichnete KTris" name="ktrissec"/>
+ <stat_bar label="Pro Frame gezeichnete KTris" name="ktrisframe"/>
+ <stat_bar label="Pro Sek. gezeichnete KTris" name="ktrissec"/>
<stat_bar label="Objektanzahl" name="objs"/>
<stat_bar label="Neue Objekte" name="newobjs"/>
</stat_view>
@@ -32,7 +32,7 @@
<stat_bar label="Ebenen" name="layerskbitstat"/>
<stat_bar label="Tatsächlicher Eingang" name="actualinkbitstat"/>
<stat_bar label="Tatsächlicher Ausgang" name="actualoutkbitstat"/>
- <stat_bar label="VFS Ausstehende Ops" name="vfspendingoperations"/>
+ <stat_bar label="Ausstehende Vorgänge im VFS" name="vfspendingoperations"/>
</stat_view>
</stat_view>
<stat_view label="Simulator" name="sim">
@@ -64,6 +64,14 @@
<stat_bar label="Agent-Zeit" name="simagentmsec"/>
<stat_bar label="Bilder-Zeit" name="simimagesmsec"/>
<stat_bar label="Skript-Zeit" name="simscriptmsec"/>
+ <stat_bar label="Verbleib. Zeit" name="simsparemsec"/>
+ <stat_view label="Zeitdetails (ms)" name="timedetails">
+ <stat_bar label="Physik-Schritt" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Phys. Formen aktualisieren" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Physik – andere" name="simsimphysicsothermsec"/>
+ <stat_bar label="Schlafzeit" name="simsleepmsec"/>
+ <stat_bar label="Pump IO" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 49b133e10f..cf1d03f32d 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -25,10 +25,10 @@
Klicken und ziehen, um Land auszuwählen
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] Objekte ([PRIM_COUNT] Prims [PE_STRING]) ausgewählt
+ [OBJ_COUNT] Objekte ausgewählt, Auswirkung auf Land [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , Prim-Äquivalenz [SEL_WEIGHT]
+ <floater.string name="status_remaining_capacity">
+ Verbleibende Kapazität [LAND_CAPACITY].
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Fokus"/>
<button label="" label_selected="" name="button move" tool_tip="Verschieben"/>
@@ -105,8 +105,8 @@
<text name="selection_empty">
Nichts ausgewählt.
</text>
- <text name="selection_weight">
- Physikgewicht [PHYS_WEIGHT], Darstellungskosten [DISP_WEIGHT].
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Weitere Infos]
</text>
<tab_container name="Object Info Tabs">
<panel label="Allgemein" name="General">
@@ -322,7 +322,6 @@
Naht
</text>
<combo_box name="sculpt type control">
- <combo_box.item label="(keiner)" name="None"/>
<combo_box.item label="Kugel" name="Sphere"/>
<combo_box.item label="Torus" name="Torus"/>
<combo_box.item label="Fläche" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/de/floater_toybox.xml b/indra/newview/skins/default/xui/de/floater_toybox.xml
new file mode 100644
index 0000000000..23ec9c2e58
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="SYMBOLLEISTEN ANPASSEN">
+ <text name="toybox label 1">
+ Sie können Schaltflächen durch Ziehen zu Symbolleisten hinzufügen oder daraus entfernen.
+ </text>
+ <text name="toybox label 2">
+ Je nach Einstellung erscheinen Schaltflächen wie dargestellt oder nur als Symbol.
+ </text>
+ <button label="Standards wiederherstellen" label_selected="Standards wiederherstellen" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
index c97852b6e7..18d53841b8 100644
--- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Voice-Steuerung">
+<floater name="floater_voice_controls" title="SPRACHSTEUERUNGEN">
<string name="title_nearby">
- VOICE IN DER NÄHE
+ Stimme in der Nähe
</string>
<string name="title_group">
Gruppengespräch mit [GROUP]
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index d85ca7ce4d..60fa8ff0d8 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -26,7 +26,7 @@ Hoch solln sie leben! Elche forever! Und auch Mungos!
<text name="group_cost">
Mitgliedschaft: 123 L$
</text>
- <button label="Zusammen" name="join_btn"/>
+ <button label="Beitreten" name="join_btn"/>
<button label="Verlassen" name="leave_btn"/>
<button label="Profil anzeigen" name="view_profile_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
index da36be59d0..cb0082f944 100644
--- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
@@ -8,7 +8,7 @@
<menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/>
<menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/>
<menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/>
- <menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/>
+ <menu_item_check label="Minikarten-Schaltfläche" name="ShowMiniMapButton"/>
<menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/>
<menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/>
<menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/>
diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
index 9acf96dc6d..33d55e85bd 100644
--- a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Navigations- und Favoritenleiste anzeigen" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
index d932234cd1..c90205fbe4 100644
--- a/indra/newview/skins/default/xui/de/menu_login.xml
+++ b/indra/newview/skins/default/xui/de/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="Ich" name="File">
- <menu_item_call label="Einstellungen" name="Preferences..."/>
+ <menu_item_call label="Einstellungen..." name="Preferences..."/>
<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
</menu>
<menu label="Hilfe" name="Help">
diff --git a/indra/newview/skins/default/xui/de/menu_toolbars.xml b/indra/newview/skins/default/xui/de/menu_toolbars.xml
new file mode 100644
index 0000000000..cfeae3deca
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Schaltflächen auswählen..." name="Chose Buttons"/>
+ <menu_item_check label="Symbole und Beschriftungen" name="icons_with_text"/>
+ <menu_item_check label="Nur Symbole" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 7c6918a4ee..e6135aa100 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="Ich" name="Me">
- <menu_item_call label="Einstellungen" name="Preferences"/>
- <menu_item_call label="Meine Startseite" name="Manage My Account">
+ <menu_item_call label="Dashboard..." name="Manage My Account">
<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/>
</menu_item_call>
- <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/>
- <menu_item_call label="Mein Profil" name="Profile"/>
- <menu_item_call label="Mein Aussehen" name="ChangeOutfit"/>
- <menu_item_check label="Mein Inventar" name="Inventory"/>
- <menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/>
- <menu_item_check label="Meine Gesten" name="Gestures"/>
- <menu_item_check label="Meine Stimme" name="ShowVoice"/>
+ <menu_item_call label="Profil..." name="Profile"/>
+ <menu_item_call label="Aussehen..." name="ChangeOutfit"/>
+ <menu_item_check label="Inventar..." name="Inventory"/>
+ <menu_item_check label="Gesten..." name="Gestures"/>
+ <menu_item_check label="Stimme..." name="ShowVoice"/>
<menu label="Bewegung" name="Movement">
<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
<menu_item_check label="Fliegen" name="Fly"/>
<menu_item_check label="Immer rennen" name="Always Run"/>
<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
</menu>
- <menu label="Mein Status" name="Status">
+ <menu label="Status" name="Status">
<menu_item_call label="Abwesend" name="Set Away"/>
<menu_item_call label="Beschäftigt" name="Set Busy"/>
</menu>
<menu_item_call label="Admin-Status anfordern" name="Request Admin Options"/>
<menu_item_call label="Admin-Status verlassen" name="Leave Admin Options"/>
+ <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/>
+ <menu_item_call label="Einstellungen..." name="Preferences"/>
+ <menu_item_call label="Symbolleisten..." name="Toolbars"/>
+ <menu_item_call label="Alle Steuerelemente ausblenden" name="Hide UI"/>
<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
</menu>
<menu label="Unterhalten" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="Hilfe" name="Help">
<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
- <menu_item_check label="Hinweise aktivieren" name="Enable Hints"/>
<menu_item_call label="Missbrauch melden" name="Report Abuse"/>
<menu_item_call label="Fehler melden" name="Report Bug"/>
<menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
<menu label="Performance Tools" name="Performance Tools">
<menu_item_call label="Lag-Anzeige" name="Lag Meter"/>
<menu_item_check label="Statistikleiste" name="Statistics Bar"/>
- <menu_item_check label="Avatar-Darstellungskosten anzeigen" name="Avatar Rendering Cost"/>
+ <menu_item_check label="Zuggewicht für Avatare anzeigen" name="Avatar Rendering Cost"/>
</menu>
<menu label="Hervorhebung und Sichtbarkeit" name="Highlighting and Visibility">
<menu_item_check label="Pulsierender Strahl" name="Cheesy Beacon"/>
@@ -289,6 +289,7 @@
<menu_item_check label="Lichter" name="Lights"/>
<menu_item_check label="Gelenkpunkte" name="Collision Skeleton"/>
<menu_item_check label="Raycast" name="Raycast"/>
+ <menu_item_check label="Komplexität beim Rendern" name="rendercomplexity"/>
<menu_item_check label="Formen" name="Sculpt"/>
</menu>
<menu label="Rendering" name="Rendering">
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 4c53c40d86..72e7ec8eb4 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -992,7 +992,7 @@ Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
</form>
</notification>
<notification name="RemoveFromFriends">
- Möchten Sie [NAME] aus Ihrer Freundesliste entfernen?
+ Möchten Sie &lt;nolink&gt;[NAME]&lt;/nolink&gt; aus Ihrer Freundesliste entfernen?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -1925,6 +1925,12 @@ Inventarobjekt(e) verschieben?
Wirklich beenden?
<usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ Möchten Sie wirklich Ihre Standardschaltflächen und -symbolleisten wiederherstellen?
+
+Diese Aktion kann nicht rückgängig gemacht werden.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="Vor dem Löschen von Objekten bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
@@ -2128,10 +2134,10 @@ Hierzu wird Ihr Webbrowser geöffnet.
Betreff: [SUBJECT], Nachricht: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] ist online
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; ist online
</notification>
<notification name="FriendOffline">
- [NAME] ist offline
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; ist offline
</notification>
<notification name="AddSelfFriend">
Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
@@ -2526,10 +2532,10 @@ Versuchen Sie es in einigen Minuten erneut.
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME] hat Ihr Freundschaftsangebot akzeptiert.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; hat Ihr Freundschaftsangebot akzeptiert.
</notification>
<notification name="FriendshipDeclined">
- [NAME] hat Ihr Freundschaftsangebot abgelehnt.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; hat Ihr Freundschaftsangebot abgelehnt.
</notification>
<notification name="FriendshipAcceptedByMe">
Ihr Freundschaftsangebot wurde angeommen.
@@ -3008,10 +3014,6 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti
<button name="cancel" text="Abbrechen"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- Zum Wechsel des Modus müssen Sie das Programm beenden und neu starten.
- <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
- </notification>
<notification label="" name="NoClassifieds">
Die Erstellung und Bearbeitung von Anzeigen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden.
<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
@@ -3056,6 +3058,10 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti
Die Suche ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln?
<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ Durch diese Aktion werden alle Menüelemente und Schaltflächen ausgeblendet. Um sie wieder anzuzeigen, klicken Sie erneut auf [SHORTCUT].
+ <usetemplate ignoretext="Vor Ausblenden der UI bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
Ihr Computer entspricht nicht den Hardwareanforderungen von [APP_NAME]. [APP_NAME] setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem.
diff --git a/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..bcc6772bb9
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Unterhaltungen"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Benachrichtigungen"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml
index 26b9812212..f49446fbbf 100644
--- a/indra/newview/skins/default/xui/de/panel_me.xml
+++ b/indra/newview/skins/default/xui/de/panel_me.xml
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mein Profil" name="panel_me">
- <tab_container name="tabs">
- <panel label="MEIN PROFIL" name="panel_profile"/>
- <panel label="MEINE AUSWAHL" name="panel_picks"/>
- </tab_container>
+ <panel label="MEINE AUSWAHLEN" name="panel_picks"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_my_profile.xml b/indra/newview/skins/default/xui/de/panel_my_profile.xml
deleted file mode 100644
index 89a4dfdaba..0000000000
--- a/indra/newview/skins/default/xui/de/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=de-DE
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=de
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
- <string name="no_partner_text" value="Keiner"/>
- <string name="no_group_text" value="Keiner"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Benutzername
- </text>
- <text name="name_descr_text">
- Anzeigename
- </text>
- <button label="Profil" name="see_profile_btn" tool_tip="Profil zu diesem Avatar anzeigen"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
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 ee1a543aac..53794b6619 100644
--- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort teleportieren"/>
- <pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/>
- <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
- <location_input label="Standort" name="location_combo"/>
- <search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche">
- <combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
- <label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
- Favoritenleiste
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Zum vorherigen Standort zurückgehen"/>
+ <pull_button name="forward_btn" tool_tip="Einen Standort weiter gehen"/>
+ <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
+ <location_input label="Standort" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Landmarken hierher ziehen für schnellen Zugriff auf Lieblingsorte in Second Life.">
+ <label name="favorites_bar_label" tool_tip="Landmarken hierher ziehen für schnellen Zugriff auf Lieblingsorte in Second Life.">
+ Favoritenleiste
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen">
+ Mehr ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</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
new file mode 100644
index 0000000000..2068c39024
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml
deleted file mode 100644
index ef1961b63d..0000000000
--- a/indra/newview/skins/default/xui/de/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notizen &amp; Privatsphäre" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_panel">
- <text name="status_message" value="Meine Notizen:"/>
- <text name="status_message2" value="Diese Person kann:"/>
- <check_box label="meinen Online-Status sehen." name="status_check"/>
- <check_box label="mich auf der Karte sehen." name="map_check"/>
- <check_box label="meine Objekte bearbeiten, löschen oder nehmen." name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Freund hinzufügen" name="add_friend" tool_tip="Dem Einwohner die Freundschaft anbieten"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</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 ca8af27f58..04f6c27330 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
<spinner label="Ein-/Ausblenddauer von Toasts für Chat in der Nähe:" name="nearby_toasts_fadingtime"/>
<check_box name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Beim Chatten Maschinenübersetzung verwenden (von Google bereitgestellt)
+ Beim Chatten Maschinenübersetzung verwenden
</text>
<text name="translate_language_text">
Chat übersetzen in:
@@ -51,7 +51,7 @@
<combo_box.item label="Русский (Russisch)" name="Russian"/>
<combo_box.item label="Türkçe (Türkisch)" name="Turkish"/>
<combo_box.item label="Українська (Ukrainisch)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (Chinesisch)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Chinesisch)" name="Chinese"/>
<combo_box.item label="日本語 (Japanisch)" name="Japanese"/>
<combo_box.item label="한국어 (Koreanisch)" name="Korean"/>
</combo_box>
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 79b2a544f9..979ccba48d 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -11,10 +11,12 @@
<combo_box.item label="Español (Spanisch) - Beta" name="Spanish"/>
<combo_box.item label="Français (Französisch) - Beta" name="French"/>
<combo_box.item label="Italiano (Italienisch) - Beta" name="Italian"/>
- <combo_box.item label="Nederlands (Niederländisch) - Beta" name="Dutch"/>
<combo_box.item label="Polski (Polnisch) - Beta" name="Polish"/>
<combo_box.item label="Português (Portugiesisch) - Beta" name="Portugese"/>
+ <combo_box.item label="Русский (Russisch) – Beta" name="Russian"/>
+ <combo_box.item label="Türkçe (Türkisch) – Beta" name="Turkish"/>
<combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (Traditionelles Chinesisch) – Beta" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(Erfordert Neustart)
@@ -49,7 +51,6 @@
<check_box label="Gruppentitel" name="show_all_title_checkbox1" tool_tip="Gruppentitel wie „Vorstand“ oder „Mitglied“"/>
<check_box label="Freunde hervorheben" name="show_friends" tool_tip="Avatarnamen Ihrer Freunde hervorheben"/>
<check_box label="Anzeigenamen anzeigen" name="display_names_check" tool_tip="Aktivieren Sie diese Option, um Anzeigenamen in Chat, IM, Avatarnamen usw. zu verwenden."/>
- <check_box label="Viewer-UI-Tipps aktivieren" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
Drücken von Buchstabentasten:
</text>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_move.xml b/indra/newview/skins/default/xui/de/panel_preferences_move.xml
index fb749a16d7..3e248f0bf0 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</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"/>
- <check_box initial_value="true" label="Seitenleiste" name="appearance_sidebar_positioning" tool_tip="Automatische Kameraposition für Seitenleiste verwenden"/>
+ <text name="keyboard_lbl">
+ Tastatur:
+ </text>
+ <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ Maus:
+ </text>
<check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
Mausempfindlichkeit für Mouselook:
</text>
<check_box label="Umkehren" name="invert_mouse"/>
- <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/>
- <check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/>
- <check_box label="Doppelklicken:" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="Teleportieren" name="radio_teleport"/>
- <radio_item label="Autopilot" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ Einmal auf Land klicken:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Keine Aktion" name="0"/>
+ <combo_box.item label="Zu angeklicktem Ort bewegen" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Auf Land doppelklicken:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Keine Aktion" name="0"/>
+ <combo_box.item label="Zu angeklicktem Ort bewegen" name="1"/>
+ <combo_box.item label="Zu angeklicktem Ort teleportieren" name="2"/>
+ </combo_box>
<button label="Andere Geräte" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
deleted file mode 100644
index b4c6e67108..0000000000
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=de-DE
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=de
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
- <string name="no_partner_text" value="Keiner"/>
- <string name="no_group_text" value="Keiner"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="Echtes Leben:"/>
- </panel>
- <text name="title_member_text" value="Einwohner seit:"/>
- <text name="title_acc_status_text" value="Kontostatus:"/>
- <text_editor name="acc_status_text">
- Einwohner. Keine Zahlungsinfo archiviert.
- Linden.
- </text_editor>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text initial_value="(wird in Datenbank gesucht)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Gruppen:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Freund hinzufügen" name="add_friend" tool_tip="Dem Einwohner die Freundschaft anbieten"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Dem Einwohner Geld geben oder Inventar an den Einwohner schicken"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml
deleted file mode 100644
index 7e93bd1ede..0000000000
--- a/indra/newview/skins/default/xui/de/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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 name="display_name_label" value="Anzeigename:"/>
- <text name="solo_username_label" value="Benutzername:"/>
- <text name="status" value="Online"/>
- <text name="user_name_small" value="Dieser Name ist ein ganz außerordentlich langer Name"/>
- <button name="copy_to_clipboard" tool_tip="In Zwischenablage kopieren"/>
- <text name="user_label" value="Benutzername:"/>
- <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"/>
- </tab_container>
-</panel>
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 e9de350ee7..d34fcf70bc 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -18,11 +18,8 @@
<panel name="balance_bg">
<text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="20 L$"/>
<button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
+ <button label="Einkaufen" name="goShop" tool_tip="Second Life-Marktplatz öffnen"/>
</panel>
- <combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basismodus: Second Life schnell und einfach erkunden und chatten. Erweiterter Modus: Zugriff auf zusätzliche Funktionen.">
- <combo_box.item label="Basismodus" name="Basic"/>
- <combo_box.item label="Erweiterter Modus" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
24:00 H PST
</text>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 435f3494b0..2929556d43 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -128,7 +128,7 @@
Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden. Bitte kontaktieren Sie Ihren Grid-Administrator.
</string>
<string name="LoginFailedNoNetwork">
- Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.
+ Netzwerkfehler: Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.
</string>
<string name="LoginFailed">
Anmeldung fehlgeschlagen
@@ -1276,6 +1276,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
<string name="Marketplace Error Internal Import">
Fehler: Bei diesem Artikel ist ein Problem aufgetreten. Versuchen Sie es später erneut.
</string>
+ <string name="Open landmarks">
+ Landmarken öffnen
+ </string>
<string name="no_transfer" value=" (kein Transferieren)"/>
<string name="no_modify" value=" (kein Bearbeiten)"/>
<string name="no_copy" value=" (kein Kopieren)"/>
@@ -4254,7 +4257,7 @@ Missbrauchsbericht
<string name="Female - Wow">
Weiblich - Wow
</string>
- <string name="/bow1">
+ <string name="/bow">
/verbeugen
</string>
<string name="/clap">
@@ -4767,4 +4770,172 @@ Setzen Sie den Editorpfad in Anführungszeichen
<string name="ParticleHiding">
Partikel werden ausgeblendet
</string>
+ <string name="Command_AboutLand_Label">
+ Landinformationen
+ </string>
+ <string name="Command_Appearance_Label">
+ Aussehen
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Bauen
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Compass_Label">
+ Kompass
+ </string>
+ <string name="Command_Destinations_Label">
+ Ziele
+ </string>
+ <string name="Command_Gestures_Label">
+ Gesten
+ </string>
+ <string name="Command_HowTo_Label">
+ Infos
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventar
+ </string>
+ <string name="Command_Map_Label">
+ Karte
+ </string>
+ <string name="Command_Marketplace_Label">
+ Marktplatz
+ </string>
+ <string name="Command_MiniMap_Label">
+ Minikarte
+ </string>
+ <string name="Command_Move_Label">
+ Bewegen
+ </string>
+ <string name="Command_People_Label">
+ Leute
+ </string>
+ <string name="Command_Picks_Label">
+ Auswahlen
+ </string>
+ <string name="Command_Places_Label">
+ Orte
+ </string>
+ <string name="Command_Preferences_Label">
+ Einstellungen
+ </string>
+ <string name="Command_Profile_Label">
+ Profil
+ </string>
+ <string name="Command_Search_Label">
+ Suchen
+ </string>
+ <string name="Command_Snapshot_Label">
+ Foto
+ </string>
+ <string name="Command_Speak_Label">
+ Sprechen
+ </string>
+ <string name="Command_View_Label">
+ Ansicht
+ </string>
+ <string name="Command_Voice_Label">
+ Stimme in der Nähe
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Informationen zu dem von Ihnen besuchten Land
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Avatar ändern
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Kompletten Avatar auswählen
+ </string>
+ <string name="Command_Build_Tooltip">
+ Objekte bauen und Terrain umformen
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Mit Leuten in der Nähe chatten
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Kompass
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Ziele von Interesse
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gesten für Ihren Avatar
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Wie führe ich gängige Aufgaben aus?
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Ihr Eigentum anzeigen und benutzen
+ </string>
+ <string name="Command_Map_Tooltip">
+ Weltkarte
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Einkaufen gehen
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Leute in der Nähe anzeigen
+ </string>
+ <string name="Command_Move_Tooltip">
+ Ihren Avatar bewegen
+ </string>
+ <string name="Command_People_Tooltip">
+ Freunde, Gruppen und Leute in der Nähe
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Orte, die in Ihrem Profil als Favoriten angezeigt werden sollen
+ </string>
+ <string name="Command_Places_Tooltip">
+ Von Ihnen gespeicherte Orte
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Einstellungen
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Ihr Profil bearbeiten oder anzeigen
+ </string>
+ <string name="Command_Search_Tooltip">
+ Orte, Veranstaltungen, Leute finden
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Foto aufnehmen
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Über Ihr Mikrofon mit Leuten in der Nähe sprechen
+ </string>
+ <string name="Command_View_Tooltip">
+ Kamerawinkel ändern
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Leute in der Nähe mit Sprechfähigkeit
+ </string>
+ <string name="Retain%">
+ % zurückbehalten
+ </string>
+ <string name="Detail">
+ Details
+ </string>
+ <string name="Better Detail">
+ Bessere Details
+ </string>
+ <string name="Surface">
+ Oberfläche
+ </string>
+ <string name="Solid">
+ Fest
+ </string>
+ <string name="Wrap">
+ Wickeln
+ </string>
+ <string name="Preview">
+ Vorschau
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml
index 69c952c532..bbfc830688 100644
--- a/indra/newview/skins/default/xui/de/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/de/teleport_strings.xml
@@ -20,6 +20,10 @@ Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab u
Das System konnte keine Teleport-Verbindung herstellen.
Versuchen Sie es später noch einmal.
</message>
+ <message name="NoHelpIslandTP">
+ Sie können nicht zurück nach Welcome Island teleportieren.
+Gehen Sie zu „Welcome Island Public“ und wiederholen sie das Tutorial.
+ </message>
<message name="noaccess_tport">
Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
</message>
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 2580c06344..c7e9ec781d 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="centered"
legacy_header_height="18"
height="440"
layout="topleft"
@@ -195,34 +196,36 @@ Dummy Name replaced at run time
top="5"
width="435"
word_wrap="true">
-3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
-APR Copyright (C) 2000-2004 The Apache Software Foundation
-Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
-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.
-expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
-FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
-GL Copyright (C) 1999-2004 Brian Paul.
-GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia.
-google-perftools Copyright (c) 2005, Google Inc.
-Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
-jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
-jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
-ogg/vorbis Copyright (C) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-PCRE Copyright (c) 1997-2008 University of Cambridge
-SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
-SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
-zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
+ 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+ APR Copyright (C) 2000-2004 The Apache Software Foundation
+ Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+ 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.
+ expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+ FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
+ GL Copyright (C) 1999-2004 Brian Paul.
+ GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia.
+ google-perftools Copyright (c) 2005, Google Inc.
+ Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
+ jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+ jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
+ ogg/vorbis Copyright (C) 2001, Xiphophorus
+ OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+ PCRE Copyright (c) 1997-2008 University of Cambridge
+ SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+ SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
+ zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
+ google-perftools Copyright (c) 2005, Google Inc.
-Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
+ Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
-All rights reserved. See licenses.txt for details.
+ This software contains source code provided by NVIDIA Corporation.
-Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
+ 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>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index e5dcc9bcb5..4772f744ea 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
can_tear_off="false"
height="420"
layout="topleft"
@@ -486,7 +487,7 @@
name="DwellText"
top_delta="0"
width="186">
- 0
+ Loading...
</text>
<button
@@ -1207,7 +1208,7 @@ Only large parcels can be listed in search.
</panel.string>
<panel.string
name="see_avs_text">
- See and chat with residents on this parcel
+ Avatars on other parcels can see
</panel.string>
<text
type="string"
@@ -1222,30 +1223,33 @@ Only large parcels can be listed in search.
width="278">
Allow other Residents to:
</text>
- <check_box
- height="16"
- label="Edit Terrain"
- layout="topleft"
- left="14"
- name="edit land check"
- tool_tip="If checked, anyone can terraform your land. It is best to leave this unchecked, as you can always edit your own land."
- top_pad="4"
- width="147i" />
- <check_box
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="20"
+ name="allow_label0"
+ width="150">
+ Fly:
+ </text>
+
+ <check_box
height="16"
- label="Fly"
+ label="Everyone"
layout="topleft"
name="check fly"
tool_tip="If checked, Residents can fly on your land. If unchecked, they can only fly into and over your land."
- left_pad="4"
- width="150" />
+ left_pad="2"
+ width="130" />
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
- left="14"
+ left="20"
name="allow_label2"
width="150">
Build:
@@ -1270,7 +1274,7 @@ Only large parcels can be listed in search.
follows="left|top"
height="16"
layout="topleft"
- left="14"
+ left="20"
name="allow_label3"
width="150">
Object Entry:
@@ -1297,7 +1301,7 @@ Only large parcels can be listed in search.
follows="left|top"
height="16"
layout="topleft"
- left="14"
+ left="20"
name="allow_label4"
width="150">
Run Scripts:
@@ -1318,49 +1322,47 @@ Only large parcels can be listed in search.
name="check group scripts"
top_delta="0"
width="70" />
- <text
- type="string"
- text_color="white"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="10"
- name="land_options_label"
- width="278">
- Land Options:
- </text>
- <check_box
+ <panel
+ bevel_style="none"
+ border="true"
+ top="146"
+ bottom="146"
+ follows="left|bottom|right"
+ left="20"
+ right="-20"/>
+ <check_box
height="16"
label="Safe (no damage)"
layout="topleft"
- left="14"
+ left="18"
name="check safe"
tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled."
- top_pad="5"
+ top="130"
width="200" />
<check_box
height="16"
label="No Pushing"
layout="topleft"
- left_pad="5"
+ left_pad="35"
name="PushRestrictCheck"
tool_tip="Prevents scripts from pushing. Checking this option may be useful for preventing disruptive behavior on your land."
- top_delta="0"
+ top="130"
width="119" />
<check_box
height="16"
label="Show Place in Search (L$30/week)"
layout="topleft"
- left="14"
+ left="18"
name="ShowDirectoryCheck"
tool_tip="Let people see this parcel in search results"
+ top="150"
width="430" />
<combo_box
enabled="false"
height="23"
layout="topleft"
- left="30"
+ left="20"
+ top="194"
name="land category with adult"
visible="false"
width="140">
@@ -1425,7 +1427,8 @@ Only large parcels can be listed in search.
enabled="false"
height="23"
layout="topleft"
- left="30"
+ left="20"
+ top="194"
name="land category"
visible="false"
width="140">
@@ -1486,11 +1489,11 @@ Only large parcels can be listed in search.
height="16"
label="Moderate Content"
layout="topleft"
- left="14"
+ left="18"
name="MatureCheck"
- top="177"
+ top="170"
label_text.valign="center"
- label_text.v_pad="-5"
+ label_text.v_pad="-1"
tool_tip=" "
width="200" />
<text
@@ -1499,18 +1502,19 @@ Only large parcels can be listed in search.
follows="left|top"
height="16"
layout="topleft"
- left="10"
+ left="20"
name="Snapshot:"
text_color="white"
- top="220"
+ top="225"
width="200">
Snapshot:
</text>
<texture_picker
follows="left|top"
+ top_pad="0"
height="150"
layout="topleft"
- left="14"
+ left="20"
name="snapshot_ctrl"
fallback_image="default_land_picture.j2c"
tool_tip="Click to choose a picture"
@@ -1519,23 +1523,24 @@ Only large parcels can be listed in search.
type="string"
length="1"
follows="left|top"
- text_color="white"
+ text_color="LtGray"
height="16"
layout="topleft"
- left="230"
- top="174"
+ left="274"
+ top="166"
name="allow_label5"
width="278">
- Allow Residents on other parcels to:
+ and chat with avatars on this parcel
</text>
<check_box
height="16"
label="See Avatars"
follows="top"
layout="topleft"
- left="230"
+ left="253"
+ top="150"
name="SeeAvatarsCheck"
- tool_tip="Allows residents on other parcels to see and chat with residents on this parcel, and you to see and chat with them."
+ tool_tip="Allows avatars on other parcels to see and chat with avatars on this parcel, and you to see and chat with them."
width="120" />
<text
type="string"
@@ -1543,8 +1548,8 @@ Only large parcels can be listed in search.
follows="left|top"
height="16"
layout="topleft"
- left="230"
- top="230"
+ left="255"
+ top="282"
text_color="white"
name="landing_point"
word_wrap="true"
@@ -1553,12 +1558,13 @@ Only large parcels can be listed in search.
</text>
<button
follows="right|top"
+ top_pad="0"
height="23"
label="Set"
label_selected="Set"
layout="topleft"
name="Set"
- left="230"
+ left="255"
tool_tip="Sets the landing point where visitors arrive. Sets to your avatar&apos;s location inside this parcel."
width="50" />
<button
@@ -1578,7 +1584,7 @@ Only large parcels can be listed in search.
follows="left|top"
height="16"
layout="topleft"
- left="230"
+ left="255"
top_pad="10"
name="Teleport Routing: "
width="200">
@@ -1588,7 +1594,7 @@ Only large parcels can be listed in search.
height="23"
layout="topleft"
name="landing type"
- top_pad="3"
+ top_pad="0"
tool_tip="Teleport Routing -- select how to handle teleports onto your land"
width="120">
<combo_box.item
diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml
index 96fe0aa70c..b79c5d9a19 100644
--- a/indra/newview/skins/default/xui/en/floater_activeim.xml
+++ b/indra/newview/skins/default/xui/en/floater_activeim.xml
@@ -4,11 +4,8 @@
name="floater_activeim"
help_topic="floater_activeim"
title="ACTIVE IM"
- top="26"
- left="0"
height="22"
width="320"
- follows="right|bottom"
background_visible="true"
can_close="true"
can_dock="true"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
new file mode 100644
index 0000000000..82c3403008
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="cascading"
+ ignore_ui_scale="false"
+ legacy_header_height="225"
+ can_minimize="true"
+ can_close="true"
+ can_resize="true"
+ min_height="230"
+ min_width="450"
+ height="230"
+ layout="topleft"
+ name="Avatar"
+ single_instance="true"
+ help_topic="avatar"
+ save_rect="true"
+ save_visibility="true"
+ title="CHOOSE AN AVATAR"
+ width="700">
+ <web_browser
+ top="25"
+ height="200"
+ width="700"
+ follows="all"
+ name="avatar_picker_contents"
+ trusted_content="true"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
index a11946d352..cbbbeb6094 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
can_resize="true"
height="350"
diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml
index afb7917043..35918e9705 100644
--- a/indra/newview/skins/default/xui/en/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/en/floater_build_options.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- follows="right"
height="198"
layout="topleft"
name="build options floater"
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 49ca6cc8ba..6afa24d04a 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -224,7 +224,7 @@
width="300"
height="30"
name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
</text>
<text
type="string"
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
index b9c415633f..0637eedfb2 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
@@ -23,6 +23,5 @@
right="-1"
top="1"
bottom="-1"
- ignore_ui_scale="false"
name="browser"/>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index da2be18db6..4673c6def5 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,18 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="specified"
+ specified_left="458"
+ specified_bottom="80"
legacy_header_height="18"
- can_dock="true"
can_minimize="true"
- can_close="false"
- follows="bottom"
+ can_close="true"
height="164"
layout="topleft"
name="camera_floater"
help_topic="camera_floater"
- save_rect="true"
save_visibility="true"
- save_dock_state="true"
single_instance="true"
+ title="CAMERA CONTROLS"
+ chrome="true"
+ save_rect="true"
width="228">
<floater.string
name="rotate_tooltip">
@@ -27,18 +29,6 @@
Move Camera Up and Down, Left and Right
</floater.string>
<floater.string
- name="camera_modes_title">
- Camera modes
- </floater.string>
- <floater.string
- name="pan_mode_title">
- Orbit Zoom Pan
- </floater.string>
- <floater.string
- name="presets_mode_title">
- Preset Views
- </floater.string>
- <floater.string
name="free_mode_title">
View Object
</floater.string>
@@ -164,14 +154,10 @@
<joystick_rotate
follows="top|left"
height="78"
- image_selected="Cam_Rotate_In"
- image_unselected="Cam_Rotate_Out"
layout="topleft"
left="7"
- mouse_opaque="false"
name="cam_rotate_stick"
quadrant="left"
- scale_image="false"
sound_flags="3"
visible="true"
tool_tip="Orbit camera around focus"
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
new file mode 100644
index 0000000000..8d0cecdac3
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="specified"
+ specified_left="10"
+ specified_bottom="10"
+ height="60"
+ layout="topleft"
+ legacy_header_height="25"
+ single_instance="true"
+ title="NEARBY CHAT"
+ save_rect="true"
+ can_close="true"
+ can_minimize="true"
+ help_topic="chat_bar"
+ min_height="60"
+ min_width="150"
+ can_resize="true"
+ default_tab_group="1"
+ name="chat_bar"
+ width="300">
+ <panel
+ top="20"
+ class="panel_nearby_chat"
+ follow="all"
+ width="300"
+ height="0"
+ visible="false"
+ filename="panel_nearby_chat.xml"
+ name="nearby_chat" />
+ <panel width="300"
+ height="31"
+ left="0"
+ bottom="-1"
+ follows="left|right|bottom"
+ tab_group="1">
+ <line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|right"
+ height="23"
+ label="Click here to chat."
+ layout="topleft"
+ left_delta="7"
+ left="0"
+ max_length_bytes="1023"
+ name="chat_box"
+ text_pad_left="5"
+ text_pad_right="25"
+ tool_tip="Press Enter to say, Ctrl+Enter to shout"
+ top="2"
+ width="255" />
+ <output_monitor
+ auto_update="true"
+ follows="right"
+ draw_border="false"
+ height="16"
+ layout="topleft"
+ left_pad="-24"
+ mouse_opaque="true"
+ name="chat_zone_indicator"
+ top="6"
+ visible="true"
+ width="20" />
+ <button
+ follows="right"
+ is_toggle="true"
+ width="20"
+ top="2"
+ layout="topleft"
+ left_pad="12"
+ image_disabled="ComboButton_UpOff"
+ image_unselected="ComboButton_UpOff"
+ image_selected="ComboButton_On"
+ image_pressed="ComboButton_UpSelected"
+ image_pressed_selected="ComboButton_Selected"
+ height="23"
+ chrome="true"
+ name="show_nearby_chat"
+ tool_tip="Shows/hides nearby chat log">
+ </button>
+ </panel>
+</floater>
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 421f3a72c6..e06d10606a 100644
--- a/indra/newview/skins/default/xui/en/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml
@@ -2,7 +2,6 @@
<floater
legacy_header_height="18"
can_minimize="false"
- follows="left|top"
height="380"
layout="topleft"
name="ColorPicker"
diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml
index 05c958e051..13b15bf724 100644
--- a/indra/newview/skins/default/xui/en/floater_critical.xml
+++ b/indra/newview/skins/default/xui/en/floater_critical.xml
@@ -6,7 +6,7 @@
height="500"
layout="topleft"
name="modal container"
- open_centered="true"
+ open_positioning="centered"
width="600">
<button
height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
new file mode 100644
index 0000000000..373114a1eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="cascading"
+ ignore_ui_scale="false"
+ legacy_header_height="225"
+ can_minimize="true"
+ can_close="true"
+ user_resize="true"
+ can_resize="true"
+ min_height="230"
+ min_width="350"
+ height="230"
+ layout="topleft"
+ name="Destinations"
+ single_instance="true"
+ help_topic="destinations"
+ save_rect="true"
+ save_visibility="true"
+ title="DESTINATIONS"
+ width="840">
+ <web_browser
+ top="25"
+ height="200"
+ width="840"
+ follows="all"
+ name="destination_guide_contents"
+ trusted_content="true"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index 7ed020f832..cf61b7d24d 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
- follows="all"
height="400"
can_resize="true"
help_topic="event_details"
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
index 9f5e6828d2..b96a94a849 100644
--- a/indra/newview/skins/default/xui/en/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_gesture.xml
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
+ save_rect="true"
legacy_header_height="18"
can_resize="true"
height="465"
@@ -7,7 +9,6 @@
help_topic="gestures"
title="GESTURES"
background_visible="true"
- follows="all"
label="Places"
layout="topleft"
min_height="350"
diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
index 05f4c52b95..66bb9d3cea 100644
--- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
@@ -35,7 +35,7 @@
height="12"
layout="topleft"
left="10"
- name="Antialiasing:"
+ name="antialiasing label"
top_pad="7"
width="188">
Antialiasing:
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index de6d586f72..d101bca694 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
can_resize="true"
- left="10000"
- bottom="10000"
height="600"
layout="topleft"
min_height="150"
diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml
new file mode 100644
index 0000000000..8c0077a8cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_how_to.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ can_minimize="true"
+ height="775"
+ layout="topleft"
+ min_height="360"
+ left="10000"
+ top="10"
+ min_width="335"
+ name="floater_how_to"
+ help_topic="how_to"
+ single_instance="true"
+ save_rect="true"
+ title="HOW TO"
+ width="780"
+ filename="floater_web_content.xml"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml
index 99a6a95828..e2d860881a 100644
--- a/indra/newview/skins/default/xui/en/floater_hud.xml
+++ b/indra/newview/skins/default/xui/en/floater_hud.xml
@@ -8,6 +8,7 @@
help_topic="floater_hud"
save_rect="true"
save_visibility="true"
+ chrome="true"
title="TUTORIAL"
width="362">
<web_browser
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index a371e98322..a2739a8339 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -3,12 +3,10 @@
legacy_header_height="18"
background_visible="true"
default_tab_group="1"
- follows="all"
- height="350"
+ height="355"
+ help_topic="floater_im_box"
layout="topleft"
- left="0"
name="panel_im"
- top="0"
can_dock="false"
can_minimize="true"
can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml
deleted file mode 100644
index ba2e0d3277..0000000000
--- a/indra/newview/skins/default/xui/en/floater_inventory.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- auto_tile="true"
- can_resize="true"
- height="563"
- layout="topleft"
- min_height="150"
- min_width="240"
- name="Inventory"
- help_topic="inventory"
- save_rect="true"
- save_visibility="true"
- single_instance="false"
- title="MY INVENTORY"
- width="467">
- <panel
- bottom="560"
- class="panel_main_inventory"
- filename="panel_main_inventory.xml"
- follows="all"
- layout="topleft"
- left="0"
- label="Inventory Panel"
- name="Inventory Panel"
- top="15"
- width="467" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
index 0cf07926c2..adef066aef 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="340"
layout="topleft"
name="item properties"
diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
index 0b9ae3c9f3..3737294ebe 100644
--- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="centered"
legacy_header_height="18"
height="430"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
index 1f192f9b28..5cd7cd196d 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -4,7 +4,6 @@
bevel_style="none"
border_style="line"
can_resize="true"
- follows="left|top"
height="580"
layout="topleft"
min_height="271"
diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
index c9d87f158f..e9676777f4 100644
--- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
@@ -2,7 +2,6 @@
<floater
legacy_header_height="18"
can_resize="true"
- follows="left|top"
height="400"
layout="topleft"
min_height="271"
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index ae99fa8dd5..3eeebcf120 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,22 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
- bg_alpha_image_overlay="DkGray_66"
- legacy_header_height="0"
+ open_positioning="cascading"
can_minimize="true"
can_resize="true"
- follows="top|right"
- height="174"
+ chrome="true"
+ height="200"
layout="topleft"
min_height="128"
min_width="128"
name="Map"
- title=""
+ title="MINI-MAP"
help_topic="map"
save_rect="true"
save_visibility="true"
- single_instance="true"
- left="0"
- top="0"
width="200">
<floater.string
name="ToolTipMsg">
@@ -27,17 +23,16 @@
[REGION](Double-click to teleport, shift-drag to pan)
</floater.string>
<floater.string name="mini_map_caption">
- MINIMAP
+ Mini-map
</floater.string>
<net_map
- bg_color="NetMapBackgroundColor"
follows="top|left|bottom|right"
layout="topleft"
left="0"
mouse_opaque="false"
name="Net Map"
width="200"
- height="218"
+ height="200"
top="0"/>
<text
type="string"
@@ -49,7 +44,7 @@
name="floater_map_north"
right="10"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
N
</text>
<text
@@ -62,7 +57,7 @@
name="floater_map_east"
right="10"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
E
</text>
<text
@@ -75,7 +70,7 @@
name="floater_map_west"
right="11"
text_color="1 1 1 0.7"
- top="195">
+ top="175">
W
</text>
<text
@@ -88,7 +83,7 @@
name="floater_map_south"
right="10"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
S
</text>
<text
@@ -101,7 +96,7 @@
name="floater_map_southeast"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
SE
</text>
<text
@@ -114,7 +109,7 @@
name="floater_map_northeast"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
NE
</text>
<text
@@ -127,7 +122,7 @@
name="floater_map_southwest"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
SW
</text>
<text
@@ -140,7 +135,7 @@
name="floater_map_northwest"
right="20"
text_color="1 1 1 0.7"
- top="209">
+ top="189">
NW
</text>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 5a1f920398..c3324a6aa4 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -9,7 +9,6 @@
name="floater_about"
help_topic="floater_about"
save_rect="true"
- auto_tile="true"
title="MEDIA BROWSER"
width="820">
<floater.string
diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml
index 681731b0da..0e03c0ab6d 100644
--- a/indra/newview/skins/default/xui/en/floater_media_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml
@@ -10,7 +10,6 @@
enabled="true"
width="365"
height="535"
- left="330"
min_height="535"
min_width="365"
mouse_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
index 28a29c42aa..fb7d09a21e 100644
--- a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
@@ -2,7 +2,6 @@
<floater
legacy_header_height="18"
can_minimize="false"
- follows="left|top"
height="175"
layout="topleft"
name="MemLeak"
diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml
index 2eea286c8b..eebc5ddc72 100755..100644
--- a/indra/newview/skins/default/xui/en/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater can_close="true" can_drag_on_left="false" can_minimize="false"
can_resize="false" height="480" min_height="480" min_width="940"
- name="Model Preview" title="Upload Model" width="940"
+ name="Model Preview" title="UPLOAD MODEL" width="940"
help_topic="upload_model" >
<string name="status_idle"></string>
<string name="status_parse_error">Error: Dae parsing issue - see log for details.</string>
+ <string name="status_material_mismatch">Error: Material of model is not a subset of reference model.</string>
<string name="status_reading_file">Loading...</string>
<string name="status_generating_meshes">Generating Meshes...</string>
<string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string>
@@ -789,7 +790,7 @@
<check_box name="physics_use_hull" follows="left|top" width="130" left_pad="5" height="20" label="Use Convex Hull"/> -->
</panel>
- <!-- ==== STEP 2: Analyse ==== -->
+ <!-- ==== STEP 2: Analyze ==== -->
<view_border
bevel_style="none"
follows="top|left"
@@ -818,7 +819,7 @@
name="method_label"
text_color="White"
top_pad="0">
- Step 2: Analyse
+ Step 2: Analyze
</text>
<text
follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
index b5a5ff5342..9c0af7d9ba 100644
--- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
@@ -199,7 +199,7 @@
height="10"
layout="topleft"
left="10"
- name="Cache location"
+ name="Model types"
width="320">
Second Life supports COLLADA (.dae) files
</text>
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 6f29255a6b..065dab0413 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,17 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="specified"
+ specified_left="320"
+ specified_bottom="80"
legacy_header_height="18"
- can_dock="true"
+ can_dock="false"
can_minimize="true"
- can_close="false"
- follows="bottom"
+ can_close="true"
height="110"
layout="topleft"
name="move_floater"
help_topic="move_floater"
save_rect="true"
save_visibility="true"
- save_dock_state="true"
+ single_instance="true"
+ chrome="true"
+ title="WALK / RUN / FLY"
width="133">
<string
name="walk_forward_tooltip">
diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
new file mode 100644
index 0000000000..1c4b25a7b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<floater
+ open_positioning="cascading"
+ legacy_header_height="18"
+ can_resize="true"
+ height="588"
+ layout="topleft"
+ name="floater_my_appearance"
+ help_topic="appearance"
+ save_rect="true"
+ single_instance="true"
+ reuse_instance="true"
+ title="APPEARANCE"
+ min_height="440"
+ min_width="333"
+ width="333">
+ <panel
+ top="18"
+ class="sidepanel_appearance"
+ name="main_panel"
+ filename="sidepanel_appearance.xml"
+ label="Edit Appearance"
+ font="SansSerifBold"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
new file mode 100644
index 0000000000..cd0b59dc51
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="570"
+ help_topic="sidebar_inventory"
+ min_width="333"
+ min_height="440"
+ name="floater_my_inventory"
+ save_rect="true"
+ save_visibility="true"
+ reuse_instance="true"
+ title="INVENTORY"
+ width="333" >
+ <panel
+ class="sidepanel_inventory"
+ name="main_panel"
+ filename="sidepanel_inventory.xml"
+ follows="all"
+ top="0"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml
new file mode 100644
index 0000000000..df46fc198f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_my_web_profile"
+ help_topic="web_profile"
+ width="780"
+ height="775"
+ save_rect="true"
+ single_instance="true"
+ reuse_instance="false"
+ filename="floater_web_content.xml"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index ab966dbb0e..0000000000
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- legacy_header_height="18"
- can_minimize="true"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="false"
- can_dock="true"
- bevel_style="in"
- height="300"
- min_width="235"
- layout="topleft"
- name="nearby_chat"
- help_topic="nearby_chat"
- save_rect="true"
- title="NEARBY CHAT"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true"
- width="320">
- <check_box
- bottom_delta="36"
- control_name="TranslateChat"
- enabled="true"
- height="16"
- label="Translate chat (powered by Google)"
- layout="topleft"
- left="5"
- name="translate_chat_checkbox"
- width="230" />
- <chat_history
- parse_urls="true"
- bg_readonly_color="ChatHistoryBgColor"
- bg_writeable_color="ChatHistoryBgColor"
- follows="all"
- left="5"
- top_delta="17"
- layout="topleft"
- height="260"
- name="chat_history"
- parse_highlights="true"
- text_color="ChatHistoryTextColor"
- text_readonly_color="ChatHistoryTextColor"
- right_widget_pad="5"
- left_widget_pad="0"
- width="315" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
index 068737494f..bbe280582b 100644
--- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -4,7 +4,7 @@
can_minimize="false"
height="100"
layout="topleft"
- title="Save Outfit"
+ title="SAVE OUTFIT"
name="modal container"
width="240">
<button
diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
index 9db6568ee3..ffbb6aa28b 100644
--- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
@@ -8,6 +8,7 @@
layout="topleft"
name="outgoing call"
help_topic="outgoing_call"
+ save_dock_state="true"
title="CALLING"
width="410">
<floater.string
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
new file mode 100644
index 0000000000..d6d8431150
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="570"
+ help_topic="sidebar_people"
+ min_height="440"
+ min_width="333"
+ layout="topleft"
+ name="floater_people"
+ save_rect="true"
+ single_instance="true"
+ reuse_instance="true"
+ title="PEOPLE"
+ width="333">
+ <panel_container
+ default_panel_name="panel_people"
+ follows="all"
+ height="570"
+ name="main_panel"
+ width="333">
+ <panel
+ class="panel_people"
+ name="panel_people"
+ filename="panel_people.xml"/>
+ <panel
+ class="panel_group_info_sidetray"
+ name="panel_group_info_sidetray"
+ filename="panel_group_info_sidetray.xml"
+ label="Group Profile"
+ font="SansSerifBold"/>
+ <panel
+ class="panel_block_list_sidetray"
+ name="panel_block_list_sidetray"
+ filename="panel_block_list_sidetray.xml"
+ label="Blocked Residents &amp; Objects"
+ font="SansSerifBold"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_picks.xml b/indra/newview/skins/default/xui/en/floater_picks.xml
new file mode 100644
index 0000000000..7882116662
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_picks.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="572"
+ help_topic="sidebar_me"
+ min_width="333"
+ min_height="440"
+ name="floater_picks"
+ save_rect="true"
+ save_visibility="true"
+ reuse_instance="true"
+ title="Picks"
+ width="333" >
+ <panel
+ class="panel_me"
+ name="main_panel"
+ filename="panel_me.xml"
+ follows="all"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_places.xml b/indra/newview/skins/default/xui/en/floater_places.xml
new file mode 100644
index 0000000000..ccceac0a7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_places.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<floater
+ open_positioning="cascading"
+ legacy_header_height="18"
+ can_resize="true"
+ height="588"
+ layout="topleft"
+ name="floater_places"
+ help_topic="floater_places"
+ save_rect="true"
+ reuse_instance="true"
+ title="PLACES"
+ min_height="440"
+ min_width="333"
+ width="333">
+ <panel
+ top="18"
+ class="panel_places"
+ name="main_panel"
+ filename="panel_places.xml"
+ label="Places"
+ font="SansSerifBold"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml
deleted file mode 100644
index c756661ffc..0000000000
--- a/indra/newview/skins/default/xui/en/floater_postcard.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- auto_tile="true"
- can_minimize="false"
- can_resize="true"
- height="380"
- layout="topleft"
- min_height="380"
- min_width="490"
- name="Postcard"
- help_topic="postcard"
- title="EMAIL SNAPSHOT"
- width="490">
- <floater.string
- name="default_subject">
- Postcard from [SECOND_LIFE].
- </floater.string>
- <floater.string
- name="default_message">
- Check this out!
- </floater.string>
- <floater.string
- name="upload_message">
- Sending...
- </floater.string>
- <text
- type="string"
- length="1"
- bottom="35"
- follows="top|left"
- font="SansSerif"
- layout="topleft"
- left="12"
- name="to_label">
- Recipient&apos;s Email:
- </text>
- <line_editor
- control_name="LastPostcardRecipient"
- follows="left|top"
- height="20"
- layout="topleft"
- left_delta="148"
- name="to_form"
- top_delta="-4"
- width="150" />
- <text
- type="string"
- length="1"
- bottom_delta="23"
- follows="top|left"
- font="SansSerif"
- layout="topleft"
- left="12"
- name="from_label">
- Your Email:
- </text>
- <line_editor
- follows="left|top"
- height="20"
- layout="topleft"
- left_delta="148"
- name="from_form"
- top_delta="-4"
- width="150" />
- <text
- type="string"
- length="1"
- bottom_delta="23"
- follows="top|left"
- font="SansSerif"
- layout="topleft"
- left="12"
- name="name_label">
- Your Name:
- </text>
- <line_editor
- follows="left|top"
- height="20"
- layout="topleft"
- left_delta="148"
- max_length_bytes="100"
- name="name_form"
- top_delta="-4"
- width="150" />
- <text
- type="string"
- length="1"
- bottom_delta="23"
- follows="top|left"
- font="SansSerif"
- layout="topleft"
- left="12"
- name="subject_label">
- Subject:
- </text>
- <line_editor
- follows="left|top"
- height="20"
- label="Type your subject here."
- layout="topleft"
- left_delta="148"
- max_length_bytes="100"
- name="subject_form"
- top_delta="-4"
- width="150" />
- <text
- type="string"
- length="1"
- bottom_delta="23"
- follows="top|left"
- font="SansSerif"
- layout="topleft"
- left="12"
- name="msg_label">
- Message:
- </text>
- <text_editor
- type="string"
- length="1"
- follows="left|top|right|bottom"
- height="140"
- layout="topleft"
- left_delta="0"
- max_length="700"
- name="msg_form"
- word_wrap="true"
- top_pad="10"
- width="420">
- Type your message here.
- </text_editor>
- <button
- follows="right|bottom"
- height="23"
- label="Cancel"
- layout="topleft"
- name="cancel_btn"
- right="-10"
- top="350"
- width="100" />
- <button
- follows="right|bottom"
- height="23"
- label="Send"
- layout="topleft"
- left_delta="-106"
- name="send_btn"
- top_delta="0"
- width="100" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index dcfa8bc060..402868bb97 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- open_centered="true"
+ open_positioning="centered"
default_tab_group="1"
height="460"
layout="topleft"
name="Preferences"
help_topic="preferences"
+ save_rect="true"
single_instance="true"
title="PREFERENCES"
width="658">
diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
index 65efc46c71..8427c7b06f 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="85"
layout="topleft"
name="preview_anim"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index 478ae5f53f..8baa0a56f7 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="460"
layout="topleft"
name="gesture_preview"
@@ -362,4 +361,4 @@
name="save_btn"
top_delta="0"
width="80" />
-</floater> \ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
index 8c9e1d52b3..be3b2d179d 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
default_tab_group="1"
- follows="left|top"
height="361"
layout="topleft"
min_height="243"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
index 62ef4c3097..83a1f5a96f 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
height="85"
layout="topleft"
name="preview_sound"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
index a79d2f63cb..137e278ddc 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -1,9 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
- follows="left|top"
height="350"
layout="topleft"
min_height="200"
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index 12ade86b5f..bd4edb81c8 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -2,12 +2,9 @@
<floater
legacy_header_height="18"
background_visible="true"
- follows="left|top|right|bottom"
height="250"
layout="topleft"
- left="0"
name="script_floater"
- top="0"
can_dock="true"
can_minimize="true"
visible="false"
diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
index ce96ea232e..b5dd2f97b9 100644
--- a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
@@ -2,7 +2,6 @@
<floater
legacy_header_height="18"
can_resize="true"
- follows="left|top|right|bottom"
height="200"
layout="topleft"
name="script"
diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml
index 8c03b56040..91a9e67e4c 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
height="570"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml
index 60a26fcf1d..f4aca7bb3d 100644
--- a/indra/newview/skins/default/xui/en/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
- auto_tile="true"
can_resize="true"
height="400"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index eaf575fc08..dd818e2e06 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
- can_resize="true"
+ can_resize="true"
height="775"
- layout="topleft"
- min_height="400"
+ layout="topleft"
+ min_height="400"
min_width="500"
- name="floater_web_content"
- help_topic="floater_web_content"
- save_rect="true"
- auto_tile="true"
- save_visibility="true"
+ name="floater_search"
+ help_topic="floater_search"
+ save_rect="true"
+ save_visibility="true"
title=""
initial_mime_type="text/html"
width="780"
- tab_stop="true"
+ tab_stop="true"
filename="floater_web_content.xml"/>
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 89a0c4c287..0c38283d59 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -1,403 +1,373 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
- can_minimize="false"
+ can_minimize="true"
can_close="true"
- follows="left|top"
- height="520"
+ height="500"
layout="topleft"
name="Snapshot"
help_topic="snapshot"
save_rect="true"
- save_visibility="true"
+ save_visibility="false"
title="SNAPSHOT PREVIEW"
- width="245">
+ width="470">
<floater.string
name="unknown">
unknown
</floater.string>
- <radio_group
- height="70"
- label="Snapshot type"
- layout="topleft"
- left="10"
- name="snapshot_type_radio"
- top="20"
- width="205">
-<!--
- <radio_item
- height="16"
- label="Share to Web"
- layout="topleft"
- name="share_to_web"
- top_pad="0" />
--->
- <radio_item
- height="16"
- label="Email"
- layout="topleft"
- name="postcard"
- top_pad="2" />
- <radio_item
- height="16"
- label="My inventory (L$[AMOUNT])"
- layout="topleft"
- name="texture"
- top_pad="2" />
- <radio_item
- height="16"
- label="Save to my computer"
- layout="topleft"
- name="local"
- top_pad="2" />
- </radio_group>
- <ui_ctrl
- height="90"
- width="125"
- layout="topleft"
- name="thumbnail_placeholder"
- top_pad="6"
- follows="left|top"
- left="10"
- />
- <text
- type="string"
- font="SansSerifSmall"
- length="1"
- follows="left|top"
- height="14"
- layout="topleft"
- right="-5"
- left_delta="0"
- halign="right"
- name="file_size_label"
- top_pad="8"
- width="195">
- [SIZE] KB
- </text>
- <button
- follows="left|top"
- height="22"
- image_overlay="Refresh_Off"
- layout="topleft"
- left="10"
- name="new_snapshot_btn"
- width="23" />
- <button
- follows="left|top"
- height="23"
- label="Send"
- layout="topleft"
- left_pad="5"
- right="-5"
- name="send_btn"
- width="100" />
+ <string
+ name="postcard_progress_str">
+ Sending Email
+ </string>
+ <string
+ name="profile_progress_str">
+ Posting
+ </string>
+ <string
+ name="inventory_progress_str">
+ Saving to Inventory
+ </string>
+ <string
+ name="local_progress_str">
+ Saving to Computer
+ </string>
+ <string
+ name="profile_succeeded_str">
+ Image uploaded
+ </string>
+ <string
+ name="postcard_succeeded_str">
+ Email Sent!
+ </string>
+ <string
+ name="inventory_succeeded_str">
+ Saved to Inventory!
+ </string>
+ <string
+ name="local_succeeded_str">
+ Saved to Computer!
+ </string>
+ <string
+ name="profile_failed_str">
+ Failed to upload image to your Profile Feed.
+ </string>
+ <string
+ name="postcard_failed_str">
+ Failed to send email.
+ </string>
+ <string
+ name="inventory_failed_str">
+ Failed to save to inventory.
+ </string>
+ <string
+ name="local_failed_str">
+ Failed to save to computer.
+ </string>
<button
follows="left|top"
height="23"
- label="Save (L$[AMOUNT])"
+ image_overlay="TabIcon_Close_Off"
layout="topleft"
- right="-5"
- name="upload_btn"
- top_delta="0"
- width="110" />
- <flyout_button
- follows="left|top"
- height="23"
- label="Save"
- layout="topleft"
- right="-5"
- name="save_btn"
- tool_tip="Save image to a file"
- top_delta="0"
- width="100">
- <flyout_button.item
- label="Save"
- name="save_item"
- value="save" />
- <flyout_button.item
- label="Save As..."
- name="saveas_item"
- value="save as" />
- </flyout_button>
- <button
- follows="left|top"
- height="23"
- label="More"
- layout="topleft"
- left="10"
- name="more_btn"
+ left="236"
+ name="advanced_options_btn"
tool_tip="Advanced options"
- width="80" />
- <button
- follows="left|top"
- height="23"
- label="Less"
- layout="topleft"
- left_delta="0"
- name="less_btn"
- tool_tip="Advanced options"
- top_delta="0"
- width="80" />
- <button
- follows="left|top"
- height="23"
- label="Cancel"
- layout="topleft"
- right="-5"
- left_pad="5"
- name="discard_btn"
- width="110" />
- <text
- type="string"
- length="1"
- follows="top|left"
- height="12"
- layout="topleft"
- left="10"
- name="type_label2"
- top_pad="5"
- width="127">
- Size
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- height="12"
- layout="topleft"
- left_pad="5"
- name="format_label"
- top_delta="0"
- width="70">
- Format
- </text>
- <combo_box
- height="23"
- label="Resolution"
- layout="topleft"
- left="10"
- name="postcard_size_combo"
- width="120">
- <combo_box.item
- label="Current Window"
- name="CurrentWindow"
- value="[i0,i0]" />
- <combo_box.item
- label="640x480"
- name="640x480"
- value="[i640,i480]" />
- <combo_box.item
- label="800x600"
- name="800x600"
- value="[i800,i600]" />
- <combo_box.item
- label="1024x768"
- name="1024x768"
- value="[i1024,i768]" />
- <combo_box.item
- label="Custom"
- name="Custom"
- value="[i-1,i-1]" />
- </combo_box>
- <combo_box
- height="23"
- label="Resolution"
- layout="topleft"
- left_delta="0"
- name="texture_size_combo"
- top_delta="0"
- width="127">
- <combo_box.item
- label="Current Window"
- name="CurrentWindow"
- value="[i0,i0]" />
- <combo_box.item
- label="Small (128x128)"
- name="Small(128x128)"
- value="[i128,i128]" />
- <combo_box.item
- label="Medium (256x256)"
- name="Medium(256x256)"
- value="[i256,i256]" />
- <combo_box.item
- label="Large (512x512)"
- name="Large(512x512)"
- value="[i512,i512]" />
- <combo_box.item
- label="Custom"
- name="Custom"
- value="[i-1,i-1]" />
- </combo_box>
- <combo_box
- height="23"
- label="Resolution"
- layout="topleft"
- left_delta="0"
- name="local_size_combo"
- top_delta="0"
- width="127">
- <combo_box.item
- label="Current Window"
- name="CurrentWindow"
- value="[i0,i0]" />
- <combo_box.item
- label="320x240"
- name="320x240"
- value="[i320,i240]" />
- <combo_box.item
- label="640x480"
- name="640x480"
- value="[i640,i480]" />
- <combo_box.item
- label="800x600"
- name="800x600"
- value="[i800,i600]" />
- <combo_box.item
- label="1024x768"
- name="1024x768"
- value="[i1024,i768]" />
- <combo_box.item
- label="1280x1024"
- name="1280x1024"
- value="[i1280,i1024]" />
- <combo_box.item
- label="1600x1200"
- name="1600x1200"
- value="[i1600,i1200]" />
- <combo_box.item
- label="Custom"
- name="Custom"
- value="[i-1,i-1]" />
- </combo_box>
- <combo_box
- height="23"
- label="Format"
- layout="topleft"
- left_pad="5"
- name="local_format_combo"
- width="70">
- <combo_box.item
- label="PNG"
- name="PNG" />
- <combo_box.item
- label="JPEG"
- name="JPEG" />
- <combo_box.item
- label="BMP"
- name="BMP" />
- </combo_box>
- <spinner
- allow_text_entry="false"
- decimal_digits="0"
- follows="left|top"
- height="20"
- increment="32"
- label="Width"
- label_width="40"
- layout="topleft"
- left="10"
- max_val="6016"
- min_val="32"
- name="snapshot_width"
- top_pad="10"
- width="95" />
- <spinner
- allow_text_entry="false"
- decimal_digits="0"
- follows="left|top"
- height="20"
- increment="32"
- label="Height"
- label_width="40"
- layout="topleft"
- left_pad="5"
- max_val="6016"
- min_val="32"
- name="snapshot_height"
- top_delta="0"
- width="95" />
- <check_box
- bottom_delta="20"
- label="Constrain proportions"
- layout="topleft"
- left="10"
- name="keep_aspect_check" />
- <slider
- decimal_digits="0"
- follows="left|top"
- height="15"
- increment="1"
- initial_value="75"
- label="Image quality"
- label_width="124"
- layout="topleft"
- left_delta="0"
- max_val="100"
- name="image_quality_slider"
- top_pad="5"
- width="228" />
- <text
- type="string"
- length="1"
+ top="25"
+ width="23" />
+ <ui_ctrl
+ height="160"
+ width="250"
+ layout="topleft"
+ name="thumbnail_placeholder"
+ top="50"
+ follows="left|top"
+ left="10">
+ <panel
+ background_visible="true"
+ bg_alpha_color="0.9 1 0.9 1"
+ follows="left|top"
+ font="SansSerifLarge"
+ halign="center"
+ height="20"
+ layout="topleft"
+ left="0"
+ length="1"
+ name="succeeded_panel"
+ right="-1"
+ top="0"
+ type="string"
+ visible="false">
+ <text
+ follows="all"
+ font="SansSerif"
+ halign="center"
+ height="18"
+ layout="topleft"
+ left="1"
+ length="1"
+ name="succeeded_lbl"
+ right="-1"
+ text_color="0.2 0.5 0.2 1"
+ top="4"
+ translate="false"
+ type="string">
+ Succeeded
+ </text>
+ </panel>
+ <panel
+ background_visible="true"
+ bg_alpha_color="1 0.9 0.9 1"
+ follows="left|top"
+ font="SansSerifLarge"
+ halign="center"
+ height="20"
+ layout="topleft"
+ left_delta="0"
+ length="1"
+ name="failed_panel"
+ right="-1"
+ top="0"
+ type="string"
+ visible="false">
+ <text
+ follows="all"
+ font="SansSerif"
+ halign="center"
+ height="18"
+ layout="topleft"
+ left="1"
+ length="1"
+ name="failed_lbl"
+ right="-1"
+ text_color="0.5 0.2 0.2 1"
+ top="4"
+ translate="false"
+ type="string">
+ Failed
+ </text>
+ </panel>
+ <loading_indicator
+ follows="left|top"
+ height="48"
+ layout="topleft"
+ name="working_indicator"
+ left="101"
+ top="46"
+ visible="false"
+ width="48" />
+ <text
+ follows="left|top|right"
+ font="SansSerifBold"
+ height="14"
+ layout="topleft"
+ left="5"
+ length="1"
+ halign="center"
+ name="working_lbl"
+ right="-5"
+ top="98"
+ translate="false"
+ type="string"
+ visible="false"
+ width="130">
+ Working
+ </text>
+ <button
+ follows="left|top"
+ height="22"
+ image_overlay="Refresh_Off"
+ layout="topleft"
+ left="20"
+ name="new_snapshot_btn"
+ bottom="-20"
+ visible="false"
+ width="22" />
+ <text
+ follows="left|top"
+ font="SansSerifBold"
+ halign="left"
+ height="18"
+ layout="topleft"
+ left_pad="10"
+ length="1"
+ name="refresh_lbl"
+ right="-5"
+ text_color="red"
+ top_delta="0"
+ translate="false"
+ type="string"
+ visible="false"
+ width="130">
+ Refresh to save.
+ </text>
+ </ui_ctrl>
+ <view_border
+ bevel_style="in"
+ height="21"
+ width="250"
+ layout="topleft"
+ name="img_info_border"
+ top_pad="3"
+ follows="left|top"
+ left_delta="0"
+ />
+ <text
+ type="string"
+ font="SansSerifSmall"
+ length="1"
+ follows="left|top"
+ height="14"
+ layout="topleft"
+ left_delta="5"
+ halign="left"
+ name="image_res_text"
+ top_delta="5"
+ width="100">
+ [WIDTH] x [HEIGHT] px
+ </text>
+ <text
+ follows="left|top"
+ font="SansSerifSmall"
+ height="14"
+ layout="topleft"
+ left="200"
+ length="1"
+ halign="right"
+ name="file_size_label"
+ top_delta="0"
+ type="string"
+ width="50">
+ [SIZE] KB
+ </text>
+ <panel_container
follows="left|top"
- height="13"
- layout="topleft"
- left="10"
- name="layer_type_label"
- top_pad="5"
- width="50">
- Capture:
- </text>
- <combo_box
- height="23"
- label="Image Layers"
+ height="260"
layout="topleft"
- left="30"
- name="layer_types"
- width="145">
- <combo_box.item
- label="Colors"
- name="Colors"
- value="colors" />
- <combo_box.item
- label="Depth"
- name="Depth"
- value="depth" />
- </combo_box>
- <check_box
- label="Interface"
- layout="topleft"
- left="30"
- top_pad="10"
- width="180"
- name="ui_check" />
- <check_box
- label="HUDs"
- layout="topleft"
- left="30"
+ left="0"
+ name="panel_container"
+ default_panel_name="panel_snapshot_options"
top_pad="10"
- width="180"
- name="hud_check" />
- <check_box
- label="Keep open after saving"
- layout="topleft"
- left="10"
- top_pad="8"
- width="180"
- name="keep_open_check" />
- <check_box
- label="Freeze frame (fullscreen)"
- layout="topleft"
- left="10"
- top_pad="8"
- width="180"
- name="freeze_frame_check" />
- <check_box
- label="Auto-refresh"
+ width="270">
+ <panel
+ class="llpanelsnapshotoptions"
+ filename="panel_snapshot_options.xml"
+ follows="all"
+ layout="topleft"
+ left="0"
+ name="panel_snapshot_options"
+ top="0" />
+ <panel
+ class="llpanelsnapshotprofile"
+ follows="all"
+ layout="topleft"
+ name="panel_snapshot_profile"
+ filename="panel_snapshot_profile.xml" />
+ <panel
+ class="llpanelsnapshotpostcard"
+ follows="all"
+ layout="topleft"
+ name="panel_snapshot_postcard"
+ filename="panel_snapshot_postcard.xml" />
+ <panel
+ class="llpanelsnapshotinventory"
+ follows="all"
+ layout="topleft"
+ name="panel_snapshot_inventory"
+ filename="panel_snapshot_inventory.xml" />
+ <panel
+ class="llpanelsnapshotlocal"
+ follows="all"
+ layout="topleft"
+ name="panel_snapshot_local"
+ filename="panel_snapshot_local.xml" />
+ </panel_container>
+ <panel
+ height="295"
layout="topleft"
- left="10"
- top_pad="8"
- width="180"
- name="auto_snapshot_check" />
+ left="270"
+ name="advanced_options_panel"
+ top="20"
+ width="200">
+ <text
+ type="string"
+ font="SansSerifSmall"
+ length="1"
+ follows="left|top"
+ height="14"
+ layout="topleft"
+ left="10"
+ halign="left"
+ name="advanced_options_label"
+ right="-10"
+ top="10">
+ ADVANCED OPTIONS
+ </text>
+ <view_border
+ bevel_style="in"
+ follows="left|top|right"
+ height="1"
+ left="10"
+ layout="topleft"
+ name="advanced_options_hr"
+ right="-10"
+ top_pad="5"
+ />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="13"
+ layout="topleft"
+ left="10"
+ name="layer_type_label"
+ top_pad="10"
+ width="50">
+ Capture:
+ </text>
+ <combo_box
+ follows="left|top|right"
+ height="23"
+ label="Image Layers"
+ layout="topleft"
+ left="30"
+ name="layer_types"
+ right="-10">
+ <combo_box.item
+ label="Colors"
+ name="Colors"
+ value="colors" />
+ <combo_box.item
+ label="Depth"
+ name="Depth"
+ value="depth" />
+ </combo_box>
+ <check_box
+ label="Interface"
+ layout="topleft"
+ left="30"
+ top_pad="10"
+ width="180"
+ name="ui_check" />
+ <check_box
+ label="HUDs"
+ layout="topleft"
+ left="30"
+ top_pad="10"
+ width="180"
+ name="hud_check" />
+ <check_box
+ label="Freeze frame (fullscreen)"
+ layout="topleft"
+ left="10"
+ top_pad="8"
+ width="180"
+ name="freeze_frame_check" />
+ <check_box
+ label="Auto-refresh"
+ layout="topleft"
+ left="10"
+ top_pad="8"
+ width="180"
+ name="auto_snapshot_check" />
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index 74e01f359c..dec0e9b6c6 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -6,6 +6,7 @@
can_minimize="true"
can_resize="false"
can_close="false"
+ chrome="true"
save_dock_state="true"
save_visibility="true"
save_rect="true"
@@ -14,7 +15,7 @@
height="164"
layout="topleft"
name="floater_sound_devices"
- title="Sound Devices"
+ title="SOUND DEVICES"
width="490">
<panel
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index 406114294d..2fd932786b 100644
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -2,7 +2,6 @@
<floater
legacy_header_height="18"
can_resize="true"
- follows="top|right"
height="400"
layout="topleft"
name="Statistics"
diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml
index 005952f3f2..ecedb27438 100644
--- a/indra/newview/skins/default/xui/en/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml
@@ -2,9 +2,6 @@
<floater
legacy_header_height="18"
bevel_style="in"
- left="0"
- top="0"
- follows="right|bottom"
layout="topleft"
name="sys_well_window"
help_topic="notification_chiclet"
@@ -18,6 +15,7 @@
can_resize="true"
can_drag_on_left="false"
can_dock="true"
+ save_dock_state="true"
save_visibility="true"
single_instance="true"
>
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
index da412ed8a0..547613fb67 100644
--- a/indra/newview/skins/default/xui/en/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/en/floater_telehub.xml
@@ -4,7 +4,6 @@
legacy_header_height="18"
height="250"
layout="topleft"
- left="300"
name="telehub"
help_topic="telehub"
title="TELEHUB"
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
index bf0a774e76..9bc05107a2 100644
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -78,7 +78,6 @@
<button
bottom_delta="30"
height="23"
- highlight_color="EmphasisColor"
label="Highlight"
layout="topleft"
name="highlight_color_button" />
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
new file mode 100644
index 0000000000..067c1fed82
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_toolbar"
+ translate="false"
+ width="500">
+ <toolbar name="test_toolbar_top"
+ button_display_mode="icons_with_text"
+ follows="left|right|top"
+ height="50"
+ width="500"
+ left="0"
+ top="20"
+ min_button_width="0"
+ max_button_width="100"
+ side="top">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+ <toolbar name="test_toolbar_left"
+ button_display_mode="icons_with_text"
+ follows="left|bottom|top"
+ height="380"
+ width="200"
+ left="0"
+ top="70"
+ min_button_width="100"
+ side="left">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+ <toolbar name="test_toolbar_right"
+ button_display_mode="icons_with_text"
+ follows="right|bottom|top"
+ height="380"
+ width="200"
+ right="500"
+ top="70"
+ side="right">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+ <toolbar name="test_toolbar_bottom"
+ button_display_mode="icons_with_text"
+ follows="left|right|bottom"
+ height="50"
+ width="500"
+ left="0"
+ bottom="500"
+ min_button_width="100"
+ side="bottom">
+ <command name="avatar"/>
+ <command name="build"/>
+ <command name="chat"/>
+ </toolbar>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 9b02f7d273..f9147ea650 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
legacy_header_height="18"
- follows="left|top|right"
height="580"
layout="topleft"
bg_opaque_image="Window_NoTitle_Foreground"
@@ -515,7 +515,8 @@
image_disabled_selected="Object_Grass"
image_selected="Object_Grass_Selected"
image_unselected="Object_Grass"
- image_overlay_color="Red"
+ image_overlay_color="1 0 0 .75"
+ image_overlay_selected_color="1 0 0 1"
layout="topleft"
left_delta="29"
name="ToolGrass"
@@ -789,6 +790,7 @@
tab_min_width="40"
tab_position="top"
tab_height="25"
+ open_tabs_on_drag_and_drop="true"
top="173"
width="295">
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
new file mode 100644
index 0000000000..493d44a9cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ can_close="true"
+ can_dock="false"
+ can_minimize="false"
+ can_resize="false"
+ default_tab_group="1"
+ height="330"
+ help_topic="toybox"
+ layout="topleft"
+ legacy_header_height="18"
+ name="Toybox"
+ open_positioning="centered"
+ save_rect="true"
+ single_instance="true"
+ title="TOOLBAR BUTTONS"
+ width="650">
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ valign="bottom"
+ halign="left"
+ height="20"
+ layout="topleft"
+ left="20"
+ length="1"
+ name="toybox label 1"
+ right="-20"
+ top="35"
+ type="string">
+ Add or remove buttons by dragging them to or from the toolbars.
+ </text>
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ valign="bottom"
+ halign="left"
+ height="20"
+ layout="topleft"
+ left="20"
+ length="1"
+ name="toybox label 2"
+ right="-20"
+ top="55"
+ type="string">
+ Buttons will appear as shown or as icon-only depending on each toolbar's settings.
+ </text>
+ <toolbar
+ bottom="265"
+ button_display_mode="icons_with_text"
+ follows="all"
+ left="20"
+ button_icon_and_text.button_width.max="140"
+ button_icon_and_text.button_width.min="70"
+ name="toybox_toolbar"
+ pad_left="5"
+ pad_right="5"
+ pad_top="5"
+ pad_bottom="5"
+ pad_between="15"
+ read_only="true"
+ right="-20"
+ side="top"
+ top="85">
+ <button_panel background_visible="false" />
+ <button_icon_and_text image_unselected="PushButton_Off"
+ image_selected="PushButton_Off"
+ image_disabled_selected="PushButton_Disabled"
+ image_disabled="PushButton_Disabled"
+ label_color="ButtonLabelColor"
+ label_color_selected="ButtonLabelColor"
+ label_color_disabled="ButtonLabelDisabledColor"
+ label_color_disabled_selected="ButtonLabelDisabledColor"
+ image_color="ButtonImageColor"
+ image_color_disabled="ButtonImageColor"
+ flash_color="ButtonUnselectedFgColor"
+ halign="left"
+ hover_glow_amount="0.15"
+ sound_flags="0"
+ display_pressed_state="false" />
+ </toolbar>
+ <panel
+ bevel_style="none"
+ border="true"
+ bottom="266"
+ follows="left|bottom|right"
+ left="20"
+ right="-20"
+ top="266" />
+ <button
+ follows="left|bottom|right"
+ height="23"
+ label="Clear all toolbars"
+ label_selected="Clear all toolbars"
+ layout="topleft"
+ left="185"
+ name="btn_clear_all"
+ top="285"
+ width="130">
+ <button.commit_callback function="Toybox.ClearAll" />
+ </button>
+ <button
+ follows="left|bottom|right"
+ height="23"
+ label="Restore defaults"
+ label_selected="Restore defaults"
+ layout="topleft"
+ left="335"
+ name="btn_restore_defaults"
+ top="285"
+ width="130">
+ <button.commit_callback function="Toybox.RestoreDefaults" />
+ </button>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
new file mode 100644
index 0000000000..a212ce7889
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="310"
+ layout="topleft"
+ name="floater_translation_settings"
+ help_topic="translation_settings"
+ save_rect="true"
+ title="CHAT TRANSLATION SETTINGS"
+ width="485">
+
+ <string name="bing_api_key_not_verified">Bing appID not verified. Please try again.</string>
+ <string name="google_api_key_not_verified">Google API key not verified. Please try again.</string>
+
+ <string name="bing_api_key_verified">Bing appID verified.</string>
+ <string name="google_api_key_verified">Google API key verified.</string>
+
+ <check_box
+ height="16"
+ label="Enable machine translation while chatting"
+ layout="topleft"
+ left="10"
+ name="translate_chat_checkbox"
+ top="30"
+ width="20" />
+ <text
+ height="20"
+ follows="left|top"
+ layout="topleft"
+ left="40"
+ name="translate_language_label"
+ top_pad="20"
+ width="130">
+ Translate chat into:
+ </text>
+ <combo_box
+ allow_text_entry="true"
+ follows="left|top"
+ height="23"
+ left_pad="10"
+ max_chars="135"
+ mouse_opaque="true"
+ name="translate_language_combo"
+ top_delta="-5"
+ width="190">
+ <combo_box.item
+ label="System Default"
+ name="System Default Language"
+ value="default" />
+ <combo_box.item
+ label="English"
+ name="English"
+ value="en" />
+ <!-- After "System Default" and "English", please keep the rest of these combo_box.items in alphabetical order by the first character in the string. -->
+ <combo_box.item
+ label="Dansk (Danish)"
+ name="Danish"
+ value="da" />
+ <combo_box.item
+ label="Deutsch (German)"
+ name="German"
+ value="de" />
+ <combo_box.item
+ label="Español (Spanish)"
+ name="Spanish"
+ value="es" />
+ <combo_box.item
+ label="Français (French)"
+ name="French"
+ value="fr" />
+ <combo_box.item
+ label="Italiano (Italian)"
+ name="Italian"
+ value="it" />
+ <combo_box.item
+ label="Magyar (Hungarian)"
+ name="Hungarian"
+ value="hu" />
+ <combo_box.item
+ label="Nederlands (Dutch)"
+ name="Dutch"
+ value="nl" />
+ <combo_box.item
+ label="Polski (Polish)"
+ name="Polish"
+ value="pl" />
+ <combo_box.item
+ label="Português (Portuguese)"
+ name="Portugese"
+ value="pt" />
+ <combo_box.item
+ label="Русский (Russian)"
+ name="Russian"
+ value="ru" />
+ <combo_box.item
+ label="Türkçe (Turkish)"
+ name="Turkish"
+ value="tr" />
+ <combo_box.item
+ label="Українська (Ukrainian)"
+ name="Ukrainian"
+ value="uk" />
+ <combo_box.item
+ label="中文 (正體) (Chinese)"
+ name="Chinese"
+ value="zh" />
+ <combo_box.item
+ label="日本語 (Japanese)"
+ name="Japanese"
+ value="ja" />
+ <combo_box.item
+ label="한국어 (Korean)"
+ name="Korean"
+ value="ko" />
+ </combo_box>
+
+ <text
+ follows="top|left|right"
+ height="15"
+ layout="topleft"
+ left="40"
+ name="tip"
+ top_pad="20"
+ width="330"
+ wrap="true">
+ Choose translation service:
+ </text>
+
+ <radio_group
+ follows="top|left"
+ height="80"
+ layout="topleft"
+ left_delta="10"
+ name="translation_service_rg"
+ top_pad="20"
+ width="320">
+ <radio_item
+ initial_value="bing"
+ label="Bing Translator"
+ layout="topleft"
+ name="bing" />
+ <radio_item
+ initial_value="google"
+ label="Google Translate"
+ layout="topleft"
+ name="google"
+ top_pad="55" />
+ </radio_group>
+
+ <text
+ type="string"
+ length="1"
+ follows="top|right"
+ height="20"
+ layout="topleft"
+ left="70"
+ name="bing_api_key_label"
+ top_pad="-55"
+ width="85">
+ Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+ </text>
+ <line_editor
+ default_text="Enter Bing AppID and click &quot;Verify&quot;"
+ follows="top|left"
+ height="20"
+ layout="topleft"
+ left_pad="10"
+ max_length_chars="50"
+ top_delta="-4"
+ name="bing_api_key"
+ width="210" />
+ <button
+ follows="left|top"
+ height="23"
+ label="Verify"
+ layout="topleft"
+ left_pad="10"
+ name="verify_bing_api_key_btn"
+ top_delta="-2"
+ width="90" />
+
+ <text
+ follows="top|right"
+ height="20"
+ layout="topleft"
+ left="70"
+ length="1"
+ name="google_api_key_label"
+ top_pad="50"
+ type="string"
+ width="85">
+ Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API key]:
+ </text>
+ <line_editor
+ default_text="Enter Google API key and click &quot;Verify&quot;"
+ follows="top|left"
+ height="20"
+ layout="topleft"
+ left_pad="10"
+ max_length_chars="50"
+ top_delta="-4"
+ name="google_api_key"
+ width="210" />
+ <button
+ follows="left|top"
+ height="23"
+ label="Verify"
+ layout="topleft"
+ left_pad="10"
+ name="verify_google_api_key_btn"
+ top_delta="-2"
+ width="90" />
+
+ <text
+ follows="top|right"
+ height="20"
+ layout="topleft"
+ left="185"
+ length="1"
+ name="google_links_text"
+ top_delta="-23"
+ type="string"
+ width="100">
+ [http://code.google.com/apis/language/translate/v2/pricing.html Pricing] | [https://code.google.com/apis/console Stats]
+ </text>
+
+ <button
+ follows="left|top"
+ height="23"
+ label="OK"
+ layout="topleft"
+ right="-120"
+ name="ok_btn"
+ top="-30"
+ width="100" />
+ <button
+ follows="left|top"
+ height="23"
+ label="Cancel"
+ layout="topleft"
+ left_pad="10"
+ name="cancel_btn"
+ width="100" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index f017a7ace6..6807b01fa3 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -1,15 +1,17 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
+ open_positioning="cascading"
can_resize="true"
can_minimize="true"
- can_close="false"
+ can_close="true"
+ chrome="true"
height="205"
layout="topleft"
min_height="124"
min_width="190"
name="floater_voice_controls"
help_topic="floater_voice_controls"
- title="Voice Controls"
+ title="VOICE CONTROLS"
save_dock_state="true"
save_visibility="true"
save_rect="true"
@@ -17,19 +19,19 @@
width="282">
<string
name="title_nearby">
- NEARBY VOICE
+ VOICE SETTINGS
</string>
<string
name="title_group">
- Group Call with [GROUP]
+ GROUP CALL WITH [GROUP]
</string>
<string
name="title_adhoc">
- Conference Call
+ CONFERENCE CALL
</string>
<string
name="title_peer_2_peer">
- Call with [NAME]
+ CALL WITH [NAME]
</string>
<string
name="no_one_near">
@@ -50,6 +52,7 @@
user_resize="false"
auto_resize="false"
layout="topleft"
+ min_height="20"
height="20"
name="my_panel">
<avatar_icon
@@ -86,7 +89,7 @@
visible="true"
width="20" />
</layout_panel>
- <layout_panel name="leave_call_panel" height="26" auto_resize="false">
+ <layout_panel name="leave_call_panel" height="26" min_height="26" user_resize="false" auto_resize="false">
<layout_stack
clip="true"
follows="left|top|right"
@@ -131,6 +134,7 @@
height="132"
name="callers_panel"
user_resize="false"
+ auto_resize="true"
width="280">
<avatar_list
follows="all"
diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
index 2c754cd8d0..77fb21e27c 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
@@ -7,7 +7,6 @@
help_topic="voice_effects"
title="VOICE MORPHING"
background_visible="true"
- follows="all"
label="Places"
layout="topleft"
min_height="360"
diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml
index 0eda9ae62a..57d1c92acb 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -9,7 +9,6 @@
name="floater_web_content"
help_topic="floater_web_content"
save_rect="true"
- auto_tile="true"
title=""
initial_mime_type="text/html"
width="780">
diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml
new file mode 100644
index 0000000000..d0225f78a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_web_profile.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_web_profile"
+ help_topic="web_profile"
+ width="780"
+ height="775"
+ filename="floater_web_content.xml"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index 019e7cd032..56d79f62c7 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -2,7 +2,7 @@
<floater
legacy_header_height="18"
can_resize="true"
- open_centered="true"
+ open_positioning="centered"
height="600"
layout="topleft"
min_height="520"
@@ -468,7 +468,7 @@
left="3"
top_pad="7"
mouse_opaque="true"
- name="region_icon"
+ name="location_icon"
width="16" />
<search_editor
follows="top|right"
diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
index ef3dd844cd..e83257d2a0 100644
--- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
@@ -36,7 +36,7 @@
height="16"
left="8"
name="object_owner_label"
- width="55"
+ width="65"
top_pad="12">
Owner:
</text>
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a7d1aa963c..b4be17e677 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -11,130 +11,68 @@
<layout_stack border_size="0"
follows="all"
mouse_opaque="false"
- height="749"
+ height="768"
name="menu_stack"
orientation="vertical"
- top="19">
+ top="0">
+ <layout_panel mouse_opaque="true"
+ follows="left|right|top"
+ name="status_bar_container"
+ tab_stop="false"
+ height="19"
+ left="0"
+ top="0"
+ width="1024"
+ user_resize="false"
+ auto_resize="false"
+ visible="true">
+ <view mouse_opaque="false"
+ follows="all"
+ name="menu_bar_holder"
+ left="0"
+ top="0"
+ width="1024"
+ height="19"/>
+ </layout_panel>
<layout_panel auto_resize="false"
- height="60"
+ height="34"
mouse_opaque="false"
name="nav_bar_container"
tab_stop="false"
width="1024"
- user_resize="false"
- visible="false">
- </layout_panel>
- <layout_panel auto_resize="true"
+ user_resize="false"
+ visible="false"/>
+ <layout_panel auto_resize="true"
follows="all"
height="500"
layout="topleft"
mouse_opaque="false"
tab_stop="false"
- name="hud"
+ name="world_panel"
width="1024">
- <layout_stack border_size="0"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="hud_stack"
- orientation="horizontal"
- top="0"
- width="1024">
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- mouse_opaque="false"
- tab_stop="false"
- name="non_side_tray_view"
- user_resize="false"
- width="500">
- <view bottom="500"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="world_view_rect"
- width="500"/>
- <layout_stack border_size="0"
- bottom="500"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="world_stack"
- orientation="vertical">
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- tab_stop="false"
- mouse_opaque="false"
- user_resize="false"
- name="hud container"
- width="500">
- <view top="0"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="floater_snap_region"
- width="500"/>
- <panel follows="left|top"
- height="19"
- left="0"
- mouse_opaque="false"
- name="topinfo_bar_container"
- tab_stop="false"
- top="0"
- visible="false"
- width="1024"/>
- <panel follows="right|top|bottom"
- height="500"
- mouse_opaque="false"
- name="side_bar_tabs"
- right="500"
- tab_stop="false"
- top="0"
- width="32"/>
- <panel bottom="500"
- follows="left|right|bottom"
- height="25"
- left="0"
- mouse_opaque="false"
- tab_stop="false"
- name="stand_stop_flying_container"
- visible="false"
- width="500"/>
- </layout_panel>
- <layout_panel auto_resize="false"
- min_height="33"
- height="33"
- mouse_opaque="false"
- name="bottom_tray_container"
- visible="false"/>
- </layout_stack>
- </layout_panel>
- <!-- side tray -->
- <layout_panel auto_resize="false"
- follows="top|bottom"
- height="500"
- min_width="333"
- mouse_opaque="false"
- tab_stop="false"
- name="side_tray_container"
- user_resize="false"
- visible="false"
- width="333"/>
- </layout_stack>
+ <view top="0"
+ follows="all"
+ height="500"
+ left="0"
+ mouse_opaque="false"
+ name="world_view_rect"
+ width="1024"/>
+ <panel follows="left|top|right"
+ height="19"
+ left="0"
+ mouse_opaque="false"
+ name="topinfo_bar_container"
+ tab_stop="false"
+ top="0"
+ visible="false"
+ width="1024"/>
<panel top="0"
- follows="all"
- height="500"
- mouse_opaque="false"
- name="login_panel_holder"
- width="1024"/>
-
+ left="0"
+ follows="all"
+ height="500"
+ mouse_opaque="false"
+ name="login_panel_holder"
+ width="1024"/>
<debug_view follows="all"
left="0"
top="0"
@@ -142,45 +80,27 @@
height="500"
name="DebugView"
width="1024"/>
-
- <panel follows="all"
+ <floater_view follows="all"
height="500"
left="0"
mouse_opaque="false"
- name="floater_view_holder"
+ name="Floater View"
tab_group="-1"
tab_stop="false"
top="0"
- width="1024">
- <floater_view follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="Floater View"
- tab_group="-1"
- tab_stop="false"
- top="0"
- width="1024"/>
- </panel>
+ width="1024"/>
+ <panel name="toolbar_view_holder"
+ follows="all"
+ layout="topleft"
+ height="500"
+ width="1024"
+ top="0"
+ left="0"
+ mouse_opaque="false"
+ tab_stop="false"/>
</layout_panel>
</layout_stack>
- <panel mouse_opaque="false"
- follows="left|right|top"
- name="status_bar_container"
- tab_stop="false"
- height="19"
- left="0"
- top="0"
- width="1024"
- visible="false"/>
-
- <view mouse_opaque="false"
- follows="all"
- name="menu_bar_holder"
- left="0"
- top="0"
- width="1024"
- height="768"/>
+
<panel top="0"
follows="all"
mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
deleted file mode 100644
index 07dabe1909..0000000000
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu
- height="201"
- layout="topleft"
- left="100"
- mouse_opaque="false"
- name="hide_camera_move_controls_menu"
- top="624"
- visible="false"
- width="128">
- <menu_item_check
- label="Speak Button"
- layout="topleft"
- name="EnableVoiceChat">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="EnableVoiceChat" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="EnableVoiceChat" />
- </menu_item_check>
- <menu_item_check
- label="Gesture button"
- layout="topleft"
- name="ShowGestureButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowGestureButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowGestureButton" />
- </menu_item_check>
- <menu_item_check
- label="Move button"
- layout="topleft"
- name="ShowMoveButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowMoveButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowMoveButton" />
- </menu_item_check>
- <menu_item_check
- label="View button"
- layout="topleft"
- name="ShowCameraButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowCameraButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowCameraButton" />
- </menu_item_check>
- <menu_item_check
- label="Snapshot button"
- layout="topleft"
- name="ShowSnapshotButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowSnapshotButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowSnapshotButton" />
- </menu_item_check>
- <menu_item_check
- label="Build button"
- layout="topleft"
- name="ShowBuildButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowBuildButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowBuildButton" />
- </menu_item_check>
- <menu_item_check
- label="Search button"
- layout="topleft"
- name="ShowSearchButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowSearchButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowSearchButton" />
- </menu_item_check>
- <menu_item_check
- label="Map button"
- layout="topleft"
- name="ShowWorldMapButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowWorldMapButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowWorldMapButton" />
- </menu_item_check>
- <menu_item_check
- label="Mini-Map button"
- layout="topleft"
- name="ShowMiniMapButton">
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="ShowMiniMapButton" />
- <menu_item_check.on_check
- function="CheckControl"
- parameter="ShowMiniMapButton" />
- </menu_item_check>
- <menu_item_separator
- name="Separator" />
- <menu_item_call
- label="Cut"
- name="NearbyChatBar_Cut">
- <menu_item_call.on_click
- function="NearbyChatBar.Action"
- parameter="cut" />
- <menu_item_call.on_enable
- function="NearbyChatBar.EnableMenuItem"
- parameter="can_cut" />
- </menu_item_call>
- <menu_item_call
- label="Copy"
- name="NearbyChatBar_Copy">
- <menu_item_call.on_click
- function="NearbyChatBar.Action"
- parameter="copy" />
- <menu_item_call.on_enable
- function="NearbyChatBar.EnableMenuItem"
- parameter="can_copy" />
- </menu_item_call>
- <menu_item_call
- label="Paste"
- name="NearbyChatBar_Paste">
- <menu_item_call.on_click
- function="NearbyChatBar.Action"
- parameter="paste" />
- <menu_item_call.on_enable
- function="NearbyChatBar.EnableMenuItem"
- parameter="can_paste" />
- </menu_item_call>
- <menu_item_call
- label="Delete"
- name="NearbyChatBar_Delete">
- <menu_item_call.on_click
- function="NearbyChatBar.Action"
- parameter="delete" />
- <menu_item_call.on_enable
- function="NearbyChatBar.EnableMenuItem"
- parameter="can_delete" />
- </menu_item_call>
- <menu_item_call
- label="Select All"
- name="NearbyChatBar_Select_All">
- <menu_item_call.on_click
- function="NearbyChatBar.Action"
- parameter="select_all" />
- <menu_item_call.on_enable
- function="NearbyChatBar.EnableMenuItem"
- parameter="can_select_all" />
- </menu_item_call>
-
-</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
index 3f38d734b9..b517fd7957 100644
--- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
@@ -9,7 +9,7 @@
visible="false"
width="128">
<menu_item_check
- label="Show Navigation Bar"
+ label="Show Navigation &amp; Favorites Bar"
layout="topleft"
name="ShowNavbarNavigationPanel">
<on_click
@@ -20,17 +20,6 @@
parameter="ShowNavbarNavigationPanel" />
</menu_item_check>
<menu_item_check
- label="Show Favorites Bar"
- layout="topleft"
- name="ShowNavbarFavoritesPanel">
- <on_click
- function="ToggleControl"
- parameter="ShowNavbarFavoritesPanel" />
- <on_check
- function="CheckControl"
- parameter="ShowNavbarFavoritesPanel" />
- </menu_item_check>
- <menu_item_check
label="Show Mini-Location Bar"
layout="topleft"
name="ShowMiniLocationPanel">
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 4c4ff3e5c4..8ac1ac9e09 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -13,7 +13,7 @@
tear_off="true"
name="File">
<menu_item_call
- label="Preferences"
+ label="Preferences..."
name="Preferences..."
shortcut="control|P">
<menu_item_call.on_click
@@ -93,14 +93,6 @@
parameter="ui_preview" />
</menu_item_call>
<menu_item_separator />
- <!-- Broken
- <menu_item_call
- label="Show Side Tray"
- name="Show Side Tray">
- <menu_item_call.on_click
- function="Advanced.ShowSideTray" />
- </menu_item_call>
- -->
<menu
create_jump_keys="true"
label="UI Tests"
@@ -175,13 +167,6 @@
function="Floater.Show"
parameter="message_critical" />
</menu_item_call>
- <menu_item_call
- label="Media Browser Test"
- name="Web Browser Test">
- <menu_item_call.on_click
- function="Advanced.WebBrowserTest"
- parameter="http://join.secondlife.com/"/>
- </menu_item_call>
<menu_item_call
label="Web Content Floater Debug Test"
name="Web Content Floater Debug Test">
diff --git a/indra/newview/skins/default/xui/en/menu_mode_change.xml b/indra/newview/skins/default/xui/en/menu_mode_change.xml
deleted file mode 100644
index 87d1a0a7a2..0000000000
--- a/indra/newview/skins/default/xui/en/menu_mode_change.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
- name="Mode Change">
- <menu_item_check
- label="Basic"
- name="BasicMode">
- <on_check
- function="CheckSessionSettings"
- parameter="settings_minimal.xml" />
- <on_click
- function="ChangeMode"
- parameter="basic"/>
- </menu_item_check>
- <menu_item_check
- label="Advanced"
- name="AdvancedMode">
- <on_check
- function="CheckSessionSettings"
- parameter="" />
- <on_click
- function="ChangeMode"
- parameter="advanced"/>
- </menu_item_check>
- </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
index 29eeb93ac1..b452f96e7a 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
@@ -42,6 +42,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" parameter="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Friends.ViewSort.Action" parameter="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
index 65bd2793b6..614dd693c5 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
@@ -52,6 +52,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Nearby.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
index 0634e3bd3b..485a5a658c 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
@@ -34,6 +34,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Recent.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
new file mode 100644
index 0000000000..fbe40a7244
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+ layout="topleft"
+ name="Toolbars Popup"
+ visible="false">
+ <menu_item_call label="Remove this button"
+ layout="topleft"
+ name="Remove button">
+ <menu_item_call.on_click function="Toolbars.RemoveSelectedCommand" />
+ </menu_item_call>
+ <menu_item_separator layout="topleft" />
+ <menu_item_call label="Toolbar buttons..."
+ layout="topleft"
+ name="Choose Buttons">
+ <menu_item_call.on_click function="Floater.Show"
+ parameter="toybox" />
+ </menu_item_call>
+ <menu_item_separator layout="topleft" />
+ <menu_item_check label="Icons and labels"
+ layout="topleft"
+ name="icons_with_text">
+ <on_click function="Toolbars.EnableSetting"
+ parameter="icons_with_text" />
+ <on_check function="Toolbars.CheckSetting"
+ parameter="icons_with_text" />
+ </menu_item_check>
+ <menu_item_check label="Icons only"
+ layout="topleft"
+ name="icons_only">
+ <on_click function="Toolbars.EnableSetting"
+ parameter="icons_only" />
+ <on_check function="Toolbars.CheckSetting"
+ parameter="icons_only" />
+ </menu_item_check>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 16f48f3a4e..0aa5c72f2a 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -8,8 +8,180 @@
label="Me"
name="Me"
tear_off="true">
+ <menu_item_call
+ label="Profile..."
+ name="Profile">
+ <menu_item_call.on_click
+ function="ShowAgentProfile"
+ parameter="agent" />
+ </menu_item_call>
+ <menu_item_call
+ label="Appearance..."
+ name="ChangeOutfit">
+ <menu_item_call.on_click
+ function="CustomizeAvatar" />
+ <menu_item_call.on_enable
+ function="Edit.EnableCustomizeAvatar" />
+ </menu_item_call>
+ <menu_item_call
+ label="Choose an avatar..."
+ name="Avatar Picker">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="avatar" />
+ </menu_item_call>
+ <menu_item_separator/>
+ <menu_item_check
+ label="Inventory..."
+ name="Inventory"
+ shortcut="control|I"
+ visible="true">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="inventory" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="inventory" />
+ </menu_item_check>
+ <menu_item_call
+ label="New Inventory Window"
+ name="NewInventoryWindow"
+ shortcut="control|shift|I"
+ visible="false">
+ <menu_item_call.on_click
+ function="Inventory.NewWindow"
+ parameter="" />
+ </menu_item_call>
+ <menu_item_call
+ label="Places..."
+ name="Places">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="places" />
+ </menu_item_call>
+ <menu_item_call
+ label="Picks..."
+ name="Picks">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="picks" />
+ </menu_item_call>
+ <menu_item_separator/>
+ <menu_item_call
+ label="Camera Controls..."
+ name="Camera Controls">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="camera" />
+ </menu_item_call>
+ <menu
+ create_jump_keys="true"
+ label="Movement"
+ name="Movement"
+ tear_off="true">
+ <menu_item_call
+ label="Sit Down"
+ layout="topleft"
+ shortcut="alt|shift|S"
+ name="Sit Down Here">
+ <menu_item_call.on_click
+ function="Self.SitDown"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="Self.EnableSitDown" />
+ </menu_item_call>
+ <menu_item_check
+ label="Fly"
+ name="Fly"
+ shortcut="Home">
+ <menu_item_check.on_check
+ function="Agent.getFlying" />
+ <menu_item_check.on_click
+ function="Agent.toggleFlying" />
+ <menu_item_check.on_enable
+ function="Agent.enableFlying" />
+ </menu_item_check>
+ <menu_item_check
+ label="Always Run"
+ name="Always Run"
+ shortcut="control|R">
+ <menu_item_check.on_check
+ function="World.CheckAlwaysRun" />
+ <menu_item_check.on_click
+ function="World.AlwaysRun" />
+ </menu_item_check>
+ <menu_item_call
+ label="Stop Animating Me"
+ name="Stop Animating My Avatar">
+ <menu_item_call.on_click
+ function="Tools.StopAllAnimations" />
+ </menu_item_call>
+ <menu_item_call
+ label="Walk / run / fly..."
+ name="Stop Animating My Avatar">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="moveview" />
+ </menu_item_call>
+ </menu>
+
+ <menu
+ create_jump_keys="true"
+ label="Status"
+ name="Status"
+ tear_off="true">
<menu_item_call
- label="Preferences"
+ label="Away"
+ name="Set Away">
+ <menu_item_call.on_click
+ function="World.SetAway" />
+ </menu_item_call>
+ <menu_item_call
+ label="Busy"
+ name="Set Busy">
+ <menu_item_call.on_click
+ function="World.SetBusy"/>
+ </menu_item_call>
+ </menu>
+
+ <menu_item_call
+ label="Request Admin Status"
+ name="Request Admin Options"
+ shortcut="control|alt|G"
+ visible="false">
+ <menu_item_call.on_click
+ function="Advanced.RequestAdminStatus" />
+ </menu_item_call>
+ <menu_item_call
+ label="Leave Admin Status"
+ name="Leave Admin Options"
+ shortcut="control|alt|shift|G"
+ visible="false">
+ <menu_item_call.on_click
+ function="Advanced.LeaveAdminStatus" />
+ </menu_item_call>
+
+ <menu_item_separator/>
+
+ <menu_item_call
+ label="Buy L$"
+ name="Buy and Sell L$">
+ <menu_item_call.on_click
+ function="BuyCurrency" />
+ </menu_item_call>
+ <menu_item_call
+ label="Account dashboard..."
+ name="Manage My Account">
+ <menu_item_call.on_click
+ function="PromptShowURL"
+ name="ManageMyAccount_url"
+ parameter="WebLaunchJoinNow,http://secondlife.com/account/" />
+ </menu_item_call>
+
+ <menu_item_separator/>
+
+ <menu_item_call
+ label="Preferences..."
name="Preferences"
shortcut="control|P">
<menu_item_call.on_click
@@ -17,178 +189,96 @@
parameter="preferences" />
</menu_item_call>
<menu_item_call
- label="My Dashboard"
- name="Manage My Account">
- <menu_item_call.on_click
- function="PromptShowURL"
- name="ManageMyAccount_url"
- parameter="WebLaunchJoinNow,http://secondlife.com/account/" />
- </menu_item_call>
- <menu_item_call
- label="Buy L$"
- name="Buy and Sell L$">
+ label="Toolbar buttons..."
+ name="Toolbars"
+ shortcut="control|T">
<menu_item_call.on_click
- function="BuyCurrency" />
+ function="Floater.Toggle"
+ parameter="toybox" />
</menu_item_call>
+ <menu_item_call
+ label="Hide all controls"
+ name="Hide UI"
+ shortcut="control|shift|U">
+ <menu_item_call.on_click
+ function="View.ToggleUI" />
+ </menu_item_call>
<menu_item_separator/>
<menu_item_call
- label="My Profile"
- name="Profile">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="agent" />
- </menu_item_call>
- <menu_item_call
- label="My Appearance"
- name="ChangeOutfit">
+ label="Exit [APP_NAME]"
+ name="Quit"
+ shortcut="control|Q">
<menu_item_call.on_click
- function="CustomizeAvatar" />
- <menu_item_call.on_enable
- function="Edit.EnableCustomizeAvatar" />
+ function="File.Quit" />
</menu_item_call>
+ </menu>
+ <menu
+ create_jump_keys="true"
+ label="Communicate"
+ name="Communicate"
+ tear_off="true">
<menu_item_check
- label="My Inventory"
- name="Inventory"
- shortcut="control|shift|I"
- visible="false">
+ label="Chat..."
+ name="Nearby Chat"
+ shortcut="control|H"
+ use_mac_ctrl="true">
<menu_item_check.on_check
function="Floater.Visible"
- parameter="inventory" />
+ parameter="chat_bar" />
<menu_item_check.on_click
function="Floater.Toggle"
- parameter="inventory" />
+ parameter="chat_bar" />
</menu_item_check>
<menu_item_check
- label="My Inventory"
- name="ShowSidetrayInventory"
- shortcut="control|I"
- visible="true">
+ label="Speak"
+ name="Speak">
<menu_item_check.on_check
- function="SidetrayPanelVisible"
- parameter="sidepanel_inventory" />
+ function="Agent.IsMicrophoneOn"
+ parameter="speak" />
+ <menu_item_check.on_enable
+ function="Agent.IsActionAllowed"
+ parameter="speak" />
<menu_item_check.on_click
- function="ShowSidetrayPanel"
- parameter="sidepanel_inventory" />
+ function="Agent.ToggleMicrophone"
+ parameter="speak" />
</menu_item_check>
<menu_item_check
- label="My Gestures"
- name="Gestures"
- shortcut="control|G">
+ label="Voice settings..."
+ name="Nearby Voice">
<menu_item_check.on_check
function="Floater.Visible"
- parameter="gestures" />
+ parameter="voice_controls" />
<menu_item_check.on_click
function="Floater.Toggle"
- parameter="gestures" />
+ parameter="voice_controls" />
</menu_item_check>
<menu_item_check
- label="My Voice"
+ label="Voice morphing..."
name="ShowVoice"
visibility_control="VoiceMorphingEnabled">
<menu_item_check.on_check
function="Floater.Visible"
- Parameter="voice_effect" />
+ parameter="voice_effect" />
<menu_item_check.on_click
function="Floater.Toggle"
parameter="voice_effect" />
</menu_item_check>
- <menu
- create_jump_keys="true"
- label="Movement"
- name="Movement"
- tear_off="true">
- <menu_item_call
- label="Sit Down"
- layout="topleft"
- shortcut="alt|shift|S"
- name="Sit Down Here">
- <menu_item_call.on_click
- function="Self.SitDown"
- parameter="" />
- <menu_item_call.on_enable
- function="Self.EnableSitDown" />
- </menu_item_call>
- <menu_item_check
- label="Fly"
- name="Fly"
- shortcut="Home">
- <menu_item_check.on_check
- function="Agent.getFlying" />
- <menu_item_check.on_click
- function="Agent.toggleFlying" />
- <menu_item_check.on_enable
- function="Agent.enableFlying" />
- </menu_item_check>
- <menu_item_check
- label="Always Run"
- name="Always Run"
- shortcut="control|R">
- <menu_item_check.on_check
- function="World.CheckAlwaysRun" />
- <menu_item_check.on_click
- function="World.AlwaysRun" />
- </menu_item_check>
- <menu_item_call
- label="Stop Animating Me"
- name="Stop Animating My Avatar">
- <menu_item_call.on_click
- function="Tools.StopAllAnimations" />
- </menu_item_call>
- </menu>
- <menu
- create_jump_keys="true"
- label="My Status"
- name="Status"
- tear_off="true">
- <menu_item_call
- label="Away"
- name="Set Away">
- <menu_item_call.on_click
- function="World.SetAway" />
- </menu_item_call>
- <menu_item_call
- label="Busy"
- name="Set Busy">
- <menu_item_call.on_click
- function="World.SetBusy"/>
- </menu_item_call>
- </menu>
- <menu_item_call
- label="Request Admin Status"
- name="Request Admin Options"
- shortcut="control|alt|G"
- visible="false">
- <menu_item_call.on_click
- function="Advanced.RequestAdminStatus" />
- </menu_item_call>
- <menu_item_call
- label="Leave Admin Status"
- name="Leave Admin Options"
- shortcut="control|alt|shift|G"
- visible="false">
- <menu_item_call.on_click
- function="Advanced.LeaveAdminStatus" />
- </menu_item_call>
-
+ <menu_item_check
+ label="Gestures..."
+ name="Gestures"
+ shortcut="control|G">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="gestures" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="gestures" />
+ </menu_item_check>
<menu_item_separator/>
-
- <menu_item_call
- label="Exit [APP_NAME]"
- name="Quit"
- shortcut="control|Q">
- <menu_item_call.on_click
- function="File.Quit" />
- </menu_item_call>
- </menu>
- <menu
- create_jump_keys="true"
- label="Communicate"
- name="Communicate"
- tear_off="true">
<menu_item_call
- label="My Friends"
+ label="Friends"
name="My Friends"
shortcut="control|shift|F">
<menu_item_call.on_click
@@ -196,71 +286,44 @@
parameter="friends_panel" />
</menu_item_call>
<menu_item_call
- label="My Groups"
+ label="Groups"
name="My Groups"
shortcut="control|shift|G">
<menu_item_call.on_click
function="SideTray.PanelPeopleTab"
parameter="groups_panel" />
</menu_item_call>
-
- <menu_item_separator/>
-
- <!--menu_item_call
- label="Chat"
- name="Chat">
- <menu_item_call.on_click
- function="World.Chat" />
- </menu_item_call-->
- <menu_item_check
- label="Nearby Chat"
- name="Nearby Chat"
- shortcut="control|H"
- use_mac_ctrl="true">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="nearby_chat" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="nearby_chat" />
- </menu_item_check>
<menu_item_call
- label="Nearby People"
+ label="Nearby people"
name="Active Speakers"
shortcut="control|shift|A">
<menu_item_call.on_click
- function="SideTray.PanelPeopleTab"
- parameter="nearby_panel" />
- </menu_item_call>
- <menu_item_check
- label="Nearby Voice"
- name="Nearby Voice">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="voice_controls" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="voice_controls" />
- </menu_item_check>
+ function="SideTray.PanelPeopleTab"
+ parameter="nearby_panel" />
+ </menu_item_call>
</menu>
<menu
create_jump_keys="true"
label="World"
name="World"
tear_off="true">
- <menu_item_check
- label="Mini-Map"
- name="Mini-Map"
- shortcut="control|shift|M">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="mini_map" />
- <menu_item_check.on_click
- function="Floater.Toggle"
- parameter="mini_map" />
- </menu_item_check>
- <menu_item_check
- label="World Map"
+ <menu_item_call
+ label="Landmark This Place"
+ name="Create Landmark Here">
+ <menu_item_call.on_click
+ function="World.CreateLandmark" />
+ <menu_item_call.on_enable
+ function="World.EnableCreateLandmark" />
+ </menu_item_call>
+ <menu_item_call
+ label="Destinations..."
+ name="Destinations">
+ <menu_item_call.on_click
+ function="Floater.ToggleOrBringToFront"
+ parameter="destinations" />
+ </menu_item_call>
+ <menu_item_check
+ label="World map"
name="World Map"
shortcut="control|M"
use_mac_ctrl="true">
@@ -271,6 +334,17 @@
function="Floater.Toggle"
parameter="world_map" />
</menu_item_check>
+ <menu_item_check
+ label="Mini-map"
+ name="Mini-Map"
+ shortcut="control|shift|M">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="mini_map" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="mini_map" />
+ </menu_item_check>
<menu_item_check
label="Search"
name="Search"
@@ -282,6 +356,25 @@
function="Floater.Toggle"
parameter="search" />
</menu_item_check>
+ <menu_item_separator/>
+ <menu_item_call
+ label="Teleport home"
+ name="Teleport Home"
+ shortcut="control|shift|H">
+ <menu_item_call.on_click
+ function="World.TeleportHome" />
+ <menu_item_call.on_enable
+ function="World.EnableTeleportHome" />
+ </menu_item_call>
+ <menu_item_call
+ label="Set home to here"
+ name="Set Home to Here">
+ <menu_item_call.on_click
+ function="World.SetHomeLocation" />
+ <menu_item_call.on_enable
+ function="World.EnableSetHomeLocation" />
+ </menu_item_call>
+ <menu_item_separator/>
<menu_item_call
label="Snapshot"
name="Take Snapshot"
@@ -290,82 +383,51 @@
function="Floater.Show"
parameter="snapshot" />
</menu_item_call>
- <menu_item_call
- label="Landmark This Place"
- name="Create Landmark Here">
- <menu_item_call.on_click
- function="World.CreateLandmark" />
- <menu_item_call.on_enable
- function="World.EnableCreateLandmark" />
- </menu_item_call>
- <menu
- create_jump_keys="true"
- label="Place Profile"
- name="Land"
- tear_off="true">
+ <menu_item_separator/>
<menu_item_call
- label="Place Profile"
+ label="Place profile"
layout="topleft"
name="Place Profile">
<menu_item_call.on_click
function="World.PlaceProfile" />
</menu_item_call>
<menu_item_call
- label="About Land"
+ label="About land"
name="About Land">
<menu_item_call.on_click
function="Floater.Show"
parameter="about_land" />
</menu_item_call>
<menu_item_call
- label="Region/Estate"
+ label="Region / Estate"
name="Region/Estate">
<menu_item_call.on_click
function="Floater.Show"
parameter="region_info" />
</menu_item_call>
- </menu>
+ <menu_item_call
+ label="My land holdings..."
+ name="My Land">
+ <menu_item_call.on_click
+ function="Floater.Show"
+ parameter="land_holdings" />
+ </menu_item_call>
+ <menu_item_call
+ label="Buy this land"
+ name="Buy Land">
+ <menu_item_call.on_click
+ function="Land.Buy" />
+ <menu_item_call.on_enable
+ function="World.EnableBuyLand" />
+ </menu_item_call>
<menu_item_separator/>
- <menu_item_call
- label="Buy This Land"
- name="Buy Land">
- <menu_item_call.on_click
- function="Land.Buy" />
- <menu_item_call.on_enable
- function="World.EnableBuyLand" />
- </menu_item_call>
- <menu_item_call
- label="My Land"
- name="My Land">
- <menu_item_call.on_click
- function="Floater.Show"
- parameter="land_holdings" />
- </menu_item_call>
<menu
create_jump_keys="true"
label="Show"
name="LandShow"
tear_off="true">
- <menu_item_check
- label="Move Controls"
- name="Movement Controls">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="moveview" />
- <menu_item_check.on_click
- function="World.Toggle.MovementControls" />
- </menu_item_check>
- <menu_item_check
- label="View Controls"
- name="Camera Controls">
- <menu_item_check.on_check
- function="Floater.Visible"
- parameter="camera" />
- <menu_item_check.on_click
- function="World.Toggle.CameraControls" />
- </menu_item_check>
<menu_item_check
label="Ban Lines"
name="Ban Lines">
@@ -438,24 +500,6 @@
</menu>
<menu_item_separator/>
-
- <menu_item_call
- label="Teleport Home"
- name="Teleport Home"
- shortcut="control|shift|H">
- <menu_item_call.on_click
- function="World.TeleportHome" />
- <menu_item_call.on_enable
- function="World.EnableTeleportHome" />
- </menu_item_call>
- <menu_item_call
- label="Set Home to Here"
- name="Set Home to Here">
- <menu_item_call.on_click
- function="World.SetHomeLocation" />
- <menu_item_call.on_enable
- function="World.EnableSetHomeLocation" />
- </menu_item_call>
<!-- <menu_item_check
label="Show Navigation Bar"
name="ShowNavbarNavigationPanel">
@@ -478,8 +522,6 @@
</menu_item_check>
<menu_item_separator/>-->
- <menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Sun"
@@ -515,18 +557,26 @@
function="World.EnvSettings"
parameter="midnight" />
</menu_item_call>
+ <menu_item_separator/>
+ <menu_item_call
+ label="Use Region Settings"
+ name="Use Region Settings">
+ <menu_item_call.on_click
+ function="World.EnvSettings"
+ parameter="region" />
+ </menu_item_call>
</menu>
<menu
create_jump_keys="true"
- label="Enviroment Editor"
- name="Enviroment Editor"
+ label="Environment Editor"
+ name="Environment Editor"
tear_off="true">
<menu_item_call
- label="Enviroment Settings..."
- name="Enviroment Settings">
+ label="Environment Settings..."
+ name="Environment Settings">
<menu_item_call.on_click
function="World.EnvSettings"
parameter="editor"/>
@@ -1129,6 +1179,13 @@
name="Help"
tear_off="true">
<menu_item_call
+ label="How to..."
+ name="How To">
+ <menu_item_call.on_click
+ function="Help.ToggleHowTo"
+ parameter="" />
+ </menu_item_call>
+ <menu_item_call
label="[SECOND_LIFE] Help"
name="Second Life Help"
shortcut="F1">
@@ -1136,14 +1193,6 @@
function="ShowHelp"
parameter="f1_help" />
</menu_item_call>
- <menu_item_check
- label="Enable Hints"
- name="Enable Hints">
- <on_check
- control="EnableUIHints"/>
- <on_click
- function="ToggleUIHints"/>
- </menu_item_check>
<!-- <menu_item_call
label="Tutorial"
name="Tutorial">
@@ -1664,7 +1713,17 @@
function="ToggleControl"
parameter="MouseSmooth" />
</menu_item_check>
-
+ <menu_item_call
+ enabled="false"
+ label="Release Keys"
+ name="Release Keys">
+ <menu_item_call.on_click
+ function="Tools.ReleaseKeys"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="Tools.EnableReleaseKeys"
+ parameter="" />
+ </menu_item_call>
<menu_item_separator/>
<menu
@@ -1694,23 +1753,7 @@
function="Floater.Toggle"
parameter="search" />
</menu_item_check>
- <menu_item_call
- enabled="false"
- label="Release Keys"
- name="Release Keys">
- <menu_item_call.on_click
- function="Tools.ReleaseKeys"
- parameter="" />
- <menu_item_call.on_enable
- function="Tools.EnableReleaseKeys"
- parameter="" />
- </menu_item_call>
- <menu_item_call
- label="Set UI Size to Default"
- name="Set UI Size to Default">
- <menu_item_call.on_click
- function="View.DefaultUISize" />
- </menu_item_call>
+
<!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility. The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->
<menu_item_check
label="Show Advanced Menu - legacy shortcut"
@@ -2435,6 +2478,16 @@
function="Advanced.ToggleInfoDisplay"
parameter="raycast" />
</menu_item_check>
+ <menu_item_check
+ label="Wind Vectors"
+ name="Wind Vectors">
+ <menu_item_check.on_check
+ function="Advanced.CheckInfoDisplay"
+ parameter="wind vectors" />
+ <menu_item_check.on_click
+ function="Advanced.ToggleInfoDisplay"
+ parameter="wind vectors" />
+ </menu_item_check>
<menu_item_check
label="Render Complexity"
name="rendercomplexity">
@@ -2549,19 +2602,6 @@
<menu_item_check.on_enable
function="Advanced.EnableRenderDeferredOptions" />
</menu_item_check>
- <menu_item_check
- label=" Global Illumination (experimental)"
- name="Global Illumination">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="RenderDeferredGI" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="RenderDeferredGI" />
- <menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
- </menu_item_check>
-
<menu_item_separator />
<menu_item_check
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 41a90f5984..0ba4b84abe 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2369,7 +2369,7 @@ Would you be my friend?
name="RemoveFromFriends"
type="alertmodal">
<tag>friendship</tag>
-Do you want to remove [NAME] from your Friends List?
+Do you want to remove &lt;nolink&gt;[NAME]&lt;/nolink&gt; from your Friends List?
<tag>confirm</tag>
<usetemplate
name="okcancelbuttons"
@@ -2665,9 +2665,18 @@ Display settings have been set to safe levels because you have specified the -sa
<notification
icon="alertmodal.tga"
- name="DisplaySetToRecommended"
+ name="DisplaySetToRecommendedGPUChange"
type="alertmodal">
-Display settings have been set to recommended levels based on your system configuration.
+Display settings have been set to recommended levels because your graphics card changed
+from &apos;[LAST_GPU]&apos;
+to &apos;[THIS_GPU]&apos;
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="DisplaySetToRecommendedFeatureChange"
+ type="alertmodal">
+Display settings have been set to recommended levels because of a change to the rendering subsystem.
</notification>
<notification
@@ -4624,6 +4633,34 @@ Are you sure you want to quit?
<notification
icon="alertmodal.tga"
+ name="ConfirmRestoreToybox"
+ type="alertmodal">
+ <unique/>
+This action will restore your default buttons and toolbars.
+
+You cannot undo this action.
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="ConfirmClearAllToybox"
+ type="alertmodal">
+ <unique/>
+This action will return all buttons to the toolbox and your toolbars will be empty.
+
+You cannot undo this action.
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="DeleteItems"
type="alertmodal">
<unique/>
@@ -5124,7 +5161,7 @@ Topic: [SUBJECT], Message: [MESSAGE]
name="FriendOnline"
type="notifytip">
<tag>friendship</tag>
-[NAME] is Online
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; is Online
</notification>
<notification
@@ -5132,7 +5169,7 @@ Topic: [SUBJECT], Message: [MESSAGE]
name="FriendOffline"
type="notifytip">
<tag>friendship</tag>
-[NAME] is Offline
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; is Offline
</notification>
<notification
@@ -5409,21 +5446,23 @@ Your calling card was declined.
</notification>
<notification
- icon="notifytip.tga"
- name="TeleportToLandmark"
- type="notifytip">
-You can teleport to locations like &apos;[NAME]&apos; by opening the Places panel on the right side of your screen, and then select the Landmarks tab.
-Click on any landmark to select it, then click &apos;Teleport&apos; at the bottom of the panel.
-(You can also double-click on the landmark, or right-click it and choose &apos;Teleport&apos;.)
+ icon="notifytip.tga"
+ name="TeleportToLandmark"
+ type="notifytip">
+ To teleport to locations like &apos;[NAME]&apos;, click on the &quot;Places&quot; button,
+ then select the Landmarks tab in the window that opens. Click on any
+ landmark to select it, then click &apos;Teleport&apos; at the bottom of the window.
+ (You can also double-click on the landmark, or right-click it and
+ choose &apos;Teleport&apos;.)
</notification>
<notification
icon="notifytip.tga"
name="TeleportToPerson"
type="notifytip">
-You can contact Residents like &apos;[NAME]&apos; by opening the People panel on the right side of your screen.
-Select the Resident from the list, then click &apos;IM&apos; at the bottom of the panel.
-(You can also double-click on their name in the list, or right-click and choose &apos;IM&apos;).
+ To contact Residents like &apos;[NAME]&apos;, click on the &quot;People&quot; button , select a Resident from the window that opens, then click &apos;IM&apos; at the
+ bottom of the window.
+ (You can also double-click on their name in the list, or right-click and choose &apos;IM&apos;).
</notification>
<notification
@@ -6132,7 +6171,7 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
name="FriendshipAccepted"
type="offer">
<tag>friendship</tag>
-[NAME] accepted your friendship offer.
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; accepted your friendship offer.
</notification>
<notification
@@ -6141,7 +6180,7 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
persist="true"
type="notify">
<tag>friendship</tag>
-[NAME] declined your friendship offer.
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; declined your friendship offer.
</notification>
<notification
@@ -6900,7 +6939,7 @@ With the following Residents:
<usetemplate
name="okcancelbuttons"
notext="Cancel"
- yestext="Ok"/>
+ yestext="OK"/>
</notification>
<notification
@@ -7096,7 +7135,7 @@ Mute everyone?
<usetemplate
ignoretext="Confirm before I mute all participants in a group call"
name="okcancelignore"
- yestext="Ok"
+ yestext="OK"
notext="Cancel">
<unique/>
</usetemplate>
@@ -7383,19 +7422,6 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
</notification>
<notification
- name="ModeChange"
- label=""
- type="alertmodal">
- <unique/>
- Changing modes requires you to quit and restart.
- <tag>confirm</tag>
- <usetemplate
- name="okcancelbuttons"
- yestext="Quit"
- notext="Don't Quit"/>
- </notification>
-
- <notification
name="NoClassifieds"
label=""
type="alertmodal">
@@ -7549,6 +7575,20 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
notext="Don't Quit"/>
</notification>
+ <notification
+ name="ConfirmHideUI"
+ label=""
+ type="alertmodal">
+ <unique/>
+ <tag>confirm</tag>
+ This action will hide all menu items and buttons. To get them back, click [SHORTCUT] again.
+ <usetemplate
+ name="okcancelignore"
+ yestext="OK"
+ notext="Cancel"
+ ignoretext="Confirm before hiding UI"/>
+ </notification>
+
<global name="UnsupportedGLRequirements">
You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_NAME] requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system.
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
index 20ff492c0f..2a24c74feb 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -10,7 +10,7 @@
name="Mockup Tab"
selection_enabled="true"
tab_stop="false"
- title="Mockup Tab"
+ title="MOCKUP TAB"
translate="false"
width="0">
<wearable_items_list
diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
index e70abc0975..93cafd4a53 100644
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
@@ -58,7 +58,7 @@
label="Call"
name="call_btn"
width="130"
- top="5" />
+ top="0" />
</layout_panel>
<layout_panel
auto_resize="false"
@@ -75,7 +75,7 @@
height="20"
label="Leave Call"
name="end_call_btn"
- top="5"/>
+ top="0"/>
</layout_panel>
<layout_panel
auto_resize="false"
@@ -92,7 +92,7 @@
height="20"
label="Voice Controls"
name="voice_ctrls_btn"
- top="5"
+ top="0"
use_ellipses="true" />
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
deleted file mode 100644
index ec5853649e..0000000000
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,530 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- chrome="true"
- follows="left|bottom|right"
- focus_root="true"
- height="33"
- layout="topleft"
- left="0"
- name="bottom_tray"
- top="28"
- width="1310">
- <string
- name="DragIndicationImageName"
- value="Accordion_ArrowOpened_Off" />
- <string
- name="SpeakBtnToolTip"
- value="Turns microphone on/off" />
- <string
- name="VoiceControlBtnToolTip"
- value="Shows/hides voice control panel" />
- <layout_stack
- border_size="0"
- clip="false"
- follows="all"
- height="28"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="toolbar_stack"
- orientation="horizontal"
- top="0"
- width="1310">
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="2"
- width="2" />
- <layout_panel
- auto_resize="false"
- layout="topleft"
- max_width="320"
- min_width="214"
- height="28"
- mouse_opaque="false"
- name="chat_bar_layout_panel"
- user_resize="true"
- width="250" >
- <panel
- name="chat_bar"
- filename="panel_nearby_chat_bar.xml"
- left="0"
- height="28"
- width="248"
- top="0"
- mouse_opaque="false"
- follows="left|right"
- />
- </layout_panel>
- <!--
- This 5px Panel is an indicator of where the resize handle is.
- The panel provides a gap between the resize handle icon and a button to the right.
- -->
- <layout_panel
- auto_resize="false"
- layout="topleft"
- max_width="5"
- min_width="5"
- name="chat_bar_resize_handle_panel"
- user_resize="false"
- width="5">
- <icon
- follows="top|right"
- height="25"
- image_name="ChatBarHandle"
- layout="topleft"
- left="-7"
- name="resize_handle"
- top="4"
- width="5" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="59"
- mouse_opaque="false"
- name="speak_panel"
- top_delta="0"
- user_resize="false"
- width="108">
- <talk_button
- follows="left|right"
- height="23"
- layout="topleft"
- left="0"
- name="talk"
- top="5"
- width="105">
- <show_button
- tab_stop="true">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="voice_controls" />
- </show_button>
- <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
- & pad_right is default value for long label which can be right aligned. See EXT-6318 -->
- <speak_button
- halign="center"
- label="Speak"
- label_selected="Speak"
- name="speak_btn"
- pad_right="20"
- tab_stop="true"
- use_ellipses="true" />
- </talk_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="gesture_panel"
- top_delta="0"
- user_resize="false"
- width="85">
- <gesture_combo_list
- follows="left|right"
- height="23"
- label="Gesture"
- layout="topleft"
- left="0"
- name="Gesture"
- tool_tip="Shows/hides gestures"
- top="5"
- width="82">
- <combo_button
- pad_right="10"
- use_ellipses="true" />
- <combo_list
- page_lines="17" />
- </gesture_combo_list>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="movement_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Move"
- layout="topleft"
- name="movement_btn"
- tool_tip="Shows/hides movement controls"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="moveview" />
- </bottomtray_button>
-
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="cam_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="View"
- layout="topleft"
- left="0"
- name="camera_btn"
- tool_tip="Shows/hides camera controls"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="camera" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_width="40"
- mouse_opaque="false"
- name="snapshot_panel"
- user_resize="false"
- width="39">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_overlay="Snapshot_Off"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- layout="topleft"
- left="0"
- name="snapshots"
- tool_tip="Take snapshot"
- top="5"
- width="36">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="snapshot" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="build_btn_panel"
- user_resize="false"
- width="83">
- <!--*FIX: Build Floater is not opened with default registration. Will be fixed soon.
-Disabled for now.
--->
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Build"
- layout="topleft"
- left="0"
- name="build_btn"
- tool_tip="Shows/hides Build Tools"
- top="5"
- use_ellipses="true"
- width="80">
- <commit_callback
- function="Build.Toggle"
- parameter="build" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="search_btn_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Search"
- layout="topleft"
- left="0"
- name="search_btn"
- tool_tip="Shows/hides Search"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="search" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="world_map_btn_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Map"
- layout="topleft"
- left="0"
- name="world_map_btn"
- tool_tip="Shows/hides World Map"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="world_map" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="62"
- mouse_opaque="false"
- name="mini_map_btn_panel"
- user_resize="false"
- width="83">
- <bottomtray_button
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="Mini-Map"
- layout="topleft"
- left="0"
- name="mini_map_btn"
- tool_tip="Shows/hides Mini-Map"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetFloaterToggle"
- parameter="mini_map" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- follows="left|right"
- height="30"
- layout="topleft"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list_panel"
- top="0"
- user_resize="false"
- width="189">
-<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
-as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
- <chiclet_panel
- chiclet_padding="4"
- follows="left|right"
- height="24"
- layout="topleft"
- left="1"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list"
- top="7"
- width="189">
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Left_Over"
- image_hover_unselected="SegmentedBtn_Left_Over"
- image_overlay="Arrow_Small_Left"
- image_pressed="SegmentedBtn_Left_Press"
- image_pressed_selected="SegmentedBtn_Left_Press"
- image_selected="SegmentedBtn_Left_Off"
- image_unselected="SegmentedBtn_Left_Off"
- layout="topleft"
- name="chicklet_left_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Right_Over"
- image_hover_unselected="SegmentedBtn_Right_Over"
- image_overlay="Arrow_Small_Right"
- image_pressed="SegmentedBtn_Right_Press"
- image_pressed_selected="SegmentedBtn_Right_Press"
- image_selected="SegmentedBtn_Right_Off"
- image_unselected="SegmentedBtn_Right_Off"
- layout="topleft"
- name="chicklet_right_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- </chiclet_panel>
- </layout_panel>
- <layout_panel auto_resize="false"
- user_resize="false"
- width="4"
- min_width="4"/>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="im_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_im_well
- follows="right"
- height="28"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="im_well"
- top="0"
- width="35">
- <!--
-Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
-xml attribute Description
-image_unselected "Unlit" - there are no new messages
-image_selected "Unlit" + "Selected" - there are no new messages and the Well is open
-image_pressed "Lit" - there are new messages
-image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
- -->
- <button
- auto_resize="true"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Unread_IM"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread IM messages"
- tool_tip="Conversations"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="im_well_window" />
- </button>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="notification_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_notification
- follows="right"
- height="23"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="notification_well"
- top="5"
- width="35">
- <button
- auto_resize="true"
- bottom_pad="3"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Notices_Unread"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread"
- tool_tip="Notifications"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="notification_well_window" />
- </button>
- </chiclet_notification>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="4"
- name="DUMMY2"
- width="8" />
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml
index 34c6e02684..6af1105400 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml
@@ -2,7 +2,7 @@
<!-- All our XML is utf-8 encoded. -->
<panel
name="instant_message"
- width="315"
+ width="300"
height="180"
follows="all">
<avatar_icon
@@ -22,6 +22,7 @@
text_color="white"
word_wrap="true"
mouse_opaque="true"
+ valign="bottom"
name="msg_text">
</text_chat>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..41d1036a4d
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="false"
+ chrome="true"
+ follows="left|top|right"
+ height="30"
+ layout="topleft"
+ mouse_opaque="false"
+ name="chiclet_bar"
+ width="1310">
+ <layout_stack
+ border_size="0"
+ clip="false"
+ follows="all"
+ height="30"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="toolbar_stack"
+ orientation="horizontal"
+ top="0"
+ width="1310">
+ <layout_panel
+ follows="left|right"
+ height="30"
+ layout="topleft"
+ min_width="95"
+ mouse_opaque="false"
+ name="chiclet_list_panel"
+ top="0"
+ user_resize="false"
+ width="189">
+ <chiclet_panel
+ chiclet_padding="4"
+ follows="left|right"
+ height="24"
+ layout="topleft"
+ left="1"
+ min_width="95"
+ mouse_opaque="false"
+ name="chiclet_list"
+ top="7"
+ width="189">
+ <button
+ auto_resize="false"
+ follows="right"
+ height="29"
+ image_hover_selected="SegmentedBtn_Left_Over"
+ image_hover_unselected="SegmentedBtn_Left_Over"
+ image_overlay="Arrow_Small_Left"
+ image_pressed="SegmentedBtn_Left_Press"
+ image_pressed_selected="SegmentedBtn_Left_Press"
+ image_selected="SegmentedBtn_Left_Off"
+ image_unselected="SegmentedBtn_Left_Off"
+ layout="topleft"
+ name="chicklet_left_scroll_button"
+ tab_stop="false"
+ top="-28"
+ visible="false"
+ width="12" />
+ <button
+ auto_resize="false"
+ follows="right"
+ height="29"
+ image_hover_selected="SegmentedBtn_Right_Over"
+ image_hover_unselected="SegmentedBtn_Right_Over"
+ image_overlay="Arrow_Small_Right"
+ image_pressed="SegmentedBtn_Right_Press"
+ image_pressed_selected="SegmentedBtn_Right_Press"
+ image_selected="SegmentedBtn_Right_Off"
+ image_unselected="SegmentedBtn_Right_Off"
+ layout="topleft"
+ name="chicklet_right_scroll_button"
+ tab_stop="false"
+ top="-28"
+ visible="false"
+ width="12" />
+ </chiclet_panel>
+ </layout_panel>
+ <layout_panel auto_resize="false"
+ user_resize="false"
+ width="4"
+ min_width="4"/>
+ <layout_panel
+ auto_resize="false"
+ follows="right"
+ height="28"
+ layout="topleft"
+ min_height="28"
+ min_width="37"
+ name="im_well_panel"
+ top="0"
+ user_resize="false"
+ width="37">
+ <chiclet_im_well
+ follows="right"
+ height="28"
+ layout="topleft"
+ left="0"
+ max_displayed_count="99"
+ name="im_well"
+ top="0"
+ width="35">
+ <!--
+Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
+xml attribute Description
+image_unselected "Unlit" - there are no new messages
+image_selected "Unlit" + "Selected" - there are no new messages and the Well is open
+image_pressed "Lit" - there are new messages
+image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
+ -->
+ <button
+ auto_resize="false"
+ follows="right"
+ halign="center"
+ height="23"
+ image_overlay="Unread_IM"
+ image_overlay_alignment="center"
+ image_pressed="WellButton_Lit"
+ image_pressed_selected="WellButton_Lit_Selected"
+ image_selected="PushButton_Press"
+ label_color="Black"
+ left="0"
+ name="Unread IM messages"
+ tool_tip="Conversations"
+ width="34">
+ <init_callback
+ function="Button.SetDockableFloaterToggle"
+ parameter="im_well_window" />
+ </button>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel
+ auto_resize="false"
+ follows="right"
+ height="28"
+ layout="topleft"
+ min_height="28"
+ min_width="37"
+ name="notification_well_panel"
+ top="0"
+ user_resize="false"
+ width="37">
+ <chiclet_notification
+ follows="right"
+ height="23"
+ layout="topleft"
+ left="0"
+ max_displayed_count="99"
+ name="notification_well"
+ top="5"
+ width="35">
+ <button
+ auto_resize="false"
+ bottom_pad="3"
+ follows="right"
+ halign="center"
+ height="23"
+ image_overlay="Notices_Unread"
+ image_overlay_alignment="center"
+ image_pressed="WellButton_Lit"
+ image_pressed_selected="WellButton_Lit_Selected"
+ image_selected="PushButton_Press"
+ label_color="Black"
+ left="0"
+ name="Unread"
+ tool_tip="Notifications"
+ width="34">
+ <init_callback
+ function="Button.SetDockableFloaterToggle"
+ parameter="notification_well_window" />
+ </button>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
index 8e8d8e6505..0f8c37c691 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -32,7 +32,7 @@
name="Upper Fabric"
tool_tip="Click to choose a picture"
top="10"
- width="74" >
+ width="75" >
<texture_picker.commit_callback
function="TexturePicker.Commit" />
</texture_picker>
diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
index eff674c628..d4da55e32e 100644
--- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
@@ -272,6 +272,7 @@
top="0"
width="313">
<text_editor
+ font="Monospace"
enabled="false"
type="string"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 1c3e08d59b..6521bf2a4e 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -22,17 +22,17 @@ top="600"
<!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->
<web_browser
tab_stop="false"
-trusted_content="true"
-bg_opaque_color="Black"
-border_visible="false"
-bottom="600"
-follows="all"
-left="0"
-name="login_html"
-start_url=""
-top="0"
-height="600"
- width="980" />
+ trusted_content="true"
+ bg_opaque_color="Black"
+ border_visible="false"
+ bottom="600"
+ follows="all"
+ left="0"
+ name="login_html"
+ start_url=""
+ top="0"
+ height="600"
+ width="980"/>
<layout_stack
follows="left|bottom|right"
name="login_widgets"
@@ -120,33 +120,6 @@ label="Remember password"
follows="left|bottom"
font="SansSerifSmall"
height="15"
- left_pad="10"
- name="mode_selection_text"
- top="20"
- width="130">
- Mode:
- </text>
- <combo_box
- follows="left|bottom"
- height="23"
- max_chars="128"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- top_pad="0"
- name="mode_combo"
- width="110">
- <combo_box.item
- label="Basic"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced"
- name="Advanced"
- value="" />
- </combo_box>
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="15"
left_pad="8"
name="start_location_text"
top="20"
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index 84b5d11ba7..23e7814cad 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -10,43 +10,10 @@
name="panel_me"
top="0"
width="333">
- <!--<text
- type="string"
- follows="top|left|right"
- font="SansSerifHugeBold"
- height="20"
- layout="topleft"
- left="15"
- name="user_name"
- text_color="white"
- top="0"
- mouse_opaque="true"
- width="280">
- (Loading...)
- </text> -->
- <tab_container
- follows="all"
- height="555"
- halign="center"
- layout="topleft"
- left="5"
- name="tabs"
- tab_min_width="95"
- tab_height="30"
- tab_position="top"
- top_pad="10"
- width="317">
- <panel
- class="panel_my_profile"
- filename="panel_my_profile.xml"
- label="MY PROFILE"
- help_topic="panel_my_profile_tab"
- name="panel_profile" />
- <panel
- class="panel_picks"
- filename="panel_picks.xml"
- label="MY PICKS"
- help_topic="panel_my_picks_tab"
- name="panel_picks" />
- </tab_container>
+ <panel
+ class="panel_picks"
+ filename="panel_picks.xml"
+ label="MY PICKS"
+ help_topic="panel_my_picks_tab"
+ name="panel_picks"/>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
deleted file mode 100644
index 4bd2235cda..0000000000
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="535"
- label="Profile"
- layout="topleft"
- left="0"
- name="panel_profile"
- top="0"
- width="315">
- <string
- name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string
- name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=en
- </string>
- <string
- name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=en
- </string>
- <string
- name="my_account_link_url"
- value="http://secondlife.com/account" />
- <string
- name="no_partner_text"
- value="None" />
- <string
- name="no_group_text"
- value="None" />
- <string
- name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string
- name="name_text_args">
- [NAME]
- </string>
- <string
- name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack
- name="layout"
- orientation="vertical"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- height="510"
- width="315"
- border_size="0">
- <layout_panel
- name="profile_stack"
- follows="all"
- layout="topleft"
- top="0"
- left="0"
- height="492"
- user_resize="false"
- width="315">
- <scroll_container
- color="DkGray2"
- follows="all"
- layout="topleft"
- left="0"
- name="profile_scroll"
- opaque="true"
- height="488"
- width="315"
- top="0">
- <panel
- layout="topleft"
- follows="left|top|right"
- height="488"
- name="scroll_content_panel"
- top="0"
- left="0"
- width="297">
- <panel
- follows="left|top|right"
- height="117"
- layout="topleft"
- left="10"
- name="second_life_image_panel"
- top="0"
- width="297">
-
- <texture_picker
- allow_no_texture="true"
- default_image_name="None"
- enabled="false"
- fallback_image="Generic_Person_Large"
- follows="top|left"
- height="124"
- layout="topleft"
- left="3"
- name="2nd_life_pic"
- top="10"
- width="102" />
-
- <text
- follows="left|top|right"
- font="SansSerifLarge"
- font.style="BOLD"
- height="15"
- layout="topleft"
- left_pad="10"
- name="display_name_descr_text"
- text_color="0.7 0.7 0.7 1.0"
- top_delta="0"
- width="280" >
- User name
- </text>
-
- <text
- follows="left|top|right"
- font.style="BOLD"
- height="15"
- layout="topleft"
- left_delta="0"
- name="name_descr_text"
- text_color="0.4 0.4 0.4 1.0"
- top_delta="20"
- width="280">
- Display Name
- </text>
-
- <button
- follows="bottom"
- height="23"
- left_delta="0"
- top_delta="20"
- label="Profile"
- name="see_profile_btn"
- tool_tip="See profile for this avatar"
- width="120" />
-
- </panel>
- </panel>
- </scroll_container>
- </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 51ffec4727..7a8e872dc9 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -5,21 +5,21 @@
bg_opaque_color="MouseGray"
follows="left|top|right"
focus_root="true"
- height="60"
+ height="34"
layout="topleft"
name="navigation_bar"
chrome="true"
- width="600">
+ width="800">
<icon
follows="all"
image_name="NavBar_BG"
mouse_opaque="false"
name="bg_icon"
scale_image="true"
- visible="true"
+ visible="false"
left="0"
top="0"
- height="60"
+ height="34"
width="600"/>
<icon
follows="all"
@@ -30,7 +30,7 @@
visible="false"
left="0"
top="0"
- height="60"
+ height="34"
width="600"/>
<icon
follows="all"
@@ -41,16 +41,47 @@
visible="false"
left="0"
top="0"
- height="60"
+ height="34"
width="600"/>
+ <icon
+ follows="all"
+ image_name="NavBar Separator"
+ mouse_opaque="false"
+ name="separator_image"
+ scale_image="true"
+ left="0"
+ top="0"
+ width="800"
+ height="2"/>
+ <layout_stack
+ use_border="true"
+ bevel_style="none"
+ follows="all"
+ height="34"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="nvp_stack"
+ orientation="horizontal"
+ top="0"
+ width="800">
+ <layout_panel
+ follows="top|left"
+ layout="topleft"
+ auto_resize="true"
+ user_resize="true"
+ min_width="480"
+ name="navigation_layout_panel"
+ width="480">
<panel
background_visible="false"
follows="left|top|right"
top="3"
height="23"
layout="topleft"
+ left="0"
name="navigation_panel"
- width="600">
+ width="480">
<pull_button
follows="left|top"
direction="down"
@@ -87,7 +118,7 @@
top_delta="0"
width="32" />
<location_input
- follows="left|right|top"
+ follows="all"
halign="right"
height="23"
label="Location"
@@ -97,70 +128,50 @@
mouse_opaque="false"
name="location_combo"
top_delta="0"
- width="226">
+ width="355">
<combo_list
mouse_wheel_opaque="true"/>
- <!-- *TODO: Delete. Let the location_input use the correct art sizes.
- <location_input.add_landmark_button
- height="18"
- name="location_combo_add"
- width="20" />
- <location_input.info_button
- height="18"
- name="location_combo_info"
- width="20" />
- -->
</location_input>
- <!-- <button -->
- <!-- follows="right|top" -->
- <!-- height="20" -->
- <!-- image_disabled="TextField_Search_Off" -->
- <!-- image_disabled_selected="TextField_Search_Off" -->
- <!-- image_hover_selected="TextField_Search_Off" -->
- <!-- image_hover_unselected="TextField_Search_Off" -->
- <!-- image_selected="TextField_Search_Off" -->
- <!-- image_unselected="TextField_Search_Off" -->
- <!-- layout="topleft" -->
- <!-- left_pad="5" -->
- <!-- mouse_opaque="false" -->
- <!-- name="search_bg" -->
- <!-- top_delta="0" -->
- <!-- width="168" /> -->
- <search_combo_box
- follows="right|top"
- halign="right"
- height="23"
- label="Search"
+ </panel>
+ </layout_panel>
+
+ <layout_panel
+ auto_resize="false"
+ layout="topleft"
+ max_width="5"
+ min_width="5"
+ name="nav_bar_resize_handle_panel"
+ user_resize="false"
+ width="5">
+ <icon
+ follows="top|right"
+ height="25"
+ image_name="ChatBarHandle"
+ layout="topleft"
+ left="-6"
+ name="resize_handle"
+ top="4"
+ width="5" />
+ </layout_panel>
+
+ <layout_panel
+ follows="top|left"
layout="topleft"
- right="-10"
- mouse_opaque="false"
- name="search_combo_box"
- tool_tip="Search"
- top_delta="0"
- width="244" >
- <combo_editor
- label="Search [SECOND_LIFE]"
- name="search_combo_editor"/>
- <combo_list
- draw_border="true"
- border.highlight_light_color="FocusColor"
- border.highlight_dark_color="FocusColor"
- border.shadow_light_color="FocusColor"
- border.shadow_dark_color="FocusColor"
- mouse_wheel_opaque="true" />
- </search_combo_box>
- </panel>
+ auto_resize="true"
+ user_resize="true"
+ min_width="315"
+ name="favorites_layout_panel"
+ width="315">
<favorites_bar
follows="left|right|top"
font="SansSerifSmall"
- height="15"
+ height="20"
layout="topleft"
left="0"
name="favorite"
image_drag_indication="Accordion_ArrowOpened_Off"
- bottom="55"
tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
- width="590">
+ width="311">
<label
follows="left|top"
height="15"
@@ -173,14 +184,20 @@
width="102">
Favorites Bar
</label>
- <chevron_button name=">>"
- image_unselected="TabIcon_Close_Off"
- image_selected="TabIcon_Close_Off"
- tab_stop="false"
- follows="left|bottom"
- tool_tip="Show more of My Favorites"
- width="15"
- top="15"
- height="15"/>
+ <!-- More button actually is a text box. -->
+ <more_button
+ follows="left|bottom"
+ name=">>"
+ tab_stop="false"
+ tool_tip="Show more of My Favorites"
+ top="13"
+ width="50"
+ bottom="0"
+ valign="bottom">
+ More &#9660;
+ </more_button>
</favorites_bar>
+ </layout_panel>
+
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
new file mode 100644
index 0000000000..d492f9bd68
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel
+ height="300"
+ follows="all"
+ layout="topleft"
+ name="nearby_chat"
+ help_topic="nearby_chat"
+ width="320">
+ <check_box
+ bottom_delta="36"
+ control_name="TranslateChat"
+ enabled="true"
+ height="16"
+ label="Translate chat"
+ layout="topleft"
+ left="5"
+ name="translate_chat_checkbox"
+ width="230" />
+ <chat_history
+ parse_urls="true"
+ bg_readonly_color="ChatHistoryBgColor"
+ bg_writeable_color="ChatHistoryBgColor"
+ follows="all"
+ left="5"
+ top_delta="17"
+ layout="topleft"
+ height="260"
+ name="chat_history"
+ parse_highlights="true"
+ text_color="ChatHistoryTextColor"
+ text_readonly_color="ChatHistoryTextColor"
+ right_widget_pad="5"
+ left_widget_pad="0"
+ width="315" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml
deleted file mode 100644
index 124b1cfc6b..0000000000
--- a/indra/newview/skins/default/xui/en/panel_notes.xml
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="515"
- label="Notes &amp; Privacy"
- layout="topleft"
- left="0"
- name="panel_notes"
- top="0"
- width="313"
->
- <layout_stack
- name="layout"
- orientation="vertical"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- height="517"
- width="313"
- border_size="0">
- <layout_panel
- name="notes_stack"
- follows="all"
- layout="topleft"
- top="0"
- left="0"
- height="450"
- width="313">
- <scroll_container
- color="DkGray2"
- follows="all"
- layout="topleft"
- left="0"
- name="profile_scroll"
- opaque="true"
- height="450"
- width="313"
- top="0">
- <panel
- height="450"
- layout="topleft"
- name="profile_scroll_panel"
- top="0"
- left="0"
- width="303">
- <text
- follows="left|top"
- font.style="BOLD"
- height="16"
- layout="topleft"
- left="11"
- name="status_message"
- text_color="white"
- top="10"
- value="My private notes:"
- width="293" />
- <text_editor
- follows="left|top"
- height="120"
- layout="topleft"
- left="12"
- max_length="1000"
- name="notes_edit"
- text_color="DkGray"
- top_pad="3"
- width="288"
- word_wrap="true" />
- <text
- follows="left|top"
- font.style="BOLD"
- height="16"
- layout="topleft"
- left="11"
- name="status_message2"
- text_color="white"
- top_pad="20"
- value="Allow this person to:"
- width="293" />
- <check_box
- enabled="false"
- height="16"
- label="See my online status"
- layout="topleft"
- left="10"
- name="status_check"
- width="293" />
- <check_box
- enabled="false"
- height="16"
- label="See me on the map"
- layout="topleft"
- left="10"
- name="map_check"
- width="293" />
- <check_box
- enabled="false"
- height="16"
- label="Edit, delete or take my objects"
- layout="topleft"
- left="10"
- name="objects_check"
- width="293" />
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel
- follows="bottom|left"
- height="30"
- layout="topleft"
- left="0"
- name="notes_buttons_panel"
- auto_resize="false"
- width="313">
-
- <layout_stack
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- name="bottom_bar_ls"
- left="2"
- orientation="horizontal"
- top_pad="5"
- width="309">
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left="0"
- name="add_friend_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="118">
- <button
- follows="bottom|left|right"
- height="23"
- label="Add Friend"
- layout="topleft"
- left="1"
- mouse_opaque="false"
- name="add_friend"
- tool_tip="Offer friendship to the Resident"
- top="0"
- width="117" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="im_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="22">
- <button
- follows="bottom|left|right"
- height="23"
- label="IM"
- layout="topleft"
- name="im"
- tool_tip="Open instant message session"
- top="0"
- left="1"
- width="21" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="call_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="52">
- <button
- follows="bottom|left|right"
- height="23"
- label="Call"
- layout="topleft"
- name="call"
- tool_tip="Call this Resident"
- left="1"
- top="0"
- use_ellipses="true"
- width="51" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="show_on_map_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="46">
- <button
- enabled="false"
- follows="bottom|left|right"
- height="23"
- label="Map"
- layout="topleft"
- name="show_on_map_btn"
- tool_tip="Show the Resident on the map"
- top="0"
- left="1"
- width="45" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="teleport_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="81">
- <button
- follows="bottom|left|right"
- height="23"
- label="Teleport"
- layout="topleft"
- name="teleport"
- tool_tip="Offer teleport"
- left="1"
- top="0"
- width="80" />
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index 59ead84127..f6f62ac54e 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -9,6 +9,8 @@
layout="topleft"
left="0"
name="notification_panel"
+ chrome="true"
+ show_title="false"
top="0"
height="140"
translate="false"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 7daa52b2d9..24046d5cca 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -117,7 +117,7 @@
</scroll_container>
<panel
follows="left|right|bottom"
- height="35"
+ height="23"
layout="topleft"
top_pad="5"
left="8"
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 87e263726d..85f402dfa2 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -4,12 +4,12 @@ bg_opaque_color="DkGray2"
background_visible="true"
background_opaque="true"
follows="all"
- height="548"
+ height="571"
label="Picks"
layout="topleft"
- left="0"
+ left="8"
name="panel_picks"
- top="0"
+ top_pad="0"
width="313">
<string
name="no_picks"
@@ -30,7 +30,7 @@ bg_opaque_color="DkGray2"
<accordion
fit_parent="true"
follows="all"
- height="485"
+ height="514"
layout="topleft"
left="0"
name="accordion"
@@ -81,10 +81,10 @@ bg_opaque_color="DkGray2"
left="1"
height="27"
label="bottom_panel"
- layout="bottom"
+ layout="topleft"
name="edit_panel"
- top_pad="-2"
- width="313">
+ top_pad="0"
+ width="312">
<layout_stack
follows="bottom|left|right"
@@ -149,8 +149,9 @@ bg_opaque_color="DkGray2"
follows="bottom|left|right"
layout="topleft"
left="0"
- height="40"
+ height="30"
name="buttons_cucks"
+ top_pad="0"
width="313">
<layout_stack
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 5d7334f780..670aa47313 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -202,7 +202,7 @@ background_visible="true"
</layout_panel>
<layout_panel
- follows="bottom|left|right"
+ follows="bottom|right"
height="23"
layout="bottomleft"
left_pad="0"
@@ -212,7 +212,7 @@ background_visible="true"
auto_resize="true"
width="24">
<menu_button
- follows="bottom|left|right"
+ follows="bottom|right"
height="23"
image_disabled="ComboButton_UpOff"
image_unselected="ComboButton_UpOff"
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
new file mode 100644
index 0000000000..ab2a42ea01
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_postcard_message"
+ width="490">
+ <text
+ type="string"
+ length="1"
+ bottom="35"
+ follows="top|left"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left="12"
+ name="to_label"
+ top="10"
+ width="60">
+ To:
+ </text>
+ <line_editor
+ control_name="LastPostcardRecipient"
+ follows="left|top|right"
+ height="20"
+ layout="topleft"
+ left_pad="10"
+ name="to_form"
+ right="-10"
+ top_delta="-4" />
+ <text
+ type="string"
+ length="1"
+ bottom_delta="23"
+ follows="top|left"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left="12"
+ name="name_label"
+ width="60">
+ From:
+ </text>
+ <line_editor
+ follows="left|top|right"
+ height="20"
+ layout="topleft"
+ left_pad="10"
+ max_length_bytes="100"
+ name="name_form"
+ right="-10"
+ top_delta="-4" />
+ <text
+ type="string"
+ length="1"
+ bottom_delta="23"
+ follows="top|left"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left="12"
+ name="subject_label"
+ width="60">
+ Subject:
+ </text>
+ <line_editor
+ follows="left|top|right"
+ height="20"
+ label="Type your subject here."
+ layout="topleft"
+ left_pad="10"
+ max_length_bytes="100"
+ name="subject_form"
+ right="-10"
+ top_delta="-4" />
+ <text
+ type="string"
+ length="1"
+ bottom_delta="23"
+ follows="top|left|right"
+ font="SansSerif"
+ layout="topleft"
+ left="12"
+ name="msg_label"
+ right="-10">
+ Message:
+ </text>
+ <text_editor
+ type="string"
+ length="1"
+ follows="left|top|right"
+ height="60"
+ layout="topleft"
+ left_delta="0"
+ max_length="700"
+ name="msg_form"
+ right="-10"
+ top_pad="10"
+ word_wrap="true">
+ Type your message here.
+ </text_editor>
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Cancel"
+ layout="topleft"
+ name="cancel_btn"
+ right="-32"
+ top="350"
+ width="100">
+ <button.commit_callback
+ function="Postcard.Cancel" />
+ </button>
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Send"
+ layout="topleft"
+ left_delta="-106"
+ name="send_btn"
+ top_delta="0"
+ width="100">
+ <button.commit_callback
+ function="Postcard.Send" />
+ </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
new file mode 100644
index 0000000000..2e0bb88f53
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_postcard_settings"
+ width="490">
+ <combo_box
+ follows="left|top|right"
+ height="23"
+ label="Resolution"
+ layout="topleft"
+ left="10"
+ name="postcard_size_combo"
+ right="-10"
+ top_pad="10">
+ <combo_box.item
+ label="Current Window"
+ name="CurrentWindow"
+ value="[i0,i0]" />
+ <combo_box.item
+ label="640x480"
+ name="640x480"
+ value="[i640,i480]" />
+ <combo_box.item
+ label="800x600"
+ name="800x600"
+ value="[i800,i600]" />
+ <combo_box.item
+ label="1024x768"
+ name="1024x768"
+ value="[i1024,i768]" />
+ <combo_box.item
+ label="Custom"
+ name="Custom"
+ value="[i-1,i-1]" />
+ </combo_box>
+ <layout_stack
+ animate="false"
+ follows="all"
+ height="275"
+ layout="bottomleft"
+ name="postcard_image_params_ls"
+ left_delta="0"
+ orientation="vertical"
+ top_pad="10"
+ right="-10">
+ <layout_panel
+ follows="top|left|right"
+ height="60"
+ layout="topleft"
+ left="0"
+ name="postcard_image_size_lp"
+ user_resize="false"
+ auto_resize="false"
+ top="0"
+ right="-1"
+ visible="true">
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Width"
+ label_width="40"
+ layout="topleft"
+ left="10"
+ max_val="6016"
+ min_val="32"
+ name="postcard_snapshot_width"
+ top_pad="10"
+ width="95" />
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Height"
+ label_width="40"
+ layout="topleft"
+ left_pad="5"
+ max_val="6016"
+ min_val="32"
+ name="postcard_snapshot_height"
+ top_delta="0"
+ width="95" />
+ <check_box
+ bottom_delta="20"
+ follows="left|top"
+ label="Constrain proportions"
+ layout="topleft"
+ left="10"
+ name="postcard_keep_aspect_check" />
+ </layout_panel>
+ <layout_panel
+ follows="top|left|right"
+ height="23"
+ layout="topleft"
+ left="0"
+ name="postcard_image_format_quality_lp"
+ user_resize="false"
+ auto_resize="true"
+ top="0"
+ right="-1"
+ visible="true">
+ <slider
+ decimal_digits="0"
+ follows="left|top"
+ height="15"
+ increment="1"
+ initial_value="75"
+ label="Image quality"
+ label_width="80"
+ layout="topleft"
+ left="0"
+ max_val="100"
+ name="image_quality_slider"
+ top_pad="7"
+ width="190" />
+ <text
+ type="string"
+ follows="left|top"
+ font="SansSerifSmall"
+ length="1"
+ height="14"
+ layout="topleft"
+ left_pad="-5"
+ halign="left"
+ name="image_quality_level"
+ top_delta="0"
+ width="60">
+ ([QLVL])
+ </text>
+ </layout_panel>
+ </layout_stack>
+</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 ea09286592..caf7fc85f5 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -204,119 +204,16 @@
name="nearby_toasts_fadingtime"
top_pad="3"
width="325" />
-
- <check_box
- control_name="TranslateChat"
- enabled="true"
- height="16"
- layout="topleft"
- left="30"
- name="translate_chat_checkbox"
- top_pad="5"
- width="400" />
- <!-- *HACK
- After storm-1109 will be fixed: instead of using this text_box, word_wrap should be applied for "translate_chat_checkbox" check_box's label.-->
- <text
- follows="top|left"
- height="15"
- layout="topleft"
- left="50"
- name="translate_chb_label"
- top_delta="1"
- width="450"
- wrap="true">
- Use machine translation while chatting (powered by Google)
- </text>
- <text
- top_pad="20"
- name="translate_language_text"
- follows="left|top"
- layout="topleft"
- left_delta="20"
- height="20"
- width="110">
- Translate chat into:
- </text>
- <combo_box
- allow_text_entry="true"
- bottom_delta="3"
- control_name="TranslateLanguage"
- enabled="true"
- follows="left|top"
- height="23"
- left_delta="110"
- max_chars="135"
- mouse_opaque="true"
- name="translate_language_combobox"
- width="146">
- <combo_box.item
- label="System Default"
- name="System Default Language"
- value="default" />
- <combo_box.item
- label="English"
- name="English"
- value="en" />
- <!-- After "System Default" and "English", please keep the rest of these combo_box.items in alphabetical order by the first character in the string. -->
- <combo_box.item
- label="Dansk (Danish)"
- name="Danish"
- value="da" />
- <combo_box.item
- label="Deutsch (German)"
- name="German"
- value="de" />
- <combo_box.item
- label="Español (Spanish)"
- name="Spanish"
- value="es" />
- <combo_box.item
- label="Français (French)"
- name="French"
- value="fr" />
- <combo_box.item
- label="Italiano (Italian)"
- name="Italian"
- value="it" />
- <combo_box.item
- label="Magyar (Hungarian)"
- name="Hungarian"
- value="hu" />
- <combo_box.item
- label="Nederlands (Dutch)"
- name="Dutch"
- value="nl" />
- <combo_box.item
- label="Polski (Polish)"
- name="Polish"
- value="pl" />
- <combo_box.item
- label="Português (Portuguese)"
- name="Portugese"
- value="pt" />
- <combo_box.item
- label="Русский (Russian)"
- name="Russian"
- value="ru" />
- <combo_box.item
- label="Türkçe (Turkish)"
- name="Turkish"
- value="tr" />
- <combo_box.item
- label="Українська (Ukrainian)"
- name="Ukrainian"
- value="uk" />
- <combo_box.item
- label="中文 (简体) (Chinese)"
- name="Chinese"
- value="zh" />
- <combo_box.item
- label="日本語 (Japanese)"
- name="Japanese"
- value="ja" />
- <combo_box.item
- label="한국어 (Korean)"
- name="Korean"
- value="ko" />
- </combo_box>
+ <button
+ follows="left|top"
+ height="23"
+ label="Chat Translation Settings"
+ layout="topleft"
+ left="30"
+ name="ok_btn"
+ top="-40"
+ width="170">
+ <button.commit_callback
+ function="Pref.TranslationSettings" />
+ </button>
</panel> \ No newline at end of file
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 9c718fdb87..4079a80924 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -67,11 +67,6 @@
value="it" />
<combo_box.item
enabled="true"
- label="Nederlands (Dutch) - Beta"
- name="Dutch"
- value="nl" />
- <combo_box.item
- enabled="true"
label="Polski (Polish) - Beta"
name="Polish"
value="pl" />
@@ -82,9 +77,24 @@
value="pt" />
<combo_box.item
enabled="true"
+ label="Русский (Russian) - Beta"
+ name="Russian"
+ value="ru" />
+ <combo_box.item
+ enabled="true"
+ label="Türkçe (Turkish) - Beta"
+ name="Turkish"
+ value="tr" />
+ <combo_box.item
+ enabled="true"
label="日本語 (Japanese) - Beta"
name="(Japanese)"
value="ja" />
+ <combo_box.item
+ enabled="true"
+ label="正體中文 (Traditional Chinese) - Beta"
+ name="Traditional Chinese"
+ value="zh" />
</combo_box>
<text
font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index cb547d7c6b..d9067b41c7 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -86,16 +86,6 @@
name="appearance_camera_movement"
tool_tip="Use automatic camera positioning while in edit mode"
width="242" />
- <check_box
- control_name="SidebarCameraMovement"
- follows="left|top"
- height="16"
- initial_value="true"
- label="Sidebar"
- layout="topleft"
- name="appearance_sidebar_positioning"
- tool_tip="Use automatic camera positioning for sidebar"
- width="242" />
<icon
follows="left|top"
height="18"
@@ -117,7 +107,7 @@
name="keyboard_lbl"
width="270"
top_delta="2">
- Keyboard:
+ Keyboard:
</text>
<check_box
control_name="ArrowKeysAlwaysMove"
@@ -149,7 +139,7 @@
name="mouse_lbl"
width="270"
top_pad="15">
- Mouse:
+ Mouse:
</text>
<check_box
control_name="FirstPersonAvatarVisible"
@@ -205,7 +195,7 @@
name="single_click_action_lbl"
width="150"
top_pad="20">
- Single click on land:
+ Single click on land:
</text>
<combo_box
height="23"
@@ -235,7 +225,7 @@
name="double_click_action_lbl"
width="150"
top_pad="12">
- Double click on land:
+ Double click on land:
</text>
<combo_box
height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index a7078ce2e1..4aeea8823e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -122,7 +122,7 @@
layout="topleft"
left_delta="0"
name="external"
- value="1"
+ value="true"
top="0"
tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen."
width="480" />
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
deleted file mode 100644
index f5a9daa994..0000000000
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ /dev/null
@@ -1,458 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="430"
- label="Profile"
- layout="topleft"
- left="0"
- name="panel_profile"
- top="0"
- width="317">
- <string
- name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string
- name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=en
- </string>
- <string
- name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=en
- </string>
- <string
- name="my_account_link_url"
- value="http://secondlife.com/account" />
- <string
- name="no_partner_text"
- value="None" />
- <string
- name="no_group_text"
- value="None" />
- <string
- name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string
- name="name_text_args">
- [NAME]
- </string>
- <string
- name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack
- name="layout"
- orientation="vertical"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- height="400"
- width="317"
- border_size="0">
- <layout_panel
- name="profile_stack"
- follows="all"
- layout="topleft"
- top="0"
- left="0"
- height="400"
- width="317">
- <scroll_container
- color="DkGray2"
- follows="all"
- layout="topleft"
- left="0"
- name="profile_scroll"
- opaque="true"
- height="400"
- width="317"
- top="0">
- <panel
- layout="topleft"
- follows="left|top|right"
- height="505"
- min_height="505"
- name="profile_scroll_panel"
- top="0"
- left="0"
- width="297">
- <panel
- follows="left|top|right"
- height="124"
- layout="topleft"
- left="13"
- name="second_life_image_panel"
- top="0"
- width="297">
- <texture_picker
- allow_no_texture="true"
- default_image_name="None"
- enabled="false"
- fallback_image="Generic_Person_Large"
- follows="top|left"
- height="124"
- layout="topleft"
- left="0"
- name="2nd_life_pic"
- top="10"
- width="102" />
- <text
- follows="left|top|right"
- font.style="BOLD"
- height="15"
- layout="topleft"
- left_pad="10"
- name="title_sl_descr_text"
- text_color="white"
- top_delta="0"
- value="[SECOND_LIFE]:"
- width="180" />
- <expandable_text
- follows="left|top|right"
- height="97"
- layout="topleft"
- left="107"
- textbox.max_length="512"
- textbox.show_context_menu="true"
- name="sl_description_edit"
- top_pad="-3"
- translate="false"
- width="180"
- expanded_bg_visible="true"
- expanded_bg_color="DkGray">
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet.Nullamma lesuada mauris sit amet ipsum. adipiscing elit. Ae nean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
- </expandable_text>
- </panel>
- <panel
- follows="left|top|right"
- height="124"
- layout="topleft"
- top_pad="0"
- left="13"
- name="first_life_image_panel"
- width="297">
- <texture_picker
- allow_no_texture="true"
- default_image_name="None"
- enabled="false"
- fallback_image="Generic_Person_Large"
- follows="top|left"
- height="124"
- layout="topleft"
- left="0"
- name="real_world_pic"
- width="102" />
- <text
- follows="left|top|right"
- font.style="BOLD"
- height="15"
- layout="topleft"
- left_pad="10"
- name="title_rw_descr_text"
- text_color="white"
- top_delta="0"
- value="Real World:"
- width="180" />
- <expandable_text
- follows="left|top|right"
- height="97"
- layout="topleft"
- left="107"
- textbox.max_length="512"
- textbox.show_context_menu="true"
- name="fl_description_edit"
- top_pad="-3"
- translate="false"
- width="180"
- expanded_bg_visible="true"
- expanded_bg_color="DkGray">
- Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
- </expandable_text>
- </panel>
- <text
- follows="left|top"
- height="15"
- font.style="BOLD"
- font="SansSerifMedium"
- layout="topleft"
- left="10"
- name="homepage_edit"
- top_pad="0"
- translate="false"
- value="http://librarianavengers.org"
- width="300"
- word_wrap="false"
- use_ellipses="true" />
- <text
- follows="left|top"
- font.style="BOLD"
- height="10"
- layout="topleft"
- left="10"
- name="title_member_text"
- text_color="white"
- top_pad="10"
- value="Resident Since:"
- width="300" />
- <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" />
- <text
- follows="left|top"
- font.style="BOLD"
- height="15"
- layout="topleft"
- left="10"
- name="title_acc_status_text"
- text_color="white"
- top_pad="5"
- value="Account Status:"
- width="300" />
- <!-- <text
- type="string"
- follows="left|top"
- font="SansSerifSmall"
- height="15"
- layout="topleft"
- left_pad="10"
- name="my_account_link"
- top_delta="0"
- value="Go to Dashboard"
- width="100"/> -->
- <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_editor>
- <text
- follows="left|top"
- font.style="BOLD"
- height="15"
- layout="topleft"
- left="10"
- name="title_partner_text"
- text_color="white"
- top_pad="3"
- value="Partner:"
- width="300" />
- <panel
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="partner_data_panel"
- top_pad="0"
- width="300">
- <text
- follows="left|top"
- height="10"
- initial_value="(retrieving)"
- layout="topleft"
- left="0"
- parse_urls="true"
- name="partner_text"
- top="0"
- use_ellipses="true"
- width="300" />
- </panel>
- <text
- follows="left|top"
- font.style="BOLD"
- height="13"
- layout="topleft"
- left="10"
- name="title_groups_text"
- text_color="white"
- top_pad="3"
- value="Groups:"
- width="300" />
- <expandable_text
- follows="all"
- height="103"
- layout="topleft"
- left="7"
- name="sl_groups"
- textbox.max_length="512"
- textbox.show_context_menu="true"
- top_pad="0"
- translate="false"
- width="290"
- expanded_bg_visible="true"
- expanded_bg_color="DkGray">
- Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm.
- </expandable_text>
- </panel>
- </scroll_container>
- </layout_panel>
-
-</layout_stack>
-
- <layout_stack
- name="layout_verb_buttons"
- orientation="horizontal"
- follows="bottom|left|right"
- layout="topleft"
- left="2"
- top_pad="1"
- height="30"
- width="315"
- border_size="0">
- <layout_panel
- follows="bottom|left"
- height="30"
- layout="topleft"
- name="profile_buttons_panel"
- top="0"
- auto_resize="false"
- width="317">
-
- <layout_stack
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- name="bottom_bar_ls"
- left="0"
- orientation="horizontal"
- top_pad="5"
- width="317">
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left="0"
- name="add_friend_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="121">
- <button
- follows="bottom|left|right"
- height="23"
- label="Add Friend"
- layout="topleft"
- left="1"
- mouse_opaque="false"
- name="add_friend"
- tool_tip="Offer friendship to the Resident"
- top="0"
- width="120" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="im_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="22">
- <button
- follows="bottom|left|right"
- height="23"
- label="IM"
- layout="topleft"
- name="im"
- tool_tip="Open instant message session"
- top="0"
- left="1"
- width="21" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="call_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="52">
- <button
- follows="bottom|left|right"
- height="23"
- label="Call"
- layout="topleft"
- name="call"
- tool_tip="Call this Resident"
- left="1"
- top="0"
- use_ellipses="true"
- width="51" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="chat_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="93">
- <button
- follows="bottom|left|right"
- height="23"
- label="Teleport"
- layout="topleft"
- name="teleport"
- tool_tip="Offer teleport"
- left="1"
- top="0"
- use_ellipses="true"
- width="92" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="overflow_btn_lp"
- user_resize="false"
- auto_resize="false"
- width="24">
- <menu_button
- follows="bottom|left|right"
- height="23"
- label="▼"
- layout="topleft"
- name="overflow_btn"
- tool_tip="Pay money to or share inventory with the Resident"
- left="1"
- top="0"
- width="23" />
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
deleted file mode 100644
index 646875b52e..0000000000
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- follows="all"
- height="570"
- layout="topleft"
- min_height="350"
- name="panel_target_profile"
- left="0"
- width="333">
- <string
- name="status_online">
- Online
- </string>
- <string
- name="status_offline">
- Offline
- </string>
- <button
- follows="top|left"
- height="24"
- image_hover_unselected="BackButton_Over"
- image_pressed="BackButton_Press"
- image_unselected="BackButton_Off"
- layout="topleft"
- name="back"
- left="10"
- tab_stop="false"
- top="2"
- width="30"
- use_draw_context_alpha="false" />
- <text
- top="10"
- follows="top|left"
- height="13"
- layout="topleft"
- left="45"
- name="display_name_label"
- text_color="LtGray"
- value="Display Name:"
- width="80" />
- <text
- top_delta="0"
- follows="top|left"
- height="13"
- layout="topleft"
- left="45"
- name="solo_username_label"
- text_color="LtGray"
- value="Username:"
- visible="false"
- width="80" />
- <text
- follows="top|right"
- halign="right"
- height="13"
- layout="topleft"
- right="-15"
- name="status"
- text_color="LtGray_50"
- top_delta="0"
- value="Online"
- width="150" />
- <text
- follows="top|left|right"
- font="SansSerifBigBold"
- height="29"
- layout="topleft"
- left="45"
- name="user_name_small"
- text_color="LtGray"
- top="22"
- value="Jack oh look at me this is a super duper long name"
- use_ellipses="true"
- word_wrap="true"
- visible="false"
- width="255" />
- <text
- follows="top|left|right"
- font="SansSerifHugeBold"
- height="27"
- layout="topleft"
- left="45"
- name="user_name"
- text_color="LtGray"
- translate="false"
- top="25"
- value="TestString PleaseIgnore"
- visible="true"
- use_ellipses="true"
- width="258" />
- <button
- name="copy_to_clipboard"
- layout="topleft"
- follows="top|right"
- image_overlay="Copy"
- top_delta="0"
- right="-15"
- height="21"
- width="21"
- tab_stop="false"
- tool_tip="Copy to Clipboard"/>
- <text
- follows="top|left"
- height="13"
- layout="topleft"
- left="45"
- name="user_label"
- text_color="LtGray"
- top_pad="10"
- value="Username:"
- width="70" />
- <text
- follows="top|left"
- height="20"
- layout="topleft"
- left_pad="0"
- name="user_slid"
- text_color="EmphasisColor"
- font="SansSerifBold"
- top_delta="-2"
- translate="false"
- use_ellipses="true"
- value="teststring.pleaseignore"
- width="195"
- wrap="true "/>
- <tab_container
- follows="all"
- height="489"
- halign="center"
- layout="topleft"
- left="5"
- min_width="333"
- name="tabs"
- tab_min_width="80"
- tab_height="30"
- tab_position="top"
- top_pad="5"
- width="317">
- <panel
- class="panel_profile"
- filename="panel_profile.xml"
- label="PROFILE"
- layout="topleft"
- help_topic="profile_profile_tab"
- name="panel_profile" />
- <panel
- class="panel_picks"
- filename="panel_picks.xml"
- label="PICKS"
- layout="topleft"
- help_topic="profile_picks_tab"
- name="panel_picks" />
- <panel
- class="panel_notes"
- filename="panel_notes.xml"
- label="NOTES &amp; PRIVACY"
- layout="topleft"
- help_topic="profile_notes_tab"
- name="panel_notes" />
- </tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index df16f6fd37..112f12500d 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -57,7 +57,7 @@
mouse_opaque="false"
name="estate_name_text"
top_delta="0"
- width="150">
+ width="350">
mainland
</text>
<text
@@ -79,7 +79,7 @@
mouse_opaque="false"
name="estate_owner_text"
top_delta="0"
- width="150">
+ width="350">
(none)
</text>
<text
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
deleted file mode 100644
index 0f330a7b98..0000000000
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Side tray cannot show background because it is always
- partially on screen to hold tab buttons. -->
-<side_tray
- name="sidebar"
- background_visible="false"
- mouse_opaque="true"
- width="333"
- collapsed="true"
->
- <!-- Individual tabs must show background to have seemless
- appearance up to tray panel header word like "Home".
- Embedded panels are inset by a pixel and so their
- backgrounds will not block the world fully. -->
-
- <sidetray_tab
- name="sidebar_openclose"
- help_topic="sidebar_openclose"
- tab_title="Toggle Sidebar"
- description="Toggle Sidebar."
- image="TabIcon_Open_Off"
- image_selected="TabIcon_Close_Off"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel /> <!-- dummy panel, never to actually be seen -->
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_home"
- help_topic="sidebar_home"
- tab_title="Home"
- description="Home."
- image="TabIcon_Home_Off"
- image_selected="TabIcon_Home_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel
- class="panel_sidetray_home"
- name="panel_home"
- filename="panel_sidetray_home_tab.xml"
- label="home"
- />
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_me"
- help_topic="sidebar_me"
- tab_title="My Profile"
- description="Edit your public profile and Picks."
- image="TabIcon_Me_Off"
- image_selected="TabIcon_Me_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel_container
- name="panel_container"
- default_panel_name="panel_me"
- width="333"
- >
- <panel
- class="panel_me"
- name="panel_me"
- filename="panel_me.xml"
- label="Me"
- />
-
- </panel_container>
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_people"
- help_topic="sidebar_people"
- tab_title="People"
- description="Find your friends, contacts and people nearby."
- image="TabIcon_People_Off"
- image_selected="TabIcon_People_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel_container
- name="panel_container"
- default_panel_name="panel_people"
- width="333"
- >
- <panel
- class="panel_people"
- name="panel_people"
- filename="panel_people.xml"
- />
- <panel
- class="panel_profile_view"
- name="panel_profile_view"
- filename="panel_profile_view.xml"
- />
- <panel
- class="panel_group_info_sidetray"
- name="panel_group_info_sidetray"
- filename="panel_group_info_sidetray.xml"
- label="Group Profile"
- font="SansSerifBold"
- />
- <panel
- class="panel_block_list_sidetray"
- name="panel_block_list_sidetray"
- filename="panel_block_list_sidetray.xml"
- label="Blocked Residents &amp; Objects"
- font="SansSerifBold"
- />
-
- </panel_container>
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_places"
- help_topic="sidebar_places"
- tab_title="Places"
- label="Places"
- description="Find places to go and places you&apos;ve visited before."
- image="TabIcon_Places_Off"
- image_selected="TabIcon_Places_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel
- class="panel_places"
- name="panel_places"
- filename="panel_places.xml"
- label="Places"
- font="SansSerifBold"
- />
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_inventory"
- help_topic="sidebar_inventory"
- tab_title="My Inventory"
- description="Browse your inventory."
- image="TabIcon_Things_Off"
- image_selected="TabIcon_Things_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <badge location="top_left" location_percent_vcenter="50" location_percent_hcenter="95" />
- <panel
- class="sidepanel_inventory"
- name="sidepanel_inventory"
- filename="sidepanel_inventory.xml"
- label="Edit Inventory"
- font="SansSerifBold"
- />
- </sidetray_tab>
-
- <sidetray_tab
- name="sidebar_appearance"
- help_topic="sidebar_appearance"
- tab_title="My Appearance"
- description="Change your appearance and current look."
- image="TabIcon_Appearance_Off"
- image_selected="TabIcon_Appearance_Selected"
- mouse_opaque="false"
- background_visible="true"
- >
- <panel
- class="sidepanel_appearance"
- name="sidepanel_appearance"
- filename="sidepanel_appearance.xml"
- label="Edit Appearance"
- font="SansSerifBold"
- />
- </sidetray_tab>
-
-</side_tray>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000..9057ebb65e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_inventory"
+ width="490">
+ <icon
+ follows="top|left"
+ height="18"
+ image_name="Snapshot_Inventory"
+ layout="topleft"
+ left="12"
+ mouse_opaque="true"
+ name="title_icon"
+ top="5"
+ width="18" />
+ <text
+ follows="top|left|right"
+ font="SansSerifBold"
+ height="20"
+ layout="topleft"
+ left_pad="12"
+ length="1"
+ name="title"
+ right="-10"
+ text_color="white"
+ type="string"
+ top_delta="5">
+ Save to My Inventory
+ </text>
+ <view_border
+ bevel_style="in"
+ follows="left|top|right"
+ height="1"
+ left="10"
+ layout="topleft"
+ name="hr"
+ right="-10"
+ top_pad="5"
+ />
+ <text
+ bottom="35"
+ follows="top|left|right"
+ font="SansSerif"
+ height="56"
+ layout="topleft"
+ left="12"
+ length="1"
+ name="hint_lbl"
+ top_pad="10"
+ type="string"
+ word_wrap="true">
+ Saving an image to your inventory costs L$[UPLOAD_COST]. To save your image as a texture select one of the square formats.
+ </text>
+ <combo_box
+ follows="top|left|right"
+ height="23"
+ label="Resolution"
+ layout="topleft"
+ left_delta="0"
+ name="texture_size_combo"
+ right="-10"
+ top_pad="10">
+ <combo_box.item
+ label="Current Window"
+ name="CurrentWindow"
+ value="[i0,i0]" />
+ <combo_box.item
+ label="Small (128x128)"
+ name="Small(128x128)"
+ value="[i128,i128]" />
+ <combo_box.item
+ label="Medium (256x256)"
+ name="Medium(256x256)"
+ value="[i256,i256]" />
+ <combo_box.item
+ label="Large (512x512)"
+ name="Large(512x512)"
+ value="[i512,i512]" />
+ <combo_box.item
+ label="Custom"
+ name="Custom"
+ value="[i-1,i-1]" />
+ </combo_box>
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Width"
+ label_width="40"
+ layout="topleft"
+ left="10"
+ max_val="6016"
+ min_val="32"
+ name="inventory_snapshot_width"
+ top_pad="10"
+ width="95" />
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Height"
+ label_width="40"
+ layout="topleft"
+ left_pad="5"
+ max_val="6016"
+ min_val="32"
+ name="inventory_snapshot_height"
+ top_delta="0"
+ width="95" />
+ <check_box
+ bottom_delta="20"
+ follows="left|top"
+ label="Constrain proportions"
+ layout="topleft"
+ left="10"
+ name="inventory_keep_aspect_check"
+ visible="false" />
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Cancel"
+ layout="topleft"
+ name="cancel_btn"
+ right="-32"
+ top="350"
+ width="100">
+ <button.commit_callback
+ function="Inventory.Cancel" />
+ </button>
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Save"
+ layout="topleft"
+ left_delta="-106"
+ name="save_btn"
+ top_delta="0"
+ width="100">
+ <button.commit_callback
+ function="Inventory.Save" />
+ </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
new file mode 100644
index 0000000000..ae0215a578
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_local"
+ width="490">
+ <icon
+ follows="top|left"
+ height="18"
+ image_name="Snapshot_Download"
+ layout="topleft"
+ left="12"
+ mouse_opaque="true"
+ name="title_icon"
+ top="5"
+ width="18" />
+ <text
+ follows="top|left|right"
+ font="SansSerifBold"
+ height="20"
+ layout="topleft"
+ left_pad="12"
+ length="1"
+ name="title"
+ right="-10"
+ text_color="white"
+ type="string"
+ top_delta="4">
+ Save to My Computer
+ </text>
+ <view_border
+ bevel_style="in"
+ follows="left|top|right"
+ height="1"
+ left="10"
+ layout="topleft"
+ name="hr"
+ right="-10"
+ top_pad="5"
+ />
+ <combo_box
+ follows="left|top|right"
+ height="23"
+ label="Resolution"
+ layout="topleft"
+ left_delta="0"
+ name="local_size_combo"
+ right="-10"
+ top_pad="10">
+ <combo_box.item
+ label="Current Window"
+ name="CurrentWindow"
+ value="[i0,i0]" />
+ <combo_box.item
+ label="320x240"
+ name="320x240"
+ value="[i320,i240]" />
+ <combo_box.item
+ label="640x480"
+ name="640x480"
+ value="[i640,i480]" />
+ <combo_box.item
+ label="800x600"
+ name="800x600"
+ value="[i800,i600]" />
+ <combo_box.item
+ label="1024x768"
+ name="1024x768"
+ value="[i1024,i768]" />
+ <combo_box.item
+ label="1280x1024"
+ name="1280x1024"
+ value="[i1280,i1024]" />
+ <combo_box.item
+ label="1600x1200"
+ name="1600x1200"
+ value="[i1600,i1200]" />
+ <combo_box.item
+ label="Custom"
+ name="Custom"
+ value="[i-1,i-1]" />
+ </combo_box>
+ <layout_stack
+ animate="false"
+ follows="all"
+ height="275"
+ layout="bottomleft"
+ name="local_image_params_ls"
+ left_delta="0"
+ orientation="vertical"
+ top_pad="10"
+ right="-10">
+ <layout_panel
+ follows="top|left|right"
+ height="60"
+ layout="topleft"
+ left="0"
+ name="local_image_size_lp"
+ user_resize="false"
+ auto_resize="false"
+ top="0"
+ right="-1"
+ visible="true">
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Width"
+ label_width="40"
+ layout="topleft"
+ left="10"
+ max_val="6016"
+ min_val="32"
+ name="local_snapshot_width"
+ top_pad="10"
+ width="95" />
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Height"
+ label_width="40"
+ layout="topleft"
+ left_pad="5"
+ max_val="6016"
+ min_val="32"
+ name="local_snapshot_height"
+ top_delta="0"
+ width="95" />
+ <check_box
+ bottom_delta="20"
+ follows="left|top"
+ label="Constrain proportions"
+ layout="topleft"
+ left="10"
+ name="local_keep_aspect_check" />
+ </layout_panel>
+ <layout_panel
+ follows="top|left|right"
+ height="23"
+ layout="topleft"
+ left="0"
+ name="local_image_format_quality_lp"
+ user_resize="false"
+ auto_resize="true"
+ top="0"
+ right="-1"
+ visible="true">
+ <combo_box
+ follows="left|top"
+ height="23"
+ label="Format"
+ layout="topleft"
+ left_delta="0"
+ name="local_format_combo"
+ top_pad="0"
+ width="120">
+ <combo_box.item
+ label="PNG (Lossless)"
+ name="PNG"
+ value="PNG" />
+ <combo_box.item
+ label="JPEG"
+ name="JPEG"
+ value="JPEG" />
+ <combo_box.item
+ label="BMP (Lossless)"
+ name="BMP"
+ value="BMP" />
+ </combo_box>
+ <slider
+ decimal_digits="0"
+ follows="left|top"
+ height="15"
+ increment="1"
+ initial_value="75"
+ label="Image quality"
+ label_width="80"
+ layout="topleft"
+ left="10"
+ max_val="100"
+ name="image_quality_slider"
+ top_pad="7"
+ width="200" />
+ <text
+ type="string"
+ follows="left|top"
+ font="SansSerifSmall"
+ length="1"
+ height="14"
+ layout="topleft"
+ left_pad="-5"
+ halign="left"
+ name="image_quality_level"
+ top_delta="0"
+ width="60">
+ ([QLVL])
+ </text>
+ </layout_panel>
+ </layout_stack>
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Cancel"
+ layout="topleft"
+ name="cancel_btn"
+ right="-32"
+ top="350"
+ width="100">
+ <button.commit_callback
+ function="Local.Cancel" />
+ </button>
+ <flyout_button
+ follows="right|bottom"
+ height="23"
+ label="Save"
+ layout="topleft"
+ left_delta="-106"
+ name="save_btn"
+ tool_tip="Save image to a file"
+ top_delta="0"
+ width="100">
+ <flyout_button.item
+ label="Save"
+ name="save_item"
+ value="save" />
+ <flyout_button.item
+ label="Save As..."
+ name="saveas_item"
+ value="save as" />
+ </flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
new file mode 100644
index 0000000000..d2f29ade44
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="all"
+ height="240"
+ layout="topleft"
+ name="panel_snapshot_options"
+ width="490">
+ <button
+ follows="left|top|right"
+ font="SansSerif"
+ halign="left"
+ height="38"
+ image_overlay="Snapshot_Profile"
+ image_overlay_alignment="left"
+ image_top_pad="-2"
+ imgoverlay_label_space="10"
+ label="Post to My Profile Feed"
+ layout="topleft"
+ left="10"
+ name="save_to_profile_btn"
+ pad_left="10"
+ right="-10"
+ top="5">
+ <button.commit_callback
+ function="Snapshot.SaveToProfile" />
+ </button>
+ <button
+ follows="left|top|right"
+ font="SansSerif"
+ halign="left"
+ height="38"
+ image_overlay="Snapshot_Email"
+ image_overlay_alignment="left"
+ image_top_pad="-2"
+ imgoverlay_label_space="10"
+ label="Email"
+ layout="topleft"
+ left_delta="0"
+ name="save_to_email_btn"
+ pad_left="10"
+ right="-10"
+ top_pad="10">
+ <button.commit_callback
+ function="Snapshot.SaveToEmail" />
+ </button>
+ <button
+ follows="left|top|right"
+ font="SansSerif"
+ halign="left"
+ height="38"
+ image_overlay="Snapshot_Inventory"
+ image_overlay_alignment="left"
+ image_top_pad="-2"
+ imgoverlay_label_space="10"
+ label="Save to My Inventory (L$[AMOUNT])"
+ layout="topleft"
+ left_delta="0"
+ name="save_to_inventory_btn"
+ pad_left="10"
+ right="-10"
+ top_pad="10">
+ <button.commit_callback
+ function="Snapshot.SaveToInventory" />
+ </button>
+ <button
+ follows="left|top|right"
+ font="SansSerif"
+ halign="left"
+ height="38"
+ image_overlay="Snapshot_Download"
+ image_overlay_alignment="left"
+ image_top_pad="-2"
+ imgoverlay_label_space="10"
+ label="Save to My Computer"
+ layout="topleft"
+ left_delta="0"
+ name="save_to_computer_btn"
+ pad_left="10"
+ right="-10"
+ top_pad="10">
+ <button.commit_callback
+ function="Snapshot.SaveToComputer" />
+ </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000..d8ff043444
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_postcard"
+ width="490">
+ <string
+ name="default_subject">
+ Postcard from [SECOND_LIFE].
+ </string>
+ <string
+ name="default_message">
+ Check this out!
+ </string>
+ <string
+ name="upload_message">
+ Sending...
+ </string>
+ <string
+ name="default_subject">
+ Postcard from [SECOND_LIFE].
+ </string>
+ <string
+ name="default_message">
+ Check this out!
+ </string>
+ <icon
+ follows="top|left"
+ height="18"
+ image_name="Snapshot_Email"
+ layout="topleft"
+ left="12"
+ mouse_opaque="true"
+ name="title_icon"
+ top="5"
+ width="18" />
+ <text
+ follows="top|left|right"
+ font="SansSerifBold"
+ height="20"
+ layout="topleft"
+ left_pad="12"
+ length="1"
+ name="title"
+ right="-10"
+ text_color="white"
+ type="string"
+ top_delta="3">
+ Email
+ </text>
+ <button
+ follows="right|top"
+ height="23"
+ is_toggle="true"
+ label="Message"
+ layout="topleft"
+ name="message_btn"
+ right="-82"
+ top_delta="-7"
+ width="70">
+ <button.commit_callback
+ function="Postcard.Message" />
+ </button>
+ <button
+ follows="right|top"
+ height="23"
+ is_toggle="true"
+ label="Settings"
+ layout="topleft"
+ name="settings_btn"
+ top_delta="0"
+ right="-10"
+ width="70">
+ <button.commit_callback
+ function="Postcard.Settings" />
+ </button>
+ <view_border
+ bevel_style="in"
+ follows="left|top|right"
+ height="1"
+ left="10"
+ layout="topleft"
+ name="hr"
+ right="-10"
+ top_pad="5"
+ />
+ <panel_container
+ follows="all"
+ height="340"
+ layout="topleft"
+ left="0"
+ name="postcard_panel_container"
+ default_panel_name="panel_postcard_message"
+ top_pad="10"
+ width="490">
+ <panel
+ follows="all"
+ layout="topleft"
+ name="panel_postcard_message"
+ filename="panel_postcard_message.xml" />
+ <panel
+ follows="all"
+ layout="topleft"
+ name="panel_postcard_settings"
+ filename="panel_postcard_settings.xml" />
+ </panel_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
new file mode 100644
index 0000000000..91ac9ad658
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_profile"
+ width="490">
+ <icon
+ follows="top|left"
+ height="18"
+ image_name="Snapshot_Profile"
+ layout="topleft"
+ left="12"
+ mouse_opaque="true"
+ name="title_icon"
+ top="5"
+ width="18" />
+ <text
+ follows="top|left|right"
+ font="SansSerifBold"
+ height="20"
+ layout="topleft"
+ left_pad="12"
+ length="1"
+ name="title"
+ right="-10"
+ text_color="white"
+ type="string"
+ top_delta="4">
+ Post to My Profile Feed
+ </text>
+ <view_border
+ bevel_style="in"
+ follows="left|top|right"
+ height="1"
+ left="10"
+ layout="topleft"
+ name="hr"
+ right="-10"
+ top_pad="5"
+ />
+ <combo_box
+ follows="left|top"
+ height="23"
+ label="Resolution"
+ layout="topleft"
+ left_delta="0"
+ name="profile_size_combo"
+ top_pad="10"
+ width="250">
+ <combo_box.item
+ label="Current Window"
+ name="CurrentWindow"
+ value="[i0,i0]" />
+ <combo_box.item
+ label="640x480"
+ name="640x480"
+ value="[i640,i480]" />
+ <combo_box.item
+ label="800x600"
+ name="800x600"
+ value="[i800,i600]" />
+ <combo_box.item
+ label="1024x768"
+ name="1024x768"
+ value="[i1024,i768]" />
+ <combo_box.item
+ label="Custom"
+ name="Custom"
+ value="[i-1,i-1]" />
+ </combo_box>
+ <layout_stack
+ animate="false"
+ follows="all"
+ height="270"
+ layout="bottomleft"
+ name="profile_image_params_ls"
+ left_delta="0"
+ orientation="vertical"
+ top_pad="10"
+ right="-10">
+ <layout_panel
+ follows="top|left|right"
+ height="55"
+ layout="topleft"
+ left="0"
+ name="profile_image_size_lp"
+ user_resize="false"
+ auto_resize="false"
+ top="0"
+ right="-1"
+ visible="true">
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Width"
+ label_width="40"
+ layout="topleft"
+ left="10"
+ max_val="6016"
+ min_val="32"
+ name="profile_snapshot_width"
+ top_pad="10"
+ width="95" />
+ <spinner
+ allow_text_entry="false"
+ decimal_digits="0"
+ follows="left|top"
+ height="20"
+ increment="32"
+ label="Height"
+ label_width="40"
+ layout="topleft"
+ left_pad="5"
+ max_val="6016"
+ min_val="32"
+ name="profile_snapshot_height"
+ top_delta="0"
+ width="95" />
+ <check_box
+ bottom_delta="20"
+ label="Constrain proportions"
+ layout="topleft"
+ left="10"
+ name="profile_keep_aspect_check" />
+ </layout_panel>
+ <layout_panel
+ follows="top|left|right"
+ height="200"
+ layout="topleft"
+ left="0"
+ name="profile_image_metadata_lp"
+ user_resize="false"
+ auto_resize="true"
+ top="0"
+ right="-1"
+ visible="true">
+ <text
+ length="1"
+ follows="top|left|right"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left="0"
+ name="caption_label"
+ right="-10"
+ top_pad="0"
+ type="string">
+ Caption:
+ </text>
+ <text_editor
+ follows="all"
+ height="155"
+ layout="topleft"
+ left_delta="0"
+ length="1"
+ max_length="700"
+ name="caption"
+ right="-10"
+ top_pad="5"
+ type="string"
+ word_wrap="true">
+ </text_editor>
+ <check_box
+ follows="left|bottom"
+ initial_value="true"
+ label="Include location"
+ layout="topleft"
+ left_delta="0"
+ name="add_location_cb"
+ top_pad="15" />
+ </layout_panel>
+ </layout_stack>
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Cancel"
+ layout="topleft"
+ name="cancel_btn"
+ right="-32"
+ top="350"
+ width="100">
+ <button.commit_callback
+ function="PostToProfile.Cancel" />
+ </button>
+ <button
+ follows="right|bottom"
+ height="23"
+ label="Post"
+ layout="topleft"
+ left_delta="-106"
+ name="post_btn"
+ top_delta="0"
+ width="100">
+ <button.commit_callback
+ function="PostToProfile.Send" />
+ </button>
+</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 5894abd03b..3239c4e531 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -2,7 +2,7 @@
<panel
background_opaque="true"
background_visible="true"
- bg_opaque_color="MouseGray"
+ bg_opaque_color="DkGray"
chrome="true"
follows="top|right"
height="19"
@@ -35,14 +35,11 @@
</panel.string>
<panel
height="18"
- left="-355"
- width="95"
+ left="-370"
+ width="160"
top="1"
follows="right|top"
- name="balance_bg"
- bg_visible="true"
- background_opaque="true"
- bg_opaque_image="bevel_background">
+ name="balance_bg">
<text
halign="center"
font="SansSerifSmall"
@@ -60,11 +57,11 @@
halign="center"
font="SansSerifSmall"
follows="right|top|bottom"
- image_hover_unselected="buy_over"
- image_unselected="buy_off"
- image_pressed="buy_press"
+ image_hover_unselected="PushButton_Over"
+ image_unselected="PushButton_Off"
+ image_pressed="PushButton_Press"
height="18"
- label="BUY L$"
+ label="Buy L$"
label_color="White"
left_pad="0"
label_shadow="true"
@@ -74,39 +71,41 @@
tool_tip="Click to buy more L$"
top="0"
width="55" />
+ <button
+ halign="left"
+ font="SansSerifSmall"
+ follows="right|top|bottom"
+ imgoverlay_label_space="7"
+ image_overlay="Command_MiniCart_Icon"
+ image_overlay_alignment="left"
+ image_hover_unselected="PushButton_Over"
+ image_unselected="PushButton_Off"
+ image_pressed="PushButton_Press"
+ height="18"
+ label="Shop"
+ label_color="White"
+ left_pad="0"
+ label_shadow="true"
+ name="goShop"
+ pad_right="0"
+ pad_bottom="2"
+ tool_tip="Open Second Life Marketplace"
+ top="0"
+ width="65" />
</panel>
- <combo_box
- follows="right|top"
- drop_down_button.pad_left="10"
- left_pad="5"
- top="0"
- width="120"
- height="20"
- name="mode_combo"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- >
- <combo_box.item
- label="Basic Mode"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced Mode"
- name="Advanced"
- value="" />
- </combo_box>
<text
- left_pad="5"
type="string"
font="SansSerifSmall"
text_readonly_color="TimeTextColor"
follows="right|top"
- halign="center"
+ halign="right"
height="16"
top="5"
layout="topleft"
+ left_pad="0"
name="TimeText"
tool_tip="Current time (Pacific)"
- width="75">
+ width="145">
24:00 AM PST
</text>
<button
@@ -117,7 +116,7 @@
image_pressed="Pause_Press"
image_pressed_selected="Play_Press"
is_toggle="true"
- left_pad="10"
+ left_pad="15"
top="1"
name="media_toggle_btn"
tool_tip="Start/Stop All Media (Music, Video, Web pages)"
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index 42f64c3a76..062c403a26 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -10,6 +10,7 @@
-->
<floater
+ open_positioning="none"
legacy_header_height="0"
header_height="0"
name="toast"
@@ -20,7 +21,6 @@
width="310"
left="0"
top="0"
- follows="right|bottom"
background_visible="false"
bg_opaque_image="Toast_Over"
bg_alpha_image="Toast_Background"
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
new file mode 100644
index 0000000000..3c69a0cb6c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbar_view
+ follows="all"
+ layout="topleft"
+ name="toolbar view"
+ height="500"
+ width="1024"
+ left="0"
+ top="0"
+ mouse_opaque="false"
+ tab_stop="false"
+ visible="true">
+ <layout_stack name="bottom_toolbar_stack"
+ orientation="vertical"
+ left="0"
+ top="0"
+ width="1024"
+ height="500"
+ follows="all"
+ mouse_opaque="false">
+ <layout_panel name="vertical_toolbar_panel"
+ auto_resize="true"
+ user_resize="false"
+ width="1024"
+ height="500"
+ mouse_opaque="false">
+ <layout_stack name="vertical_toolbar_stack"
+ orientation="horizontal"
+ left="0"
+ top="0"
+ width="1024"
+ height="500"
+ follows="all"
+ mouse_opaque="false">
+ <layout_panel name="left_toolbar_panel"
+ auto_resize="false"
+ user_resize="false"
+ height="500"
+ width="30"
+ mouse_opaque="false">
+ <toolbar follows="left|top|bottom"
+ button_panel.bg_opaque_image="Rounded_Rect_Right"
+ name="toolbar_left"
+ width="30"
+ left="0"
+ top="10"
+ bottom="-10"
+ side="left"
+ button_display_mode="icons_only">
+ <icon layout="topleft"
+ height="15"
+ width="28"
+ follows="left|top"
+ top="20"
+ left="10"
+ tab_stop="false"
+ visible="false"
+ image_name="Caret_Left_Icon"
+ name="caret" />
+ </toolbar>
+ </layout_panel>
+ <layout_panel name="non_toolbar_panel"
+ auto_resize="true"
+ user_resize="false"
+ mouse_opaque="false"
+ height="100"
+ width="200">
+ <view top="0"
+ follows="all"
+ height="100"
+ left="0"
+ mouse_opaque="false"
+ name="floater_snap_region"
+ width="200"/>
+ <view top="0"
+ follows="left|top|bottom"
+ height="100"
+ left="0"
+ mouse_opaque="false"
+ name="minimized_floaters_region"
+ width="160"/>
+ <panel follows="left|top|right"
+ layout="topleft"
+ height="30"
+ left_pad="10"
+ mouse_opaque="false"
+ name="chiclet_container"
+ tab_stop="false"
+ top="0"
+ bg_visible="false"
+ width="20">
+ </panel>
+ <panel bottom="100"
+ follows="left|right|bottom"
+ height="25"
+ left="0"
+ mouse_opaque="false"
+ tab_stop="false"
+ name="stand_stop_flying_container"
+ visible="false"
+ width="200"/>
+ </layout_panel>
+ <layout_panel name="right_toolbar_panel"
+ auto_resize="false"
+ user_resize="false"
+ height="500"
+ width="30"
+ mouse_opaque="false">
+ <toolbar
+ button_panel.bg_opaque_image="Rounded_Rect_Left"
+ follows="right|top|bottom"
+ name="toolbar_right"
+ width="30"
+ left="0"
+ top="10"
+ bottom="-10"
+ side="right"
+ button_display_mode="icons_only">
+ <icon layout="topleft"
+ height="15"
+ width="28"
+ follows="left|top"
+ top="20"
+ left="10"
+ tab_stop="false"
+ visible="false"
+ image_name="Caret_Right_Icon"
+ name="caret" />
+ </toolbar>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="bottom_toolbar_panel"
+ auto_resize="false"
+ user_resize="false"
+ height="30"
+ width="1024"
+ mouse_opaque="false">
+ <toolbar layout="topleft"
+ button_panel.bg_opaque_image="Rounded_Rect_Top"
+ name="toolbar_bottom"
+ height="30"
+ left="40"
+ right="-40"
+ top="0"
+ side="bottom"
+ follows="left|right|bottom"
+ button_display_mode="icons_with_text"
+ visible="true">
+ <icon layout="topleft"
+ height="28"
+ width="15"
+ follows="left|top"
+ top="20"
+ left="10"
+ tab_stop="false"
+ visible="false"
+ use_draw_context_alpha="false"
+ image_name="Caret_Bottom_Icon"
+ name="caret" />
+ </toolbar>
+ </layout_panel>
+ </layout_stack>
+</toolbar_view>
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 79f29777ce..fc527f5f9d 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -4,7 +4,7 @@
background_opaque="false"
bg_opaque_color="Black_50"
bg_alpha_color="Black_50"
- follows="left|top|right"
+ follows="left|top"
height="19"
layout="topleft"
name="topinfo_bar"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 7a176ff367..b52784d6bc 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -67,6 +67,8 @@
top="0"
orientation="vertical"
name="inbox_outbox_layout_stack"
+ open_time_constant="0.02"
+ close_time_constant="0.02"
height="235"
width="330">
<layout_panel
@@ -91,10 +93,10 @@
label=""
height="200"
width="330">
- <string name="InboxLabelWithArg">Received Items ([NUM])</string>
- <string name="InboxLabelNoArg">Received Items</string>
+ <string name="InboxLabelWithArg">Received items ([NUM])</string>
+ <string name="InboxLabelNoArg">Received items</string>
<button
- label="Received Items"
+ label="Received items"
font="SansSerifMedium"
name="inbox_btn"
height="35"
@@ -122,7 +124,7 @@
halign="right"
top_pad="0"
width="300">
- [NUM] New
+ [NUM] new
</text>
<panel
follows="all"
@@ -173,10 +175,10 @@
label=""
height="200"
width="330">
- <string name="OutboxLabelWithArg">Merchant Outbox ([NUM])</string>
- <string name="OutboxLabelNoArg">Merchant Outbox</string>
+ <string name="OutboxLabelWithArg">Merchant outbox ([NUM])</string>
+ <string name="OutboxLabelNoArg">Merchant outbox</string>
<button
- label="Merchant Outbox"
+ label="Merchant outbox"
font="SansSerifMedium"
name="outbox_btn"
height="35"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index a41330c9f6..c25d1f57d6 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -16,16 +16,16 @@
<string name="StartupDetectingHardware">Detecting hardware...</string>
<string name="StartupLoading">Loading [APP_NAME]...</string>
<string name="StartupClearingCache">Clearing cache...</string>
- <string name="StartupInitializingTextureCache">Initializing Texture Cache...</string>
+ <string name="StartupInitializingTextureCache">Initializing texture cache...</string>
<string name="StartupInitializingVFS">Initializing VFS...</string>
- <string name="StartupRequireDriverUpdate">Graphics Initialization Failed. Please Update Your Graphics Driver!</string>
+ <string name="StartupRequireDriverUpdate">Graphics initialization failed. Please update your graphics driver!</string>
<!-- progress -->
<string name="ProgressRestoring">Restoring...</string>
- <string name="ProgressChangingResolution">Changing Resolution...</string>
+ <string name="ProgressChangingResolution">Changing resolution...</string>
<!-- Legacy strings, almost never used -->
- <string name="Fullbright">Fullbright (Legacy)</string> <!-- used in the Build > materials dropdown-->
+ <string name="Fullbright">Fullbright (legacy)</string> <!-- used in the Build > materials dropdown-->
<!-- Login -->
<string name="LoginInProgress">Logging in. [APP_NAME] may appear frozen. Please wait.</string>
@@ -38,8 +38,8 @@
<string name="LoginInitializingMultimedia">Initializing multimedia...</string>
<string name="LoginInitializingFonts">Loading fonts...</string>
<string name="LoginVerifyingCache">Verifying cache files (can take 60-90 seconds)...</string>
- <string name="LoginProcessingResponse">Processing Response...</string>
- <string name="LoginInitializingWorld">Initializing World...</string>
+ <string name="LoginProcessingResponse">Processing response...</string>
+ <string name="LoginInitializingWorld">Initializing world...</string>
<string name="LoginDecodingImages">Decoding images...</string>
<string name="LoginInitializingQuicktime">Initializing QuickTime...</string>
<string name="LoginQuicktimeNotFound">QuickTime not found - unable to initialize.</string>
@@ -56,7 +56,7 @@
<string name="CertBasicConstraints">Too many certificates were in the servers Certificate chain. Please contact your Grid administrator.</string>
<string name="CertInvalidSignature">The certificate signature returned by the Grid server could not be verified. Please contact your Grid administrator.</string>
- <string name="LoginFailedNoNetwork">Network Error: Could not establish connection, please check your network connection.</string>
+ <string name="LoginFailedNoNetwork">Network error: Could not establish connection, please check your network connection.</string>
<string name="LoginFailed">Login failed.</string>
<string name="Quit">Quit</string>
<string name="create_account_url">http://join.secondlife.com/</string>
@@ -2028,7 +2028,7 @@ Returns a string with the requested data about the region
<string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string>
<string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
<string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string>
- <string name="InventoryInboxNoItems">Items purchased through the marketplace will be delivered here.</string>
+ <string name="InventoryInboxNoItems">When you purchase or otherwise receive an item, it will appear here so you can drag it to a folder in your inventory, or delete it if you do not wish to keep it.</string>
<string name="MarketplaceURL">http://marketplace.[DOMAIN_NAME]</string>
<string name="MarketplaceURL_CreateStore">http://marketplace.[DOMAIN_NAME]/create_store</string>
<string name="MarketplaceURL_LearnMore">http://marketplace.[DOMAIN_NAME]/learn_more</string>
@@ -2051,6 +2051,8 @@ Returns a string with the requested data about the region
<string name="Marketplace Error Unsellable Item">Error: This item can not be sold on the marketplace.</string>
<string name="Marketplace Error Internal Import">Error: There was a problem with this item. Try again later.</string>
+ <string name="Open landmarks">Open landmarks</string>
+
<!-- use value="" because they have preceding spaces -->
<string name="no_transfer" value=" (no transfer)" />
<string name="no_modify" value=" (no modify)" />
@@ -2181,6 +2183,8 @@ Returns a string with the requested data about the region
<string name="Stomach">Stomach</string>
<string name="Left Pec">Left Pec</string>
<string name="Right Pec">Right Pec</string>
+ <string name="Neck">Neck</string>
+ <string name="Avatar Center">Avatar Center</string>
<string name="Invalid Attachment">Invalid Attachment Point</string>
<!-- Avatar age computation, see LLDateUtil::ageFromDate -->
@@ -3527,6 +3531,10 @@ Try enclosing path to the editor with double quotes.
<string name="ExternalEditorCommandParseError">Error parsing the external editor command.</string>
<string name="ExternalEditorFailedToRun">External editor failed to run.</string>
+ <!-- Machine translation of chat messahes -->
+ <string name="TranslationFailed">Translation failed: [REASON]</string>
+ <string name="TranslationResponseParseError">Error parsing translation response.</string>
+
<!-- Key names begin -->
<string name="Esc">Esc</string>
<string name="Space">Space</string>
@@ -3650,8 +3658,64 @@ Try enclosing path to the editor with double quotes.
<string name="BeaconSound">Viewing sound beacons (yellow)</string>
<string name="BeaconMedia">Viewing media beacons (white)</string>
<string name="ParticleHiding">Hiding Particles</string>
-
- <!-- Mesh UI terms -->
+
+ <!-- commands -->
+
+ <string name="Command_AboutLand_Label">About land</string>
+ <string name="Command_Appearance_Label">Appearance</string>
+ <string name="Command_Avatar_Label">Avatar</string>
+ <string name="Command_Build_Label">Build</string>
+ <string name="Command_Chat_Label">Chat</string>
+ <string name="Command_Compass_Label">Compass</string>
+ <string name="Command_Destinations_Label">Destinations</string>
+ <string name="Command_Gestures_Label">Gestures</string>
+ <string name="Command_HowTo_Label">How to</string>
+ <string name="Command_Inventory_Label">Inventory</string>
+ <string name="Command_Map_Label">Map</string>
+ <string name="Command_Marketplace_Label">Marketplace</string>
+ <string name="Command_MiniMap_Label">Mini-map</string>
+ <string name="Command_Move_Label">Walk / run / fly</string>
+ <string name="Command_People_Label">People</string>
+ <string name="Command_Picks_Label">Picks</string>
+ <string name="Command_Places_Label">Places</string>
+ <string name="Command_Preferences_Label">Preferences</string>
+ <string name="Command_Profile_Label">Profile</string>
+ <string name="Command_Search_Label">Search</string>
+ <string name="Command_Snapshot_Label">Snapshot</string>
+ <string name="Command_Speak_Label">Speak</string>
+ <string name="Command_View_Label">Camera controls</string>
+ <string name="Command_Voice_Label">Voice settings</string>
+
+ <string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string>
+ <string name="Command_Appearance_Tooltip">Change your avatar</string>
+ <string name="Command_Avatar_Tooltip">Choose a complete avatar</string>
+ <string name="Command_Build_Tooltip">Building objects and reshaping terrain</string>
+ <string name="Command_Chat_Tooltip">Chat with people nearby using text</string>
+ <string name="Command_Compass_Tooltip">Compass</string>
+ <string name="Command_Destinations_Tooltip">Destinations of interest</string>
+ <string name="Command_Gestures_Tooltip">Gestures for your avatar</string>
+ <string name="Command_HowTo_Tooltip">How to do common tasks</string>
+ <string name="Command_Inventory_Tooltip">View and use your belongings</string>
+ <string name="Command_Map_Tooltip">Map of the world</string>
+ <string name="Command_Marketplace_Tooltip">Go shopping</string>
+ <string name="Command_MiniMap_Tooltip">Show nearby people</string>
+ <string name="Command_Move_Tooltip">Moving your avatar</string>
+ <string name="Command_People_Tooltip">Friends, groups, and nearby people</string>
+ <string name="Command_Picks_Tooltip">Places to show as favorites in your profile</string>
+ <string name="Command_Places_Tooltip">Places you've saved</string>
+ <string name="Command_Preferences_Tooltip">Preferences</string>
+ <string name="Command_Profile_Tooltip">Edit or view your profile</string>
+ <string name="Command_Search_Tooltip">Find places, events, people</string>
+ <string name="Command_Snapshot_Tooltip">Take a picture</string>
+ <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string>
+ <string name="Command_View_Tooltip">Changing camera angle</string>
+ <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string>
+
+ <string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string>
+ <string name="Toolbar_Left_Tooltip" >currently in your left toolbar</string>
+ <string name="Toolbar_Right_Tooltip" >currently in your right toolbar</string>
+
+ <!-- Mesh UI terms -->
<string name="Retain%">Retain%</string>
<string name="Detail">Detail</string>
<string name="Better Detail">Better Detail</string>
@@ -3661,4 +3725,11 @@ Try enclosing path to the editor with double quotes.
<string name="Preview">Preview</string>
<string name="Normal">Normal</string>
+ <!-- Snapshot image quality levels -->
+ <string name="snapshot_quality_very_low">Very Low</string>
+ <string name="snapshot_quality_low">Low</string>
+ <string name="snapshot_quality_medium">Medium</string>
+ <string name="snapshot_quality_high">High</string>
+ <string name="snapshot_quality_very_high">Very High</string>
+
</strings>
diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml
index bae821d3b5..dce6b8dd6d 100644
--- a/indra/newview/skins/default/xui/en/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/en/teleport_strings.xml
@@ -20,6 +20,10 @@ If you still cannot teleport, please log out and log back in to resolve the prob
Sorry, but system was unable to complete the teleport connection.
Try again in a moment.
</message>
+ <message name="NoHelpIslandTP">
+You cannot teleport back to Welcome Island.
+Go to &apos;Welcome Island Public&apos; to repeat the tutorial.
+ </message>
<message name="noaccess_tport">
Sorry, you do not have access to that teleport destination.
</message>
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 61d36468d7..e2baba92a3 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -15,7 +15,6 @@
label_color_selected="ButtonLabelSelectedColor"
label_color_disabled="ButtonLabelDisabledColor"
label_color_disabled_selected="ButtonLabelSelectedDisabledColor"
- highlight_color="ButtonUnselectedFgColor"
image_color="ButtonImageColor"
image_color_disabled="ButtonImageColor"
flash_color="ButtonFlashBgColor"
@@ -27,5 +26,9 @@
scale_image="true"
handle_right_mouse="true"
use_draw_context_alpha="true"
- held_down_delay.seconds="0.5">
+ held_down_delay.seconds="0.5"
+ button_flash_count="8"
+ button_flash_rate="1.25"
+ display_pressed_state="true"
+ >
</button>
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
index 413ca1d1ef..0e29ed0d0b 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
@@ -12,13 +12,20 @@
tab_stop="false"
width="25" />
<chiclet_im_adhoc.speaker
- auto_update="true"
- draw_border="false"
- height="23"
- left="25"
- name="speaker"
- visible="false"
- width="20" />
+ image_mute="Parcel_VoiceNo_Light"
+ image_off="VoicePTT_Off_Dark"
+ image_on="VoicePTT_On_Dark"
+ image_level_1="VoicePTT_Lvl1_Dark"
+ image_level_2="VoicePTT_Lvl2_Dark"
+ image_level_3="VoicePTT_Lvl3_Dark"
+ auto_update="true"
+ draw_border="false"
+ height="24"
+ left="25"
+ bottom="1"
+ name="speaker"
+ visible="false"
+ width="20" />
<chiclet_im_adhoc.avatar_icon
bottom="3"
follows="left|top|bottom"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
index 372a89cbc7..77011139bf 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
@@ -12,13 +12,20 @@
tab_stop="false"
width="25" />
<chiclet_im_group.speaker
- auto_update="true"
- draw_border="false"
- height="25"
- left="25"
- name="speaker"
- visible="false"
- width="20" />
+ image_mute="Parcel_VoiceNo_Light"
+ image_off="VoicePTT_Off_Dark"
+ image_on="VoicePTT_On_Dark"
+ image_level_1="VoicePTT_Lvl1_Dark"
+ image_level_2="VoicePTT_Lvl2_Dark"
+ image_level_3="VoicePTT_Lvl3_Dark"
+ auto_update="true"
+ draw_border="false"
+ height="24"
+ left="25"
+ bottom="1"
+ name="speaker"
+ visible="false"
+ width="20" />
<chiclet_im_group.group_icon
bottom="3"
default_icon="Generic_Group"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index d27c14f4e7..8b56a8f0f6 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -12,13 +12,20 @@
tab_stop="false"
width="25"/>
<chiclet_im_p2p.speaker
- auto_update="true"
- draw_border="false"
- height="23"
- left="25"
- name="speaker"
- visible="false"
- width="20" />
+ image_mute="Parcel_VoiceNo_Light"
+ image_off="VoicePTT_Off_Dark"
+ image_on="VoicePTT_On_Dark"
+ image_level_1="VoicePTT_Lvl1_Dark"
+ image_level_2="VoicePTT_Lvl2_Dark"
+ image_level_3="VoicePTT_Lvl3_Dark"
+ auto_update="true"
+ draw_border="false"
+ height="24"
+ left="25"
+ bottom="1"
+ name="speaker"
+ visible="false"
+ width="20" />
<chiclet_im_p2p.avatar_icon
bottom="3"
color="white"
diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml
index 2e5ebafe46..adbb183317 100644
--- a/indra/newview/skins/default/xui/en/widgets/floater.xml
+++ b/indra/newview/skins/default/xui/en/widgets/floater.xml
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- See also settings.xml UIFloater* settings for configuration -->
-<floater
+<floater
name="floater"
+ open_positioning="none"
+ layout="topleft"
bg_opaque_color="FloaterFocusBackgroundColor"
bg_alpha_color="FloaterDefaultBackgroundColor"
bg_opaque_image="Window_Foreground"
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml
new file mode 100644
index 0000000000..7a7a6e9a09
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inbox_folder_view_item
+ item_height="20"
+ item_top_pad="4"
+ selection_image="Rounded_Square"
+ >
+ <new_badge
+ label="New"
+ label_offset_horiz="-1"
+ location="right"
+ padding_horiz="12.5"
+ padding_vert="2"
+ location_offset_hcenter="-23"
+ border_image="New_Tag_Border"
+ border_color="DkGray2"
+ image="New_Tag_Background"
+ image_color="Black"
+ />
+</inbox_folder_view_item>
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
new file mode 100644
index 0000000000..a190da3909
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<joystick_rotate
+ image_selected="Cam_Rotate_In"
+ image_unselected="Cam_Rotate_Out"
+ scale_image="false"
+ mouse_opaque="false"
+ held_down_delay.seconds="0"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
new file mode 100644
index 0000000000..0aa478ace9
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbar pad_left="1"
+ pad_right="1"
+ pad_top="1"
+ pad_bottom="1"
+ pad_between="1"
+ min_girth="24"
+ mouse_opaque="false"
+ read_only="false">
+ <button_panel name="button_panel"
+ bg_opaque_image="Rounded_Rect"
+ background_visible="true"
+ bg_opaque_image_overlay="MouseGray"
+ background_opaque="true"/>
+ <button_icon_and_text imgoverlay_label_space="7"
+ label_color_selected="White"
+ halign="left"
+ image_pressed="PushButton_Press"
+ image_pressed_selected="PushButton_Selected_Press"
+ image_selected="PushButton_Selected_Press"
+ image_disabled_selected="PushButton_Selected_Disabled"
+ image_disabled="PushButton_Disabled"
+ button_width.min="70"
+ button_width.max="140"
+ desired_height="24"
+ pad_left="10"
+ pad_right="10"
+ follows="left|top"
+ chrome="true"
+ image_overlay_alignment="left"
+ use_ellipses="true"
+ auto_resize="true"
+ button_flash_count="99999"
+ button_flash_rate="1.0"
+ flash_color="EmphasisColor"/>
+ <button_icon pad_left="10"
+ pad_right="10"
+ image_bottom_pad="10"
+ image_top_pad="10"
+ image_pressed="PushButton_Press"
+ image_pressed_selected="PushButton_Selected_Press"
+ image_selected="PushButton_Selected_Press"
+ image_disabled_selected="PushButton_Selected_Disabled"
+ image_disabled="PushButton_Disabled"
+ desired_height="38"
+ button_width.min="38"
+ button_width.max="38"
+ follows="left|top"
+ label=""
+ halign="left"
+ chrome="true"
+ use_ellipses="true"
+ auto_resize="true"
+ button_flash_count="99999"
+ button_flash_rate="1.0"
+ flash_color="EmphasisColor"/>
+</toolbar>
diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml
index 93bb8444b4..b7c9cc27ac 100644
--- a/indra/newview/skins/default/xui/es/floater_about.xml
+++ b/indra/newview/skins/default/xui/es/floater_about.xml
@@ -10,7 +10,7 @@
<floater.string name="AboutPosition">
Estás en la posición [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1], de [REGION], alojada en &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU: [CPU]
@@ -37,6 +37,9 @@ Versión del servidor de voz: [VOICE_VERSION]
<floater.string name="AboutTraffic">
Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Error al obtener la URL de las notas de la versión del servidor.
+ </floater.string>
<tab_container name="about_tab">
<panel label="Información" name="support_panel">
<button label="Copiar al portapapeles" name="copy_btn" width="165"/>
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 83749fc535..b6391e28a0 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -213,19 +213,19 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
Plus de objetos en la región: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Uso de primitivas:
+ Capacidad de la región:
</text>
<text name="objects_available">
[COUNT] de un máx. de [MAX] ([AVAILABLE] disponibles)
</text>
<text name="Primitives parcel supports:">
- Prims que admite la parcela:
+ Capacidad del terreno de la parcela:
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- Prims en la parcela:
+ Impacto en el terreno de la parcela:
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/es/floater_avatar.xml b/indra/newview/skins/default/xui/es/floater_avatar.xml
new file mode 100644
index 0000000000..7c87fbe01c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="SELECTOR DE AVATAR"/>
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 43bbf0b70f..2c8848265f 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
@@ -46,7 +46,7 @@
[AMT] L$
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php método de pago] | [http://www.secondlife.com/my/account/currency.php moneda] | [http://www.secondlife.com/my/account/exchange_rates.php tipo de cambio]
+ [http://www.secondlife.com/my/account/payment_method_management.php método de pago] | [http://www.secondlife.com/my/account/currency.php moneda]
</text>
<text name="exchange_rate_note">
Vuelve a escribir la cantidad para ver el tipo de cambio más reciente.
diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml
index 04f743b659..f8911f3a4a 100644
--- a/indra/newview/skins/default/xui/es/floater_camera.xml
+++ b/indra/newview/skins/default/xui/es/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="VER">
<floater.string name="rotate_tooltip">
Girar la cámara alrededor de lo enfocado
</floater.string>
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Mover la cámara arriba y abajo, izquierda y derecha
</floater.string>
- <floater.string name="camera_modes_title">
- Modos de cámara
- </floater.string>
- <floater.string name="pan_mode_title">
- Orbital - Zoom - Panorámica
- </floater.string>
- <floater.string name="presets_mode_title">
- Vistas predefinidas
- </floater.string>
<floater.string name="free_mode_title">
Centrar el objeto
</floater.string>
diff --git a/indra/newview/skins/default/xui/es/floater_chat_bar.xml b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
new file mode 100644
index 0000000000..5e5ef616b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="CHAT">
+ <panel>
+ <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>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_destinations.xml b/indra/newview/skins/default/xui/es/floater_destinations.xml
new file mode 100644
index 0000000000..df18698d2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINOS"/>
diff --git a/indra/newview/skins/default/xui/es/floater_fast_timers.xml b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
new file mode 100644
index 0000000000..eeb39583ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Pausa
+ </string>
+ <string name="run">
+ Correr
+ </string>
+ <button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_how_to.xml b/indra/newview/skins/default/xui/es/floater_how_to.xml
new file mode 100644
index 0000000000..4a57dc3643
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="CÓMO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml
index 370b7f5053..69f638418e 100644
--- a/indra/newview/skins/default/xui/es/floater_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINIMAPA">
<floater.string name="ToolTipMsg">
[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)
</floater.string>
@@ -7,7 +7,7 @@
[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)
</floater.string>
<floater.string name="mini_map_caption">
- MINIMAPA
+ Minimapa
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml
index 36f988b25f..3e77453612 100644
--- a/indra/newview/skins/default/xui/es/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Cargar modelo">
- <string name="status_idle">
- Inactivo
- </string>
+<floater name="Model Preview" title="SUBIR MODELO">
+ <string name="status_idle"/>
<string name="status_parse_error">
- Problema de análisis de DAE - consulta los datos en el registro.
+ Error: Problema de análisis de DAE - consulta los datos en el registro.
</string>
<string name="status_reading_file">
Cargando...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
Falta un nivel de detalle requerido.
</string>
+ <string name="mesh_status_invalid_material_list">
+ Los materiales con niveles de detalle no son un subconjunto del modelo de referencia.
+ </string>
<string name="layer_all">
Todo
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
TBD
</string>
- <text name="name_label">
- Nombre:
- </text>
- <text name="lod_label">
- Vista previa:
- </text>
- <combo_box name="preview_lod_combo" tool_tip="Nivel de detalle disponible en la vista previa">
- <combo_item name="high">
- Nivel de detalle: Alto
- </combo_item>
- <combo_item name="medium">
- Nivel de detalle: Media
- </combo_item>
- <combo_item name="low">
- Nivel de detalle: Bajo
- </combo_item>
- <combo_item name="lowest">
- Nivel de detalle: Mínimo
- </combo_item>
- </combo_box>
- <text name="warning_title">
- ATENCIÓN:
- </text>
- <text name="warning_message">
- No podrás terminar de subir este modelo a los servidores de Second Life. [[VURL] Averigua cómo] puedes obtener autorización para subir modelos de malla.
- </text>
- <text name="weights_text">
- Descargar:
-Física:
-Servidor:
-
-Equiv. en prims:
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="Nivel de detalle" name="lod_panel">
- <text name="lod_table_header">
- Seleccionar nivel de detalle:
- </text>
- <text name="high_label" value="Alto"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="Media"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="Bajo"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="Mínimo"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- Nivel de detalle: [DETALLE]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="Cargar desde el archivo" name="lod_from_file"/>
- <radio_item label="Generar automáticamente" name="lod_auto_generate"/>
- <radio_item label="Ninguno" name="lod_none"/>
- </radio_group>
- <button label="Examinar..." name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- Límite de triángulo
- </combo_item>
- <combo_item name="error_threshold">
- Margen de error
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- Crear operador:
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Nombre del modelo:
</text>
- <text name="queue_mode_text">
- Modo de cola:
+ <text name="model_category_label">
+ Este modelo representa...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- Cerrar bordes
- </combo_item>
- <combo_item name="half_edge_collapse">
- Cerrar la mitad de los bordes
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- Egoísta
- </combo_item>
- <combo_item name="lazy">
- Vago
- </combo_item>
- <combo_item name="independent">
- Independiente
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="Elegir uno..." name="Choose one"/>
+ <combo_item label="Forma del avatar" name="Avatar shape"/>
+ <combo_item label="Anexo del avatar" name="Avatar attachment"/>
+ <combo_item label="Objeto en movimiento (vehículo, animal)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Componente de construcción" name="Building Component"/>
+ <combo_item label="Grande, sin movimiento, etc." name="Large, non moving etc"/>
+ <combo_item label="Más pequeño, sin movimiento, etc." name="Smaller, non-moving etc"/>
+ <combo_item label="No es exactamente ninguno de estos" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- Modo de borde:
- </text>
- <text name="share_tolderance_text">
- Tolerancia de uso compartido:
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- Desbloquear
- </combo_item>
- <combo_item name="border_lock">
- Lock
- </combo_item>
- </combo_box>
- <text name="crease_label">
- Ángulo de marca:
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="Física" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="Archivo:" name="physics_load_from_file"/>
- <radio_item label="Utilizar nivel de detalle:" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="Nivel de detalle para forma física">
- <combo_item name="physics_lowest">
- Mínimo
- </combo_item>
- <combo_item name="physics_low">
- Bajo
- </combo_item>
- <combo_item name="physics_medium">
- Media
- </combo_item>
- <combo_item name="physics_high">
- Alto
- </combo_item>
- </combo_box>
- <button label="Examinar..." name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="Nivel de detalle" name="lod_panel" title="Nivel de detalle">
+ <text initial_value="Origen" name="source" value="Origen"/>
+ <text initial_value="Triángulos" name="triangles" value="Triángulos"/>
+ <text initial_value="Vértices" name="vertices" value="Vértices"/>
+ <text initial_value="Alto" name="high_label" value="Alto"/>
+ <button label="Buscar..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Medio" name="medium_label" value="Medio"/>
+ <button label="Buscar..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Bajo" name="low_label" value="Bajo"/>
+ <button label="Buscar..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Mínimo" name="lowest_label" value="Mínimo"/>
+ <button label="Buscar..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Generar normales" name="gen_normals"/>
+ <text initial_value="Ángulo de pliegue:" name="crease_label" value="Ángulo de pliegue:"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="Leve:" name="Smooth"/>
- <check_box label="Cerrar agujeros (lento)" name="Close Holes (Slow)"/>
- <button label="Analizar" name="Decompose"/>
- <button label="Cancelar" name="decompose_cancel"/>
+ <panel label="Física" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Paso 1: Nivel de detalle
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Niveles de detalle para utilizar con la forma física">
+ <combo_item name="choose_one">
+ Elegir uno...
+ </combo_item>
+ <combo_item name="physics_high">
+ Alto
+ </combo_item>
+ <combo_item name="physics_medium">
+ Medio
+ </combo_item>
+ <combo_item name="physics_low">
+ Bajo
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Mínimo
+ </combo_item>
+ <combo_item name="load_from_file">
+ De archivo
+ </combo_item>
+ </combo_box>
+ <button label="Buscar..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Paso 2: Analizar
+ </text>
+ <text name="analysis_method_label">
+ Método:
+ </text>
+ <text name="quality_label">
+ Calidad:
+ </text>
+ <text name="smooth_method_label">
+ Leve:
+ </text>
+ <check_box label="Cerrar agujeros" name="Close Holes (Slow)"/>
+ <button label="Analizar" name="Decompose"/>
+ <button label="Cancelar" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Paso 3: Simplificar
+ </text>
+ <text name="simp_method_header">
+ Método:
+ </text>
+ <text name="pass_method_header">
+ Pases:
+ </text>
+ <text name="Detail Scale label">
+ Escala de detalle:
+ </text>
+ <text name="Retain%_label">
+ Retención:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Simplificar" name="Simplify"/>
+ <button label="Cancelar" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Resultados:
+ </text>
+ <text name="physics_triangles">
+ Triángulos: [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Vértices: [POINTS],
+ </text>
+ <text name="physics_hulls">
+ Apariencias: [HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="Pases:" name="Combine Quality"/>
- <slider label="Escala de detalle:" name="Detail Scale"/>
- <slider label="Retener:" name="Retain%"/>
- <button label="Simplificar" name="Simplify"/>
- <button label="Cancelar" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="Ampliación de vista previa:" name="physics_explode"/>
- <text name="physics_triangles">
- Triángulos: [TRIÁNGULOS]
+ <panel label="Opciones de subida" name="modifiers_panel">
+ <text name="scale_label">
+ Escala (1=sin ajuste de escala):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Dimensiones:
</text>
- <text name="physics_points">
- Intersecciones: [PUNTOS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- Aspecto exterior: [ASPECTO EXTERIOR]
+ <check_box label="Incluir texturas" name="upload_textures"/>
+ <text name="include_label">
+ Solo para modelos de avatar:
</text>
+ <check_box label="Incluir el peso de la piel" name="upload_skin"/>
+ <check_box label="Incluir posturas de las articulaciones" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Desplazamiento Z (subir o bajar el avatar):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="Modificadores" name="modifiers_panel">
- <spinner name="import_scale" value="1.0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Calcular pesos y precio" name="calculate_btn" tool_tip="Calcular pesos y precio"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ <button label="subir" name="ok_btn" tool_tip="Subir al simulador"/>
+ <button label="Limpiar la configuración y reiniciar el formulario" name="reset_btn"/>
+ <text name="upload_fee">
+ Precio de subida: L$ [FEE]
+ </text>
+ <text name="prim_weight">
+ Impacto en el terreno: [EQ]
+ </text>
+ <text name="download_weight">
+ Descargar: [ST]
+ </text>
+ <text name="physics_weight">
+ Física: [PH]
+ </text>
+ <text name="server_weight">
+ Servidor: [SIM]
+ </text>
+ <text name="warning_title">
+ NOTA:
+ </text>
+ <text name="warning_message">
+ No tienes derechos para subir modelos de malla. [[VURL] Averigua cómo] puedes obtener la autorización.
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="Texturas" name="upload_textures"/>
- <check_box label="Peso de la piel" name="upload_skin"/>
- <check_box label="Posturas de las articulaciones" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- Precio de subida: L$ [FEE]
+ </panel>
+ <text name="lod_label">
+ Vista previa:
</text>
- <button label="Establecer en valores predeterminados" name="reset_btn" tool_tip="Establecer en valores predeterminados"/>
- <button label="Calcular pesos y precio" name="calculate_btn" tool_tip="Calcular pesos y precio"/>
- <button label="Subir" name="ok_btn" tool_tip="Cargar al simulador"/>
- <button label="Cancelar" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="LOD para ver en renderizado de prueba">
+ <combo_item name="high">
+ Alto
+ </combo_item>
+ <combo_item name="medium">
+ Media
+ </combo_item>
+ <combo_item name="low">
+ Bajo
+ </combo_item>
+ <combo_item name="lowest">
+ Mínimo
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Mostrar...
+ </text>
+ <check_box label="Bordes" name="show_edges"/>
+ <check_box label="Física" name="show_physics"/>
+ <check_box label="Texturas" name="show_textures"/>
+ <check_box label="Pesos de la piel" name="show_skin_weight"/>
+ <check_box label="Articulaciones" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Ampliación de vista previa:
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_model_wizard.xml b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
index 86de557ed9..c4eb5e955a 100644
--- a/indra/newview/skins/default/xui/es/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. Optimizar" name="optimize_btn"/>
<button label="1. Seleccionar archivo" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Elige el archivo de modelo
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
Usuarios avanzados: si tienes experiencia con las herramientas de creación de contenidos 3D, quizá te interese utilizar la función de subida avanzada.
</text>
<button label="Cambiar al modo Avanzado" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
Elige el archivo de modelo que deseas subir
</text>
<button label="Buscar..." label_selected="Buscar..." name="browse"/>
- <text name="support_collada_text">
- ‎Second Life admite los archivos COLLADA (.dae)
- </text>
- <text name="dimensions_label">
- Dimensiones (metros):
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Optimizar el modelo
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
Hemos optimizado el rendimiento del modelo, pero puedes ajustarlo más si lo deseas.
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- Generando el nivel de detalle
- </text>
+ <panel name="content">
<text name="high_detail_text">
Generar el nivel de detalle: Alto
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- Rendimiento
- </text>
- <text name="optimize_faster_rendering_text">
- Renderizado más rápido
-Menos detalles
-Menos peso de prim
- </text>
- <text name="optimize_accuracy_text">
- Precisión
- </text>
- <text name="optimize_slower_rendering_text">
- Renderizado más lento
-Más detalles
-Más peso de prim
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="Recalcular la geometría" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
Vista previa de geometría
</text>
<combo_box name="preview_lod_combo" tool_tip="LOD para ver en renderizado de prueba">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
Detalle alto
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
Detalles medios
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
Detalle bajo
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
Detalles mínimos
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Ajustar la física
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
Crearemos una forma para la apariencia exterior del modelo. Ajusta el nivel de detalle de la forma según se necesite para el propósito proyectado del modelo.
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- Rendimiento
- </text>
- <text name="physics_faster_rendering_text">
- Renderizado más rápido
-Menos detalles
-Menos peso de prim
- </text>
- <text name="physics_accuracy_text">
- Precisión
- </text>
- <text name="physics_slower_dendering_text">
- Renderizado más lento
-Más detalles
-Más peso de prim
- </text>
- <text name="physics_example_1">
- Ejemplos:
-Objetos en movimiento
-Objetos voladores
-Vehículos
- </text>
- <text name="physics_example_2">
- Ejemplos:
-Objetos estáticos pequeños
-Objetos con menos detalles
-Muebles sencillos
- </text>
- <text name="physics_example_3">
- Ejemplos:
-Objetos estáticos
-Objetos con detalles
-Edificios
- </text>
+ <panel name="content">
<button label="Recalcular física" name="recalculate_physics_btn"/>
<button label="Recalculando..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
Prueba de física
</text>
<combo_box name="preview_lod_combo2" tool_tip="LOD para ver en renderizado de prueba">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
Detalle alto
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
Detalles medios
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
Detalle bajo
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
Detalles mínimos
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Revisar
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
Impacto en la parcela/región: [EQUIV] equivalentes en prim
</text>
@@ -193,8 +125,8 @@ Edificios
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Subida finalizada
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml
index 258f84c361..b29fe04848 100644
--- a/indra/newview/skins/default/xui/es/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/es/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="MOVERME">
<string name="walk_forward_tooltip">
Caminar hacia adelante (cursor arriba o W)
</string>
@@ -58,14 +58,14 @@
Volar
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="Volar (pulsa E para subir)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Girar a la izq. (cursor izq. o A)"/>
<joystick_slide name="move left btn" tool_tip="Caminar a la izq. (pulsa Mayúsculas + cursor izq. o A)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Volar (pulsa C para descender)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Girar a la der. (cursor der. o D)"/>
<joystick_slide name="move right btn" tool_tip="Caminar a la der. (pulsa Mayúsculas + cursor der. o D)"/>
<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)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Volar (pulsa E para subir)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Volar (pulsa C para descender)"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="Modo de caminar"/>
diff --git a/indra/newview/skins/default/xui/es/floater_my_appearance.xml b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
new file mode 100644
index 0000000000..774babf04e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APARIENCIA">
+ <panel label="Modificar la apariencia" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_my_inventory.xml b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
new file mode 100644
index 0000000000..0efd9f1c6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTARIO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
index 1fee9ab056..b3b8cdcfff 100644
--- a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="CHAT">
- <check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/>
+ <check_box label="Traducir chat" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_object_weights.xml b/indra/newview/skins/default/xui/es/floater_object_weights.xml
new file mode 100644
index 0000000000..50c4f0518d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANZADAS">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="SELECCIONADOS"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Objetos"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Primitivas"/>
+ <text name="weights_of_selected_text" value="PESOS DE SELECCIONADOS"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Descargar"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Física"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Servidor"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Mostrar"/>
+ <text name="land_impacts_text" value="IMPACTOS EN EL TERRENO"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Seleccionados"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Colocados en el terreno"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Capacidad restante"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Capacidad total"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights ¿Qué es todo esto?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
new file mode 100644
index 0000000000..f48d0d2d0c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="GUARDAR EL VESTUARIO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_people.xml b/indra/newview/skins/default/xui/es/floater_people.xml
new file mode 100644
index 0000000000..f5a3eab008
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="GENTE">
+ <panel_container name="main_panel">
+ <panel label="Perfil del grupo" name="panel_group_info_sidetray"/>
+ <panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_picks.xml b/indra/newview/skins/default/xui/es/floater_picks.xml
new file mode 100644
index 0000000000..255aa5dcdc
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Destacados"/>
diff --git a/indra/newview/skins/default/xui/es/floater_places.xml b/indra/newview/skins/default/xui/es/floater_places.xml
new file mode 100644
index 0000000000..12c6548205
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUGARES">
+ <panel label="Lugares" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
index a5ffbd517a..0291f9e796 100644
--- a/indra/newview/skins/default/xui/es/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivos de sonido">
+<floater name="floater_sound_devices" title="DISPOSITIVOS DE SONIDO">
<text name="voice_label">
Chat de voz
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml
index 5f4fabf375..ba4af2e866 100644
--- a/indra/newview/skins/default/xui/es/floater_stats.xml
+++ b/indra/newview/skins/default/xui/es/floater_stats.xml
@@ -10,8 +10,8 @@
</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="KTris generados por fotograma" name="ktrisframe"/>
+ <stat_bar label="KTris generados por segundo" name="ktrissec"/>
<stat_bar label="Objetos en total" name="objs"/>
<stat_bar label="Objetos nuevos" name="newobjs"/>
</stat_view>
@@ -43,18 +43,6 @@
<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"/>
@@ -64,6 +52,14 @@
<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_bar label="Tiempo libre" name="simsparemsec"/>
+ <stat_view label="Datos de tiempo (ms)" name="timedetails">
+ <stat_bar label="Paso de física" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Actualizar formas físicas" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Otros (Física)" name="simsimphysicsothermsec"/>
+ <stat_bar label="Tiempo de suspensión" name="simsleepmsec"/>
+ <stat_bar label="E/S bombeo" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index f6e246ebae..650b4b457d 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -25,10 +25,10 @@
Pulsa y arrastra para seleccionar el terreno.
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] objetos ( [PRIM_COUNT] prims[PE_STRING] ) seleccionados
+ [OBJ_COUNT] objetos seleccionados, impacto en el terreno [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , [SEL_WEIGHT] equivalentes en prim
+ <floater.string name="status_remaining_capacity">
+ Capacidad restante [LAND_CAPACITY].
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Visión"/>
<button label="" label_selected="" name="button move" tool_tip="Mover"/>
@@ -105,8 +105,8 @@
<text name="selection_empty">
No está seleccionado nada.
</text>
- <text name="selection_weight">
- Peso de física [PHYS_WEIGHT], Coste de renderizado [DISP_WEIGHT].
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Más información]
</text>
<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" width="288">
<panel label="General" name="General">
@@ -319,7 +319,6 @@
Tipo de unión
</text>
<combo_box name="sculpt type control">
- <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"/>
diff --git a/indra/newview/skins/default/xui/es/floater_toybox.xml b/indra/newview/skins/default/xui/es/floater_toybox.xml
new file mode 100644
index 0000000000..b36a05a6e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PERSONALIZAR BARRAS DE HERRAMIENTAS">
+ <text name="toybox label 1">
+ Puedes agregar o quitar botones arrastrándolos a las barras de herramientas o desde ellas.
+ </text>
+ <text name="toybox label 2">
+ Los botones aparecerán como se muestra o solo como iconos, según la configuración de cada barra de herramientas.
+ </text>
+ <button label="Restaurar valores predeterminados" label_selected="Restaurar valores predeterminados" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
index f02855123c..cefec2a7a1 100644
--- a/indra/newview/skins/default/xui/es/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Controles de Voz">
+<floater name="floater_voice_controls" title="CONTROLES DE LA VOZ">
<string name="title_nearby">
- CHAT DE VOZ
+ Chat de voz
</string>
<string name="title_group">
Multiconferencia de voz con [GROUP]
diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
index 22a1873234..9945908c4f 100644
--- a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Mostrar la barra de navegación y de favoritos" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index cabcacaed5..e3abf7ad62 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="Yo" name="File">
- <menu_item_call label="Preferencias" name="Preferences..."/>
+ <menu_item_call label="Preferencias..." name="Preferences..."/>
<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
</menu>
<menu label="Ayuda" name="Help">
diff --git a/indra/newview/skins/default/xui/es/menu_toolbars.xml b/indra/newview/skins/default/xui/es/menu_toolbars.xml
new file mode 100644
index 0000000000..f8ed1c54ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Elegir botones..." name="Chose Buttons"/>
+ <menu_item_check label="Iconos y etiquetas" name="icons_with_text"/>
+ <menu_item_check label="Solo iconos" name="icons_only"/>
+</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 bc8a5731ab..0714e7f2c6 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="Yo" name="Me">
- <menu_item_call label="Preferencias" name="Preferences"/>
- <menu_item_call label="Mi panel de control" name="Manage My Account">
+ <menu_item_call label="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="ChangeOutfit"/>
- <menu_item_check label="Mi Inventario" name="Inventory"/>
- <menu_item_check label="Mi Inventario" name="ShowSidetrayInventory"/>
- <menu_item_check label="Mis gestos" name="Gestures"/>
- <menu_item_check label="Mi voz" name="ShowVoice"/>
+ <menu_item_call label="Perfil..." name="Profile"/>
+ <menu_item_call label="Apariencia" name="ChangeOutfit"/>
+ <menu_item_check label="Inventario..." name="Inventory"/>
+ <menu_item_check label="Gestos..." name="Gestures"/>
+ <menu_item_check label="Voz..." name="ShowVoice"/>
<menu label="Movimiento" name="Movement">
<menu_item_call label="Sentarte" name="Sit Down Here"/>
<menu_item_check label="Volar" name="Fly"/>
<menu_item_check label="Correr siempre" name="Always Run"/>
<menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
</menu>
- <menu label="Mi estado" name="Status">
+ <menu label="Estado" 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="Comprar L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Preferencias..." name="Preferences"/>
+ <menu_item_call label="Barras de herramientas..." name="Toolbars"/>
+ <menu_item_call label="Ocultar todos los controles" name="Hide UI"/>
<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
</menu>
<menu label="Comunicarme" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="Ayuda" name="Help">
<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_check label="Permitir consejos" name="Enable Hints"/>
<menu_item_call label="Denunciar una infracción" name="Report Abuse"/>
<menu_item_call label="Informar de un fallo" name="Report Bug"/>
<menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
<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_item_check label="Mostrar el peso del dibujo de los avatares" name="Avatar Rendering Cost"/>
</menu>
<menu label="Realzado y Visibilidad" name="Highlighting and Visibility">
<menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/>
@@ -271,6 +271,7 @@
<menu_item_check label="Actualizar el tipo" name="Update Type"/>
<menu_item_check label="Información sobre el nivel de detalle" name="LOD Info"/>
<menu_item_check label="Crear cola" name="Build Queue"/>
+ <menu_item_check label="Complejidad del renderizado" name="rendercomplexity"/>
<menu_item_check label="Esculpir" name="Sculpt"/>
</menu>
<menu label="Rendering" name="Rendering">
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 4fb29b9427..9591b424fc 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -981,7 +981,7 @@ no tienes el permiso de comprar terreno para el grupo que tienes activado actual
</form>
</notification>
<notification name="RemoveFromFriends">
- ¿Quieres eliminar a [NAME] de tu lista de amigos?
+ ¿Quieres eliminar a &lt;nolink&gt;[NAME]&lt;/nolink&gt; de tu lista de amigos?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -1919,6 +1919,12 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
¿Estás seguro de que quieres salir?
<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ ¿Estás seguro de que quieres restaurar los botones y barras de herramientas predeterminados?
+
+Esta acción no se puede deshacer.
+ <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="Confirmar antes de eliminar elementos" name="okcancelignore" notext="Cancelar" yestext="OK"/>
@@ -2122,10 +2128,10 @@ Al hacerlo se iniciará el navegador web.
Asunto: [SUBJECT], Mensaje: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] está conectado
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; está conectado
</notification>
<notification name="FriendOffline">
- [NAME] está desconectado
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; está desconectado
</notification>
<notification name="AddSelfFriend">
Aunque eres muy agradable, no puedes añadirte como amigo a ti mismo.
@@ -2520,10 +2526,10 @@ Por favor, vuelve a intentarlo en unos momentos.
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME] ha aceptado tu oferta de amistad.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; ha aceptado tu oferta de amistad.
</notification>
<notification name="FriendshipDeclined">
- [NAME] ha rehusado tu oferta de amistad.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; ha rehusado tu oferta de amistad.
</notification>
<notification name="FriendshipAcceptedByMe">
Aceptado el ofrecimiento de amistad.
@@ -2999,10 +3005,6 @@ Al ocultar el botón Hablar se desactiva la función de voz.
<button name="cancel" text="Cancelar"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- Para cambiar de modo tienes que salir y reiniciar.
- <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
- </notification>
<notification label="" name="NoClassifieds">
La creación y edición de clasificados sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
@@ -3047,6 +3049,10 @@ Al ocultar el botón Hablar se desactiva la función de voz.
Las búsquedas solo están disponibles en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo?
<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ Esta acción ocultará todos los botones y elementos de menú. Para restaurarlos, pulsa otra vez en [SHORTCUT].
+ <usetemplate ignoretext="Confirmar antes de ocultar la IU" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
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.
diff --git a/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..eaaa5dbe78
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Conversaciones"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Notificaciones"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml
index ed253904aa..850cd6ec71 100644
--- a/indra/newview/skins/default/xui/es/panel_me.xml
+++ b/indra/newview/skins/default/xui/es/panel_me.xml
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mi perfil" name="panel_me">
- <tab_container name="tabs">
- <panel label="MI PERFIL" name="panel_profile"/>
- <panel label="MIS DESTACADOS" name="panel_picks"/>
- </tab_container>
+ <panel label="MIS DESTACADOS" name="panel_picks"/>
</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
deleted file mode 100644
index 29e5e6f652..0000000000
--- a/indra/newview/skins/default/xui/es/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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="no_group_text" value="Ninguno"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Nombre de usuario
- </text>
- <text name="name_descr_text">
- Nombre mostrado
- </text>
- <button label="Perfil" name="see_profile_btn" tool_tip="Ver el perfil de este avatar"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</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
index 293c9ef1d9..d36c6283bc 100644
--- a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
- <pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
- <button name="home_btn" tool_tip="Teleportar a mi Base"/>
- <location_input label="Localización" name="location_combo"/>
- <search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar">
- <combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
- <label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
- Barra de Favoritos
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
+ <pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
+ <button name="home_btn" tool_tip="Teleportar a mi Base"/>
+ <location_input label="Lugar" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
+ <label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
+ Barra de Favoritos
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos">
+ Más ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</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..5a852a6711
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Traducir chat" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_notes.xml b/indra/newview/skins/default/xui/es/panel_notes.xml
deleted file mode 100644
index 00d4caf468..0000000000
--- a/indra/newview/skins/default/xui/es/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notas y Privacidad" name="panel_notes">
- <layout_stack name="layout">
- <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>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index 2fcbb00aed..a9d38dca25 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -76,7 +76,7 @@
<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
</layout_panel>
<layout_panel name="teleport_btn_lp">
- <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
+ <button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
</layout_panel>
</layout_stack>
<layout_stack name="bottom_bar_ls1">
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 d8fd43469d..e822585566 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
<spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/>
<check_box name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Usar en el chat el traductor automático de Google
+ Usar en el chat el traductor automático
</text>
<text name="translate_language_text">
Traducir el chat al:
@@ -51,7 +51,7 @@
<combo_box.item label="Русский (ruso)" name="Russian"/>
<combo_box.item label="Türkçe (turco)" name="Turkish"/>
<combo_box.item label="Українська (ucraniano)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (chino)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Chino)" name="Chinese"/>
<combo_box.item label="日本語 (japonés)" name="Japanese"/>
<combo_box.item label="한국어 (coreano)" name="Korean"/>
</combo_box>
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 e725e4a05a..4fc163f5b6 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -11,10 +11,12 @@
<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="Русский (Ruso) - Beta" name="Russian"/>
+ <combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
<combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (Chino tradicional) - Beta" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(requiere reiniciar)
@@ -49,7 +51,6 @@
<check_box label="Títulos de grupos" name="show_all_title_checkbox1" tool_tip="Mostrar títulos de grupos, como Jefe o Miembro"/>
<check_box label="Realzar amigos" name="show_friends" tool_tip="Realzar las etiquetas de los nombres de tus amigos"/>
<check_box label="Ver nombres mostrados" name="display_names_check" tool_tip="Comprobar para utilizar nombres mostrados en chat, MI, etiquetas de nombres, etc."/>
- <check_box label="Permitir los consejos de la IU del visor" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
Si pulsas las teclas de letras:
</text>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_move.xml b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
index d95e167361..b2ff6b61c2 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</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"/>
- <check_box initial_value="verdadero" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/>
+ <text name="keyboard_lbl">
+ Teclado:
+ </text>
+ <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"/>
+ <text name="mouse_lbl">
+ Ratón:
+ </text>
<check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
Sensibilidad del ratón en la Vista subjetiva:
</text>
<check_box label="Invertir" name="invert_mouse"/>
- <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="Haz doble clic para:" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="Teleportarte" name="radio_teleport"/>
- <radio_item label="Piloto automático" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ Un clic en el terreno:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Ninguna acción" name="0"/>
+ <combo_box.item label="Ir al punto seleccionado" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Doble clic en el terreno:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Ninguna acción" name="0"/>
+ <combo_box.item label="Ir al punto seleccionado" name="1"/>
+ <combo_box.item label="Teleportarte al punto seleccionado" name="2"/>
+ </combo_box>
<button label="Otros dispositivos" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml
deleted file mode 100644
index 334c0541af..0000000000
--- a/indra/newview/skins/default/xui/es/panel_profile.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=es-ES
- </string>
- <string name="partner_edit_link_url">
- 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="no_group_text" value="Ninguno"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="title_member_text" value="Residente desde:"/>
- <text name="title_acc_status_text" value="Estado de la cuenta:"/>
- <text name="title_partner_text" value="Compañero/a:"/>
- <panel name="partner_data_panel">
- <text initial_value="(obteniendo)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Grupos:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Pagar dinero al Residente o compartir algo del inventario con él"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modificar tu información personal"/>
- </layout_panel>
- </layout_stack>
-</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
deleted file mode 100644
index cb374dee52..0000000000
--- a/indra/newview/skins/default/xui/es/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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 name="display_name_label" value="Nombre mostrado:"/>
- <text name="solo_username_label" value="Nombre de usuario:"/>
- <text name="status" value="Conectado/a"/>
- <text name="user_name_small" value="Jack, ¿has visto esto? Es un nombre larguísimo."/>
- <button name="copy_to_clipboard" tool_tip="Copiar al portapapeles"/>
- <text name="user_label" value="Nombre de usuario:"/>
- <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_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml
index 0391258b75..d43790c8c6 100644
--- a/indra/newview/skins/default/xui/es/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml
@@ -17,12 +17,9 @@
</panel.string>
<panel name="balance_bg">
<text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="20 L$"/>
- <button label="COMPRAR L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>
+ <button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>
+ <button label="Comprar" name="goShop" tool_tip="Abrir el mercado de Second Life"/>
</panel>
- <combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
- <combo_box.item label="Modo Básico" name="Basic"/>
- <combo_box.item label="Modo Avanzado" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="Hora actual (Pacífico)">
24:00 AM PST
</text>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
index aae9bfc113..79d0cb84e8 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
@@ -14,7 +14,7 @@
</string>
<button label="Objetos recibidos" name="inbox_btn"/>
<text name="inbox_fresh_new_count">
- [NUM] Nuevos
+ [NUM] nuevos
</text>
<panel tool_tip="Drag and drop items to your inventory to manage and use them">
<text name="inbox_inventory_placeholder">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index cc044ba416..e3ea4baa6c 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -34,6 +34,9 @@
<string name="ProgressChangingResolution">
Cambiando la resolución...
</string>
+ <string name="Fullbright">
+ Brillo al máximo (antiguo)
+ </string>
<string name="LoginInProgress">
Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere.
</string>
@@ -116,7 +119,7 @@
No se pudo verificar la firma del certificado devuelta por el servidor de la cuadrícula. Ponte en contacto con el administrador de la cuadrícula.
</string>
<string name="LoginFailedNoNetwork">
- Error de red: no se ha podido conectar; por favor, revisa tu conexión a Internet.
+ Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.
</string>
<string name="LoginFailed">
Error en el inicio de sesión.
@@ -583,6 +586,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
<string name="mesh">
red
</string>
+ <string name="AvatarEditingAppearance">
+ (Edición de Apariencia)
+ </string>
<string name="AvatarAway">
Ausente
</string>
@@ -1255,6 +1261,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
<string name="Marketplace Error Internal Import">
Error: Este objeto tiene un problema. Vuelve a intentarlo más tarde.
</string>
+ <string name="Open landmarks">
+ Abrir hitos
+ </string>
<string name="no_transfer" value="(no transferible)"/>
<string name="no_modify" value="(no modificable)"/>
<string name="no_copy" value="(no copiable)"/>
@@ -3835,6 +3844,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="inventory_item_offered-im">
Ofrecido el item del inventario
</string>
+ <string name="share_alert">
+ Arrastra los ítems desde el invenbtario hasta aquí
+ </string>
<string name="no_session_message">
(La sesión de MI no existe)
</string>
@@ -4158,8 +4170,8 @@ Denuncia de infracción
<string name="Female - Wow">
Mujer - Admiración
</string>
- <string name="/bow1">
- /reverencia1
+ <string name="/bow">
+ /reverencia
</string>
<string name="/clap">
/aplaudir
@@ -4671,4 +4683,172 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
<string name="ParticleHiding">
Ocultando las partículas
</string>
+ <string name="Command_AboutLand_Label">
+ Acerca del terreno
+ </string>
+ <string name="Command_Appearance_Label">
+ Apariencia
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construir
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Compass_Label">
+ Brújula
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinos
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestos
+ </string>
+ <string name="Command_HowTo_Label">
+ Cómo
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventario
+ </string>
+ <string name="Command_Map_Label">
+ Mapa
+ </string>
+ <string name="Command_Marketplace_Label">
+ Mercado
+ </string>
+ <string name="Command_MiniMap_Label">
+ Minimapa
+ </string>
+ <string name="Command_Move_Label">
+ Moverme
+ </string>
+ <string name="Command_People_Label">
+ Gente
+ </string>
+ <string name="Command_Picks_Label">
+ Destacados
+ </string>
+ <string name="Command_Places_Label">
+ Lugares
+ </string>
+ <string name="Command_Preferences_Label">
+ Preferencias
+ </string>
+ <string name="Command_Profile_Label">
+ Perfil
+ </string>
+ <string name="Command_Search_Label">
+ Buscar
+ </string>
+ <string name="Command_Snapshot_Label">
+ Foto
+ </string>
+ <string name="Command_Speak_Label">
+ Hablar
+ </string>
+ <string name="Command_View_Label">
+ Visión
+ </string>
+ <string name="Command_Voice_Label">
+ Chat de voz
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Información sobre el terreno que vas a visitar
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Cambiar tu avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Elegir un avatar completo
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construir objetos y modificar la forma del terreno
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Habla por chat de texto con las personas próximas
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Brújula
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinos de interés
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestos para tu avatar
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Cómo hacer las tareas habituales
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Ver y usar tus pertenencias
+ </string>
+ <string name="Command_Map_Tooltip">
+ Mapa del mundo
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Ir de compras
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Mostrar la gente que está cerca
+ </string>
+ <string name="Command_Move_Tooltip">
+ Desplazando el avatar
+ </string>
+ <string name="Command_People_Tooltip">
+ Amigos, grupos y personas próximas
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lugares que se mostrarán como favoritos en tu perfil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lugares que has guardado
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Preferencias
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Consulta o edita tu perfil
+ </string>
+ <string name="Command_Search_Tooltip">
+ Buscar lugares, eventos y personas
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Tomar una fotografía
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Utiliza el micrófono para hablar con las personas próximas
+ </string>
+ <string name="Command_View_Tooltip">
+ Cambiando el ángulo de la cámara
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Personas próximas con capacidad de voz
+ </string>
+ <string name="Retain%">
+ % retención
+ </string>
+ <string name="Detail">
+ Detalle
+ </string>
+ <string name="Better Detail">
+ Mejor detalle
+ </string>
+ <string name="Surface">
+ Superficie
+ </string>
+ <string name="Solid">
+ Sólido
+ </string>
+ <string name="Wrap">
+ Envoltura
+ </string>
+ <string name="Preview">
+ Vista previa
+ </string>
+ <string name="Normal">
+ Normal
+ </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 e0e0061729..e785a7ac40 100644
--- a/indra/newview/skins/default/xui/es/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/es/teleport_strings.xml
@@ -19,6 +19,10 @@ Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
Lo sentimos, pero el sistema no ha podido completar el teleporte.
Vuelva a intentarlo en un momento.
</message>
+ <message name="NoHelpIslandTP">
+ No puede teleportarse de vuelta a la Welcome Island (&apos;Isla de Ayuda&apos;).
+Vaya a la &apos;Welcome Island Public&apos; (&apos;Isla Pública de Ayuda&apos;) para repetir el tutorial.
+ </message>
<message name="noaccess_tport">
Lo sentimos, pero no tienes acceso al destino de este teleporte.
</message>
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index d088cb3244..4d02513a53 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -8,9 +8,9 @@
Compilé avec [COMPILER] version [COMPILER_VERSION]
</floater.string>
<floater.string name="AboutPosition">
- Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION] se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION], se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU : [CPU]
@@ -37,6 +37,9 @@ Version serveur vocal : [VOICE_VERSION]
<floater.string name="AboutTraffic">
Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Erreur lors de la récupération de l&apos;URL des notes de version du serveur.
+ </floater.string>
<tab_container name="about_tab">
<panel label="Infos" name="support_panel">
<button label="Copier dans le presse-papiers" name="copy_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 55dd913a22..9771c3f7fd 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -217,19 +217,19 @@ ou divisé.
Facteur Bonus objets : [BONUS]
</text>
<text name="Simulator primitive usage:">
- Utilisation des primitives :
+ Capacité de la région :
</text>
<text name="objects_available">
[COUNT] sur [MAX] ([AVAILABLE] disponibles)
</text>
<text name="Primitives parcel supports:">
- Prims max. sur la parcelle :
+ Capacité de la parcelle :
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- Prims sur la parcelle :
+ Impact sur la parcelle :
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar.xml b/indra/newview/skins/default/xui/fr/floater_avatar.xml
new file mode 100644
index 0000000000..cfbac66c0e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="CHOIX D&apos;AVATAR"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index b3acc83078..d9e8e8821d 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -47,7 +47,7 @@ le Lindex...
[AMT] L$
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR mode de paiement] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR devise] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR taux de change]
+ [http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR mode de paiement] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR devise]
</text>
<text name="exchange_rate_note">
Saisissez à nouveau le montant pour voir le taux de change actuel.
diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml
index 1d62a89ff2..77d3c2cfe4 100644
--- a/indra/newview/skins/default/xui/fr/floater_camera.xml
+++ b/indra/newview/skins/default/xui/fr/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="AFFICHER">
<floater.string name="rotate_tooltip">
Faire tourner la caméra autour du point central
</floater.string>
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Déplacer la caméra vers le haut et le bas, la gauche et la droite
</floater.string>
- <floater.string name="camera_modes_title">
- Modes
- </floater.string>
- <floater.string name="pan_mode_title">
- Rotation - Zoom - Panoramique
- </floater.string>
- <floater.string name="presets_mode_title">
- Préréglages
- </floater.string>
<floater.string name="free_mode_title">
Voir l&apos;objet
</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
new file mode 100644
index 0000000000..88a2fb669b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="CHAT PRÈS DE MOI">
+ <panel>
+ <line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/>
+ <button name="show_nearby_chat" tool_tip="Affiche/Masque le journal de chats près de vous"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_destinations.xml b/indra/newview/skins/default/xui/fr/floater_destinations.xml
new file mode 100644
index 0000000000..25e6c90a8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINATIONS"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_fast_timers.xml b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
new file mode 100644
index 0000000000..0100b10557
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Pauser
+ </string>
+ <string name="run">
+ Courir
+ </string>
+ <button label="Pauser" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_how_to.xml b/indra/newview/skins/default/xui/fr/floater_how_to.xml
new file mode 100644
index 0000000000..a414212ba0
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="AIDE RAPIDE"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
index 8675fb8ef9..dbd3dd9406 100644
--- a/indra/newview/skins/default/xui/fr/floater_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="Mini-carte">
<floater.string name="ToolTipMsg">
[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)
</floater.string>
@@ -7,7 +7,7 @@
[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)
</floater.string>
<floater.string name="mini_map_caption">
- MINI-CARTE
+ Mini-carte
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
index 2b8e441ef0..a26deb1aef 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Chargement du modèle">
- <string name="status_idle">
- Inactif
- </string>
+<floater name="Model Preview" title="CHARGEMENT DU MODELE">
+ <string name="status_idle"/>
<string name="status_parse_error">
- Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
+ Erreur : Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
</string>
<string name="status_reading_file">
Chargement...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
Niveau de détail requis manquant.
</string>
+ <string name="mesh_status_invalid_material_list">
+ Les options du niveau de détail ne sont pas une sous-ensemble d&apos;un modèle de référence.
+ </string>
<string name="layer_all">
Tout
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
TBD
</string>
- <text name="name_label">
- Nom :
- </text>
- <text name="lod_label">
- Aperçu :
- </text>
- <combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
- <combo_item name="high">
- Niveau de détail : Élevé
- </combo_item>
- <combo_item name="medium">
- Niveau de détail : Moyen
- </combo_item>
- <combo_item name="low">
- Niveau de détail : Faible
- </combo_item>
- <combo_item name="lowest">
- Niveau de détail : Le plus faible
- </combo_item>
- </combo_box>
- <text name="warning_title">
- AVERTISSEMENT :
- </text>
- <text name="warning_message">
- Vous ne pourrez pas effectuer le chargement final du modèle sur les serveurs Second Life. [[VURL] Découvrez comment] activer le chargement des modèles de maillage.
- </text>
- <text name="weights_text">
- Téléchargement :
-Propriétés physiques :
-Serveur :
-
-Équiv. en prims :
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="Niveau de détail" name="lod_panel">
- <text name="lod_table_header">
- Sélectionner le niveau de détail :
- </text>
- <text name="high_label" value="Élevé"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="Moyen"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="Faible"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="Le plus faible"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- Niveau de détail : [DETAIL]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="Charger depuis un fichier" name="lod_from_file"/>
- <radio_item label="Générer automatiquement" name="lod_auto_generate"/>
- <radio_item label="Aucun" name="lod_none"/>
- </radio_group>
- <button label="Parcourir..." name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- Triangles max.
- </combo_item>
- <combo_item name="error_threshold">
- Seuil d&apos;erreur
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- Opér. construction :
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Nom du modèle :
</text>
- <text name="queue_mode_text">
- Mode file d&apos;attente :
+ <text name="model_category_label">
+ Ce modèle représente...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- Fusion (nouveau sommet)
- </combo_item>
- <combo_item name="half_edge_collapse">
- Fusion (un des sommets)
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- Glouton
- </combo_item>
- <combo_item name="lazy">
- Paresseux
- </combo_item>
- <combo_item name="independent">
- Indépendant
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="Choisir une option..." name="Choose one"/>
+ <combo_item label="Silhouette de l&apos;avatar" name="Avatar shape"/>
+ <combo_item label="Éléments attachés aux avatars" name="Avatar attachment"/>
+ <combo_item label="Objet mobile (véhicule, animal)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Éléments pour la construction" name="Building Component"/>
+ <combo_item label="Important, immobile etc." name="Large, non moving etc"/>
+ <combo_item label="Plus petit, immobile etc." name="Smaller, non-moving etc"/>
+ <combo_item label="Aucun" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- Mode bord :
- </text>
- <text name="share_tolderance_text">
- Tolérance partage :
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- Déverrouiller
- </combo_item>
- <combo_item name="border_lock">
- Verrouiller
- </combo_item>
- </combo_box>
- <text name="crease_label">
- Angle pli :
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="Propriétés physiques" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="Fichier :" name="physics_load_from_file"/>
- <radio_item label="Utiliser le niveau de détail :" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme physique.">
- <combo_item name="physics_lowest">
- Le plus faible
- </combo_item>
- <combo_item name="physics_low">
- Faible
- </combo_item>
- <combo_item name="physics_medium">
- Moyen
- </combo_item>
- <combo_item name="physics_high">
- Élevé
- </combo_item>
- </combo_box>
- <button label="Parcourir..." name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="Niveau de détail" name="lod_panel" title="Niveau de détail">
+ <text initial_value="Source" name="source" value="Source"/>
+ <text initial_value="Triangles" name="triangles" value="Triangles"/>
+ <text initial_value="Sommets" name="vertices" value="Sommets"/>
+ <text initial_value="Élevé" name="high_label" value="Élevé"/>
+ <button label="Parcourir..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Moyen" name="medium_label" value="Moyen"/>
+ <button label="Parcourir..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Faible" name="low_label" value="Faible"/>
+ <button label="Parcourir..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Le plus faible" name="lowest_label" value="Le plus faible"/>
+ <button label="Parcourir..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Génération de normales" name="gen_normals"/>
+ <text initial_value="Angle pli :" name="crease_label" value="Angle pli :"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="Lissage :" name="Smooth"/>
- <check_box label="Fermer les trous (lent)" name="Close Holes (Slow)"/>
- <button label="Analyser" name="Decompose"/>
- <button label="Annuler" name="decompose_cancel"/>
+ <panel label="Propriétés physiques" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Étape 1 : Niveau de détail
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme des propriétés physiques.">
+ <combo_item name="choose_one">
+ Choisir une option...
+ </combo_item>
+ <combo_item name="physics_high">
+ Élevé
+ </combo_item>
+ <combo_item name="physics_medium">
+ Moyen
+ </combo_item>
+ <combo_item name="physics_low">
+ Faible
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Le plus faible
+ </combo_item>
+ <combo_item name="load_from_file">
+ Du fichier
+ </combo_item>
+ </combo_box>
+ <button label="Parcourir..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Étape 2 : Analyse
+ </text>
+ <text name="analysis_method_label">
+ Moyen :
+ </text>
+ <text name="quality_label">
+ Qualité :
+ </text>
+ <text name="smooth_method_label">
+ Lissage :
+ </text>
+ <check_box label="Fermer les trous" name="Close Holes (Slow)"/>
+ <button label="Analyser" name="Decompose"/>
+ <button label="Annuler" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Étape 3 : Simplifier
+ </text>
+ <text name="simp_method_header">
+ Moyen :
+ </text>
+ <text name="pass_method_header">
+ Passes :
+ </text>
+ <text name="Detail Scale label">
+ Échelle de détail :
+ </text>
+ <text name="Retain%_label">
+ Retenue :
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Simplifier" name="Simplify"/>
+ <button label="Annuler" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Résultats :
+ </text>
+ <text name="physics_triangles">
+ Triangles : [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Sommets : [POINTS]
+ </text>
+ <text name="physics_hulls">
+ Enveloppes : [HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="Passes :" name="Combine Quality"/>
- <slider label="Échelle de détail :" name="Detail Scale"/>
- <slider label="Retenue :" name="Retain%"/>
- <button label="Simplifier" name="Simplify"/>
- <button label="Annuler" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="Décomposition de l&apos;aperçu :" name="physics_explode"/>
- <text name="physics_triangles">
- Triangles : [TRIANGLES]
+ <panel label="Option de chargement" name="modifiers_panel">
+ <text name="scale_label">
+ Echelle (1 = pas d&apos;échelle) :
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Dimensions :
</text>
- <text name="physics_points">
- Sommets : [POINTS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- Enveloppes : [HULLS]
+ <check_box label="Inclure les textures" name="upload_textures"/>
+ <text name="include_label">
+ Pour les modèles d&apos;avatar uniquement :
</text>
+ <check_box label="Inclure la pondération de la peau :" name="upload_skin"/>
+ <check_box label="Inclure la position des articulations :" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Décalage Z (élever ou abaisser l&apos;avatar) :
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="Modificateurs" name="modifiers_panel">
- <spinner name="import_scale" value="1.0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Calculer les poids et les frais." name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
+ <button label="Annuler" name="cancel_btn"/>
+ <button label="Charger le modèle" name="ok_btn" tool_tip="Charger dans le simulateur"/>
+ <button label="Effacer les paramètres et réinitialiser le formulaire" name="reset_btn"/>
+ <text name="upload_fee">
+ Frais de chargement : [FEE] L$
+ </text>
+ <text name="prim_weight">
+ Impact sur le terrain : [EQ]
+ </text>
+ <text name="download_weight">
+ Téléchargement : [ST]
+ </text>
+ <text name="physics_weight">
+ Propriétés physiques : [PH]
+ </text>
+ <text name="server_weight">
+ Serveur : [SIM]
+ </text>
+ <text name="warning_title">
+ Remarque :
+ </text>
+ <text name="warning_message">
+ Vous n&apos;avez pas la permission de charger des modèles de maillage. [[VURL] Savoir comment] obtenir la permission.
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="Textures" name="upload_textures"/>
- <check_box label="Pondération de la peau" name="upload_skin"/>
- <check_box label="Position des articulations" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- Frais de chargement : [FEE] L$
+ </panel>
+ <text name="lod_label">
+ Aperçu :
</text>
- <button label="Réinitialiser" name="reset_btn" tool_tip="Rétablir les paramètres par défaut."/>
- <button label="Calculer poids et frais" name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
- <button label="Charger" name="ok_btn" tool_tip="Charger dans le simulateur."/>
- <button label="Annuler" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
+ <combo_item name="high">
+ Élevé
+ </combo_item>
+ <combo_item name="medium">
+ Moyen
+ </combo_item>
+ <combo_item name="low">
+ Faible
+ </combo_item>
+ <combo_item name="lowest">
+ Le plus faible
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Afficher...
+ </text>
+ <check_box label="Coins" name="show_edges"/>
+ <check_box label="Propriétés physiques" name="show_physics"/>
+ <check_box label="Textures" name="show_textures"/>
+ <check_box label="Pondération de la peau" name="show_skin_weight"/>
+ <check_box label="Articulations" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Décomposition de l&apos;aperçu :
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
index f564b6f71a..cd2eb761ec 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. Optimisation" name="optimize_btn"/>
<button label="1. Sélection du fichier" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Choisir un fichier de modèle
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
Utilisateurs expérimentés : si vous êtes habitué à utiliser des outils de création de contenu en 3D, l&apos;outil de chargement avancé est mis à votre disposition.
</text>
<button label="Passer à Avancé" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
Choisir un fichier de modèle à charger
</text>
<button label="Parcourir..." label_selected="Parcourir..." name="browse"/>
- <text name="support_collada_text">
- Second Life prend en charge les fichiers COLLADA (.dae).
- </text>
- <text name="dimensions_label">
- Dimensions (mètres) :
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Optimiser le modèle
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
Le modèle a été optimisé en termes de performances. Vous pouvez l&apos;ajuster si vous le souhaitez.
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- Génération du niveau de détail
- </text>
+ <panel name="content">
<text name="high_detail_text">
Générer le niveau de détail : Élevé
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- Performances
- </text>
- <text name="optimize_faster_rendering_text">
- Rendu plus rapide
-Moins de détail
-Poids en prims inférieur
- </text>
- <text name="optimize_accuracy_text">
- Précision
- </text>
- <text name="optimize_slower_rendering_text">
- Rendu plus lent
-Plus de détail
-Poids en prims supérieur
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="Recalcul géométrique" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
Aperçu de la géométrie
</text>
<combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
Niveau de détail élevé
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
Niveau de détail moyen
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
Niveau de détail faible
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
Niveau de détail le plus faible
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Ajuster les propriétés physiques
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
Une forme va être créée pour l&apos;enveloppe externe du modèle. Ajustez le niveau de détail de la forme en fonction de l&apos;objectif souhaité pour votre modèle.
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- Performances
- </text>
- <text name="physics_faster_rendering_text">
- Rendu plus rapide
-Moins de détail
-Poids en prims inférieur
- </text>
- <text name="physics_accuracy_text">
- Précision
- </text>
- <text name="physics_slower_dendering_text">
- Rendu plus lent
-Plus de détail
-Poids en prims supérieur
- </text>
- <text name="physics_example_1">
- Exemples :
-Objets mobiles
-Objets volants
-Véhicules
- </text>
- <text name="physics_example_2">
- Exemples :
-Petits objets statiques
-Objets moins détaillés
-Mobilier simple
- </text>
- <text name="physics_example_3">
- Exemples :
-Objets statiques
-Objets détaillés
-Bâtiments
- </text>
+ <panel name="content">
<button label="Recalcul physique" name="recalculate_physics_btn"/>
<button label="Recalcul en cours..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
Aperçu des propriétés physiques
</text>
<combo_box name="preview_lod_combo2" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
Niveau de détail élevé
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
Niveau de détail moyen
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
Niveau de détail faible
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
Niveau de détail le plus faible
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Vérification
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
Impact sur la parcelle/région : équivalent à [EQUIV] prims
</text>
@@ -193,8 +125,8 @@ Bâtiments
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Chargement terminé
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml
index c0f3864b81..0b0ec51846 100644
--- a/indra/newview/skins/default/xui/fr/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="BOUGER">
<string name="walk_forward_tooltip">
Marcher en avant (appuyer sur la flèche vers le haut ou W)
</string>
@@ -58,14 +58,14 @@
Voler
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut (touche E)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Tourner à gauche (appuyer sur la flèche de gauche ou sur A)"/>
<joystick_slide name="move left btn" tool_tip="Marcher vers la gauche (Maj+Flèche gauche ou touche A)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas (touche C)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Tourner à droite (appuyer sur la flèche de droite ou sur D)"/>
<joystick_slide name="move right btn" tool_tip="Marcher vers la droite (Maj+Flèche droite ou touche D)"/>
<joystick_turn name="forward btn" tool_tip="Marcher en avant (appuyer sur la flèche vers le haut ou W)"/>
<joystick_turn name="backward btn" tool_tip="Marcher en arrière (appuyer sur la flèche vers le bas ou S)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut (touche E)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas (touche C)"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="Mode marche"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_appearance.xml b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
new file mode 100644
index 0000000000..53ff58e307
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APPARENCE">
+ <panel label="Changer d&apos;apparence" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_inventory.xml b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
new file mode 100644
index 0000000000..d514d08081
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTAIRE"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml
index 9b1b21c434..8bbd34baae 100644
--- a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="CHAT PRÈS DE MOI">
- <check_box label="Traduction du chat (fournie par Google)" name="translate_chat_checkbox"/>
+ <check_box label="Traduction du chat" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_object_weights.xml b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
new file mode 100644
index 0000000000..2667188308
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANCÉ">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="SÉLECTION"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Objets"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Prims"/>
+ <text name="weights_of_selected_text" value="POIDS DE LA SÉLECTION"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Téléchargement"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Physique"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Serveur"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Affichage"/>
+ <text name="land_impacts_text" value="IMPACTS SUR LE TERRAIN"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Sélection"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Rezzés sur le terrain"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Capacité restante"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Capacité totale"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights De quoi s&apos;agit-il ?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
index d77dfbdf82..72018f5de5 100644
--- a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Enregistrer la tenue">
+<floater name="modal container" title="SAUVEGARDER LA TENUE">
<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
<button label="Annuler" label_selected="Annuler" name="Cancel"/>
<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/fr/floater_people.xml b/indra/newview/skins/default/xui/fr/floater_people.xml
new file mode 100644
index 0000000000..58701c06b2
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PERSONNES">
+ <panel_container name="main_panel">
+ <panel label="Profil du groupe" name="panel_group_info_sidetray"/>
+ <panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_picks.xml b/indra/newview/skins/default/xui/fr/floater_picks.xml
new file mode 100644
index 0000000000..f058ff668b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Favoris"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_places.xml b/indra/newview/skins/default/xui/fr/floater_places.xml
new file mode 100644
index 0000000000..9e649aca47
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LIEUX">
+ <panel label="Lieux" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
index a9407abfde..fdd2ac8beb 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 Second Life" label_selected="Stop" 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="160" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="120"/>
+ <button label="Exécuter dans Second Life" label_selected="Stop" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/>
+ <button label="Exécuter localement" label_selected="Stop" left="160" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="120"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index 34d0957b46..365ff77ff9 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="APERÇU DE LA PHOTO" width="247">
+<floater name="Snapshot" title="APERÇU DE LA PHOTO">
<floater.string name="unknown">
inconnu
</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
index 9e2e4333aa..080ade9dd4 100644
--- a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Périphériques audio">
+<floater name="floater_sound_devices" title="PERIPHERIQUES AUDIO">
<text name="voice_label">
Chat vocal
</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml
index 3c19bb2608..2ce2e6dcd5 100644
--- a/indra/newview/skins/default/xui/fr/floater_stats.xml
+++ b/indra/newview/skins/default/xui/fr/floater_stats.xml
@@ -10,8 +10,8 @@
</stat_view>
<stat_view label="Avancées" name="advanced">
<stat_view label="Rendu" name="render">
- <stat_bar label="KTris Drawn" name="ktrisframe"/>
- <stat_bar label="KTris Drawn" name="ktrissec"/>
+ <stat_bar label="KTris par image" name="ktrisframe"/>
+ <stat_bar label="KTris par s" name="ktrissec"/>
<stat_bar label="Objets totaux" name="objs"/>
<stat_bar label="Nouveaux objets" name="newobjs"/>
</stat_view>
@@ -32,13 +32,13 @@
<stat_bar label="Couches" name="layerskbitstat"/>
<stat_bar label="Arrivés" name="actualinkbitstat"/>
<stat_bar label="Sortis" name="actualoutkbitstat"/>
- <stat_bar label="Ops VFS en attente" name="vfspendingoperations"/>
+ <stat_bar label="Opérations VFS en attente" name="vfspendingoperations"/>
</stat_view>
</stat_view>
<stat_view label="Simulateur" name="sim">
<stat_bar label="Dilatation temporelle" name="simtimedilation"/>
<stat_bar label="FPS sim" name="simfps"/>
- <stat_bar label="Propriétés physiques FPS" name="simphysicsfps"/>
+ <stat_bar label="FPS physique" name="simphysicsfps"/>
<stat_view label="Détails des propriétés physiques" name="physicsdetail">
<stat_bar label="Objets fixés" name="physicspinnedtasks"/>
<stat_bar label="Objets LOD faibles" name="physicslodtasks"/>
@@ -53,17 +53,25 @@
<stat_bar label="Événements de scripts" name="simscripteps"/>
<stat_bar label="Paquets en entrée" name="siminpps"/>
<stat_bar label="Paquets en sortie" name="simoutpps"/>
- <stat_bar label="En attente des téléchargements" name="simpendingdownloads"/>
- <stat_bar label="En attente des chargements" name="simpendinguploads"/>
+ <stat_bar label="Téléchargements en attente" name="simpendingdownloads"/>
+ <stat_bar label="Chargements en attente" name="simpendinguploads"/>
<stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
<stat_view label="Temps (ms)" name="simperf">
- <stat_bar label="Durée du cadre totale" name="simframemsec"/>
+ <stat_bar label="Durée totale de l'image" name="simframemsec"/>
<stat_bar label="Durée nette" name="simnetmsec"/>
- <stat_bar label="Durée physique" name="simsimphysicsmsec"/>
- <stat_bar label="Durée de la simulation" name="simsimothermsec"/>
- <stat_bar label="Durée de l&apos;avatar" name="simagentmsec"/>
+ <stat_bar label="Durée sim (physique)" name="simsimphysicsmsec"/>
+ <stat_bar label="Durée sim (autre)" name="simsimothermsec"/>
+ <stat_bar label="Durée des avatars" name="simagentmsec"/>
<stat_bar label="Durée des images" name="simimagesmsec"/>
- <stat_bar label="Durée du script" name="simscriptmsec"/>
+ <stat_bar label="Durée des scripts" name="simscriptmsec"/>
+ <stat_bar label="Temps d&apos;inactivité" name="simsparemsec"/>
+ <stat_view label="Détails Temps (ms)" name="timedetails">
+ <stat_bar label="Etape propr. physiques" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Mettre à jour les formes phys" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Propriétés physiques Autre" name="simsimphysicsothermsec"/>
+ <stat_bar label="Temps de sommeil" name="simsleepmsec"/>
+ <stat_bar label="Pump IO" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index bf687c412b..af5678ff0e 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -25,10 +25,10 @@
Cliquez et faites glisser pour sélectionner le terrain.
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] objets ( [PRIM_COUNT] prims[PE_STRING] ) sélectionnés
+ [OBJ_COUNT] objets sélectionnés, impact sur le terrain [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , équiv. prims de [SEL_WEIGHT]
+ <floater.string name="status_remaining_capacity">
+ Capacité restante [LAND_CAPACITY].
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Mise au point"/>
<button label="" label_selected="" name="button move" tool_tip="Déplacer"/>
@@ -105,8 +105,8 @@
<text name="selection_empty">
Aucune sélection effectuée.
</text>
- <text name="selection_weight">
- Poids physique [PHYS_WEIGHT], Coût de rendu [DISP_WEIGHT].
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Plus d'infos]
</text>
<tab_container name="Object Info Tabs">
<panel label="Général" name="General">
@@ -319,7 +319,6 @@
Type de raccord
</text>
<combo_box name="sculpt type control">
- <combo_box.item label="(aucun)" name="None"/>
<combo_box.item label="Sphère" name="Sphere"/>
<combo_box.item label="Tore" name="Torus"/>
<combo_box.item label="Plan" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_toybox.xml b/indra/newview/skins/default/xui/fr/floater_toybox.xml
new file mode 100644
index 0000000000..33aea6bb2d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PERSONNALISER LES BARRES D&apos;OUTILS">
+ <text name="toybox label 1">
+ Ajouter ou supprimer des boutons : les faire glisser vers ou depuis les barres d&apos;outils.
+ </text>
+ <text name="toybox label 2">
+ Ils s&apos;afficheront comme indiqué ou comme des icônes, selon les paramètres de barre d&apos;outils.
+ </text>
+ <button label="Valeurs par défaut" label_selected="Valeurs par défaut" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
index d4f07a0a25..2b2bb8bbe3 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Contrôles vocaux">
+<floater name="floater_voice_controls" title="CONTROLES DE LA VOIX">
<string name="title_nearby">
- CHAT VOCAL PRÈS DE VOUS
+ Chat près de vous
</string>
<string name="title_group">
Appel de groupe avec [GROUP]
diff --git a/indra/newview/skins/default/xui/fr/menu_group_plus.xml b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
index 0db5afedc7..ad76f11d79 100644
--- a/indra/newview/skins/default/xui/fr/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_group_plus">
- <menu_item_call label="Rejoindre des groupes..." name="item_join"/>
+ <menu_item_call label="Rejoindre un groupe..." name="item_join"/>
<menu_item_call label="Nouveau groupe..." name="item_new"/>
</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
index 20af901ddc..09c9f5084a 100644
--- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Afficher la barre de navigation &amp; favoris" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Afficher la mini-barre d&apos;emplacement" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index 53df8d11da..403111c4de 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -71,7 +71,7 @@
<menu_item_call label="Jouer dans Second Life" name="Animation Play"/>
<menu_item_call label="Jouer localement" name="Animation Audition"/>
<menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
- <menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
+ <menu_item_call label="Proposer une téléportation..." name="Offer Teleport..."/>
<menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
<menu_item_call label="Activer" name="Activate"/>
<menu_item_call label="Désactiver" name="Deactivate"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index 6b96a16e75..8210c1be51 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="Moi" name="File">
- <menu_item_call label="Préférences" name="Preferences..."/>
+ <menu_item_call label="Préférences..." name="Preferences..."/>
<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
</menu>
<menu label="Aide" name="Help">
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
index 0aad174fbd..8bb466b8d6 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
@@ -5,5 +5,5 @@
<menu_item_check label="Trier par distance" name="sort_distance"/>
<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
<menu_item_check label="Afficher la carte" name="view_map"/>
- <menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/>
+ <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_toolbars.xml b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
new file mode 100644
index 0000000000..d3e9f92770
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Choisir les boutons..." name="Chose Buttons"/>
+ <menu_item_check label="Icônes et libellés" name="icons_with_text"/>
+ <menu_item_check label="Icônes uniquement" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index cf1dac2f3a..e2cb1f999d 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="Moi" name="Me">
- <menu_item_call label="Préférences" name="Preferences"/>
- <menu_item_call label="Ma Page d&apos;accueil" name="Manage My Account">
+ <menu_item_call label="Page d&apos;accueil..." name="Manage My Account">
<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/>
</menu_item_call>
- <menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
- <menu_item_call label="Mon profil" name="Profile"/>
- <menu_item_call label="Mon apparence" name="ChangeOutfit"/>
- <menu_item_check label="Mon inventaire" name="Inventory"/>
- <menu_item_check label="Mon inventaire" name="ShowSidetrayInventory"/>
- <menu_item_check label="Mes gestes" name="Gestures"/>
- <menu_item_check label="Ma voix" name="ShowVoice"/>
+ <menu_item_call label="Profil..." name="Profile"/>
+ <menu_item_call label="Apparence..." name="ChangeOutfit"/>
+ <menu_item_check label="Inventaire..." name="Inventory"/>
+ <menu_item_check label="Gestes..." name="Gestures"/>
+ <menu_item_check label="Chat vocal..." name="ShowVoice"/>
<menu label="Déplacement" name="Movement">
<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
<menu_item_check label="Voler" name="Fly"/>
<menu_item_check label="Toujours courir" name="Always Run"/>
<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
</menu>
- <menu label="Mon statut" name="Status">
+ <menu label="Statut" name="Status">
<menu_item_call label="Absent" name="Set Away"/>
<menu_item_call label="Occupé" name="Set Busy"/>
</menu>
<menu_item_call label="Demander le statut Admin" name="Request Admin Options"/>
<menu_item_call label="Quitter le statut Admin" name="Leave Admin Options"/>
+ <menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Préférences..." name="Preferences"/>
+ <menu_item_call label="Barres d&apos;outils..." name="Toolbars"/>
+ <menu_item_call label="Masquer tous les contrôles" name="Hide UI"/>
<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
</menu>
<menu label="Communiquer" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="Aide" name="Help">
<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_check label="Activer les astuces" name="Enable Hints"/>
<menu_item_call label="Signaler une infraction" name="Report Abuse"/>
<menu_item_call label="Signaler un bug" name="Report Bug"/>
<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
<menu label="Outils de performance" name="Performance Tools">
<menu_item_call label="Mesure du lag" name="Lag Meter"/>
<menu_item_check label="Barre de statistiques" name="Statistics Bar"/>
- <menu_item_check label="Afficher le coût de rendu de l&apos;avatar" name="Avatar Rendering Cost"/>
+ <menu_item_check label="Afficher le poids de dessin pour les avatars" name="Avatar Rendering Cost"/>
</menu>
<menu label="Surbrillance et visibilité" name="Highlighting and Visibility">
<menu_item_check label="Balise animée" name="Cheesy Beacon"/>
@@ -289,6 +289,7 @@
<menu_item_check label="Lumières" name="Lights"/>
<menu_item_check label="Squelette de collision" name="Collision Skeleton"/>
<menu_item_check label="Rayons" name="Raycast"/>
+ <menu_item_check label="Complexité du rendu" name="rendercomplexity"/>
<menu_item_check label="Sculpture" name="Sculpt"/>
</menu>
<menu label="Rendu" name="Rendering">
@@ -318,7 +319,7 @@
<menu_item_check label="Pauser l&apos;avatar" name="AgentPause"/>
<menu_item_call label="Activer le journal des messages" name="Enable Message Log"/>
<menu_item_call label="Désactiver le journal des messages" name="Disable Message Log"/>
- <menu_item_check label="Velocity Interpolate Objects" name="Velocity Interpolate Objects"/>
+ <menu_item_check label="Objets d&apos;interpolation de vitesse" name="Velocity Interpolate Objects"/>
<menu_item_check label="Interpolation ping des positions des objets" name="Ping Interpolate Object Positions"/>
<menu_item_call label="Abandonner un paquet" name="Drop a Packet"/>
</menu>
@@ -335,7 +336,7 @@
<menu_item_check label="Ignorer les paramètres du soleil de la sim" name="Sim Sun Override"/>
<menu_item_check label="Balise animée" name="Cheesy Beacon"/>
<menu_item_check label="Météo fixe" name="Fixed Weather"/>
- <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
+ <menu_item_call label="Vidage de cache d&apos;objet de la région" name="Dump Region Object Cache"/>
</menu>
<menu label="Interface" name="UI">
<menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 1389c49f5b..d8d79d8dde 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -980,7 +980,7 @@ Proposer à [NAME] de devenir votre ami(e) ?
</form>
</notification>
<notification name="RemoveFromFriends">
- Voulez-vous supprimer [NAME] de votre liste d&apos;amis ?
+ Voulez-vous supprimer &lt;nolink&gt;[NAME]&lt;/nolink&gt; de votre liste d&apos;amis ?
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -1909,6 +1909,12 @@ Déplacer les objets de l&apos;inventaire ?
Êtes-vous certain de vouloir quitter ?
<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ Etes-vous certain de vouloir restaurer vos boutons et barres d&apos;outils par défaut ?
+
+Vous ne pouvez pas annuler cette action.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="Confirmer avant de supprimer des articles" name="okcancelignore" notext="Annuler" yestext="OK"/>
@@ -2113,10 +2119,10 @@ Cette opération lancera votre navigateur Web.
Sujet : [SUBJECT], Message : [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] est en ligne
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; est en ligne
</notification>
<notification name="FriendOffline">
- [NAME] est hors ligne
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; est hors ligne
</notification>
<notification name="AddSelfFriend">
Même si vous êtes extrêmement sympathique, vous ne pouvez pas devenir ami avec vous-même.
@@ -2512,10 +2518,10 @@ Veuillez réessayer dans quelques minutes.
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME] a accepté votre amitié.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; a accepté votre amitié.
</notification>
<notification name="FriendshipDeclined">
- [NAME] a refusé votre amitié.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; a refusé votre amitié.
</notification>
<notification name="FriendshipAcceptedByMe">
Amitié acceptée.
@@ -2995,10 +3001,6 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou
<button name="cancel" text="Annuler"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- Vous devez quitter et redémarrer l&apos;application afin de changer de mode.
- <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
- </notification>
<notification label="" name="NoClassifieds">
Pour créer et modifier des petites annonces, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
@@ -3043,6 +3045,10 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou
La recherche est uniquement disponible en mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ?
<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ Cette action masquera tous les boutons et articles de menu. Pour les récupérer, cliquez de nouveau sur [SHORTCUT].
+ <usetemplate ignoretext="Confirmer avant de masquer l&apos;interface" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d&apos;exploitation.
diff --git a/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..de21996404
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Conversations"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Notifications"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml
index 219e5801f2..5676986228 100644
--- a/indra/newview/skins/default/xui/fr/panel_me.xml
+++ b/indra/newview/skins/default/xui/fr/panel_me.xml
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Mon profil" name="panel_me">
- <tab_container name="tabs">
- <panel label="MON PROFIL" name="panel_profile"/>
- <panel label="MES FAVORIS" name="panel_picks"/>
- </tab_container>
+ <panel label="MES FAVORIS" name="panel_picks"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_my_profile.xml b/indra/newview/skins/default/xui/fr/panel_my_profile.xml
deleted file mode 100644
index 5207c5a28e..0000000000
--- a/indra/newview/skins/default/xui/fr/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=en
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=en
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/account"/>
- <string name="no_partner_text" value="Aucun"/>
- <string name="no_group_text" value="Aucun"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Nom d&apos;utilisateur
- </text>
- <text name="name_descr_text">
- Nom d&apos;affichage
- </text>
- <button label="Profil" name="see_profile_btn" tool_tip="Afficher le profil de cet avatar."/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
index 45caf2323d..ecb1e9813a 100644
--- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
- <pull_button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
- <button name="home_btn" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
- <location_input label="Emplacement" name="location_combo"/>
- <search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher">
- <combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- Favoris
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Revenir à l’emplacement précédent"/>
+ <pull_button name="forward_btn" tool_tip="Avancer d’un emplacement"/>
+ <button name="home_btn" tool_tip="Me téléporter jusqu’à mon domicile"/>
+ <location_input label="Endroit" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
+ <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos endroits favoris dans Second Life.">
+ Barre des Favoris
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris">
+ Plus ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
new file mode 100644
index 0000000000..31cb3308e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Traduction du chat" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml
deleted file mode 100644
index 1b44bc4b73..0000000000
--- a/indra/newview/skins/default/xui/fr/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notes/Perso" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_panel">
- <text name="status_message" value="Mes notes perso :"/>
- <text name="status_message2" value="Autoriser cette personne à :"/>
- <check_box label="Afficher mon statut en ligne" name="status_check"/>
- <check_box label="Me situer sur la carte" name="map_check"/>
- <check_box label="Modifier, supprimer ou prendre mes objets" name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 1644eefbee..fa026d8106 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
<spinner label="Disparition progressive du popup Chat près de moi :" name="nearby_toasts_fadingtime"/>
<check_box name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Utiliser la traduction automatique lors des chats (fournie par Google)
+ Utiliser la traduction automatique lors des chats
</text>
<text name="translate_language_text">
Traduire le chat en :
@@ -51,7 +51,7 @@
<combo_box.item label="Русский (Russe)" name="Russian"/>
<combo_box.item label="Türkçe (Turc)" name="Turkish"/>
<combo_box.item label="Українська (Ukrainien)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (Chinois)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Chinois)" name="Chinese"/>
<combo_box.item label="日本語 (Japonais)" name="Japanese"/>
<combo_box.item label="한국어 (Coréen)" name="Korean"/>
</combo_box>
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 2786798173..66b84af3aa 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -11,10 +11,12 @@
<combo_box.item label="Español (Espagnol) - Bêta" name="Spanish"/>
<combo_box.item label="Français - Bêta" name="French"/>
<combo_box.item label="Italiano (Italien) - Bêta" name="Italian"/>
- <combo_box.item label="Nederlands (Néerlandais) - Bêta" name="Dutch"/>
<combo_box.item label="Polski (Polonais) - Bêta" name="Polish"/>
<combo_box.item label="Português (Portugais) - Bêta" name="Portugese"/>
+ <combo_box.item label="Русский (Russe) - Bêta" name="Russian"/>
+ <combo_box.item label="Türkçe (Turc) - Bêta" name="Turkish"/>
<combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (Chinois traditionnel) - Bêta" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(redémarrage requis)
@@ -49,7 +51,6 @@
<check_box label="Titres de groupe" name="show_all_title_checkbox1" tool_tip="Afficher les titres de groupe, comme Officier ou Membre."/>
<check_box label="Mettre mes amis en surbrillance" name="show_friends" tool_tip="Mettre en surbrillance l&apos;affichage des noms de vos amis."/>
<check_box label="Voir les noms d&apos;affichage" name="display_names_check" tool_tip="Cocher pour utiliser les noms d&apos;affichage dans les chats, les IM, l&apos;affichage des noms, etc."/>
- <check_box label="Activer les astuces de l&apos;interface" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
Appuyer sur les touches lettre :
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
index 5f1b206a39..94d7322b22 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</text>
<check_box label="Construire/Modifier" name="edit_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra lorsque vous entrez en mode de modification et le quittez."/>
<check_box label="Apparence" name="appearance_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra en mode de modification."/>
- <check_box initial_value="true" label="Panneau latéral" name="appearance_sidebar_positioning" tool_tip="Utiliser le positionnement automatique de la caméra pour le panneau latéral."/>
+ <text name="keyboard_lbl">
+ Clavier :
+ </text>
+ <check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ Souris :
+ </text>
<check_box label="Afficher en vue subjective" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
Sensibilité de la souris en vue subjective :
</text>
<check_box label="Inverser" name="invert_mouse"/>
- <check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>
- <check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/>
- <check_box label="Double-cliquer pour :" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="Téléportation" name="radio_teleport"/>
- <radio_item label="Pilotage auto" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ Clic simple sur le terrain :
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Aucune action" name="0"/>
+ <combo_box.item label="Déplacement vers le clic" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Double-clic sur le terrain :
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Aucune action" name="0"/>
+ <combo_box.item label="Déplacement vers le double clic" name="1"/>
+ <combo_box.item label="Téléportation vers le double clic" name="2"/>
+ </combo_box>
<button label="Autres accessoires" name="joystick_setup_button"/>
</panel>
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 3123a4c6fe..cf1a374da6 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
@@ -20,7 +20,7 @@
<check_box label="Inclure la date et l&apos;heure pour chaque ligne du journal de chat" name="show_timestamps_check_im"/>
<check_box label="Inclure la date dans le nom du fichier journal" name="logfile_name_datestamp"/>
<text name="log_path_desc">
- Emplacement :
+ Emplacement journaux :
</text>
<line_editor left="308" name="log_path_string" right="-20"/>
<button label="Parcourir" label_selected="Parcourir" name="log_path_button" width="150"/>
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 deaec2e14f..37eb6bbeb0 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -17,9 +17,9 @@
<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="true"/>
- <check_box label="Lecture du 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="true"/>
- <check_box label="Lire les sons des gestes" name="gesture_audio_play_btn" tool_tip="Cochez cette case pour entendre les sons associés aux gestes." value="true"/>
+ <check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cocher pour autoriser la lecture automatique du média." value="true"/>
+ <check_box label="Lire le média attaché aux autres avatars" name="media_show_on_others_btn" tool_tip="Décocher pour masquer le média attaché aux autres avatars près de vous." value="true"/>
+ <check_box label="Lire les sons des gestes" name="gesture_audio_play_btn" tool_tip="Cocher cette case pour entendre les sons associés aux gestes." value="true"/>
<text name="voice_chat_settings">
Paramètres du chat vocal
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
index f16fcebd02..ad744b7760 100644
--- a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
@@ -13,10 +13,10 @@
</layout_stack>
<layout_stack name="media_controls">
<layout_panel name="back">
- <button name="back_btn" tool_tip="Naviguer en arrière"/>
+ <button name="back_btn" tool_tip="Précédente"/>
</layout_panel>
<layout_panel name="fwd">
- <button name="fwd_btn" tool_tip="Naviguer vers l&apos;avant"/>
+ <button name="fwd_btn" tool_tip="Suivante"/>
</layout_panel>
<layout_panel name="home">
<button name="home_btn" tool_tip="Page d&apos;accueil"/>
@@ -34,7 +34,7 @@
<button name="play_btn" tool_tip="Lire le média"/>
</layout_panel>
<layout_panel name="pause">
- <button name="pause_btn" tool_tip="Pauser le média"/>
+ <button name="pause_btn" tool_tip="Mettre le média sur pause"/>
</layout_panel>
<layout_panel name="media_address">
<line_editor name="media_address_url" tool_tip="URL du média"/>
@@ -48,7 +48,7 @@
</layout_stack>
</layout_panel>
<layout_panel name="media_play_position">
- <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progrès de la lecture du film"/>
+ <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progression de la lecture du film"/>
</layout_panel>
<layout_panel name="skip_back">
<button name="skip_back_btn" tool_tip="Reculer"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
deleted file mode 100644
index 9aa6fe97a1..0000000000
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=fr-FR
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=fr
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=fr-FR"/>
- <string name="no_partner_text" value="Aucun"/>
- <string name="no_group_text" value="Aucun"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="Vie réelle :"/>
- </panel>
- <text name="title_member_text" value="Résident depuis :"/>
- <text name="title_acc_status_text" value="Statut du compte :"/>
- <text_editor name="acc_status_text">
- Résident. Aucune info de paiement enregistrée.
- Linden.
- </text_editor>
- <text name="title_partner_text" value="Partenaire :"/>
- <panel name="partner_data_panel">
- <text initial_value="(récupération en cours)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Groupes :"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Payer le résident ou partager l&apos;inventaire avec lui"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile_view.xml b/indra/newview/skins/default/xui/fr/panel_profile_view.xml
deleted file mode 100644
index 76ba44e899..0000000000
--- a/indra/newview/skins/default/xui/fr/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- En ligne
- </string>
- <string name="status_offline">
- Hors ligne
- </string>
- <text name="display_name_label" value="Nom d&apos;affichage :"/>
- <text name="solo_username_label" value="Nom d&apos;utilisateur :"/>
- <text name="status" value="En ligne"/>
- <text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
- <button name="copy_to_clipboard" tool_tip="Copier dans le presse-papiers"/>
- <text name="user_label" value="Nom d&apos;utilisateur :"/>
- <tab_container name="tabs">
- <panel label="PROFIL" name="panel_profile"/>
- <panel label="FAVORIS" name="panel_picks"/>
- <panel label="NOTES/PERSO" name="panel_notes"/>
- </tab_container>
-</panel>
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 cb4a74e142..733c3f9a22 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Débugger" name="Debug">
+<panel label="Débogage" name="Debug">
<text name="region_text_lbl">
Région :
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
index 2dd5c06e4d..ac61eb7e52 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -17,15 +17,12 @@
</panel.string>
<panel name="balance_bg">
<text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="20 L$"/>
- <button label="ACHETER L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$"/>
+ <button label="Acheter L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$."/>
+ <button label="Achats" name="goShop" tool_tip="Ouvrir la Place du marché Second Life."/>
</panel>
- <combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
- <combo_box.item label="Mode basique" name="Basic"/>
- <combo_box.item label="Mode avancé" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="Heure actuelle (Pacifique)">
00h00 PST
</text>
- <button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)"/>
- <button name="volume_btn" tool_tip="Contrôle du volume global"/>
+ <button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)."/>
+ <button name="volume_btn" tool_tip="Régler le volume global."/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 3a0553461a..f9f3366f63 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1276,6 +1276,9 @@ Veuillez réessayer de vous connecter dans une minute.
<string name="Marketplace Error Internal Import">
Erreur : un problème est survenu concernant cet article. Veuillez réessayer ultérieurement.
</string>
+ <string name="Open landmarks">
+ Ouvrir les repères
+ </string>
<string name="no_transfer" value=" (pas de transfert)"/>
<string name="no_modify" value=" (pas de modification)"/>
<string name="no_copy" value=" (pas de copie)"/>
@@ -4254,7 +4257,7 @@ de l&apos;infraction signalée
<string name="Female - Wow">
Femme - Ouah !
</string>
- <string name="/bow1">
+ <string name="/bow">
/s&apos;incliner
</string>
<string name="/clap">
@@ -4767,4 +4770,172 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
<string name="ParticleHiding">
Masquage des particules
</string>
+ <string name="Command_AboutLand_Label">
+ À propos du terrain
+ </string>
+ <string name="Command_Appearance_Label">
+ Apparence
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construire
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Compass_Label">
+ Boussole
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinations
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestes
+ </string>
+ <string name="Command_HowTo_Label">
+ Aide rapide
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventaire
+ </string>
+ <string name="Command_Map_Label">
+ Carte
+ </string>
+ <string name="Command_Marketplace_Label">
+ Place du marché
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini-carte
+ </string>
+ <string name="Command_Move_Label">
+ Bouger
+ </string>
+ <string name="Command_People_Label">
+ Personnes
+ </string>
+ <string name="Command_Picks_Label">
+ Favoris
+ </string>
+ <string name="Command_Places_Label">
+ Lieux
+ </string>
+ <string name="Command_Preferences_Label">
+ Préférences
+ </string>
+ <string name="Command_Profile_Label">
+ Profil
+ </string>
+ <string name="Command_Search_Label">
+ Recherche
+ </string>
+ <string name="Command_Snapshot_Label">
+ Photo
+ </string>
+ <string name="Command_Speak_Label">
+ Parler
+ </string>
+ <string name="Command_View_Label">
+ Affichage
+ </string>
+ <string name="Command_Voice_Label">
+ Chat près de vous
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Information sur le terrain que vous visitez
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Modifier votre avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Choisir un avatar complet
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construction d&apos;objets et remodelage du terrain
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Parler aux personnes près de vous par chat écrit
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Boussole
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinations intéressantes
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestes de votre avatar
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Comment effectuer les opérations courantes
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Afficher et utiliser vos possessions
+ </string>
+ <string name="Command_Map_Tooltip">
+ Carte du monde
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Faire du shopping
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Afficher les personnes près de vous
+ </string>
+ <string name="Command_Move_Tooltip">
+ Faire bouger votre avatar
+ </string>
+ <string name="Command_People_Tooltip">
+ Amis, groupes et personnes près de vous
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lieux à afficher comme favoris dans votre profil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lieux enregistrés
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Préférences
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Modifier ou afficher votre profil
+ </string>
+ <string name="Command_Search_Tooltip">
+ Trouver des lieux, personnes, événements
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Prendre une photo
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Parler aux personnes près de vous en utilisant votre micro
+ </string>
+ <string name="Command_View_Tooltip">
+ Changer l&apos;angle de la caméra
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Personnes près de vous avec le chat vocal
+ </string>
+ <string name="Retain%">
+ Garder%
+ </string>
+ <string name="Detail">
+ Détail
+ </string>
+ <string name="Better Detail">
+ Meilleur détail
+ </string>
+ <string name="Surface">
+ Surface
+ </string>
+ <string name="Solid">
+ Solide
+ </string>
+ <string name="Wrap">
+ Wrap
+ </string>
+ <string name="Preview">
+ Aperçu
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
index 7c291c0984..401b272c81 100644
--- a/indra/newview/skins/default/xui/fr/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml
@@ -20,6 +20,10 @@ Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis r
Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
Veuillez réessayer dans un moment.
</message>
+ <message name="NoHelpIslandTP">
+ Vous ne pouvez pas retourner sur Welcome Island.
+Pour répéter le didacticiel, veuillez aller sur Welcome Island Public.
+ </message>
<message name="noaccess_tport">
Désolé, vous n&apos;avez pas accès à cette destination.
</message>
diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml
index db4dbe02e2..68d073a766 100644
--- a/indra/newview/skins/default/xui/it/floater_about.xml
+++ b/indra/newview/skins/default/xui/it/floater_about.xml
@@ -8,9 +8,9 @@
Generato con [COMPILER] versione [COMPILER_VERSION]
</floater.string>
<floater.string name="AboutPosition">
- Tu sei [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ Tu sei [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] che si trova a &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU: [CPU]
@@ -37,6 +37,9 @@ Versione Server voice: [VOICE_VERSION]
<floater.string name="AboutTraffic">
Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) Informazioni
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Errore nel recupero URL note rilascio versione
+ </floater.string>
<tab_container name="about_tab">
<panel label="Informazioni" name="support_panel">
<button label="Copia negli appunti" name="copy_btn"/>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index cf0f8f2f6f..b6bfb4aadf 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -218,19 +218,19 @@ o suddivisa.
Fattore bonus degli oggetti della regione: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Uso delle primitive:
+ Capacità regione:
</text>
<text name="objects_available">
[COUNT] dei [MAX] ([AVAILABLE] dsponibili)
</text>
<text name="Primitives parcel supports:">
- Oggetti che il terreno supporta:
+ Capacità lotto di terreno:
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- Oggetti sul terreno:
+ Impatto lotto di terreno:
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/it/floater_avatar.xml b/indra/newview/skins/default/xui/it/floater_avatar.xml
new file mode 100644
index 0000000000..1587c347a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="SCELTA AVATAR"/>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
index 635b56d37a..d985ad2b3c 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
@@ -46,7 +46,7 @@
[AMT]L$
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
</text>
<text name="exchange_rate_note">
Riscrivi l&apos;importo per vedere l&apos;ultimo tasso al cambio.
diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml
index 3fdf4f48a2..7e6ca4307e 100644
--- a/indra/newview/skins/default/xui/it/floater_camera.xml
+++ b/indra/newview/skins/default/xui/it/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="VISTA">
<floater.string name="rotate_tooltip">
Ruota la telecamera Intorno all&apos;Inquadratura
</floater.string>
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Muovi la telecamera su e giù e a sinistra e destra
</floater.string>
- <floater.string name="camera_modes_title">
- Modalità della fotocamera
- </floater.string>
- <floater.string name="pan_mode_title">
- Ruota visuale - Ingrandisci - Panoramica
- </floater.string>
- <floater.string name="presets_mode_title">
- Visuali predefinite
- </floater.string>
<floater.string name="free_mode_title">
Vedi oggetto
</floater.string>
diff --git a/indra/newview/skins/default/xui/it/floater_chat_bar.xml b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
new file mode 100644
index 0000000000..6c5c8fbea0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="CHAT NEI DINTORNI">
+ <panel>
+ <line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per parlare, Ctrl+Invio per gridare"/>
+ <button name="show_nearby_chat" tool_tip="Mostra/Nasconde il registro della chat nei dintorni"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_destinations.xml b/indra/newview/skins/default/xui/it/floater_destinations.xml
new file mode 100644
index 0000000000..242403e431
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINAZIONI"/>
diff --git a/indra/newview/skins/default/xui/it/floater_fast_timers.xml b/indra/newview/skins/default/xui/it/floater_fast_timers.xml
new file mode 100644
index 0000000000..52ab6b0c3d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Pausa
+ </string>
+ <string name="run">
+ Correre
+ </string>
+ <button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_how_to.xml b/indra/newview/skins/default/xui/it/floater_how_to.xml
new file mode 100644
index 0000000000..8f0e210571
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ISTRUZIONI"/>
diff --git a/indra/newview/skins/default/xui/it/floater_map.xml b/indra/newview/skins/default/xui/it/floater_map.xml
index bf19ba6674..5e4e4abca4 100644
--- a/indra/newview/skins/default/xui/it/floater_map.xml
+++ b/indra/newview/skins/default/xui/it/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINI MAPPA">
<floater.string name="ToolTipMsg">
[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)
</floater.string>
@@ -7,7 +7,7 @@
[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)
</floater.string>
<floater.string name="mini_map_caption">
- MINI MAPPA
+ Mini mappa
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml
index 931fe7d382..03102f5f81 100644
--- a/indra/newview/skins/default/xui/it/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Carica modello">
- <string name="status_idle">
- Pausa
- </string>
+<floater name="Model Preview" title="CARICAMENTO MODELLO">
+ <string name="status_idle"/>
<string name="status_parse_error">
- Problema nell&apos;elaborazione DAE - vedi il registro per informazioni al riguardo.
+ Errore: Errore elaborazione Dae - vedere il registro per informazioni dettagliate.
</string>
<string name="status_reading_file">
Caricamento in corso...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
Livello di dettaglio minimo mancante.
</string>
+ <string name="mesh_status_invalid_material_list">
+ I materiali per il livello di dettaglio non sono un sottoinsieme del modello di riferimento.
+ </string>
<string name="layer_all">
Tutto
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
Da definire
</string>
- <text name="name_label">
- Nome:
- </text>
- <text name="lod_label">
- Anteprima:
- </text>
- <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering">
- <combo_item name="high">
- Livello di dettaglio: Alto
- </combo_item>
- <combo_item name="medium">
- Livello di dettaglio: Medio
- </combo_item>
- <combo_item name="low">
- Livello di dettaglio: Basso
- </combo_item>
- <combo_item name="lowest">
- Livello di dettaglio: Bassissimo
- </combo_item>
- </combo_box>
- <text name="warning_title">
- ATTENZIONE:
- </text>
- <text name="warning_message">
- Non sarà possibile completare il caricamento finale di questo modello sui server di Second Life. [[VURL] Scopri come] ricevere l&apos;autorizzazione per il caricamento dei modelli con reticolo.
- </text>
- <text name="weights_text">
- Download:
-Fisica:
-Server:
-
-Prim equivalenti:
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="Livello di dettaglio" name="lod_panel">
- <text name="lod_table_header">
- Seleziona livello di dettaglio:
- </text>
- <text name="high_label" value="Alto"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="Medio"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="Basso"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="Bassissimo"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- Livello di dettaglio: [DETAIL]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="Carica da file" name="lod_from_file"/>
- <radio_item label="Genera automaticamente" name="lod_auto_generate"/>
- <radio_item label="Nessuno" name="lod_none"/>
- </radio_group>
- <button label="Sfoglia..." name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- Limite triangoli
- </combo_item>
- <combo_item name="error_threshold">
- Limite errori
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- Operatore costruzione:
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Nome modello:
</text>
- <text name="queue_mode_text">
- Modalità di coda:
+ <text name="model_category_label">
+ Questo modello rappresenta...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- Collassa bordo
- </combo_item>
- <combo_item name="half_edge_collapse">
- Collassa mezzo bordo
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- Ingordo
- </combo_item>
- <combo_item name="lazy">
- Pigro
- </combo_item>
- <combo_item name="independent">
- Indipendente
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="Seleziona uno..." name="Choose one"/>
+ <combo_item label="Forma avatar" name="Avatar shape"/>
+ <combo_item label="Elemento collegato all&apos;avatar" name="Avatar attachment"/>
+ <combo_item label="Oggetto mobile (veicolo, animale)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Componente edificio" name="Building Component"/>
+ <combo_item label="Grande, immobile, ecc." name="Large, non moving etc"/>
+ <combo_item label="Piccolo, immobile, ecc." name="Smaller, non-moving etc"/>
+ <combo_item label="Nessuno di questi" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- Modalità bordo:
- </text>
- <text name="share_tolderance_text">
- Tolleranza condivisione:
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- Sblocca
- </combo_item>
- <combo_item name="border_lock">
- Blocca
- </combo_item>
- </combo_box>
- <text name="crease_label">
- Angolo piega:
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="Fisica" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="File:" name="physics_load_from_file"/>
- <radio_item label="Usa livello di dettaglio:" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica">
- <combo_item name="physics_lowest">
- Bassissimo
- </combo_item>
- <combo_item name="physics_low">
- Basso
- </combo_item>
- <combo_item name="physics_medium">
- Medio
- </combo_item>
- <combo_item name="physics_high">
- Alto
- </combo_item>
- </combo_box>
- <button label="Sfoglia..." name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="Livello di dettaglio" name="lod_panel" title="Livello di dettaglio">
+ <text initial_value="Fonte" name="source" value="Fonte"/>
+ <text initial_value="Triangoli" name="triangles" value="Triangoli"/>
+ <text initial_value="Vertici" name="vertices" value="Vertici"/>
+ <text initial_value="Alto" name="high_label" value="Alto"/>
+ <button label="Sfoglia..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Medio" name="medium_label" value="Medio"/>
+ <button label="Sfoglia..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Basso" name="low_label" value="Basso"/>
+ <button label="Sfoglia..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Bassissimo" name="lowest_label" value="Bassissimo"/>
+ <button label="Sfoglia..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Genera normali" name="gen_normals"/>
+ <text initial_value="Angolo piega:" name="crease_label" value="Angolo piega:"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="Liscia:" name="Smooth"/>
- <check_box label="Chiudi fori (lento)" name="Close Holes (Slow)"/>
- <button label="Analizza" name="Decompose"/>
- <button label="Annulla" name="decompose_cancel"/>
+ <panel label="Fisica" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Passaggio 1: Livello di dettaglio
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica">
+ <combo_item name="choose_one">
+ Seleziona uno...
+ </combo_item>
+ <combo_item name="physics_high">
+ Alto
+ </combo_item>
+ <combo_item name="physics_medium">
+ Medio
+ </combo_item>
+ <combo_item name="physics_low">
+ Basso
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Bassissimo
+ </combo_item>
+ <combo_item name="load_from_file">
+ Da file
+ </combo_item>
+ </combo_box>
+ <button label="Sfoglia..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Passaggio 2: Analizza
+ </text>
+ <text name="analysis_method_label">
+ Metodo:
+ </text>
+ <text name="quality_label">
+ Qualità:
+ </text>
+ <text name="smooth_method_label">
+ Liscia:
+ </text>
+ <check_box label="Chiudi fori" name="Close Holes (Slow)"/>
+ <button label="Analizza" name="Decompose"/>
+ <button label="Annulla" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Passaggio 3: Semplifica
+ </text>
+ <text name="simp_method_header">
+ Metodo:
+ </text>
+ <text name="pass_method_header">
+ Passaggi:
+ </text>
+ <text name="Detail Scale label">
+ Scala dettagli:
+ </text>
+ <text name="Retain%_label">
+ Mantieni:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Semplifica" name="Simplify"/>
+ <button label="Annulla" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Risultati:
+ </text>
+ <text name="physics_triangles">
+ Triangoli: [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Vertici: [POINTS],
+ </text>
+ <text name="physics_hulls">
+ Scafi: [HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="Passaggi:" name="Combine Quality"/>
- <slider label="Scala dettagli:" name="Detail Scale"/>
- <slider label="Mantieni:" name="Retain%"/>
- <button label="Semplifica" name="Simplify"/>
- <button label="Annulla" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="Ampiezza anteprima:" name="physics_explode"/>
- <text name="physics_triangles">
- Triangoli: [TRIANGLES]
+ <panel label="Carica opzioni" name="modifiers_panel">
+ <text name="scale_label">
+ Scala (1=nessuna scala):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Dimensioni:
</text>
- <text name="physics_points">
- Vertici: [POINTS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- Inviluppi: [HULLS]
+ <check_box label="Includi texture" name="upload_textures"/>
+ <text name="include_label">
+ Solo per modelli avatar:
</text>
+ <check_box label="Includi peso pelle" name="upload_skin"/>
+ <check_box label="Includi posizioni giunti" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Spostamento Z (sposta l&apos;avatar in alto o in basso):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="Modificatori" name="modifiers_panel">
- <spinner name="import_scale" value="1.0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Calcolare pesi e tariffa" name="calculate_btn" tool_tip="Calcolare pesi e tariffa"/>
+ <button label="Annulla" name="cancel_btn"/>
+ <button label="Carica" name="ok_btn" tool_tip="Carica al simulatore"/>
+ <button label="Annulla impostazioni e ripristina modulo" name="reset_btn"/>
+ <text name="upload_fee">
+ Costo caricamento: L$ [FEE]
+ </text>
+ <text name="prim_weight">
+ Impatto sul terreno: [EQ]
+ </text>
+ <text name="download_weight">
+ Download: [ST]
+ </text>
+ <text name="physics_weight">
+ Fisica: [PH]
+ </text>
+ <text name="server_weight">
+ Server: [SIM]
+ </text>
+ <text name="warning_title">
+ NOTA:
+ </text>
+ <text name="warning_message">
+ Non hai l&apos;autorizzazione per caricare i modelli di reticolo. [[VURL] Scopri come] ottenere la certificazione.
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="Texture" name="upload_textures"/>
- <check_box label="Peso pelle" name="upload_skin"/>
- <check_box label="Posizioni giunti" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- Costo caricamento: L$ [FEE]
+ </panel>
+ <text name="lod_label">
+ Anteprima:
</text>
- <button label="Imposta sui valori predefiniti" name="reset_btn" tool_tip="Imposta sui valori predefiniti"/>
- <button label="Calcolare pesi e tariffa" name="calculate_btn" tool_tip="Calcolare pesi e tariffa"/>
- <button label="Carica sul server" name="ok_btn" tool_tip="Carica al simulatore"/>
- <button label="Annulla" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering">
+ <combo_item name="high">
+ Alto
+ </combo_item>
+ <combo_item name="medium">
+ Medio
+ </combo_item>
+ <combo_item name="low">
+ Basso
+ </combo_item>
+ <combo_item name="lowest">
+ Bassissimo
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Visualizzazione...
+ </text>
+ <check_box label="Bordi" name="show_edges"/>
+ <check_box label="Fisica" name="show_physics"/>
+ <check_box label="Texture" name="show_textures"/>
+ <check_box label="Pesi pelle" name="show_skin_weight"/>
+ <check_box label="Giunti" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Anteprima spaziatura:
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_model_wizard.xml b/indra/newview/skins/default/xui/it/floater_model_wizard.xml
index dbf41e2daf..e6d0a7c4bc 100644
--- a/indra/newview/skins/default/xui/it/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/it/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. Ottimizza" name="optimize_btn"/>
<button label="1. Seleziona file" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Seleziona file modello
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
Utenti avanzati: Gli utenti che hanno dimestichezza con gli strumenti di creazione 3D possono usare le opzioni di caricamento avanzate.
</text>
<button label="Passa a modalità avanzata" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
Scegli il file del modello da caricare
</text>
<button label="Sfoglia..." label_selected="Sfoglia..." name="browse"/>
- <text name="support_collada_text">
- Second Life supporta file COLLADA (.dae)
- </text>
- <text name="dimensions_label">
- Dimensioni (metri):
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Ottimizza modello
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
Abbiamo ottimizzato il modello per migliorare le prestazioni. Se necessario, può essere regolato ulteriormente.
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- Generazione livello di dettaglio
- </text>
+ <panel name="content">
<text name="high_detail_text">
Genera livello di dettaglio: Alto
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- Prestazioni
- </text>
- <text name="optimize_faster_rendering_text">
- Rendering più veloce
-Meno dettagli
-Peso prim più basso
- </text>
- <text name="optimize_accuracy_text">
- Fedeltà
- </text>
- <text name="optimize_slower_rendering_text">
- Rendering più lento
-Più dettagli
-Peso prim più elevato
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="Ricalcola geometria" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
Anteprima geometria
</text>
<combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
Molti dettagli
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
Dettagli medi
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
Meno dettagli
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
Dettaglio minimo
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Modifica fisica
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
Verrà creata una forma per lo scafo esterno del modello. Regola il livello di dettaglio della forma in base al fine desiderato del modello.
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- Prestazioni
- </text>
- <text name="physics_faster_rendering_text">
- Rendering più veloce
-Meno dettagli
-Peso prim più basso
- </text>
- <text name="physics_accuracy_text">
- Fedeltà
- </text>
- <text name="physics_slower_dendering_text">
- Rendering più lento
-Più dettagli
-Peso prim più elevato
- </text>
- <text name="physics_example_1">
- Esempi:
-Oggetti in movimento
-Oggetti in volo
-Veicoli
- </text>
- <text name="physics_example_2">
- Esempi:
-Piccoli oggetti statici
-Oggetti meno dettagliati
-Mobili semplici
- </text>
- <text name="physics_example_3">
- Esempi:
-Oggetti statici
-Oggetti dettagliati
-Edifici
- </text>
+ <panel name="content">
<button label="Ricalcola fisica" name="recalculate_physics_btn"/>
<button label="Ricalcolo in corso..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
Anteprima fisica
</text>
<combo_box name="preview_lod_combo2" tool_tip="Livello di dettaglio per anteprima rendering">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
Molti dettagli
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
Dettagli medi
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
Meno dettagli
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
Dettaglio minimo
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Rivedi
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
Impatto sul lotto o sulla regione: [EQUIV] prim equivalenti
</text>
@@ -193,8 +125,8 @@ Edifici
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Caricamento completato
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml
index cdafdb0089..6e820a335c 100644
--- a/indra/newview/skins/default/xui/it/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/it/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="SPOSTA">
<string name="walk_forward_tooltip">
Cammina in avanti (premi freccia su o W)
</string>
@@ -58,14 +58,14 @@
Vola
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra (premi freccia sinistra o A)"/>
<joystick_slide name="move left btn" tool_tip="Cammina a sinistra (premi Maiusc + freccia sinistra o A)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra (premi freccia destra o D)"/>
<joystick_slide name="move right btn" tool_tip="Cammina a destra (premi Maiusc + freccia destra o D)"/>
<joystick_turn name="forward btn" tool_tip="Cammina in avanti (premi freccia su o W)"/>
<joystick_turn name="backward btn" tool_tip="Cammina indietro (premi freccia giù o S)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="Modalità cammina"/>
diff --git a/indra/newview/skins/default/xui/it/floater_my_appearance.xml b/indra/newview/skins/default/xui/it/floater_my_appearance.xml
new file mode 100644
index 0000000000..39ddd6186a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="ASPETTO">
+ <panel label="Modifica aspetto" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_my_inventory.xml b/indra/newview/skins/default/xui/it/floater_my_inventory.xml
new file mode 100644
index 0000000000..0efd9f1c6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTARIO"/>
diff --git a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
index 4c41df8a62..9e81899880 100644
--- a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="CHAT NEI DINTORNI">
- <check_box label="Traduci chat (tecnologia Google)" name="translate_chat_checkbox"/>
+ <check_box label="Traduci chat" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_object_weights.xml b/indra/newview/skins/default/xui/it/floater_object_weights.xml
new file mode 100644
index 0000000000..fdcb732dee
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANZATE">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="SELEZIONATI"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Oggetti"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Prim"/>
+ <text name="weights_of_selected_text" value="PESO ELEMENTI SELEZIONATI"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Scarica"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Fisica"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Server"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Visualizzazione"/>
+ <text name="land_impacts_text" value="IMPATTO TERRENO"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Selezionati"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Rezzati sul terreno"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Capacità restante"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Capacità totale"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights Di cosa si tratta?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml
new file mode 100644
index 0000000000..55bb5adb1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="SALVA ABITO"/>
diff --git a/indra/newview/skins/default/xui/it/floater_people.xml b/indra/newview/skins/default/xui/it/floater_people.xml
new file mode 100644
index 0000000000..1acc3cbf19
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PERSONE">
+ <panel_container name="main_panel">
+ <panel label="Profilo del gruppo" name="panel_group_info_sidetray"/>
+ <panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_picks.xml b/indra/newview/skins/default/xui/it/floater_picks.xml
new file mode 100644
index 0000000000..dfc539da66
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Preferiti"/>
diff --git a/indra/newview/skins/default/xui/it/floater_places.xml b/indra/newview/skins/default/xui/it/floater_places.xml
new file mode 100644
index 0000000000..cd46cf8b59
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUOGHI">
+ <panel label="Luoghi" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml
index 5bff19e8d7..f1c5cc4caf 100644
--- a/indra/newview/skins/default/xui/it/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="ANTEPRIMA FOTOGRAFIA" width="247">
+<floater name="Snapshot" title="ANTEPRIMA FOTOGRAFIA">
<floater.string name="unknown">
sconosciuto
</floater.string>
diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml
index df4b8f4878..9799b48d89 100644
--- a/indra/newview/skins/default/xui/it/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/it/floater_sound_devices.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivi sonori">
+<floater name="floater_sound_devices" title="DISPOSITIVI AUDIO">
<text name="voice_label">
Chat vocale
</text>
diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml
index aed2a03a21..ad6ef6b54b 100644
--- a/indra/newview/skins/default/xui/it/floater_stats.xml
+++ b/indra/newview/skins/default/xui/it/floater_stats.xml
@@ -10,8 +10,8 @@
</stat_view>
<stat_view label="Avanzata" name="advanced">
<stat_view label="Render" name="render">
- <stat_bar label="KTris disegnate" name="ktrisframe"/>
- <stat_bar label="KTris disegnate" name="ktrissec"/>
+ <stat_bar label="KTris disegnato per fotogramma" name="ktrisframe"/>
+ <stat_bar label="KTris disegnato per secondo" name="ktrissec"/>
<stat_bar label="Totale oggetti" name="objs"/>
<stat_bar label="Nuovi oggetti" name="newobjs"/>
</stat_view>
@@ -32,7 +32,7 @@
<stat_bar label="Layer" name="layerskbitstat"/>
<stat_bar label="Effettivi in ingresso" name="actualinkbitstat"/>
<stat_bar label="Effettivi in uscita" name="actualoutkbitstat"/>
- <stat_bar label="Operazioni pendenti VFS" name="vfspendingoperations"/>
+ <stat_bar label="Operazioni VFS in sospeso" name="vfspendingoperations"/>
</stat_view>
</stat_view>
<stat_view label="Simulatore" name="sim">
@@ -43,18 +43,6 @@
<stat_bar label="Oggetti pinzati" name="physicspinnedtasks"/>
<stat_bar label="Oggetti a basso LOD" name="physicslodtasks"/>
<stat_bar label="Memoria allocata" name="physicsmemoryallocated"/>
- <stat_bar label="Aggiornamenti agenti al sec" name="simagentups"/>
- <stat_bar label="Avatar principali" name="simmainagents"/>
- <stat_bar label="Avatar secondari" name="simchildagents"/>
- <stat_bar label="Oggetti" name="simobjects"/>
- <stat_bar label="Oggetti attivi" name="simactiveobjects"/>
- <stat_bar label="Script attivi" name="simactivescripts"/>
- <stat_bar label="Eventi di script" name="simscripteps"/>
- <stat_bar label="Pacchetti in ingresso" name="siminpps"/>
- <stat_bar label="Pacchetti in uscita" name="simoutpps"/>
- <stat_bar label="Download in attesa" name="simpendingdownloads"/>
- <stat_bar label="Caricamenti in attesa" name="simpendinguploads"/>
- <stat_bar label="Numero totale byte non confermati (Unacked)" name="simtotalunackedbytes"/>
</stat_view>
<stat_view label="Tempo (ms)" name="simperf">
<stat_bar label="Tempo totale Frame" name="simframemsec"/>
@@ -64,6 +52,14 @@
<stat_bar label="Tempo avatar" name="simagentmsec"/>
<stat_bar label="Tempo immagini" name="simimagesmsec"/>
<stat_bar label="Tempo script" name="simscriptmsec"/>
+ <stat_bar label="Tempo libero" name="simsparemsec"/>
+ <stat_view label="Dettagli tempo (ms)" name="timedetails">
+ <stat_bar label="Passaggio fisica" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Aggiorna forme fisica" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Altro fisica" name="simsimphysicsothermsec"/>
+ <stat_bar label="Tempo pausa" name="simsleepmsec"/>
+ <stat_bar label="IO pompa" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index d3b1503742..0d981e2424 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -25,10 +25,10 @@
Clicca e trascina per selezionare il terreno
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] oggetti ( [PRIM_COUNT] prim [PE_STRING] ) selezionati
+ [OBJ_COUNT] oggetti selezionati, impatto terreno [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , [SEL_WEIGHT] prim equivalenti
+ <floater.string name="status_remaining_capacity">
+ Capacità restante [LAND_CAPACITY].
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Ingrandisci"/>
<button label="" label_selected="" name="button move" tool_tip="Sposta"/>
@@ -106,8 +106,8 @@
<text name="selection_empty">
Nessuna selezione.
</text>
- <text name="selection_weight">
- Peso fisica [PHYS_WEIGHT], costo rendering [DISP_WEIGHT].
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Maggiori informazioni]
</text>
<tab_container name="Object Info Tabs">
<panel label="Generale" name="General">
@@ -326,7 +326,6 @@
Tipo di congiunzione
</text>
<combo_box name="sculpt type control">
- <combo_box.item label="(nessuna)" name="None"/>
<combo_box.item label="Sferica" name="Sphere"/>
<combo_box.item label="Toroidale" name="Torus"/>
<combo_box.item label="Piana" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/it/floater_toybox.xml b/indra/newview/skins/default/xui/it/floater_toybox.xml
new file mode 100644
index 0000000000..c8d5f1ed7c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PERSONALIZZA BARRE STRUMENTI">
+ <text name="toybox label 1">
+ Aggiungere o rimuovere pulsanti trascinandoli dentro o fuori dalle barre strumenti.
+ </text>
+ <text name="toybox label 2">
+ I pulsanti verranno visualizzati come mostrato o solo come icone, a seconda delle impostazioni della singola barra degli strumenti.
+ </text>
+ <button label="Ripristina predefiniti" label_selected="Ripristina predefiniti" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
index 0f0467757d..d0ac815b8b 100644
--- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Regolazione voce">
+<floater name="floater_voice_controls" title="CONTROLLI VOCE">
<string name="title_nearby">
- VOCE NEI DINTORNI
+ Voce vicina
</string>
<string name="title_group">
Chiamata di gruppo con [GROUP]
diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
index 2c2c6c4bc5..48f6691fd8 100644
--- a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Mostra navigazione e barra dei Preferiti" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index fe8bf703aa..834db974da 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="Io" name="File">
- <menu_item_call label="Preferenze" name="Preferences..."/>
+ <menu_item_call label="Preferenze..." name="Preferences..."/>
<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
</menu>
<menu label="Aiuto" name="Help">
diff --git a/indra/newview/skins/default/xui/it/menu_toolbars.xml b/indra/newview/skins/default/xui/it/menu_toolbars.xml
new file mode 100644
index 0000000000..784ecd262c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Seleziona pulsanti..." name="Chose Buttons"/>
+ <menu_item_check label="Icone ed etichette" name="icons_with_text"/>
+ <menu_item_check label="Solo icone" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 7e3b344117..815f6f58ed 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="Io" name="Me">
- <menu_item_call label="Preferenze" name="Preferences"/>
- <menu_item_call label="Il mio Dashboard" name="Manage My Account">
+ <menu_item_call label="Dashboard..." name="Manage My Account">
<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/>
</menu_item_call>
- <menu_item_call label="Compra L$" name="Buy and Sell L$"/>
- <menu_item_call label="Il mio profilo" name="Profile"/>
- <menu_item_call label="Il mio aspetto" name="ChangeOutfit"/>
- <menu_item_check label="Il mio inventario" name="Inventory"/>
- <menu_item_check label="Il mio inventario" name="ShowSidetrayInventory"/>
- <menu_item_check label="Le mie gesture" name="Gestures"/>
- <menu_item_check label="La mia voce" name="ShowVoice"/>
+ <menu_item_call label="Profilo..." name="Profile"/>
+ <menu_item_call label="Aspetto fisico..." name="ChangeOutfit"/>
+ <menu_item_check label="Inventario..." name="Inventory"/>
+ <menu_item_check label="Gesture..." name="Gestures"/>
+ <menu_item_check label="Voce..." name="ShowVoice"/>
<menu label="Spostamento" name="Movement">
<menu_item_call label="Siedi" name="Sit Down Here"/>
<menu_item_check label="Vola" name="Fly"/>
<menu_item_check label="Corri sempre" name="Always Run"/>
<menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/>
</menu>
- <menu label="Il mio stato" name="Status">
+ <menu label="Stato" name="Status">
<menu_item_call label="Assente" name="Set Away"/>
<menu_item_call label="Non disponibile" name="Set Busy"/>
</menu>
<menu_item_call label="Richiedi diritti Admin" name="Request Admin Options"/>
<menu_item_call label="Lascia stato Admin" name="Leave Admin Options"/>
+ <menu_item_call label="Compra L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Preferenze..." name="Preferences"/>
+ <menu_item_call label="Barre strumenti..." name="Toolbars"/>
+ <menu_item_call label="Nascondi tutti i controlli" name="Hide UI"/>
<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
</menu>
<menu label="Comunica" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="Aiuto" name="Help">
<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_check label="Attiva suggerimenti" name="Enable Hints"/>
<menu_item_call label="Segnala abuso" name="Report Abuse"/>
<menu_item_call label="Segnala bug" name="Report Bug"/>
<menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
<menu label="Strumenti di performance" name="Performance Tools">
<menu_item_call label="Misuratore lag" name="Lag Meter"/>
<menu_item_check label="Barra statistiche" name="Statistics Bar"/>
- <menu_item_check label="Mostra costo di rendering dell&apos;avatar" name="Avatar Rendering Cost"/>
+ <menu_item_check label="Mostra peso visualizzazione per avatar" name="Avatar Rendering Cost"/>
</menu>
<menu label="Evidenziazione e visibilità" name="Highlighting and Visibility">
<menu_item_check label="Effetto marcatore lampeggiante" name="Cheesy Beacon"/>
@@ -271,6 +271,7 @@
<menu_item_check label="Aggiorna tipo" name="Update Type"/>
<menu_item_check label="Info livello dettaglio" name="LOD Info"/>
<menu_item_check label="Crea coda" name="Build Queue"/>
+ <menu_item_check label="Complessità rendering" name="rendercomplexity"/>
<menu_item_check label="Scolpisci" name="Sculpt"/>
</menu>
<menu label="Rendering" name="Rendering">
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index ab9de43e6e..2db0892cd6 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -978,7 +978,7 @@ Offri l&apos;amicizia a [NAME]?
</form>
</notification>
<notification name="RemoveFromFriends">
- Vuoi rimuovere [NAME] dalla lista dei tuoi amici?
+ Vuoi rimuovere &lt;nolink&gt;[NAME]&lt;/nolink&gt; dalla lista dei tuoi amici?
<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -1915,6 +1915,12 @@ Trasferisci gli elementi nell&apos;inventario?
Confermi di voler uscire?
<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ Passare ai pulsanti e alle barre strumenti predefinite?
+
+Questa azione non può essere ripristinata
+ <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="Conferma prima di cancellare gli elementi" name="okcancelignore" notext="Annulla" yestext="OK"/>
@@ -2119,10 +2125,10 @@ Verrà avviato il browser Web.
Oggetto: [SUBJECT], Messaggio: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] è Online
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; è Online
</notification>
<notification name="FriendOffline">
- [NAME] è Offline
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; è Offline
</notification>
<notification name="AddSelfFriend">
Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
@@ -2514,10 +2520,10 @@ Riprova tra qualche istante.
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME] ha accettato la tua offerta di amicizia.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; ha accettato la tua offerta di amicizia.
</notification>
<notification name="FriendshipDeclined">
- [NAME] ha rifiutato la tua offerta di amicizia.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; ha rifiutato la tua offerta di amicizia.
</notification>
<notification name="FriendshipAcceptedByMe">
Offerta di amicizia accettata.
@@ -2997,10 +3003,6 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale
<button name="cancel" text="Annulla"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- Per cambiare la modalità è necessario uscire e riavviare.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
<notification label="" name="NoClassifieds">
La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
@@ -3045,6 +3047,10 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale
La ricerca è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ Questa azione cancellerà tutte le voci di menu e i pulsanti. Per visualizzarli nuovamente cliccare ancora [SHORTCUT].
+ <usetemplate ignoretext="Conferma prima di nascondere l&apos;interfaccia" name="okcancelignore" notext="Annulla" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
diff --git a/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..66bf3f140f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Conversazioni"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Notifiche"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml
index 66601aa165..a134f6f1de 100644
--- a/indra/newview/skins/default/xui/it/panel_me.xml
+++ b/indra/newview/skins/default/xui/it/panel_me.xml
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Il mio profilo" name="panel_me">
- <tab_container name="tabs">
- <panel label="IL MIO PROFILO" name="panel_profile"/>
- <panel label="I MIEI PREFERITI" name="panel_picks"/>
- </tab_container>
+ <panel label="I MIEI PREFERITI" name="panel_picks"/>
</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_my_profile.xml b/indra/newview/skins/default/xui/it/panel_my_profile.xml
deleted file mode 100644
index 094b97962f..0000000000
--- a/indra/newview/skins/default/xui/it/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profilo" name="panel_profile">
- <string name="no_partner_text" value="Nessuno"/>
- <string name="no_group_text" value="Nessuno"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Nome utente
- </text>
- <text name="name_descr_text">
- Nome visualizzato
- </text>
- <button label="Profilo" name="see_profile_btn" tool_tip="Visualizza profilo per questo avatar"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
index 8e72167759..0299e2a532 100644
--- a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
- <pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
- <button name="home_btn" tool_tip="Teleport a casa"/>
- <location_input label="Posizione" name="location_combo"/>
- <search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca">
- <combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
- <label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
- Barra dei Preferiti
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
+ <pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
+ <button name="home_btn" tool_tip="Teleport a casa"/>
+ <location_input label="Posizione" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
+ <label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
+ Barra dei Preferiti
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti">
+ Altro ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
new file mode 100644
index 0000000000..1b529e2737
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Traduci chat" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_notes.xml b/indra/newview/skins/default/xui/it/panel_notes.xml
deleted file mode 100644
index e127138277..0000000000
--- a/indra/newview/skins/default/xui/it/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Note e Privacy" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_panel">
- <text name="status_message" value="Le mie note private:"/>
- <text name="status_message2" value="Consenti a questa persona di:"/>
- <check_box label="Vedere se sono online" name="status_check"/>
- <check_box label="Vedermi sulla mappa" name="map_check"/>
- <check_box label="Modificare, eliminare o prendere i miei oggetti" name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Aggiungi come amico" name="add_friend" tool_tip="Offri amicizia a questo residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Apri una sessione messaggio istantaneo"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
index 2834d520d1..1a0a1d8434 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -29,9 +29,9 @@
<check_box label="Chat IM" name="EnableIMChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva un messaggio IM"/>
<spinner label="Durata chat vicine:" name="nearby_toasts_lifetime"/>
<spinner label="Durata dissolvenza chat vicine:" name="nearby_toasts_fadingtime"/>
- <check_box label="Use machine translation while chatting (powered by Google)" name="translate_chat_checkbox"/>
+ <check_box label="Use machine translation while chatting" name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Usa la traduzione meccanica durante le chat (tecnologia Google)
+ Usa la traduzione meccanica durante le chat
</text>
<text name="translate_language_text" width="110">
Traduci chat in:
@@ -51,7 +51,7 @@
<combo_box.item label="Русский (Russo)" name="Russian"/>
<combo_box.item label="Türkçe (Turco)" name="Turkish"/>
<combo_box.item label="Українська (Ucraino)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (Cinese)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Cinese)" name="Chinese"/>
<combo_box.item label="日本語 (Giapponese)" name="Japanese"/>
<combo_box.item label="한국어 (Coreano)" name="Korean"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
index c576b5f9d8..90a833471c 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -11,10 +11,12 @@
<combo_box.item label="Español (Spagnolo) - Beta" name="Spanish"/>
<combo_box.item label="Français (Francese) - Beta" name="French"/>
<combo_box.item label="Italiano - Beta" name="Italian"/>
- <combo_box.item label="Nederlands (Olandese) - Beta" name="Dutch"/>
<combo_box.item label="Polski (Polacco) - Beta" name="Polish"/>
<combo_box.item label="Português (Portoghese) - Beta" name="Portugese"/>
+ <combo_box.item label="Русский (Russo) - Beta" name="Russian"/>
+ <combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
<combo_box.item label="日本語 (Giapponese) - Beta" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (Cinese tradizionale) - Beta" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(Richiede il riavvio)
@@ -49,7 +51,6 @@
<check_box label="TItoli gruppo" name="show_all_title_checkbox1" tool_tip="Mostra titoli di gruppo, come Funzionario o Membro"/>
<check_box label="Evidenzia amici" name="show_friends" tool_tip="Evidenzia le etichette dei nomi dei tuoi amici"/>
<check_box label="Mostra nomi visualizzati" name="display_names_check" tool_tip="Seleziona per visualizzare i nomi in chat, IM, etichette, ecc."/>
- <check_box label="Attiva suggerimenti UI Viewer" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
Premere i tasti lettera:
</text>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_move.xml b/indra/newview/skins/default/xui/it/panel_preferences_move.xml
index 56d75bb3e3..8d172bb8bb 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</text>
<check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della fotocamera entrando o uscendo dalla modalità modifica"/>
<check_box label="Aspetto fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/>
- <check_box initial_value="vero" label="Barra laterale" name="appearance_sidebar_positioning" tool_tip="Utilizza il posizionamento automatico della fotocamera per la barra laterale"/>
+ <text name="keyboard_lbl">
+ Tastiera:
+ </text>
+ <check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ Mouse:
+ </text>
<check_box label="Mostra in modalità Mouselook" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
Sensibilità mouse visuale soggettiva:
</text>
<check_box label="Inverti" name="invert_mouse"/>
- <check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/>
- <check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/>
- <check_box label="Doppio clic per:" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="Teleport" name="radio_teleport"/>
- <radio_item label="Autopilota" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ Un solo clic sul terreno:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Nessuna azione" name="0"/>
+ <combo_box.item label="Passa al punto cliccato" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Doppio clic sul terreno:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Nessuna azione" name="0"/>
+ <combo_box.item label="Passa al punto cliccato" name="1"/>
+ <combo_box.item label="Teleport al punto cliccato" name="2"/>
+ </combo_box>
<button label="Altri dispositivi" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_profile.xml b/indra/newview/skins/default/xui/it/panel_profile.xml
deleted file mode 100644
index 309937c5a0..0000000000
--- a/indra/newview/skins/default/xui/it/panel_profile.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profilo" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=it-IT
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=it
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=it-IT"/>
- <string name="no_partner_text" value="Nessuno"/>
- <string name="no_group_text" value="Nessuno"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="Mondo reale:"/>
- </panel>
- <text name="title_member_text" value="Residente dal:"/>
- <text name="title_acc_status_text" value="Stato account:"/>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text initial_value="(recupero)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Gruppi:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Aggiungi come amico" name="add_friend" tool_tip="Offri amicizia a questo residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Apri una sessione messaggio istantaneo"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Paga del denaro o condividi qualcosa dall&apos;inventario con il residente"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Modifica profilo" name="edit_profile_btn" tool_tip="Modifica le tue informazioni personali"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml
deleted file mode 100644
index 409eb5d1f4..0000000000
--- a/indra/newview/skins/default/xui/it/panel_profile_view.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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 name="display_name_label" value="Nome visualizzato:"/>
- <text name="solo_username_label" value="Nome utente:"/>
- <text name="status" value="Online"/>
- <text name="user_name_small" value="Jack guarda quanto è lungo questo splendido nome"/>
- <text name="user_name" value="Jack Linden"/>
- <button name="copy_to_clipboard" tool_tip="Copia negli appunti"/>
- <text name="user_label" value="Nome utente:"/>
- <text name="user_slid" value="jack.linden"/>
- <tab_container name="tabs">
- <panel label="PROFILO" name="panel_profile"/>
- <panel label="LUOGHI CONSIGLIATI" name="panel_picks"/>
- <panel label="NOTE E PRIVACY" name="panel_notes"/>
- </tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml
index 0569107999..fadaa575ea 100644
--- a/indra/newview/skins/default/xui/it/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml
@@ -17,12 +17,9 @@
</panel.string>
<panel name="balance_bg">
<text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ 20"/>
- <button label="ACQUISTA L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
+ <button label="Acquista L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
+ <button label="Acquisti" name="goShop" tool_tip="Apri Mercato Second Life"/>
</panel>
- <combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
- <combo_box.item label="Modalità di base" name="Basic"/>
- <combo_box.item label="Modalità Avanzata" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="Orario attuale (Pacifico)">
24:00, ora del Pacifico
</text>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
index 54fa6df407..5d6c7681f9 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
@@ -14,7 +14,7 @@
</string>
<button label="Oggetti ricevuti" name="inbox_btn"/>
<text name="inbox_fresh_new_count">
- [NUM] Nuovo
+ [NUM] nuovi
</text>
<panel tool_tip="Drag and drop items to your inventory to manage and use them">
<text name="inbox_inventory_placeholder">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 9918934e12..8f29233825 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -40,6 +40,9 @@
<string name="ProgressChangingResolution">
Modifica della risoluzione...
</string>
+ <string name="Fullbright">
+ Luminosità massima (vers. precedente)
+ </string>
<string name="LoginInProgress">
In connessione. [APP_NAME] può sembrare rallentata. Attendi.
</string>
@@ -74,7 +77,7 @@
Elaborazione risposta...
</string>
<string name="LoginInitializingWorld">
- Inizializzazione...
+ Inizializzazione mondo...
</string>
<string name="LoginDecodingImages">
Decodifica immagini...
@@ -589,6 +592,9 @@ Prova ad accedere nuovamente tra un minuto.
<string name="mesh">
reticolo
</string>
+ <string name="AvatarEditingAppearance">
+ (Modifica Aspetto)
+ </string>
<string name="AvatarAway">
Assente
</string>
@@ -1261,6 +1267,9 @@ Prova ad accedere nuovamente tra un minuto.
<string name="Marketplace Error Internal Import">
Errore: problema con questo elemento. Riprova più tardi.
</string>
+ <string name="Open landmarks">
+ Apri luoghi di riferimento
+ </string>
<string name="no_transfer" value="(nessun trasferimento)"/>
<string name="no_modify" value="(nessuna modifica)"/>
<string name="no_copy" value="(nessuna copia)"/>
@@ -4158,7 +4167,7 @@ Segnala abuso
<string name="Female - Wow">
Femmina - Accipicchia
</string>
- <string name="/bow1">
+ <string name="/bow">
/inchino
</string>
<string name="/clap">
@@ -4671,4 +4680,172 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
<string name="ParticleHiding">
Particelle nascoste
</string>
+ <string name="Command_AboutLand_Label">
+ Informazioni sul terreno
+ </string>
+ <string name="Command_Appearance_Label">
+ Aspetto fisico
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Costruisci
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Compass_Label">
+ Bussola
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinazioni
+ </string>
+ <string name="Command_Gestures_Label">
+ Gesture
+ </string>
+ <string name="Command_HowTo_Label">
+ Istruzioni
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventario
+ </string>
+ <string name="Command_Map_Label">
+ Mappa
+ </string>
+ <string name="Command_Marketplace_Label">
+ Mercato
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini mappa
+ </string>
+ <string name="Command_Move_Label">
+ Movimento
+ </string>
+ <string name="Command_People_Label">
+ Persone
+ </string>
+ <string name="Command_Picks_Label">
+ Preferiti
+ </string>
+ <string name="Command_Places_Label">
+ Luoghi
+ </string>
+ <string name="Command_Preferences_Label">
+ Preferenze
+ </string>
+ <string name="Command_Profile_Label">
+ Profilo
+ </string>
+ <string name="Command_Search_Label">
+ Ricerca
+ </string>
+ <string name="Command_Snapshot_Label">
+ Istantanea
+ </string>
+ <string name="Command_Speak_Label">
+ Parla
+ </string>
+ <string name="Command_View_Label">
+ Visuale
+ </string>
+ <string name="Command_Voice_Label">
+ Voce vicina
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Informazioni sul terreno che visiti
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Cambia l&apos;avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Seleziona un avatar completo
+ </string>
+ <string name="Command_Build_Tooltip">
+ Costruzione oggetti e modifica terreno
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Chatta con persone vicine usando il testo
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Bussola
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinazioni interessanti
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gesti per il tuo avatar
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Come eseguire le attività più comuni
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Visualizza e usa le tue cose
+ </string>
+ <string name="Command_Map_Tooltip">
+ Mappa del mondo
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Vai allo shopping
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Mostra le persone vicine
+ </string>
+ <string name="Command_Move_Tooltip">
+ Movimento avatar
+ </string>
+ <string name="Command_People_Tooltip">
+ Amici, gruppi e persone vicine
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Luoghi da mostrare come preferiti nel profilo
+ </string>
+ <string name="Command_Places_Tooltip">
+ Luoghi salvati
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Preferenze
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Modifica o visualizza il tuo profilo
+ </string>
+ <string name="Command_Search_Tooltip">
+ Trova luoghi, eventi, persone
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Scatta una foto
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Parla con persone vicine usando il microfono
+ </string>
+ <string name="Command_View_Tooltip">
+ Modifica angolo fotocamera
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Persona vicine con funzioni voce
+ </string>
+ <string name="Retain%">
+ Mantieni%
+ </string>
+ <string name="Detail">
+ Dettagli
+ </string>
+ <string name="Better Detail">
+ Migliori dettagli
+ </string>
+ <string name="Surface">
+ Superficie
+ </string>
+ <string name="Solid">
+ Solido
+ </string>
+ <string name="Wrap">
+ Involucro
+ </string>
+ <string name="Preview">
+ Anteprima
+ </string>
+ <string name="Normal">
+ Normale
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml
index 7a1046abd3..a0b324d8fb 100644
--- a/indra/newview/skins/default/xui/it/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/it/teleport_strings.xml
@@ -18,6 +18,10 @@ Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE
<message name="timeout_tport">
Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
</message>
+ <message name="NoHelpIslandTP">
+ Non è possibile per te ritornare all&apos;Welcome Island.
+Vai alla &apos;Welcome Island Public&apos; per ripetere il tutorial.
+ </message>
<message name="noaccess_tport">
Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
</message>
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
index 47bb2455cf..c628ade43e 100644
--- a/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -10,7 +10,7 @@
<floater.string name="AboutPosition">
あなたの現在地は、[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] [リリースノート]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU: [CPU]
@@ -37,6 +37,9 @@ Qt Webkit バージョン: [QT_WEBKIT_VERSION]
<floater.string name="AboutTraffic">
パケットロス: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ サーバーのリリースノートの URL を取得中にエラーが発生しました。
+ </floater.string>
<tab_container name="about_tab">
<panel label="情報" name="support_panel">
<button label="クリップボードにコピー" name="copy_btn"/>
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 e870a8ace9..3c88c902f8 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -214,19 +214,19 @@
オブジェクトボーナス: [BONUS]
</text>
<text name="Simulator primitive usage:">
- プリム使用状況:
+ リージョン(地域)の許容数:
</text>
<text name="objects_available">
[MAX] の内 [COUNT] ([AVAILABLE] 利用可能)
</text>
<text name="Primitives parcel supports:">
- 区画でサポートされるプリム数:
+ 区画の許容数:
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- 区画上のプリム数:
+ 区画の負荷:
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar.xml b/indra/newview/skins/default/xui/ja/floater_avatar.xml
new file mode 100644
index 0000000000..c4455282d2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="アバターピッカー"/>
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 22af6e0ea2..e447eefe0e 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -46,7 +46,7 @@
L$ [AMT]
</text>
<text name="currency_links">
- [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 換算レート]
+ [http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP 支払方法] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP 通貨]
</text>
<text name="exchange_rate_note">
金額を再入力して最新換算レートを確認します。
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
index 71a20c8e18..0661e17309 100644
--- a/indra/newview/skins/default/xui/ja/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ja/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="表示">
<floater.string name="rotate_tooltip">
フォーカスを中心にカメラを回転
</floater.string>
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
カメラを上下左右に移動
</floater.string>
- <floater.string name="camera_modes_title">
- カメラモード
- </floater.string>
- <floater.string name="pan_mode_title">
- 旋回 - ズーム - 水平・垂直移動
- </floater.string>
- <floater.string name="presets_mode_title">
- 事前設定の視野
- </floater.string>
<floater.string name="free_mode_title">
オブジェクトを見る
</floater.string>
diff --git a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
new file mode 100644
index 0000000000..9735afb101
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="近くのチャット">
+ <panel>
+ <line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して話し、Ctrl + Enter キーで叫びます。"/>
+ <button name="show_nearby_chat" tool_tip="近くのチャットログを表示・非表示"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_destinations.xml b/indra/newview/skins/default/xui/ja/floater_destinations.xml
new file mode 100644
index 0000000000..b7f6ad4d4e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="行き先"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_fast_timers.xml b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
new file mode 100644
index 0000000000..5f538ecdb0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ 一時停止
+ </string>
+ <string name="run">
+ 走る
+ </string>
+ <button label="一時停止" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_how_to.xml b/indra/newview/skins/default/xui/ja/floater_how_to.xml
new file mode 100644
index 0000000000..4cebe27226
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ハウツー"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
index ff5a25fd7b..1122203446 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" title="">
+<floater name="Map" title="ミニマップ">
<floater.string name="ToolTipMsg">
[REGION](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)
</floater.string>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
index 07667bb697..157c68a570 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="モデルをアップロード">
- <string name="status_idle">
- 待機状態
- </string>
+<floater name="Model Preview" title="モデルウィザード">
+ <string name="status_idle"/>
<string name="status_parse_error">
- Dae に問題が見つかりました - 詳細についてはログをご参照ください。
+ エラー:Dae に問題が見つかりました - 詳細についてはログをご参照ください。
</string>
<string name="status_reading_file">
ローディング...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
必要な描画詳細度が見つかりません。
</string>
+ <string name="mesh_status_invalid_material_list">
+ LOD 付きの材料は参考モデルのサブセットではありません。
+ </string>
<string name="layer_all">
全て
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
未定
</string>
- <text name="name_label">
- 名前:
- </text>
- <text name="lod_label">
- プレビュー:
- </text>
- <combo_box name="preview_lod_combo" tool_tip="プレビュー表示のLOD設定">
- <combo_item name="high">
- 描画詳細度:高
- </combo_item>
- <combo_item name="medium">
- 描画詳細度:中
- </combo_item>
- <combo_item name="low">
- 描画詳細度:低
- </combo_item>
- <combo_item name="lowest">
- 描画詳細度:最低
- </combo_item>
- </combo_box>
- <text name="warning_title">
- 警告:
- </text>
- <text name="warning_message">
- このモデルを Second Life サーバーにアップロードすることはできません。メッシュモデルのアップロード手順については [[VURL] こちらを参照してください]。
- </text>
- <text name="weights_text">
- ダウンロード:
-物理演算:
-サーバー負荷:
-
-プリム換算:
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="描画詳細度" name="lod_panel">
- <text name="lod_table_header">
- 描画詳細度を選択:
- </text>
- <text name="high_label" value="高"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="中"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="低"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="最低"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- 描画詳細度: [DETAIL]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="ファイルからロード" name="lod_from_file"/>
- <radio_item label="自動作成" name="lod_auto_generate"/>
- <radio_item label="なし" name="lod_none"/>
- </radio_group>
- <button label="参照" name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- 三角形の限度数
- </combo_item>
- <combo_item name="error_threshold">
- エラーしきい値
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- 制作演算子:
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ モデル名:
</text>
- <text name="queue_mode_text">
- キューモード:
+ <text name="model_category_label">
+ このモデルは...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- 稜の完全複合
- </combo_item>
- <combo_item name="half_edge_collapse">
- 稜の半複合
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- グリーディ
- </combo_item>
- <combo_item name="lazy">
- レイジー
- </combo_item>
- <combo_item name="independent">
- インディペンデント
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="1つを選択..." name="Choose one"/>
+ <combo_item label="アバターの形" name="Avatar shape"/>
+ <combo_item label="アバターのアタッチメント" name="Avatar attachment"/>
+ <combo_item label="動くオブジェクト(車、動物)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="制作用コンポーネント" name="Building Component"/>
+ <combo_item label="大型、不動、等" name="Large, non moving etc"/>
+ <combo_item label="やや小型、不動、等" name="Smaller, non-moving etc"/>
+ <combo_item label="いずれにも該当しない" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- 境界線モード:
- </text>
- <text name="share_tolderance_text">
- 共有誤差:
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- ロック解除
- </combo_item>
- <combo_item name="border_lock">
- ロック
- </combo_item>
- </combo_box>
- <text name="crease_label">
- 折れ角度:
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="物理効果" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="ファイル:" name="physics_load_from_file"/>
- <radio_item label="次の描画詳細度を使用:" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD">
- <combo_item name="physics_lowest">
- 最低
- </combo_item>
- <combo_item name="physics_low">
- 低
- </combo_item>
- <combo_item name="physics_medium">
- 中
- </combo_item>
- <combo_item name="physics_high">
- 高
- </combo_item>
- </combo_box>
- <button label="参照" name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="描画詳細度" name="lod_panel" title="描画詳細度">
+ <text initial_value="データ源" name="source" value="データ源"/>
+ <text initial_value="三角形" name="triangles" value="三角形"/>
+ <text initial_value="頂点" name="vertices" value="頂点"/>
+ <text initial_value="高" name="high_label" value="高"/>
+ <button label="参照" name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="中" name="medium_label" value="中"/>
+ <button label="参照" name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="低" name="low_label" value="低"/>
+ <button label="参照" name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="最低" name="lowest_label" value="最低"/>
+ <button label="参照" name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="ノーマルの作成" name="gen_normals"/>
+ <text initial_value="折れ角度:" name="crease_label" value="折れ角度:"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="滑らかさ:" name="Smooth"/>
- <check_box label="穴を閉じる(スロー)" name="Close Holes (Slow)"/>
- <button label="分析" name="Decompose"/>
- <button label="取り消し" name="decompose_cancel"/>
+ <panel label="物理効果" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ 手順1:描画詳細度
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD">
+ <combo_item name="choose_one">
+ 1つを選択...
+ </combo_item>
+ <combo_item name="physics_high">
+ 高
+ </combo_item>
+ <combo_item name="physics_medium">
+ 中
+ </combo_item>
+ <combo_item name="physics_low">
+ 低
+ </combo_item>
+ <combo_item name="physics_lowest">
+ 最低
+ </combo_item>
+ <combo_item name="load_from_file">
+ ファイルから
+ </combo_item>
+ </combo_box>
+ <button label="参照" name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ 手順2:分析
+ </text>
+ <text name="analysis_method_label">
+ 方法:
+ </text>
+ <text name="quality_label">
+ 品質:
+ </text>
+ <text name="smooth_method_label">
+ 滑らかさ:
+ </text>
+ <check_box label="穴を閉じる" name="Close Holes (Slow)"/>
+ <button label="分析" name="Decompose"/>
+ <button label="取り消し" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ 手順3:単純化
+ </text>
+ <text name="simp_method_header">
+ 方法:
+ </text>
+ <text name="pass_method_header">
+ パス:
+ </text>
+ <text name="Detail Scale label">
+ 詳細度:
+ </text>
+ <text name="Retain%_label">
+ 維持率:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="単純化" name="Simplify"/>
+ <button label="取り消し" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ 結果:
+ </text>
+ <text name="physics_triangles">
+ 三角形:[TRIANGLES],
+ </text>
+ <text name="physics_points">
+ 頂点:[POINTS],
+ </text>
+ <text name="physics_hulls">
+ 外殻構造:[HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="パス:" name="Combine Quality"/>
- <slider label="詳細度:" name="Detail Scale"/>
- <slider label="維持率:" name="Retain%"/>
- <button label="単純化" name="Simplify"/>
- <button label="取り消し" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="プレビュースプレッド:" name="physics_explode"/>
- <text name="physics_triangles">
- 三角形: [TRIANGLES]
+ <panel label="アップロードのオプション" name="modifiers_panel">
+ <text name="scale_label">
+ スケール(1=増減なし):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ サイズ:
</text>
- <text name="physics_points">
- 頂点: [POINTS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- 外殻構造: [HULLS]
+ <check_box label="テクスチャを含む" name="upload_textures"/>
+ <text name="include_label">
+ アバターモデル専用:
</text>
+ <check_box label="スキンの重さを含む" name="upload_skin"/>
+ <check_box label="ジョイントポジションを含む" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Z オフセット(アバターを上下調整):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="修飾子" name="modifiers_panel">
- <spinner name="import_scale" value="1.0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="ウェイトと料金の計算" name="calculate_btn" tool_tip="ウェイトと料金の計算"/>
+ <button label="取り消し" name="cancel_btn"/>
+ <button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/>
+ <button label="設定をクリアしてフォームをリセット" name="reset_btn"/>
+ <text name="upload_fee">
+ アップロード料金:L$ [FEE]
+ </text>
+ <text name="prim_weight">
+ 土地の負荷:[EQ]
+ </text>
+ <text name="download_weight">
+ ダウンロード:[ST]
+ </text>
+ <text name="physics_weight">
+ 物理演算:[PH]
+ </text>
+ <text name="server_weight">
+ サーバー負荷:[SIM]
+ </text>
+ <text name="warning_title">
+ ご注意:
+ </text>
+ <text name="warning_message">
+ メッシュモデルをアップロードする権利がありません。権利の取得方法については [[VURL]] こちらを参照してください。
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="テクスチャ" name="upload_textures"/>
- <check_box label="スキンの重さ" name="upload_skin"/>
- <check_box label="ジョイントポジション" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- アップロード料金:L$ [FEE]
+ </panel>
+ <text name="lod_label">
+ プレビュー:
</text>
- <button label="デフォルトに設定" name="reset_btn" tool_tip="デフォルトに設定"/>
- <button label="ウェイトと料金の計算" name="calculate_btn" tool_tip="ウェイトと料金の計算"/>
- <button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/>
- <button label="取り消し" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="プレビュー表示の LOD 設定">
+ <combo_item name="high">
+ 高
+ </combo_item>
+ <combo_item name="medium">
+ 中
+ </combo_item>
+ <combo_item name="low">
+ 低
+ </combo_item>
+ <combo_item name="lowest">
+ 最低
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ ディスプレイ...
+ </text>
+ <check_box label="稜" name="show_edges"/>
+ <check_box label="物理効果" name="show_physics"/>
+ <check_box label="テクスチャ" name="show_textures"/>
+ <check_box label="スキンの重さ" name="show_skin_weight"/>
+ <check_box label="ジョイント" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ プレビュースプレッド:
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
index 2f336fcbde..915b37557f 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. 最適化" name="optimize_btn"/>
<button label="1. ファイルを選択" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
モデルファイルを選択
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
上級ユーザーの場合:3D コンテンツの制作ツールを使い慣れた方は、高度なアップローダーもお試しください。
</text>
<button label="アドバンスモードに切り替える" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
アップロードするモデルファイルの選択
</text>
<button label="参照" label_selected="参照" name="browse"/>
- <text name="support_collada_text">
- Second Life は COLLADA (.dae) ファイルをサポートします。
- </text>
- <text name="dimensions_label">
- サイズ(メートル):
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
モデルを最適化
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
パフォーマンスを重視してモデルを最適化しました。必要に応じて調整してください。
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- 次の描画詳細度を作成
- </text>
+ <panel name="content">
<text name="high_detail_text">
次の描画詳細度を作成:高
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- パフォーマンス
- </text>
- <text name="optimize_faster_rendering_text">
- レンダリング速度の向上
-詳細度の低下
-プリム換算ウェイトの軽減
- </text>
- <text name="optimize_accuracy_text">
- 正確さ
- </text>
- <text name="optimize_slower_rendering_text">
- レンダリング速度の低下
-詳細化
-プリム換算ウェイトの増加
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="ジオメトリを再計算" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
ジオメトリのプレビュー
</text>
<combo_box name="preview_lod_combo" tool_tip="プレビュー表示の LOD 設定">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
高い詳細度
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
中の詳細度
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
低い詳細度
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
最低の詳細度
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
物理作用の調整
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
モデルの外殻構造のシェイプは弊社が作成します。モデルの目的に応じてシェイプの詳細度を調整してください。
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- パフォーマンス
- </text>
- <text name="physics_faster_rendering_text">
- レンダリング速度の向上
-詳細度の低下
-プリム換算ウェイトの軽減
- </text>
- <text name="physics_accuracy_text">
- 正確
- </text>
- <text name="physics_slower_dendering_text">
- レンダリング速度の低下
-詳細化
-プリム換算ウェイトの増加
- </text>
- <text name="physics_example_1">
- 例:
-動くオブジェクト
-飛行オブジェクト
-車
- </text>
- <text name="physics_example_2">
- 例:
-小さな静止オブジェクト
-比較的詳細度の低いオブジェクト
-シンプルな家具
- </text>
- <text name="physics_example_3">
- 例:
-静止オブジェクト
-詳細なオブジェクト
-建物
- </text>
+ <panel name="content">
<button label="物理演算ウェイトを再計算" name="recalculate_physics_btn"/>
<button label="再計算中..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
物理作用のプレビュー
</text>
<combo_box name="preview_lod_combo2" tool_tip="プレビュー表示の LOD 設定">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
高い詳細度
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
中の詳細度
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
低い詳細度
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
最低の詳細度
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
確認
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
区画/リージョンへの負荷:[EQUIV] プリム換算値
</text>
@@ -193,8 +125,8 @@
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
アップロード完了
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_moveview.xml b/indra/newview/skins/default/xui/ja/floater_moveview.xml
index 57ab32f486..88c1905b8a 100644
--- a/indra/newview/skins/default/xui/ja/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="移動">
<string name="walk_forward_tooltip">
前に進む(上矢印か W を押す)
</string>
@@ -58,14 +58,14 @@
飛ぶ
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="上に移動(E を押す)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="左を向く(左矢印か A を押す)"/>
<joystick_slide name="move left btn" tool_tip="左に歩く(Shift + 左矢印か A を押す)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="下に移動(C を押す)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="右を向く(右矢印か D を押す)"/>
<joystick_slide name="move right btn" tool_tip="右に歩く(Shift + 右矢印か D を押す)"/>
<joystick_turn name="forward btn" tool_tip="前に進む(上矢印か W を押す)"/>
<joystick_turn name="backward btn" tool_tip="後ろに歩く(下矢印か S を押す)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="上に移動(E を押す)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="下に移動(C を押す)"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="歩行モード"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_my_appearance.xml b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
new file mode 100644
index 0000000000..c9a0ecefd7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="容姿">
+ <panel label="容姿の編集" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
new file mode 100644
index 0000000000..c6a789b63b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="持ち物"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml
index a29c6a0630..bcddcc6907 100644
--- a/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="近くのチャット">
- <check_box label="チャットを翻訳(Google翻訳)" name="translate_chat_checkbox"/>
+ <check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_object_weights.xml b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
new file mode 100644
index 0000000000..3bd9b6b069
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="詳しい設定">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="選択済"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="オブジェクト"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="プリム"/>
+ <text name="weights_of_selected_text" value="選択済み項目のウエイト"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="ダウンロード"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="物理効果"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="サーバー"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="ディスプレイ"/>
+ <text name="land_impacts_text" value="土地の負荷"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="選択済"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="土地に Rez 済み"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="残りの許容数"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="許容合計"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights オブジェクトのウェイトとは?]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_people.xml b/indra/newview/skins/default/xui/ja/floater_people.xml
new file mode 100644
index 0000000000..08bee88103
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="人">
+ <panel_container name="main_panel">
+ <panel label="グループ情報" name="panel_group_info_sidetray"/>
+ <panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_picks.xml b/indra/newview/skins/default/xui/ja/floater_picks.xml
new file mode 100644
index 0000000000..359585eb86
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="ピック"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_places.xml b/indra/newview/skins/default/xui/ja/floater_places.xml
new file mode 100644
index 0000000000..0d167444db
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="場所">
+ <panel label="場所" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml
index 97927776c7..6a1f34cfd8 100644
--- a/indra/newview/skins/default/xui/ja/floater_stats.xml
+++ b/indra/newview/skins/default/xui/ja/floater_stats.xml
@@ -10,8 +10,8 @@
</stat_view>
<stat_view label="アドバンス" name="advanced">
<stat_view label="描画" name="render">
- <stat_bar label="KTris 描画" name="ktrisframe"/>
- <stat_bar label="KTris 描画" name="ktrissec"/>
+ <stat_bar label="フレームごとの KTris 描画" name="ktrisframe"/>
+ <stat_bar label="秒ごとの KTris 描画" name="ktrissec"/>
<stat_bar label="オブジェクト合計" name="objs"/>
<stat_bar label="新規オブジェクト" name="newobjs"/>
</stat_view>
@@ -64,6 +64,14 @@
<stat_bar label="エージェント時間" name="simagentmsec"/>
<stat_bar label="イメージ時間" name="simimagesmsec"/>
<stat_bar label="スクリプト時間" name="simscriptmsec"/>
+ <stat_bar label="余暇" name="simsparemsec"/>
+ <stat_view label="時間の詳細(ms)" name="timedetails">
+ <stat_bar label="物理効果の単位" name="simsimphysicsstepmsec"/>
+ <stat_bar label="物理形状を更新" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="他の物理効果" name="simsimphysicsothermsec"/>
+ <stat_bar label="スリープ時間" name="simsleepmsec"/>
+ <stat_bar label="ポンプ I/O" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index a8b5febd54..8eddf55a44 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -25,10 +25,10 @@
土地をクリックし、ドラッグして選択
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] 個のオブジェクト([PRIM_COUNT] 個のプリム [PE_STRING])が選択されています
+ 選択されているオブジェクトは [OBJ_COUNT] 個、土地の負荷は [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , [SEL_WEIGHT] プリム換算値
+ <floater.string name="status_remaining_capacity">
+ 残りの許容数 [LAND_CAPACITY]。
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="フォーカス"/>
<button label="" label_selected="" name="button move" tool_tip="動かす"/>
@@ -105,8 +105,8 @@
<text name="selection_empty">
何も選択されていません。
</text>
- <text name="selection_weight">
- 物理演算ウェイト [PHYS_WEIGHT]、レンダリングコスト [DISP_WEIGHT]。
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights 詳細]
</text>
<tab_container name="Object Info Tabs">
<panel label="一般" name="General">
@@ -325,7 +325,6 @@
縫い目のタイプ
</text>
<combo_box name="sculpt type control">
- <combo_box.item label="(なし)" name="None"/>
<combo_box.item label="球体" name="Sphere"/>
<combo_box.item label="トーラス" name="Torus"/>
<combo_box.item label="平面" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_toybox.xml b/indra/newview/skins/default/xui/ja/floater_toybox.xml
new file mode 100644
index 0000000000..d7056f806c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="ツールバーをカスタマイズ">
+ <text name="toybox label 1">
+ ボタンをツールバーに追加または削除するにはボタンをドラッグします。
+ </text>
+ <text name="toybox label 2">
+ 各ツールバーの設定に応じて、ボタンは以下のように表示されたり、アイコンのみで表示されます。
+ </text>
+ <button label="デフォルト設定を復元" label_selected="デフォルト設定を復元" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
index 3a1ae49700..2e633ae1b2 100644
--- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="ナビゲーションバーとお気に入りバーを表示" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index dca872e9b8..4c88f17f3d 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="ミー" name="File">
- <menu_item_call label="環境設定" name="Preferences..."/>
+ <menu_item_call label="環境設定..." name="Preferences..."/>
<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
</menu>
<menu label="ヘルプ" name="Help">
diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
new file mode 100644
index 0000000000..e911ca4a13
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="ボタンを選択..." name="Chose Buttons"/>
+ <menu_item_check label="アイコンとラベル" name="icons_with_text"/>
+ <menu_item_check label="アイコンのみ" name="icons_only"/>
+</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 edce5c50fc..b9dbb81c0a 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="ミー" name="Me">
- <menu_item_call label="環境設定" name="Preferences"/>
- <menu_item_call label="マイアカウント" name="Manage My Account">
+ <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="プロフィール" name="Profile"/>
- <menu_item_call label="容姿" name="ChangeOutfit"/>
- <menu_item_check label="持ち物" name="Inventory"/>
- <menu_item_check label="持ち物" name="ShowSidetrayInventory"/>
- <menu_item_check label="ジェスチャー" name="Gestures"/>
- <menu_item_check label="マイボイス" name="ShowVoice"/>
+ <menu_item_call label="プロフィール..." name="Profile"/>
+ <menu_item_call label="容姿..." name="ChangeOutfit"/>
+ <menu_item_check label="持ち物..." name="Inventory"/>
+ <menu_item_check label="ジェスチャー..." name="Gestures"/>
+ <menu_item_check label="ボイス..." name="ShowVoice"/>
<menu label="ムーブメント" name="Movement">
<menu_item_call label="座る" name="Sit Down Here"/>
<menu_item_check label="飛ぶ" name="Fly"/>
<menu_item_check label="常に走る" name="Always Run"/>
<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
</menu>
- <menu label="ログイン状態" name="Status">
+ <menu label="ログイン" name="Status">
<menu_item_call label="一時退席中" name="Set Away"/>
<menu_item_call label="取り込み中" name="Set Busy"/>
</menu>
<menu_item_call label="管理者権限のリクエスト" name="Request Admin Options"/>
<menu_item_call label="管理者ステータス解除" name="Leave Admin Options"/>
+ <menu_item_call label="L$ の購入" name="Buy and Sell L$"/>
+ <menu_item_call label="環境設定..." name="Preferences"/>
+ <menu_item_call label="ツールバー..." name="Toolbars"/>
+ <menu_item_call label="全てのコントロールを非表示にする" name="Hide UI"/>
<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
</menu>
<menu label="コミュニケーション" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="ヘルプ" name="Help">
<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
- <menu_item_check label="ヒントを有効にする" name="Enable Hints"/>
<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
<menu_item_call label="バグを報告する" name="Report Bug"/>
<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
@@ -161,7 +161,7 @@
<menu label="パフォーマンスツール" name="Performance Tools">
<menu_item_call label="ラグ計測器" name="Lag Meter"/>
<menu_item_check label="統計バー" name="Statistics Bar"/>
- <menu_item_check label="アバターのレンダリングコストを表示する" name="Avatar Rendering Cost"/>
+ <menu_item_check label="アバターの描画ウェイトを表示" name="Avatar Rendering Cost"/>
</menu>
<menu label="ハイライトと目に見えるもの" name="Highlighting and Visibility">
<menu_item_check label="チージービーコン" name="Cheesy Beacon"/>
@@ -289,6 +289,7 @@
<menu_item_check label="光" name="Lights"/>
<menu_item_check label="骨組みの衝突判定" name="Collision Skeleton"/>
<menu_item_check label="レイキャスト" name="Raycast"/>
+ <menu_item_check label="描画の詳細度" name="rendercomplexity"/>
<menu_item_check label="スカルプト" name="Sculpt"/>
</menu>
<menu label="レンダリング" name="Rendering">
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index c138aeb383..7dfa6d2f7a 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -1010,7 +1010,7 @@ L$ は返金されません。
</form>
</notification>
<notification name="RemoveFromFriends">
- フレンドリストから [NAME] を削除しますか?
+ フレンドリストから &lt;nolink&gt;[NAME]&lt;/nolink&gt; を削除しますか?
<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -1953,6 +1953,12 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢
終了しようとしています。続けますか?
<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ デフォルトのボタンとツールバーを復元しますか?
+
+この操作は元に戻せません。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="アイテムを削除する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
@@ -2161,10 +2167,10 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
件名: [SUBJECT]、メッセージ: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] はオンライン中です
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; はオンライン中です
</notification>
<notification name="FriendOffline">
- [NAME] はオフライン中です
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; はオフライン中です
</notification>
<notification name="AddSelfFriend">
残念ながら自分自身をフレンド登録することはできません。
@@ -2561,10 +2567,10 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME]は、フレンド登録を受け入れました。
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt;は、フレンド登録を受け入れました。
</notification>
<notification name="FriendshipDeclined">
- [NAME]は、フレンド登録を断りました。
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt;は、フレンド登録を断りました。
</notification>
<notification name="FriendshipAcceptedByMe">
フレンドの登録依頼が承認されました。
@@ -3041,10 +3047,6 @@ M キーを押して変更します。
<button name="cancel" text="取り消し"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- モードを変更するには終了して再起動する必要があります。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
<notification label="" name="NoClassifieds">
クラシファイド広告の作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
@@ -3089,6 +3091,10 @@ M キーを押して変更します。
検索はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ この操作により、全てのメニュー項目とボタンが非表示になります。再び表示するには [SHORTCUT] をもう一度クリックしてください。
+ <usetemplate ignoretext="UI を非表示にする前に確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
[APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
diff --git a/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..6717ba9ba3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="会話"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="通知"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml
index dda5bc0009..896bbff0ee 100644
--- a/indra/newview/skins/default/xui/ja/panel_me.xml
+++ b/indra/newview/skins/default/xui/ja/panel_me.xml
@@ -1,7 +1,4 @@
<?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"/>
- </tab_container>
+ <panel label="マイ ピック" name="panel_picks"/>
</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
deleted file mode 100644
index a0d99ba5a8..0000000000
--- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="プロフィール" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=ja
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/billing.php?lang=ja
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/account"/>
- <string name="no_partner_text" value="なし"/>
- <string name="no_group_text" value="なし"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- ユーザー名
- </text>
- <text name="name_descr_text">
- 表示名
- </text>
- <button label="プロフィール" name="see_profile_btn" tool_tip="このアバターのプロフィールを表示"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
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 0426c4fe9a..51402b2e00 100644
--- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="前の場所へ戻ります"/>
- <pull_button name="forward_btn" tool_tip="次の場所へ進みます"/>
- <button name="home_btn" tool_tip="「ホーム」にテレポート"/>
- <location_input label="場所" name="location_combo"/>
- <search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
- <combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
- <label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
- お気に入りバー
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="前の場所"/>
+ <pull_button name="forward_btn" tool_tip="次の場所"/>
+ <button name="home_btn" tool_tip="「ホーム」にテレポートします"/>
+ <location_input label="所在地" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
+ <label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
+ お気に入りバー
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示">
+ 詳細 ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
new file mode 100644
index 0000000000..aca055bb43
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml
deleted file mode 100644
index aa6d823c59..0000000000
--- a/indra/newview/skins/default/xui/ja/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="メモとプライバシー" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <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="map_check"/>
- <check_box label="私のオブジェクトの編集・削除・取得" name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="コール" name="call" tool_tip="この住人にコールする"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</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 5038140ce5..1502442a06 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -29,9 +29,9 @@
<check_box label="IM チャット" name="EnableIMChatPopups" tool_tip="これを選択すると、インスタントメッセージを受信した際にポップアップが表示されます"/>
<spinner label="近くのチャットメッセージが表示される長さ:" name="nearby_toasts_lifetime"/>
<spinner label="近くのチャットメッセージが消えるまでの長さ:" name="nearby_toasts_fadingtime"/>
- <check_box label="Use machine translation while chatting (powered by Google)" name="translate_chat_checkbox"/>
+ <check_box label="Use machine translation while chatting" name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- チャット中に内容を機械翻訳する(Google翻訳)
+ チャット中に内容を機械翻訳する
</text>
<text name="translate_language_text">
翻訳する言語:
@@ -51,7 +51,7 @@
<combo_box.item label="Русский(ロシア語)" name="Russian"/>
<combo_box.item label="Türkçe(トルコ語)" name="Turkish"/>
<combo_box.item label="Українська(ウクライナ語)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体)(中国語)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Chinese)" name="Chinese"/>
<combo_box.item label="日本語" name="Japanese"/>
<combo_box.item label="한국어(韓国語)" name="Korean"/>
</combo_box>
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 e4091972d6..1bafa52fbe 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -11,10 +11,12 @@
<combo_box.item label="Español (スペイン語) – ベータ" name="Spanish"/>
<combo_box.item label="Français (フランス語) – ベータ" name="French"/>
<combo_box.item label="Italiano (イタリア語) - ベータ" name="Italian"/>
- <combo_box.item label="Nederlands (オランダ語) - ベータ" name="Dutch"/>
<combo_box.item label="Polski (ポーランド語) - ベータ" name="Polish"/>
<combo_box.item label="Português(ポルトガル語) - ベータ" name="Portugese"/>
+ <combo_box.item label="Русский (ロシア語) - ベータ" name="Russian"/>
+ <combo_box.item label="Türkçe (トルコ語) - ベータ" name="Turkish"/>
<combo_box.item label="日本語 – ベータ" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (中国語 - 繁体字) - ベータ" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(再起動後に反映)
@@ -49,7 +51,6 @@
<check_box label="グループタイトル" name="show_all_title_checkbox1" tool_tip="オフィサーまたはメンバーなど、グループタイトルを表示"/>
<check_box label="フレンドをハイライト表示" name="show_friends" tool_tip="フレンドの名前をハイライト表示"/>
<check_box label="表示名を表示" name="display_names_check" tool_tip="これを選択すると、チャット、IM などで表示名が表示されます。"/>
- <check_box label="ビューワの UI ヒントを有効にする" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
文字キーを押して次の操作:
</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
index 806bcfc14a..121bebfd52 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</text>
<check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/>
<check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/>
- <check_box initial_value="true" label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーに自動カメラポジションを使います"/>
+ <text name="keyboard_lbl">
+ キーボード:
+ </text>
+ <check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
+ <check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ マウス:
+ </text>
<check_box label="一人称視点で表示する" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
一人称視点のマウスの感度:
</text>
<check_box label="切り替え" name="invert_mouse"/>
- <check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
- <check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
- <check_box label="ダブルクリックで次の操作:" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="テレポート" name="radio_teleport"/>
- <radio_item label="自動追跡" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ 土地をシングルクリック:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="動作なし" name="0"/>
+ <combo_box.item label="クリックされた地点に移動" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ 土地をダブルクリック:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="動作なし" name="0"/>
+ <combo_box.item label="クリックされた地点に移動" name="1"/>
+ <combo_box.item label="クリックされた地点にテレポート" name="2"/>
+ </combo_box>
<button label="その他のディバイス" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml
deleted file mode 100644
index 1acad9f81a..0000000000
--- a/indra/newview/skins/default/xui/ja/panel_profile.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="プロフィール" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=ja-JP
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=ja
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=ja-JP"/>
- <string name="no_partner_text" value="なし"/>
- <string name="no_group_text" value="なし"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="現実世界:"/>
- </panel>
- <text name="title_member_text" value="住人登録:"/>
- <text name="title_acc_status_text" value="アカウントの状態:"/>
- <text_editor name="acc_status_text">
- 住人。 支払情報未登録。
- リンデン。
- </text_editor>
- <text name="title_partner_text" value="パートナー:"/>
- <panel name="partner_data_panel">
- <text initial_value="(取得中)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="グループ:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="コール" name="call" tool_tip="この住人にコールする"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="住人にお金を渡すか持ち物を共有します"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile_view.xml b/indra/newview/skins/default/xui/ja/panel_profile_view.xml
deleted file mode 100644
index 5cb6575773..0000000000
--- a/indra/newview/skins/default/xui/ja/panel_profile_view.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- オンライン
- </string>
- <string name="status_offline">
- オフライン
- </string>
- <text name="display_name_label" value="表示名:"/>
- <text name="solo_username_label" value="ユーザー名:"/>
- <text name="status" value="オンライン"/>
- <text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
- <text name="user_name" value="Jack Linden"/>
- <button name="copy_to_clipboard" tool_tip="クリップボードにコピー"/>
- <text name="user_label" value="ユーザー名:"/>
- <text name="user_slid" value="jack.linden"/>
- <tab_container name="tabs">
- <panel label="プロフィール" name="panel_profile"/>
- <panel label="ピック" name="panel_picks"/>
- <panel label="メモとプライバシー" name="panel_notes"/>
- </tab_container>
-</panel>
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 35c1148cc1..93689b81af 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -18,11 +18,8 @@
<panel name="balance_bg">
<text name="balance" tool_tip="クリックして L$ 残高を更新" value="L$20"/>
<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
+ <button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開く"/>
</panel>
- <combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
- <combo_box.item label="ベーシックモード" name="Basic"/>
- <combo_box.item label="アドバンスモード" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="現在時刻(太平洋)">
24:00 AM PST
</text>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 41dc098ba2..f611b96502 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -77,10 +77,10 @@
キャッシュファイルを検証しています(所要時間は 60 ~ 90 秒)...
</string>
<string name="LoginProcessingResponse">
- 応答を処理しています...
+ 対応を処理中です...
</string>
<string name="LoginInitializingWorld">
- ワールドを初期化しています...
+ ワールドを初期化中です...
</string>
<string name="LoginDecodingImages">
画像をデコードしています...
@@ -128,7 +128,7 @@
グリッドサーバーが返した証明書の署名を認証できませんでした。グリッドの管理者にお問い合わせください。
</string>
<string name="LoginFailedNoNetwork">
- ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
+ ネットワークエラー:接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
</string>
<string name="LoginFailed">
ログインに失敗しました。
@@ -1276,6 +1276,9 @@ support@secondlife.com にお問い合わせください。
<string name="Marketplace Error Internal Import">
エラー:この商品に関して問題が発生しました。しばらくしてからお試しください。
</string>
+ <string name="Open landmarks">
+ ランドマークを開く
+ </string>
<string name="no_transfer" value=" (再販・プレゼント不可)"/>
<string name="no_modify" value=" (編集不可)"/>
<string name="no_copy" value=" (コピー不可)"/>
@@ -4254,8 +4257,8 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
<string name="Female - Wow">
女性 - Wow
</string>
- <string name="/bow1">
- /bow1
+ <string name="/bow">
+ /おじぎする
</string>
<string name="/clap">
/拍手
@@ -4767,4 +4770,172 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
<string name="ParticleHiding">
パーティクルを非表示
</string>
+ <string name="Command_AboutLand_Label">
+ 土地情報
+ </string>
+ <string name="Command_Appearance_Label">
+ 容姿
+ </string>
+ <string name="Command_Avatar_Label">
+ アバター
+ </string>
+ <string name="Command_Build_Label">
+ 制作
+ </string>
+ <string name="Command_Chat_Label">
+ チャット
+ </string>
+ <string name="Command_Compass_Label">
+ コンパス
+ </string>
+ <string name="Command_Destinations_Label">
+ 行き先
+ </string>
+ <string name="Command_Gestures_Label">
+ ジェスチャー
+ </string>
+ <string name="Command_HowTo_Label">
+ ハウツー
+ </string>
+ <string name="Command_Inventory_Label">
+ 持ち物
+ </string>
+ <string name="Command_Map_Label">
+ 地図
+ </string>
+ <string name="Command_Marketplace_Label">
+ マーケットプレイス
+ </string>
+ <string name="Command_MiniMap_Label">
+ ミニマップ
+ </string>
+ <string name="Command_Move_Label">
+ 移動
+ </string>
+ <string name="Command_People_Label">
+ 人
+ </string>
+ <string name="Command_Picks_Label">
+ ピック
+ </string>
+ <string name="Command_Places_Label">
+ 場所
+ </string>
+ <string name="Command_Preferences_Label">
+ 環境設定
+ </string>
+ <string name="Command_Profile_Label">
+ プロフィール
+ </string>
+ <string name="Command_Search_Label">
+ 検索
+ </string>
+ <string name="Command_Snapshot_Label">
+ スナップショット
+ </string>
+ <string name="Command_Speak_Label">
+ 話す
+ </string>
+ <string name="Command_View_Label">
+ 視界
+ </string>
+ <string name="Command_Voice_Label">
+ 近くのボイス
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ 訪問先に関する情報
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ アバターを変更
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ アバター一式を選択
+ </string>
+ <string name="Command_Build_Tooltip">
+ オブジェクトの制作と地形の変形
+ </string>
+ <string name="Command_Chat_Tooltip">
+ 近くの人と文字チャットする
+ </string>
+ <string name="Command_Compass_Tooltip">
+ コンパス
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ 行ってみたい場所
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ アバターのジェスチャー
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ 一般的タスクの実行方法
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ 持ち物を表示・使用
+ </string>
+ <string name="Command_Map_Tooltip">
+ 世界地図
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ ショッピングに出掛ける
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ 近くの人を表示する
+ </string>
+ <string name="Command_Move_Tooltip">
+ アバターの移動
+ </string>
+ <string name="Command_People_Tooltip">
+ フレンド、グループ、近くの人
+ </string>
+ <string name="Command_Picks_Tooltip">
+ プロフィールで紹介するお気に入りの場所
+ </string>
+ <string name="Command_Places_Tooltip">
+ 保存済みの場所
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ 環境設定
+ </string>
+ <string name="Command_Profile_Tooltip">
+ プロフィールを編集・表示
+ </string>
+ <string name="Command_Search_Tooltip">
+ 場所、イベント、人を検索
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ ピクチャを撮る
+ </string>
+ <string name="Command_Speak_Tooltip">
+ マイクを使って近くの人と話す
+ </string>
+ <string name="Command_View_Tooltip">
+ カメラの角度を変更
+ </string>
+ <string name="Command_Voice_Tooltip">
+ ボイスチャット機能を持つ近くの人
+ </string>
+ <string name="Retain%">
+ 維持率
+ </string>
+ <string name="Detail">
+ 詳細
+ </string>
+ <string name="Better Detail">
+ もっと詳しく
+ </string>
+ <string name="Surface">
+ 表面
+ </string>
+ <string name="Solid">
+ ソリッド
+ </string>
+ <string name="Wrap">
+ ラップ
+ </string>
+ <string name="Preview">
+ プレビュー
+ </string>
+ <string name="Normal">
+ 普通
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml
index 2f67d43707..04ea1c2438 100644
--- a/indra/newview/skins/default/xui/ja/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml
@@ -20,6 +20,10 @@
申し訳ございませんが、システムはテレポートの接続を完了できませんでした。
もう少し後でやり直してください。
</message>
+ <message name="NoHelpIslandTP">
+ Welcome Islandには戻ることができません。
+「Welcome Island Public」に行き、
+ </message>
<message name="noaccess_tport">
残念ながら、そのテレポート目的地へのアクセスがありません。
</message>
diff --git a/indra/newview/skins/default/xui/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml
deleted file mode 100644
index 4e22d865fe..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_about.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="OVER [CAPITALIZED_APP_NAME]">
- <floater.string name="AboutHeader">
- [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
-[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
- </floater.string>
- <floater.string name="AboutCompiler">
- Gemaakt met [COMPILER] versie [COMPILER_VERSION]
- </floater.string>
- <floater.string name="AboutPosition">
- U bent op [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] gelegen op &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
-[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
- </floater.string>
- <floater.string name="AboutSystem">
- CPU: [CPU]
-Geheugen: [MEMORY_MB] MB
-OS Versie: [OS_VERSION]
-Grafische Kaard Vendor: [GRAPHICS_CARD_VENDOR]
-Grafische Kaard: [GRAPHICS_CARD]
- </floater.string>
- <floater.string name="AboutDriver">
- Windows Grafische Driver Versie: [GRAPHICS_DRIVER_VERSION]
- </floater.string>
- <floater.string name="AboutLibs">
- OpenGL Versie: [OPENGL_VERSION]
-
-libcurl Versie: [LIBCURL_VERSION]
-J2C Decoder Versie: [J2C_VERSION]
-Audio Driver Versie: [AUDIO_DRIVER_VERSION]
-Qt Webkit Versie: [QT_WEBKIT_VERSION]
-Vivox Versie: [VIVOX_VERSION]
- </floater.string>
- <floater.string name="none">
- (none)
- </floater.string>
- <floater.string name="AboutTraffic">
- Pakketten Verloren: [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="Kopiëren naar Klembord" name="copy_btn"/>
- </panel>
- <panel label="Credits" name="credits_panel">
- <text_editor name="credits_editor">
- Second Life wordt u aangeboden door Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others.
-
-Een &apos;Dank u&apos; voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
-
-
-
-To be a success in business, be daring, be first, be different. --Henry Marchant
- </text_editor>
- </panel>
- <panel label="Licenties" 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. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
-FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
-GL Copyright (C) 1999-2004 Brian Paul.
-Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
-jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
-jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
-ogg/vorbis Copyright (C) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
-SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
-zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
-
-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>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_about_land.xml b/indra/newview/skins/default/xui/nl/floater_about_land.xml
deleted file mode 100644
index f336e53e05..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_about_land.xml
+++ /dev/null
@@ -1,488 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="OVER LAND">
- <tab_container name="landtab">
- <panel label="Algemeen" name="land_general_panel">
- <text name="Name:">
- Naam:
- </text>
- <text name="Description:">
- Omschrijving:
- </text>
- <text name="LandType">
- Type:
- </text>
- <text name="LandTypeText" left="102">
- Mainland / Homestead
- </text>
- <text name="ContentRating" width="98">
- Inhoudscategorie:
- </text>
- <text name="ContentRatingText" left="102">
- Adult
- </text>
- <text name="Owner:">
- Eigenaar:
- </text>
- <text name="OwnerText" left="102" width="242"/>
- <button label="Profiel" name="Profile..."/>
- <text name="Group:">
- Groep:
- </text>
- <text left="102" name="GroupText" width="242"/>
- <button label="Instellen" name="Set..."/>
- <check_box label="Overdracht aan groep toestaan" name="check deed" tool_tip="Een groepofficier kan dit land aan de groep overdragen, zodat het ondersteund wordt door de landallocatie van de groep."/>
- <button label="Overdragen" name="Deed..." tool_tip="U mag alleen land overdragen indien u een officier bent in de geselecteerde groep."/>
- <check_box label="Eigenaar maakt bijdrage met overdracht" name="check contrib" tool_tip="Wanneer het land is overgedragen aan de groep, draagt de voormalig eigenaar voldoende landtoewijzing bij om het te ondersteunen."/>
- <text name="For Sale:">
- Te koop:
- </text>
- <text name="Not for sale.">
- Niet te koop.
- </text>
- <text name="For Sale: Price L$[PRICE].">
- Prijs: L$[PRICE] (L$[PRICE_PER_SQM]/m²).
- </text>
- <button label="Verkoop land" name="Sell Land..."/>
- <text name="For sale to">
- Te koop voor: [BUYER]
- </text>
- <text name="Sell with landowners objects in parcel.">
- Objecten opgenomen in verkoop
- </text>
- <text name="Selling with no objects in parcel.">
- Objecten niet opgenomen in verkoop
- </text>
- <button label="Annuleer landverkoop" label_selected="Annuleer landverkoop" name="Cancel Land Sale"/>
- <text name="Claimed:">
- Geclaimd:
- </text>
- <text name="DateClaimText">
- Tue Aug 15 13:47:25 2006
- </text>
- <text name="PriceLabel">
- Gebied:
- </text>
- <text name="PriceText">
- 4048 m²
- </text>
- <text name="Traffic:">
- Verkeer:
- </text>
- <text name="DwellText">
- 0
- </text>
- <button left="130" width="125" label="Koop land..." label_selected="Koop land..." name="Buy Land..."/>
- <button label="Koop voor groep" name="Buy For Group..."/>
- <button left="130" width="125" label="Koop toegangspas..." label_selected="Koop toegangspas..." name="Buy Pass..." tool_tip="Een toegangspas geeft u tijdelijk toegang tot dit land."/>
- <button label="Land Afstaan" name="Abandon Land..."/>
- <button label="Land terugvorderen" name="Reclaim Land..."/>
- <button label="Lindenverkoop" name="Linden Sale..." tool_tip="Land moet in bezit zijn, de inhoud moet ingesteld zijn en niet al ter veiling zijn aangeboden."/>
- <panel.string name="new users only">
- Alleen nieuwe gebruikers
- </panel.string>
- <panel.string name="anyone">
- Iedereen
- </panel.string>
- <panel.string name="area_text">
- Gebied
- </panel.string>
- <panel.string name="area_size_text">
- [AREA] m²
- </panel.string>
- <panel.string name="auction_id_text">
- Veiling ID: [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- U dient uw aankoop te goedkeuren voor u dit land kunt wijzigen.
- </panel.string>
- <panel.string name="group_owned_text">
- (Groepseigendom)
- </panel.string>
- <panel.string name="profile_text">
- Profiel...
- </panel.string>
- <panel.string name="info_text">
- Informatie...
- </panel.string>
- <panel.string name="public_text">
- (public)
- </panel.string>
- <panel.string name="none_text">
- (none)
- </panel.string>
- <panel.string name="sale_pending_text">
- (Verkoop bezig)
- </panel.string>
- <panel.string name="no_selection_text">
- Geen perceel geselecteerd. Ga naar Wereld menu &gt; Over land of selecteer een ander perceel om zijn details te tonen.
- </panel.string>
- </panel>
- <panel label="Convenant" name="land_covenant_panel">
- <text name="estate_section_lbl">
- Estate:
- </text>
- <text name="estate_name_lbl">
- Naam:
- </text>
- <text name="estate_name_text">
- mainland
- </text>
- <text name="estate_owner_lbl">
- Eigenaar:
- </text>
- <text name="estate_owner_text">
- (none)
- </text>
- <text_editor name="covenant_editor">
- Er is geen convenant voorzien voor dit estate.
- </text_editor>
- <text name="covenant_timestamp_text">
- Laatst gewijzigd Wed Dec 31 16:00:00 1969
- </text>
- <text name="region_section_lbl">
- Regio:
- </text>
- <text name="region_name_lbl">
- Naam:
- </text>
- <text name="region_name_text">
- leyla
- </text>
- <text name="region_landtype_lbl">
- Type:
- </text>
- <text name="region_landtype_text">
- Mainland / Homestead
- </text>
- <text name="region_maturity_lbl">
- Inhoudscategorie:
- </text>
- <text name="region_maturity_text">
- Adult
- </text>
- <text name="resellable_lbl">
- Doorverkopen:
- </text>
- <text name="resellable_clause">
- Land in deze regio mag niet worden doorverkocht.
- </text>
- <text name="changeable_lbl">
- Opsplitsen:
- </text>
- <text name="changeable_clause">
- Land in deze regio mag niet worden samengevoegd/opgesplitst.
- </text>
- <panel.string name="can_resell">
- Aangekocht land in deze regio mag worden doorverkocht.
- </panel.string>
- <panel.string name="can_not_resell">
- Aangekocht land in deze regio mag niet worden doorverkocht.
- </panel.string>
- <panel.string name="can_change">
- Aangekocht land in deze regio mag worden samengevoegd of
-opgedeeld.
- </panel.string>
- <panel.string name="can_not_change">
- Aangekocht land in deze regio mag niet worden samengevoegd
-of opgedeeld.
- </panel.string>
- </panel>
- <panel label="Objecten" name="land_objects_panel">
- <text name="parcel_object_bonus">
- Regio object bonus factor: [BONUS]
- </text>
- <text name="Simulator primitive usage:">
- Simulator primitieven gebruik:
- </text>
- <text name="objects_available">
- [COUNT] van [MAX] ([AVAILABLE] beschikbaar)
- </text>
- <panel.string name="objects_available_text">
- [COUNT] van [MAX] ([AVAILABLE] beschikbaar)
- </panel.string>
- <panel.string name="objects_deleted_text">
- [COUNT] van [MAX] ([DELETED] zullen worden verwijderd)
- </panel.string>
- <text name="Primitives parcel supports:">
- Primitieven ondersteund door perceel:
- </text>
- <text name="object_contrib_text">
- [COUNT]
- </text>
- <text name="Primitives on parcel:">
- Primitieven op perceel:
- </text>
- <text name="total_objects_text" >
- [COUNT]
- </text>
- <text name="Owned by parcel owner:" >
- Eigendom van perceeleigenaar:
- </text>
- <text name="owner_objects_text" >
- [COUNT]
- </text>
- <button label="Toon" label_selected="Toon" name="ShowOwner"/>
- <button label="Retourneren" name="ReturnOwner..." tool_tip="Retourneer objecten naar hun eigenaren."/>
- <text name="Set to group:" >
- Groep toewijzen:
- </text>
- <text name="group_objects_text" >
- [COUNT]
- </text>
- <button label="Toon" label_selected="Toon" name="ShowGroup"/>
- <button label="Retourneren" name="ReturnGroup..." tool_tip="Retourneer objecten naar hun eigenaren."/>
- <text name="Owned by others:">
- Eigendom van anderen:
- </text>
- <text name="other_objects_text" >
- [COUNT]
- </text>
- <button label="Toon" label_selected="Toon" name="ShowOther"/>
- <button label="Retourneren" name="ReturnOther..." tool_tip="Retourneer objecten naar hun eigenaren."/>
- <text name="Selected / sat upon:">
- Geselecteerd/Er op gezeten
- </text>
- <text name="selected_objects_text" >
- [COUNT]
- </text>
- <text name="Autoreturn">
- Objecten van andere inwoners automatisch retourneren (minuten):
- (0 om uit te schakelen)
- </text>
- <line_editor name="clean other time"/>
- <text name="Object Owners:">
- Objecteigenaren:
- </text>
- <button label="Ververs lijst" label_selected="Ververs lijst" name="Refresh List"/>
- <button label="Retourneer objecten" name="Return objects..."/>
- <name_list name="owner list">
- <column label="Type" name="type"/>
- <column label="Naam" name="name"/>
- <column label="Aantal" name="count"/>
- <column label="Meest recent" name="mostrecent"/>
- </name_list>
- </panel>
- <panel label="Opties" name="land_options_panel">
- <text name="allow_label">
- Andere inwoners toestaan te:
- </text>
- <check_box label="Terrein bewerken" name="edit land check" tool_tip="Indien aangevinkt, kan iedereen uw terrein bewerken. Het is het beste om dit uit te laten staan, omdat u zelf altijd uw eigen land kunt bewerken."/>
- <check_box label="Maak landmarkering" name="check landmark"/>
- <check_box label="Vliegen" name="check fly" tool_tip="Indien aangevinkt, kunnen inwoners op uw land vliegen. Indien niet aangevinkt, kunnen ze alleen het land binnenvliegen of eroverheen vliegen."/>
- <text name="allow_label2">
- Maak objecten:
- </text>
- <check_box label="Alle inwoners" name="edit objects check"/>
- <check_box label="Groep" name="edit group objects check"/>
- <text name="allow_label3">
- Objecten binnenlaten:
- </text>
- <check_box label="Alle inwoners" name="all object entry check"/>
- <check_box label="Groep" name="group object entry check"/>
- <text name="allow_label4">
- Scripts uitvoeren:
- </text>
- <check_box label="Alle inwoners" name="check other scripts"/>
- <check_box label="Groep" name="check group scripts"/>
- <text name="land_options_label">
- Landopties:
- </text>
- <check_box label="Veilig (geen letsel)" name="check safe" tool_tip="Indien aangevinkt, wordt het land op Veilig ingesteld, waarmee letselgevechten worden uitgeschakeld. Indien niet aangevinkt, is letsel ingeschakeld."/>
- <check_box label="Niet duwen" name="PushRestrictCheck" tool_tip="Weerhoudt scripts van duwen. Het aanvinken van deze optie kan handig zijn om storend gedrag op uw land te voorkomen."/>
- <check_box label="Toon plaats in Zoeken (L$30/week) onder" name="ShowDirectoryCheck" tool_tip="Laat mensen dit perceel zien in zoekresultaten."/>
- <panel.string name="search_enabled_tooltip">
- Laat mensen dit perceel zien in zoekresultaten
- </panel.string>
- <panel.string name="search_disabled_small_tooltip">
- Deze optie is uitgeschakeld, omdat dit gebied 128 m² of kleiner is. Alleen grote percelen kunnen worden opgenomen in Zoeken.
- </panel.string>
- <panel.string name="search_disabled_permissions_tooltip">
- Deze optie is uitgeschakeld omdat u de opties van dit perceel niet kunt wijzigen.
- </panel.string>
- <combo_box name="land category with adult">
- <combo_box.item name="item0" label="Alle Categorieën"
- />
- <combo_box.item name="item1" label="Linden locatie"
- />
- <combo_box.item name="item2" label="Adult"
- />
- <combo_box.item name="item3" label="Kunst &amp; Cultuur"
- />
- <combo_box.item name="item4" label="Zakelijk"
- />
- <combo_box.item name="item5" label="Educatief"
- />
- <combo_box.item name="item6" label="Spelen"
- />
- <combo_box.item name="item7" label="Ontmoetingsplaats"
- />
- <combo_box.item name="item8" label="Nieuwkomervriendelijk"
- />
- <combo_box.item name="item9" label="Parken &amp; natuur"
- />
- <combo_box.item name="item10" label="Woongebied"
- />
- <combo_box.item name="item11" label="Winkelen"
- />
- <combo_box.item name="item12" label="Anders"
- />
- </combo_box>
- <combo_box name="land category">
- <combo_box.item name="item0" label="Alle categorieën"
- />
- <combo_box.item name="item1" label="Linden Locatie"
- />
- <combo_box.item name="item3" label="Kunst &amp; Cultuur"
- />
- <combo_box.item name="item4" label="Zakelijk"
- />
- <combo_box.item name="item5" label="Educatief"
- />
- <combo_box.item name="item6" label="Spelen"
- />
- <combo_box.item name="item7" label="Ontmoetingsplaats"
- />
- <combo_box.item name="item8" label="Nieuwkomervriendelijk"
- />
- <combo_box.item name="item9" label="Parken &amp; Natuur"
- />
- <combo_box.item name="item10" label="Woongebied"
- />
- <combo_box.item name="item11" label="Winkelen"
- />
- <combo_box.item name="item12" label="Anders"
- />
- </combo_box>
- <button label="?" label_selected="?" name="?"/>
- <check_box label="Mature inhoud" name="MatureCheck" tool_tip=" "/>
- <panel.string name="mature_check_mature">
- Mature inhoud
- </panel.string>
- <panel.string name="mature_check_adult">
- Adult inhoud
- </panel.string>
- <panel.string name="mature_check_mature_tooltip">
- Uw perceelinformatie of -inhoud wordt beschouwd als mature.
- </panel.string>
- <panel.string name="mature_check_adult_tooltip">
- Uw perceelinformatie of -inhoud wordt beschouwd als adult.
- </panel.string>
- <text name="Snapshot:">
- Foto:
- </text>
- <texture_picker label="" name="snapshot_ctrl" tool_tip="Klik om een afbeelding te kiezen"/>
- <text name="landing_point">
- Landingsplaats: [LANDING]
- </text>
- <panel.string name="landing_point_none">
- (none)
- </panel.string>
- <button label="Instellen" label_selected="Instellen" name="Set" tool_tip="Stelt het landingspunt in waar bezoekers arriveren. Wordt ingesteld op uw avatar&apos;s positie binnen dit perceel."/>
- <button label="Opschonen" label_selected="Opschonen" name="Clear" tool_tip="Landingspunt leegmaken"/>
- <text name="Teleport Routing: ">
- Teleport routering:
- </text>
- <combo_box name="landing type" tool_tip="Teleport routering -- selecteer hoe teleports naar uw land moeten worden afgehandeld.">
- <combo_box.item name="Blocked" label="Geblokkeerd"
- />
- <combo_box.item name="LandingPoint" label="Landingsplaats"
- />
- <combo_box.item name="Anywhere" label="Overal"
- />
- </combo_box>
- <panel.string name="push_restrict_text">
- Niet duwen
- </panel.string>
- <panel.string name="push_restrict_region_text">
- Niet duwen (ingesteld op regio)
- </panel.string>
- </panel>
- <panel label="Media" name="land_media_panel">
- <text name="with media:">
- Media type:
- </text>
- <combo_box name="media type" tool_tip="Specificeer of de URL een film, webpagina of andere media is"/>
- <text name="at URL:">
- Media URL:
- </text>
- <button label="Instellen" name="set_media_url"/>
- <text name="Description:">
- Omschrijving:
- </text>
- <line_editor name="url_description" tool_tip="Tekst wordt naast afspelen/laden knop weergegeven"/>
- <text name="Media texture:">
- Vervang
-textuur:
- </text>
- <texture_picker label="" name="media texture" tool_tip="Klik om een afbeelding te kiezen"/>
- <text name="replace_texture_help">
- (Objecten die deze textuur gebruiken zullen de film
-of de webpagina tonen nadat u het afspelen-pijltje
-hebt geklikt.)
- </text>
- <text name="Options:">
- Media opties:
- </text>
- <check_box label="Automatisch schalen" name="media_auto_scale" tool_tip="Het aanvinken van deze optie zal de inhoud voor dit perceel automatisch schalen. Het kan enigszins trager zijn en de visuele kwaliteit kan iets lager zijn, maar er zal geen andere textuurschaling of uitlijning nodig zijn."/>
- <check_box label="Herhaal media" name="media_loop" tool_tip="Speel media af in een lus. Wanneer de media klaar is met afspelen zal het herstarten vanaf het begin."/>
- <text name="media_size" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard." width="120">
- Media grootte:
- </text>
- <spinner left_delta="90" name="media_size_width" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/>
- <spinner name="media_size_height" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/>
- <text name="pixels">
- pixels
- </text>
- <text name="MusicURL:">
- Muziek URL:
- </text>
- <text name="Sound:">
- Geluid:
- </text>
- <check_box label="Beperk gebaar- en objectgeluiden tot dit perceel" name="check sound local"/>
- <button label="?" label_selected="?" name="?"/>
- <text name="Voice settings:">
- Voice:
- </text>
- <check_box label="Voice inschakelen" name="parcel_enable_voice_channel"/>
- <check_box label="Voice inschakelen (ingesteld in Estate)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="Beperk voice tot dit perceel" name="parcel_enable_voice_channel_parcel"/>
- </panel>
- <panel label="Toegang" name="land_access_panel">
- <text name="Limit access to this parcel to:">
- Toegang tot dit perceel
- </text>
- <check_box label="Publieke toegang toestaan" name="public_access"/>
- <text name="Only Allow">
- Blokkeer toegang door:
- </text>
- <check_box label="Inwoners die geen betalingsinformatie hebben gegeven aan Linden Lab" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/>
- <check_box label="Inwoners die geen leeftijdgeverifieerde volwassenen zijn" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie."/>
- <panel.string name="estate_override">
- Een of meer van deze opties is op estate-niveau ingesteld
- </panel.string>
- <check_box label="Groepstoegang toestaan: [GROUP]" name="GroupCheck" tool_tip="Stel de groep in op het tabblad Algemeen"/>
- <check_box label="Verkoop toegangspassen aan:" name="PassCheck" tool_tip="Tijdelijke toegang tot dit perceel toestaan"/>
- <combo_box name="pass_combo" left_delta="190">
- <combo_box.item name="Anyone" label="Iedereen"
- />
- <combo_box.item name="Group" label="Groep"
- />
- </combo_box>
- <spinner label="Prijs in L$:" name="PriceSpin" label_width="168" />
- <spinner label="Toegangsuren" name="HoursSpin" label_width="168" />
- <text label="Altijd toestaan" name="AllowedText">
- Toegestane inwoners
- </text>
- <name_list name="AccessList" tool_tip="([LISTED] vermeld, [MAX] max)"/>
- <button label="Toevoegen..." label_selected="Toevoegen..." name="add_allowed"/>
- <button label="Verwijderen" label_selected="Verwijderen" name="remove_allowed"/>
- <text label="Verbannen" name="BanCheck">
- Verbannen inwoners
- </text>
- <name_list name="BannedList" tool_tip="([LISTED] vermeld, [MAX] max)"/>
- <button label="Toevoegen..." label_selected="Toevoegen..." name="add_banned"/>
- <button label="Verwijderen" label_selected="Verwijderen" name="remove_banned"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_animation_preview.xml b/indra/newview/skins/default/xui/nl/floater_animation_preview.xml
deleted file mode 100644
index f4e9908150..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_animation_preview.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Animation Preview" title="">
- <text name="name_label">
- Naam:
- </text>
- <text name="description_label">
- Omschrijving:
- </text>
- <spinner label="Prioriteit" name="priority" tool_tip="Bepaalt welke andere animaties kunnen worden overschaduwd door deze animatie."/>
- <check_box label="Herhalen" name="loop_check" tool_tip="Laat deze animatie herhalen."/>
- <spinner label="In(%)" name="loop_in_point" tool_tip="Instellen punt in de animatie waar de herhaling begint."/>
- <spinner label="Uit(%)" name="loop_out_point" tool_tip="Instellen punt in in de animatie waar de herhaling eindigt."/>
- <text name="hand_label">
- Houding van Hand
- </text>
- <combo_box label="" left_delta="100" width="176" name="hand_pose_combo" tool_tip="Bepaalt wat handen doen tijdens een animatie." left="300">
- <combo_box.item name="Spread" label="Gespreid"/>
- <combo_box.item name="Relaxed" label="Ontspannen"/>
- <combo_box.item name="PointBoth" label="Wijzen Beide"/>
- <combo_box.item name="Fist" label="Vuist"/>
- <combo_box.item name="RelaxedLeft" label="Ontspannen Links"/>
- <combo_box.item name="PointLeft" label="Wijzen Links"/>
- <combo_box.item name="FistLeft" label="Vuist Links"/>
- <combo_box.item name="RelaxedRight" label="Ontspannen Rechts"/>
- <combo_box.item name="PointRight" label="Wijzen Rechts"/>
- <combo_box.item name="FistRight" label="Vuist Rechts"/>
- <combo_box.item name="SaluteRight" label="Salueren Rechts"/>
- <combo_box.item name="Typing" label="Typen"/>
- <combo_box.item name="PeaceRight" label="Peace Rechts"/>
- </combo_box>
- <text name="emote_label">
- Expressie
- </text>
- <combo_box label="" left_delta="100" width="176" name="emote_combo" tool_tip="Bepaalt wat het gezicht doet tijdens de animatie.">
- <combo_box.item name="[None]" label="Geen]"/>
- <combo_box.item name="Aaaaah" label="Aaaaah"/>
- <combo_box.item name="Afraid" label="Bang"/>
- <combo_box.item name="Angry" label="Boos"/>
- <combo_box.item name="BigSmile" label="Brede Lach"/>
- <combo_box.item name="Bored" label="Verveeld"/>
- <combo_box.item name="Cry" label="Huilen"/>
- <combo_box.item name="Disdain" label="Minachting"/>
- <combo_box.item name="Embarrassed" label="Beschaamd"/>
- <combo_box.item name="Frown" label="Frons"/>
- <combo_box.item name="Kiss" label="Kus"/>
- <combo_box.item name="Laugh" label="Lachen"/>
- <combo_box.item name="Plllppt" label="Plllppt"/>
- <combo_box.item name="Repulsed" label="Afkeer"/>
- <combo_box.item name="Sad" label="Verdrietig"/>
- <combo_box.item name="Shrug" label="Onverschillig"/>
- <combo_box.item name="Smile" label="Glimlach"/>
- <combo_box.item name="Surprise" label="Verrassing"/>
- <combo_box.item name="Wink" label="Knipoog"/>
- <combo_box.item name="Worry" label="Bezorgd"/>
- </combo_box>
- <text name="preview_label">
- Voorvertoning
- </text>
- <combo_box label="" left_delta="100" width="176" name="preview_base_anim" tool_tip="Gebruik dit om het gedrag van uw animatie te testen terwijl uw avatar veelvoorkomende acties uitvoert.">
- <combo_box.item name="Standing" label="Staand"/>
- <combo_box.item name="Walking" label="Lopend"/>
- <combo_box.item name="Sitting" label="Zittend"/>
- <combo_box.item name="Flying" label="Vliegend"/>
- </combo_box>
- <spinner label="Invloeitijd (sec)" label_width="125" name="ease_in_time" tool_tip="Hoeveelheid tijd (in seconden) waarover animaties invloeien." width="192"/>
- <spinner bottom_delta="-20" label="Uitvloeitijd (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Hoeveelheid tijd (in seconden) waarover animaties uitvloeien." width="192"/>
- <button bottom_delta="-32" label="" name="play_btn" tool_tip="Start/pauzeer uw animatie."/>
- <button label="" name="stop_btn" tool_tip="Stop het afspelen van Uw animatie"/>
- <text name="bad_animation_text">
- Niet in staat om het animatiebestand te lezen. Wij
-raden u aan bestanden te gebruiken die vanuit
-Poser 4 zijn geëxporteerd.
- </text>
- <button label="Annuleren" name="cancel_btn"/>
- <button label="Upload (L$[AMOUNT])" name="ok_btn" width="140" left_delta="-155"/>
- <string name="failed_to_initialize">
- Het initialiseren van de beweging is mislukt.
- </string>
- <string name="anim_too_long">
- het animatiebestand heeft een lengte van [LENGTH] seconden. De maximale lengte van een animatie is [MAX_LENGTH] seconden.
- </string>
- <string name="failed_file_read">
- Kan animatiebestand niet lezen. [STATUS]
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_auction.xml b/indra/newview/skins/default/xui/nl/floater_auction.xml
deleted file mode 100644
index 611024699b..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_auction.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_auction" title="START LINDEN LAND VERKOOP">
- <check_box label="Voeg geel selectie kader toe" name="fence_check"/>
- <button label="Foto" label_selected="Foto" name="snapshot_btn"/>
- <button label="OK" label_selected="OK" name="ok_btn"/>
- <string name="already for sale">
- U kunt geen percelen veilen die al te koop staan.
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/nl/floater_avatar_picker.xml
deleted file mode 100644
index 260cc8e98f..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_avatar_picker.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatarpicker" title="KIES INWONER">
- <tab_container name="ResidentChooserTabs">
- <panel label="Zoeken" name="SearchPanel">
- <text name="InstructSearchResidentName">
- Type een deel van de naam van de inwoner:
- </text>
- <button label="Zoek" label_selected="Zoek" name="Find"/>
- </panel>
- <panel label="Visitekaartjes" name="CallingCardsPanel">
- <text name="InstructSelectCallingCard">
- Selecteer een visitekaartje:
- </text>
- </panel>
- <panel label="In mijn buurt" name="NearMePanel">
- <text name="InstructSelectResident">
- Selecteer een inwoner
-in de buurt:
- </text>
- <button label="Vernieuw lijst" label_selected="Ververs lijst" name="Refresh"/>
- <slider label="Afstand" name="near_me_range" bottom_delta="-36"/>
- <text name="meters">
- Meters
- </text>
- <scroll_list bottom_delta="-169" height="159" name="NearMe" />
- </panel>
- </tab_container>
- <button label="Selecteer" label_selected="Selecteer" name="Select"/>
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
- <string name="not_found">
- &apos;[TEXT]&apos; niet gevonden
- </string>
- <string name="no_one_near">
- Niemand in de buurt
- </string>
- <string name="no_results">
- Geen resultaten
- </string>
- <string name="searching">
- Zoeken...
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/nl/floater_avatar_textures.xml
deleted file mode 100644
index a44db95b5b..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_avatar_textures.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatar_texture_debug" title="AVATAR TEXTUREN">
- <text name="baked_label">
- Baked texturen
- </text>
- <text name="composite_label">
- Samengestelde texturen
- </text>
- <texture_picker label="Hoofd" name="baked_head"/>
- <texture_picker label="Make-up" name="head_bodypaint"/>
- <texture_picker label="Haar" name="hair"/>
- <button label="Dump" label_selected="Dump" name="Dump"/>
- <texture_picker label="Ogen" name="baked_eyes"/>
- <texture_picker label="Oog" name="eye_texture"/>
- <texture_picker label="Bovenlichaam" name="baked_upper_body"/>
- <texture_picker label="Bovenlichaam tatoeage" name="upper_bodypaint"/>
- <texture_picker label="Onderhemd" name="undershirt"/>
- <texture_picker label="Handschoenen" name="gloves"/>
- <texture_picker label="Hemd" name="shirt"/>
- <texture_picker label="Bovenkant jas" name="upper_jacket"/>
- <texture_picker label="Onderlichaam" name="baked_lower_body"/>
- <texture_picker label="Onderlichaam tatoeage" name="lower_bodypaint"/>
- <texture_picker label="Onderbroek" name="underpants"/>
- <texture_picker label="Sokken" name="socks"/>
- <texture_picker label="Schoenen" name="shoes"/>
- <texture_picker label="Broek" name="pants"/>
- <texture_picker label="Jas" name="jacket"/>
- <texture_picker label="Rok" name="baked_skirt"/>
- <texture_picker label="Rok" name="skirt_texture"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_beacons.xml b/indra/newview/skins/default/xui/nl/floater_beacons.xml
deleted file mode 100644
index ecc485e354..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_beacons.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="BAKENS">
- <panel name="beacons_panel">
- <check_box label="Gescripte objecten met alleen Aanraken" name="touch_only"/>
- <check_box label="Gescripte objecten" name="scripted"/>
- <check_box label="Fysieke objecten" name="physical"/>
- <check_box label="Geluidsbronnen" name="sounds"/>
- <check_box label="Particlebronnen" name="particles"/>
- <check_box label="Markeringen weergeven" name="highlights"/>
- <check_box label="Bakens weergeven" name="beacons"/>
- <text name="beacon_width_label">
- Bakenbreedte:
- </text>
- </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_build_options.xml b/indra/newview/skins/default/xui/nl/floater_build_options.xml
deleted file mode 100644
index 53b60167bb..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_build_options.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="GRID OPTIES">
- <spinner label="Grid eenheid (meters)" name="GridResolution" width="180" label_width="122"/>
- <spinner label="Grid extensies (meters)" name="GridDrawSize" width="180" label_width="122"/>
- <check_box label="Sub-eenheid snap Inschakelen" name="GridSubUnit"/>
- <check_box label="Toon dwarsdoorsnede" name="GridCrossSection"/>
- <slider label="Grid opaakheid" name="GridOpacity"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml
deleted file mode 100644
index 5374ffc26a..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="BULK WIJZIGEN INHOUD PERMISSIES">
- <text name="applyto">
- Inhoud Typen
- </text>
- <check_box label="Animatie" name="check_animation"/>
- <check_box label="Lichaamsdelen" name="check_bodypart"/>
- <check_box label="Kleding" name="check_clothing"/>
- <check_box label="Gebaren" name="check_gesture"/>
- <check_box label="Landmarkeringen" name="check_landmark"/>
- <check_box label="Notitiekaarten" name="check_notecard"/>
- <check_box label="Objecten" name="check_object"/>
- <check_box label="Scripts" name="check_script"/>
- <check_box label="Geluiden" name="check_sound"/>
- <check_box label="Texturen" name="check_texture"/>
- <button label="Alles aanvinken" label_selected="Alles" name="check_all"/>
- <button label="Alles ontvinken" label_selected="Geen" name="check_none"/>
- <text name="newperms">
- Nieuwe permissies
- </text>
- <check_box label="Delen met groep" name="share_with_group"/>
- <check_box label="Iedereen mag kopiëren" name="everyone_copy"/>
- <text name="NextOwnerLabel">
- Volgende eigenaar kan:
- </text>
- <check_box label="Wijzigen" name="next_owner_modify"/>
- <check_box label="Kopiëren" name="next_owner_copy"/>
- <check_box label="Verkopen/Weggeven" name="next_owner_transfer"/>
- <button label="Help" name="help"/>
- <button label="Toepassen" name="apply"/>
- <button label="Sluiten" name="close"/>
- <string name="nothing_to_modify_text">
- Selectie bevat geen bewerkbare inhoud.
- </string>
- <string name="status_text">
- Permissies instellen op [NAME]
- </string>
- <string name="start_text">
- Starten permissie wijzigings verzoeken...
- </string>
- <string name="done_text">
- Beïndigd permissie wijzigings verzoeken.
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_bumps.xml b/indra/newview/skins/default/xui/nl/floater_bumps.xml
deleted file mode 100644
index 516b59658d..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_bumps.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_bumps" title="BOTSINGEN, DUWEN &amp; SLAAN">
- <string name="none_detected">
- Geen gedetecteerd
- </string>
- <string name="bump">
- [TIME] [NAME] botste tegen u aan
- </string>
- <string name="llpushobject">
- [TIME] [NAME] duwde u met een script
- </string>
- <string name="selected_object_collide">
- [TIME] [NAME] raakte u met een object
- </string>
- <string name="scripted_object_collide">
- [TIME] [NAME] raakte u met een gescript object
- </string>
- <string name="physical_object_collide">
- [TIME] [NAME] raakte u met een fysiek object
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_contents.xml b/indra/newview/skins/default/xui/nl/floater_buy_contents.xml
deleted file mode 100644
index 4c0ff7d04a..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_contents.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_buy_contents" title="KOOP INHOUD">
- <text name="contains_text">
- [NAME] bevat:
- </text>
- <text name="buy_text">
- Koop voor L$[AMOUNT] van [NAME]?
- </text>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn" width="73"/>
- <button label="Koop" label_selected="Koop" name="buy_btn"/>
- <check_box label="Draag kleding nu" name="wear_check"/>
- <string name="no_copy_text">
- (niet kopiëren)
- </string>
- <string name="no_modify_text">
- (niet wijzigen)
- </string>
- <string name="no_transfer_text">
- (niet overdragen)
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_currency.xml b/indra/newview/skins/default/xui/nl/floater_buy_currency.xml
deleted file mode 100644
index 6ee5cc5341..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_currency.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="KOOP VALUTA">
- <text name="info_buying">
- Valuta kopen
- </text>
- <text name="info_cannot_buy">
- Kan nu niet kopen
- </text>
- <text name="info_need_more">
- U heeft meer valuta nodig:
- </text>
- <text name="error_message">
- Er klopt iets niet.
- </text>
- <button label="Ga naar website" name="error_web"/>
- <text name="contacting">
- Contact maken met Lindex…
- </text>
- <text name="buy_action_unknown">
- Koop L$ op de LindeX valutabeurs
- </text>
- <text name="buy_action">
- [NAME] L$ [PRICE]
- </text>
- <text name="currency_action" width="48">
- Koop L$
- </text>
- <line_editor name="currency_amt" left_delta="53" width="75">
- 1234
- </line_editor>
- <text name="currency_est" left_delta="80">
- voor ong. [LOCALAMOUNT]
- </text>
- <text name="getting_data">
- Data ophalen…
- </text>
- <text name="balance_label">
- U heeft momenteel
- </text>
- <text name="balance_amount">
- L$ [AMT]
- </text>
- <text name="buying_label">
- U koopt
- </text>
- <text name="buying_amount">
- L$ [AMT]
- </text>
- <text name="total_label">
- Uw saldo zal zijn:
- </text>
- <text name="total_amount">
- L$ [AMT]
- </text>
- <text name="purchase_warning_repurchase" right="-8">
- Het bevestigen van deze aankoop zal alleen de valuta
-kopen. U dient de bewerking opnieuw uit te voeren.
- </text>
- <text name="purchase_warning_notenough" right="-8">
- U koopt niet voldoende valuta.
-Verhoog de hoeveelheid die gekocht moet worden.
- </text>
- <button label="Annuleren" name="cancel_btn"/>
- <button label="Kopen" name="buy_btn"/>
- <string name="buy_currency">
- Koop L$ [LINDENS] voor ong. [LOCALAMOUNT]
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_land.xml b/indra/newview/skins/default/xui/nl/floater_buy_land.xml
deleted file mode 100644
index 04990e78db..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_land.xml
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy land" title="KOOP LAND">
- <text name="region_name_label">
- Regio:
- </text>
- <text name="region_name_text">
- (onbekend)
- </text>
- <text name="region_type_label">
- Type:
- </text>
- <text name="region_type_text">
- (onbekend)
- </text>
- <text name="estate_name_label">
- Estate:
- </text>
- <text name="estate_name_text">
- (onbekend)
- </text>
- <text name="estate_owner_label">
- Estate eigenaar:
- </text>
- <text name="estate_owner_text">
- (onbekend)
- </text>
- <text name="resellable_changeable_label">
- Aangekocht land in deze regio:
- </text>
- <text name="resellable_clause">
- Mag niet worden doorverkocht
- </text>
- <text name="changeable_clause">
- Mag niet worden samengevoegd/opgesplitst
- </text>
- <text name="covenant_text">
- U moet instemmen met het estate convenant:
- </text>
- <text left="470" name="covenant_timestamp_text"/>
- <text_editor name="covenant_editor">
- Laden...
- </text_editor>
- <check_box label="Ik ga akkoord met het hierboven &#10;beschreven convenant." name="agree_covenant"/>
- <text name="info_parcel_label">
- Perceel:
- </text>
- <text name="info_parcel">
- Scotopteryx 138,204
- </text>
- <text name="info_size_label">
- Grootte:
- </text>
- <text name="info_size">
- 1024 m²
- </text>
- <text name="info_price_label">
- Prijs:
- </text>
- <text name="info_price">
- L$ 1500
-(L$ 1.1/m²)
-verkocht met objecten
- </text>
- <text name="info_action">
- Het kopen van dit land zal:
- </text>
- <text name="error_message">
- Er is iets niet in orde.
- </text>
- <button label="Ga naar website" name="error_web"/>
- <text name="account_action">
- U upgraden naar een premium lidmaatschap
- </text>
- <text name="account_reason">
- Alleen premiumleden kunnen land bezitten.
- </text>
- <combo_box name="account_level">
- <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/maand, gefactureerd per maand"/>
- <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/maand, gefactureerd per kwartaal"/>
- <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/maand, gefactureerd per jaar"/>
- </combo_box>
- <text name="land_use_action">
- Verhoog uw maandelijkse landgebruikskosten tot US$ 40/maand
- </text>
- <text name="land_use_reason">
- U bezit 1309 m² land.
-Dit perceel omvat 512 m² land.
- </text>
- <text name="purchase_action">
- Betaal Joe Resident L$4000 voor het land
- </text>
- <text name="currency_reason">
- U heeft L$2,100.
- </text>
- <text name="currency_action">
- Koop extra L$
- </text>
- <line_editor name="currency_amt">
- 1000
- </line_editor>
- <text name="currency_est">
- voor ong. US$ [AMOUNT2]
- </text>
- <text name="currency_balance">
- U heeft L$2,100.
- </text>
- <check_box label="Verwijder [AMOUNT] vierkante meters van uw groepsbijdrage." name="remove_contribution"/>
- <button label="Aankopen" name="buy_btn"/>
- <button label="Annuleren" name="cancel_btn"/>
- <string name="can_resell">
- Mag worden doorverkocht.
- </string>
- <string name="can_not_resell">
- Mag niet worden doorverkocht.
- </string>
- <string name="can_change">
- Mag worden samengevoegd of opgedeeld.
- </string>
- <string name="can_not_change">
- Mag niet worden samengevoegd of opgedeeld.
- </string>
- <string name="cant_buy_for_group">
- U heeft geen permissie om land te kopen voor uw actieve groep.
- </string>
- <string name="no_land_selected">
- Geen land geselecteerd
- </string>
- <string name="multiple_parcels_selected">
- Meerdere verschillende percelen geselecteerd. Probeer een kleiner gebied te selecteren.
- </string>
- <string name="no_permission">
- U heeft geen permissie om land te kopen voor uw actieve groep.
- </string>
- <string name="parcel_not_for_sale">
- Het geselecteerde perceel is niet te koop.
- </string>
- <string name="group_already_owns">
- De groep is al eigenaar van het perceel.
- </string>
- <string name="you_already_own">
- U bent al eigenaar van het perceel
- </string>
- <string name="set_to_sell_to_other">
- Het geselecteerde perceel staat te koop voor een andere partij.
- </string>
- <string name="no_public_land">
- Het geselecteerde gebied heeft geen publiek land.
- </string>
- <string name="not_owned_by_you">
- Land dat het eigendom is van een andere gebruiker is geselecteerd. Probeer een kleiner gebied te selecteren.
- </string>
- <string name="processing">
- Uw aankoop wordt verwerkt...
-
-(Dit kan een minuut of twee duren.)
- </string>
- <string name="fetching_error">
- Er is een fout opgetreden tijdens het ophalen van informatie over het kopen van het land.
- </string>
- <string name="buying_will">
- Het kopen van dit land zal:
- </string>
- <string name="buying_for_group">
- Land voor groep kopen zal:
- </string>
- <string name="cannot_buy_now">
- Kan nu niet kopen:
- </string>
- <string name="not_for_sale">
- Niet te koop:
- </string>
- <string name="none_needed">
- geen benodigd
- </string>
- <string name="must_upgrade">
- Uw account moet geüpgrade worden om land te bezitten.
- </string>
- <string name="cant_own_land">
- Uw account kan land bezitten.
- </string>
- <string name="land_holdings">
- U bezit [BUYER] vierkante meters land.
- </string>
- <string name="pay_to_for_land">
- Betaal L$ [AMOUNT] aan [SELLER] voor dit land
- </string>
- <string name="buy_for_US">
- Koop L$ [AMOUNT] voor ong. US$ [AMOUNT2],
- </string>
- <string name="parcel_meters">
- Dit perceel is [AMOUNT] vierkante meters.
- </string>
- <string name="premium_land">
- Dit land is premium, en zal worden belast als [AMOUNT] vierkante meters.
- </string>
- <string name="discounted_land">
- Dit land is gedisconteerd, en zal worden belast als [AMOUNT] vierkante meters.
- </string>
- <string name="meters_supports_object">
- [AMOUNT] vierkante meter
-ondersteunt [AMOUNT2] objecten
- </string>
- <string name="sold_with_objects">
- verkocht met objecten
- </string>
- <string name="sold_without_objects">
- objecten niet inbegrepen
- </string>
- <string name="info_price_string">
- L$ [PRICE]
-(L$ [PRICE_PER_SQM]/m²)
-[SOLD_WITH_OBJECTS]
- </string>
- <string name="insufficient_land_credits">
- De groep [GROUP] heeft voldoende bijdrage van landgebruikcredits nodig om dit perceel te dekken voordat de aankoop kan worden afgerond.
- </string>
- <string name="have_enough_lindens">
- U heeft L$ [AMOUNT], wat genoeg is om dit land te kopen.
- </string>
- <string name="not_enough_lindens">
- U heeft slechts L$ [AMOUNT], en hebt L$ [AMOUNT2] meer nodig.
- </string>
- <string name="balance_left">
- Na de aankoop zult u nog L$ [AMOUNT] over hebben.
- </string>
- <string name="balance_needed">
- U dient minstens L$ [AMOUNT] te kopen om dit land te kunnen veroorloven.
- </string>
- <string name="no_parcel_selected">
- (geen perceel geselecteerd)
- </string>
- <string name="buy_currency">
- Koop L$ [AMOUNT] voor ong. US$ [USD]
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_object.xml b/indra/newview/skins/default/xui/nl/floater_buy_object.xml
deleted file mode 100644
index 5d2d9dd3d0..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_object.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="KOOP EEN KOPIE VAN OBJECT">
- <text name="contents_text">
- en zijn inhoud:
- </text>
- <text name="buy_text">
- Koop voor L$[AMOUNT] van [NAME]?
- </text>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
- <button label="Koop" label_selected="Koop" name="buy_btn"/>
- <string name="title_buy_text">
- Koop
- </string>
- <string name="title_buy_copy_text">
- Koop een kopie van
- </string>
- <string name="no_copy_text">
- (niet kopiëren)
- </string>
- <string name="no_modify_text">
- (niet wijzigen)
- </string>
- <string name="no_transfer_text">
- (niet overdragen)
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_camera.xml b/indra/newview/skins/default/xui/nl/floater_camera.xml
deleted file mode 100644
index 81a3ed8a58..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_camera.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Roteer camera rond focus
- </floater.string>
- <floater.string name="zoom_tooltip">
- Zoom camera naar focus
- </floater.string>
- <floater.string name="move_tooltip">
- Beweeg camera omhoog en omlaag, links en rechts
- </floater.string>
- <panel name="controls">
- <joystick_track name="cam_track_stick" tool_tip="Beweeg camera omhoog en omlaag, links en rechts"/>
- <joystick_zoom name="zoom" tool_tip="Zoom camera naar focus"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_choose_group.xml b/indra/newview/skins/default/xui/nl/floater_choose_group.xml
deleted file mode 100644
index 8d54d62d2d..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_choose_group.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="groups" title="GROEPEN">
- <text name="groupdesc">
- Kies een groep:
- </text>
- <button label="OK" label_selected="OK" name="OK"/>
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_color_picker.xml b/indra/newview/skins/default/xui/nl/floater_color_picker.xml
deleted file mode 100644
index 9b61af0710..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_color_picker.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="KLEURKIEZER">
- <text name="r_val_text">
- Rood:
- </text>
- <text name="g_val_text">
- Groen:
- </text>
- <text name="b_val_text">
- Blauw:
- </text>
- <text name="h_val_text">
- Hue:
- </text>
- <text name="s_val_text">
- Sat:
- </text>
- <text name="l_val_text">
- Lum:
- </text>
- <check_box label="Direct toepassen" name="apply_immediate"/>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
- <button label="Selecteer" label_selected="Selecteer" name="select_btn"/>
- <text name="Current color:">
- Huidige kleur:
- </text>
- <text name="(Drag below to save.)">
- (Sleep naar beneden
- om op te slaan)
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_critical.xml b/indra/newview/skins/default/xui/nl/floater_critical.xml
deleted file mode 100644
index 90790fe108..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_critical.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="">
- <button label="Doorgaan" label_selected="Doorgaan" name="Continue"/>
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
- <text name="tos_heading">
- Leest u alstublieft het volgende bericht zorgvuldig door.
- </text>
- <text_editor name="tos_text">
- TOS_TEXT
- </text_editor>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_event.xml b/indra/newview/skins/default/xui/nl/floater_event.xml
deleted file mode 100644
index 45ec58abdf..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_event.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- follows="all"
- height="400"
- can_resize="true"
- help_topic="event_details"
- label="Event"
- layout="topleft"
- name="Event"
- save_rect="true"
- save_visibility="false"
- title="EVENT DETAILS"
- width="600">
- <floater.string
- name="loading_text">
- Laden...
- </floater.string>
- <floater.string
- name="done_text">
- Done
- </floater.string>
- <web_browser
- trusted_content="true"
- follows="left|right|top|bottom"
- layout="topleft"
- left="10"
- name="browser"
- height="365"
- width="580"
- top="0"/>
- <text
- follows="bottom|left"
- height="16"
- layout="topleft"
- left_delta="0"
- name="status_text"
- top_pad="10"
- width="150" />
-</floater>
-
diff --git a/indra/newview/skins/default/xui/nl/floater_font_test.xml b/indra/newview/skins/default/xui/nl/floater_font_test.xml
deleted file mode 100644
index 31e53e7fba..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_font_test.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="LETTERTYPETEST">
- <text name="linea">
- Overschrijf test, zou hier moeten verschijnen als Times (vanuit default/xui/en-us).
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_gesture.xml b/indra/newview/skins/default/xui/nl/floater_gesture.xml
deleted file mode 100644
index 4fa994c69e..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_gesture.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gestures" title="ACTIEVE GEBAREN">
- <text name="help_label">
- Dubbelklik een gebaar om animaties en geluiden af te spelen
- </text>
- <scroll_list name="gesture_list">
- <column label="Trigger" name="trigger"/>
- <column label="Toets" name="shortcut"/>
- <column label="Naam" name="name"/>
- </scroll_list>
- <button label="Nieuw" name="new_gesture_btn"/>
- <button label="Bewerken" name="edit_btn"/>
- <button label="Afspelen" name="play_btn"/>
- <button label="Stop" name="stop_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/nl/floater_hardware_settings.xml
deleted file mode 100644
index b27a96f15c..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_hardware_settings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="HARDWARE INSTELLINGEN">
- <text name="Filtering:">
- Filtering:
- </text>
- <check_box label="Anisotropische filtering (langzamer indien ingeschakeld)" name="ani" left="100"/>
- <text name="Antialiasing:">
- Anti-alias:
- </text>
- <combo_box label="Anti-alias" name="fsaa" width="120" left="100">
- <combo_box.item name="FSAADisabled" label="Uitgeschakeld"/>
- <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>
- <spinner label="Gamma:" name="gamma" label_width="88" width="170"/>
- <text name="(brightness, lower is brighter)" left="182">
- (helderheid, lager is helderder, 0=gebruik standaardwaarde)
- </text>
- <text name="Enable VBO:">
- VBO inschakelen:
- </text>
- <check_box label="OpenGL Vertex Buffer Objects inschakelen" name="vbo" tool_tip="Dit inschakelen op moderne hardware geeft een prestatiewinst. Oudere hardware heeft echter vaak een slechte implementatie van VBO&apos;s en u kunt crashes ondervinden wanneer dit is ingeschakeld."/>
- <slider label="Textuurgeheugen (MB):" name="GrapicsCardTextureMemory" tool_tip="Hoeveelheid geheugen dat voor texturen toegewezen wordt. Standaard wordt de hoeveelheid geheugen van de videokaart gebruikt. Het verminderen van deze waarde kan de prestaties verbeteren, maar kan ook texturen wazig maken."/>
- <spinner label="Mistafstandsratio:" name="fog"/>
- <button label="OK" label_selected="OK" name="OK"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_hud.xml b/indra/newview/skins/default/xui/nl/floater_hud.xml
deleted file mode 100644
index 8ef7de1b02..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_hud.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_hud" title="HANDLEIDING"/>
diff --git a/indra/newview/skins/default/xui/nl/floater_image_preview.xml b/indra/newview/skins/default/xui/nl/floater_image_preview.xml
deleted file mode 100644
index 06596c20aa..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_image_preview.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Image Preview" title="">
- <text name="name_label">
- Naam:
- </text>
- <text name="description_label">
- Omschrijving:
- </text>
- <text name="preview_label">
- Toon voorbeeld van
-afbeelding als:
- </text>
- <combo_box label="Kledingtype" name="clothing_type_combo">
- <combo_box.item name="Image" label="Afbeelding"/>
- <combo_box.item name="Hair" label="Haar"/>
- <combo_box.item name="FemaleHead" label="Vrouwelijk hoofd"/>
- <combo_box.item name="FemaleUpperBody" label="Vrouwelijk bovenlichaam"/>
- <combo_box.item name="FemaleLowerBody" label="Vrouwelijk onderlichaam"/>
- <combo_box.item name="MaleHead" label="Mannelijk hoofd"/>
- <combo_box.item name="MaleUpperBody" label="Mannelijk onderlichaam"/>
- <combo_box.item name="MaleLowerBody" label="Mannelijk bovenlichaam"/>
- <combo_box.item name="Skirt" label="Rok"/>
- <combo_box.item name="SculptedPrim" label="Sculpted prim"/>
- </combo_box>
- <text name="bad_image_text">
- Kan afbeelding niet lezen.
-
-Probeer het op te slaan als een 24 bit Targa (.tga).
- </text>
- <check_box label="Gebruik verliesloze compressie" name="lossless_check"/>
- <button label="Annuleren" name="cancel_btn"/>
- <button label="Upload (L$[AMOUNT])" name="ok_btn" width="140"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inspect.xml b/indra/newview/skins/default/xui/nl/floater_inspect.xml
deleted file mode 100644
index 6a0885b57f..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_inspect.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="OBJECTEN INSPECTEREN">
- <scroll_list name="object_list" tool_tip="Selecteer een object van deze lijst om het in-wereld te markeren">
- <column label="Objectnaam" name="object_name"/>
- <column label="Eigenaar" name="owner_name"/>
- <column label="Maker" name="creator_name"/>
- <column label="Aanmaakdatum" name="creation_date"/>
- </scroll_list>
- <button label="Toon profiel eigenaar..." label_selected="" name="button owner" tool_tip="Bekijk het profiel van de eigenaar van het gemarkeerde object"/>
- <button label="Toon profiel maker..." label_selected="" name="button creator" tool_tip="Bekijk het profiel van de originele maker van het gemarkeerde object"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory.xml b/indra/newview/skins/default/xui/nl/floater_inventory.xml
deleted file mode 100644
index a69039d811..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_inventory.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory" title="INVENTARIS">
- <search_editor label="Typ hier om te zoeken" name="inventory search editor"/>
- <tab_container name="inventory filter tabs">
- <inventory_panel label="Alle items" name="All Items"/>
- <inventory_panel label="Recente items" name="Recent Items"/>
- </tab_container>
- <menu_bar name="Inventory Menu">
- <menu label="Bestand" name="File">
- <menu_item_call label="Open" name="Open"/>
- <menu_item_call label="Nieuw venster" name="New Window"/>
- <menu_item_call label="Toon filters" name="Show Filters"/>
- <menu_item_call label="Filters opnieuw instellen" name="Reset Current"/>
- <menu_item_call label="Alle mappen sluiten" name="Close All Folders"/>
- <menu_item_call label="Prullenbak legen" name="Empty Trash"/>
- </menu>
- <menu label="Maak" name="Create">
- <menu_item_call label="Nieuwe map" name="New Folder"/>
- <menu_item_call label="Nieuw script" name="New Script"/>
- <menu_item_call label="Nieuwe notitie" name="New Note"/>
- <menu_item_call label="Nieuw gebaar" name="New Gesture"/>
- <menu name="New Clothes">
- <menu_item_call label="Nieuw hemd" name="New Shirt"/>
- <menu_item_call label="Nieuwe broek" name="New Pants"/>
- <menu_item_call label="Nieuwe schoenen" name="New Shoes"/>
- <menu_item_call label="Nieuwe sokken" name="New Socks"/>
- <menu_item_call label="Nieuwe jas" name="New Jacket"/>
- <menu_item_call label="Nieuwe rok" name="New Skirt"/>
- <menu_item_call label="Nieuwe handschoenen" name="New Gloves"/>
- <menu_item_call label="Nieuw onderhemd" name="New Undershirt"/>
- <menu_item_call label="Nieuwe onderbroek" name="New Underpants"/>
- </menu>
- <menu name="New Body Parts">
- <menu_item_call label="Nieuwe postuur" name="New Shape"/>
- <menu_item_call label="Nieuwe huid" name="New Skin"/>
- <menu_item_call label="Nieuw haar" name="New Hair"/>
- <menu_item_call label="Nieuwe ogen" name="New Eyes"/>
- </menu>
- </menu>
- <menu label="Sorteren" name="Sort">
- <menu_item_check label="Op naam" name="By Name"/>
- <menu_item_check label="Op datum" name="By Date"/>
- <menu_item_check label="Mappen altijd op naam" name="Folders Always By Name"/>
- <menu_item_check label="Systeemmappen naar de bovenkant" name="System Folders To Top"/>
- </menu>
- </menu_bar>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
deleted file mode 100644
index 81a823acd4..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="item properties" title="INVENTARISITEM EIGENSCHAPPEN">
- <text name="LabelItemNameTitle">
- Naam:
- </text>
- <text name="LabelItemDescTitle">
- Omschrijving:
- </text>
- <text name="LabelCreatorTitle">
- Maker:
- </text>
- <button label="Profiel..." label_selected="" name="BtnCreator"/>
- <text name="LabelOwnerTitle">
- Eigenaar
- </text>
- <button label="Profiel..." label_selected="" name="BtnOwner"/>
- <text name="LabelAcquiredTitle">
- Verworven:
- </text>
- <text name="LabelAcquiredDate">
- Wed May 24 12:50:46 2006
- </text>
- <text name="OwnerLabel">
- U kunt:
- </text>
- <check_box label="Wijzigen" name="CheckOwnerModify"/>
- <check_box label="Kopiëren" name="CheckOwnerCopy"/>
- <check_box label="Doorverkopen/weggeven" name="CheckOwnerTransfer"/>
- <text name="BaseMaskDebug">
- B:
- </text>
- <text name="OwnerMaskDebug">
- E:
- </text>
- <text name="GroupMaskDebug">
- G:
- </text>
- <text name="EveryoneMaskDebug">
- I:
- </text>
- <text name="NextMaskDebug">
- V:
- </text>
- <check_box label="Delen met groep" name="CheckShareWithGroup"/>
- <check_box label="Iedereen mag kopiëren" name="CheckEveryoneCopy"/>
- <text name="NextOwnerLabel" width="130">
- Volgende eigenaar kan:
- </text>
- <check_box label="Wijzigen" name="CheckNextOwnerModify"/>
- <check_box label="Kopiëren" name="CheckNextOwnerCopy"/>
- <check_box label="Doorverkopen/weggeven" name="CheckNextOwnerTransfer"/>
- <text name="SaleLabel">
- Markeer item:
- </text>
- <check_box label="Te koop" name="CheckPurchase"/>
- <radio_group name="RadioSaleType">
- <radio_item name="radio" label="Origineel" />
- <radio_item name="radio2" label="Kopiëren" />
- </radio_group>
- <text name="TextPrice">
- Prijs: L$
- </text>
- <string name="unknown">
- (onbekend)
- </string>
- <string name="public">
- (public)
- </string>
- <string name="you_can">
- U kunt:
- </string>
- <string name="owner_can">
- Eigenaar kan:
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml
deleted file mode 100644
index 097ebda8b7..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS">
- <check_box label="Animatie" name="check_animation"/>
- <check_box label="Visitekaartjes" name="check_calling_card"/>
- <check_box label="Kleding" name="check_clothing"/>
- <check_box label="Gebaren" name="check_gesture"/>
- <check_box label="Landmarkeringen" name="check_landmark"/>
- <check_box label="Notitiekaarten" name="check_notecard"/>
- <check_box label="Objecten" name="check_object"/>
- <check_box label="Scripts" name="check_script"/>
- <check_box label="Geluiden" name="check_sound"/>
- <check_box label="Texturen" name="check_texture"/>
- <check_box label="Foto&apos;s" name="check_snapshot"/>
- <button label="Alles" label_selected="Alles" name="All"/>
- <button label="Geen" label_selected="Geen" name="None"/>
- <check_box label="Altijd mappen tonen" name="check_show_empty"/>
- <check_box label="Sinds logoff" name="check_since_logoff"/>
- <text name="- OR -">
- - OF -
- </text>
- <spinner label="Uren geleden" name="spin_hours_ago" width="144" label_width="80"/>
- <spinner label="Dagen geleden" name="spin_days_ago" width="144" label_width="80"/>
- <button label="Sluiten" label_selected="Sluiten" name="Close"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_joystick.xml b/indra/newview/skins/default/xui/nl/floater_joystick.xml
deleted file mode 100644
index 1d590dc1f3..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_joystick.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Joystick" title="JOYSTICK CONFIGURATIE">
- <check_box name="enable_joystick" width="80" label="Joystick inschakelen:"/>
- <text left="146" name="joystick_type" width="360"/>
- <spinner label="X-as mapping" name="JoystickAxis1"/>
- <spinner label="Y-as mapping" name="JoystickAxis2"/>
- <spinner label="Z-as mapping" name="JoystickAxis0"/>
- <spinner label="Stampen mapping" name="JoystickAxis4"/>
- <spinner label="Gieren mapping" name="JoystickAxis5"/>
- <spinner label="Rollen mapping" name="JoystickAxis3"/>
- <spinner label="Zoom mapping" name="JoystickAxis6"/>
- <check_box label="Directe zoom" name="ZoomDirect"/>
- <check_box label="3D Cursor" name="Cursor3D"/>
- <check_box label="Automatisch niveau" name="AutoLeveling"/>
- <text name="Control Modes:">
- Besturingsmodi:
- </text>
- <check_box name="JoystickAvatarEnabled" label="Avatar"/>
- <check_box name="JoystickBuildEnabled" label="Bouwen"/>
- <check_box name="JoystickFlycamEnabled" label="Vliegcamera"/>
- <text name="XScale">
- X schaal
- </text>
- <text name="YScale">
- Y schaal
- </text>
- <text name="ZScale">
- Z schaal
- </text>
- <text name="PitchScale">
- Stampen schaal
- </text>
- <text name="YawScale">
- Gieren schaal
- </text>
- <text name="RollScale">
- Rollen schaal
- </text>
- <text name="XDeadZone">
- X dode zone
- </text>
- <text name="YDeadZone">
- Y dode zone
- </text>
- <text name="ZDeadZone">
- Z dode zone
- </text>
- <text name="PitchDeadZone">
- Stampen dode zone
- </text>
- <text name="YawDeadZone">
- Gieren dode zone
- </text>
- <text name="RollDeadZone">
- Rollen dode zone
- </text>
- <text name="Feathering">
- Feathering
- </text>
- <text name="ZoomScale2">
- Zoomschaal
- </text>
- <text name="ZoomDeadZone">
- Zoom dode zone
- </text>
- <button label="SpaceNavigator standaardwaarden" name="SpaceNavigatorDefaults" width="200" font="SansSerifSmall"/>
- <button label="OK" label_selected="OK" name="ok_btn"/>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn" left_delta="110"/>
- <stat_view label="Joystick monitor" name="axis_view">
- <stat_bar label="As 0" name="axis0"/>
- <stat_bar label="As 1" name="axis1"/>
- <stat_bar label="As 2" name="axis2"/>
- <stat_bar label="As 3" name="axis3"/>
- <stat_bar label="As 4" name="axis4"/>
- <stat_bar label="As 5" name="axis5"/>
- </stat_view>
- <string name="NoDevice">
- Geen apparaat gedetecteerd
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_lagmeter.xml b/indra/newview/skins/default/xui/nl/floater_lagmeter.xml
deleted file mode 100644
index e3943c2470..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_lagmeter.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="LAG METER">
- <button label="" label_selected="" name="client_lagmeter" tool_tip="Client lag status"/>
- <text name="client">
- Client:
- </text>
- <text name="client_text">
- Normaal
- </text>
- <button label="" label_selected="" name="network_lagmeter" tool_tip="Netwerklag status"/>
- <text name="network">
- Netwerk:
- </text>
- <text name="network_text">
- Normaal
- </text>
- <button label="" label_selected="" name="server_lagmeter" tool_tip="Serverlag status"/>
- <text name="server">
- Server:
- </text>
- <text name="server_text">
- Normaal
- </text>
- <button label="?" name="server_help"/>
- <button label="&gt;&gt;" name="minimize"/>
- <string name="max_title_msg">
- Lag meter
- </string>
- <string name="max_width_px">
- 360
- </string>
- <string name="min_title_msg">
- Lag
- </string>
- <string name="min_width_px">
- 90
- </string>
- <string name="client_text_msg">
- Client
- </string>
- <string name="client_frame_rate_critical_fps">
- 10
- </string>
- <string name="client_frame_rate_warning_fps">
- 15
- </string>
- <string name="client_frame_time_window_bg_msg">
- Normaal, venster op achtergrond
- </string>
- <string name="client_frame_time_critical_msg">
- Client framerate onder [CLIENT_FRAME_RATE_CRITICAL]
- </string>
- <string name="client_frame_time_warning_msg">
- Client framerate tussen [CLIENT_FRAME_RATE_CRITICAL] en [CLIENT_FRAME_RATE_WARNING]
- </string>
- <string name="client_frame_time_normal_msg">
- Normaal
- </string>
- <string name="client_draw_distance_cause_msg">
- Mogelijke oorzaak: Zichtbereik te hoog ingesteld
- </string>
- <string name="client_texture_loading_cause_msg">
- Mogelijke oorzaak: Afbeeldingen worden geladen
- </string>
- <string name="client_texture_memory_cause_msg">
- Mogelijke oorzaak: Teveel afbeeldingen in geheugen
- </string>
- <string name="client_complex_objects_cause_msg">
- Mogelijke oorzaak: Teveel complexe objecten in de scene
- </string>
- <string name="network_text_msg">
- Netwerk
- </string>
- <string name="network_packet_loss_critical_pct">
- 10
- </string>
- <string name="network_packet_loss_warning_pct">
- 5
- </string>
- <string name="network_packet_loss_critical_msg">
- Verbinding verliest meer dan [NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten
- </string>
- <string name="network_packet_loss_warning_msg">
- Verbinding verliest [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten
- </string>
- <string name="network_performance_normal_msg">
- Normaal
- </string>
- <string name="network_ping_critical_ms">
- 600
- </string>
- <string name="network_ping_warning_ms">
- 300
- </string>
- <string name="network_ping_critical_msg">
- Verbinding pingtijd is meer dan [NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_ping_warning_msg">
- Verbinding pingtijd is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
- </string>
- <string name="network_packet_loss_cause_msg">
- Mogelijk slechte verbinding of &apos;Bandbreedte&apos; voorkeur te hoog.
- </string>
- <string name="network_ping_cause_msg">
- Mogelijk slechte verbinding of applicatie voor bestandsdeling.
- </string>
- <string name="server_text_msg">
- Server
- </string>
- <string name="server_frame_rate_critical_fps">
- 20
- </string>
- <string name="server_frame_rate_warning_fps">
- 30
- </string>
- <string name="server_single_process_max_time_ms">
- 20
- </string>
- <string name="server_frame_time_critical_msg">
- Simulator framerate onder [SERVER_FRAME_RATE_CRITICAL]
- </string>
- <string name="server_frame_time_warning_msg">
- Simulator framerate tussen [SERVER_FRAME_RATE_CRITICAL] en [SERVER_FRAME_RATE_WARNING]
- </string>
- <string name="server_frame_time_normal_msg">
- Normaal
- </string>
- <string name="server_physics_cause_msg">
- Mogelijke oorzaak: Teveel fysieke objecten
- </string>
- <string name="server_scripts_cause_msg">
- Mogelijke oorzaak: Teveel gescripte objecten
- </string>
- <string name="server_net_cause_msg">
- Mogelijke oorzaak: Teveel netwerkverkeer
- </string>
- <string name="server_agent_cause_msg">
- Mogelijke oorzaak: Teveel mensen verplaatsen zich in de regio
- </string>
- <string name="server_images_cause_msg">
- Mogelijke oorzaak: Teveel afbeeldingberekeningen
- </string>
- <string name="server_generic_cause_msg">
- Mogelijke oorzaak: Simulatorbelasting is te hoog
- </string>
- <string name="smaller_label">
- &gt;&gt;
- </string>
- <string name="bigger_label">
- &lt;&lt;
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_land_holdings.xml b/indra/newview/skins/default/xui/nl/floater_land_holdings.xml
deleted file mode 100644
index 5cf66ed0c4..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_land_holdings.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="MIJN LAND">
- <scroll_list name="parcel list">
- <column label="Perceelnaam" name="name"/>
- <column label="Regio" name="location"/>
- <column label="Type" name="type"/>
- <column label="Gebied" name="area"/>
- </scroll_list>
- <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport naar het centrum van dit land."/>
- <button label="Toon op kaart" label_selected="Toon op kaart" name="Show on Map" tool_tip="Toon dit land op de wereldkaart"/>
- <text name="contrib_label">
- Bijdragen aan uw groepen:
- </text>
- <scroll_list name="grant list">
- <column label="Groep" name="group"/>
- <column label="Gebied" name="area"/>
- </scroll_list>
- <text name="allowed_label">
- Toegestane landbezittingen in het huidige betaalschema:
- </text>
- <text name="allowed_text">
- [AREA] m²
- </text>
- <text name="current_label">
- Huidige landbezittingen:
- </text>
- <text name="current_text">
- [AREA] m²
- </text>
- <text name="available_label">
- Beschikbaar voor landaankopen:
- </text>
- <text name="available_text">
- [AREA] m²
- </text>
- <string name="area_string">
- [AREA] m²
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml
deleted file mode 100644
index 98a0362ce1..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="SCRIPT: NIEUW SCRIPT">
- <button label="Herstarten" label_selected="Herstarten" name="Reset"/>
- <check_box label="Uitvoeren" name="running" left="4"/>
- <check_box label="Mono" name="mono"/>
- <string name="not_allowed">
- U bent niet bevoegd om dit script in te zien
- </string>
- <string name="script_running">
- Uitvoeren
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml
deleted file mode 100644
index 27b3ff834e..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="LSL WIKI">
- <check_box label="Volg cursor" name="lock_check"/>
- <combo_box label="Vergrendelen" name="history_combo"/>
- <button label="Terug" name="back_btn"/>
- <button label="Vooruit" name="fwd_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_map.xml b/indra/newview/skins/default/xui/nl/floater_map.xml
deleted file mode 100644
index 29af36e50c..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_map.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
- <floater.string name="mini_map_north">
- N
- </floater.string>
- <floater.string name="mini_map_east">
- O
- </floater.string>
- <floater.string name="mini_map_west">
- W
- </floater.string>
- <floater.string name="mini_map_south">
- Z
- </floater.string>
- <floater.string name="mini_map_southeast">
- ZO
- </floater.string>
- <floater.string name="mini_map_northeast">
- NO
- </floater.string>
- <floater.string name="mini_map_southwest">
- ZW
- </floater.string>
- <floater.string name="mini_map_northwest">
- NW
- </floater.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="O" name="floater_map_east" text="O">
- O
- </text>
- <text label="W" name="floater_map_west" text="W">
- W
- </text>
- <text label="Z" name="floater_map_south" text="Z">
- Z
- </text>
- <text label="ZO" name="floater_map_southeast" text="ZO">
- ZO
- </text>
- <text label="NO" name="floater_map_northeast" text="NO">
- NO
- </text>
- <text label="ZW" name="floater_map_southwest" text="ZW">
- ZW
- </text>
- <text label="NW" name="floater_map_northwest" text="NW">
- NW
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_media_browser.xml b/indra/newview/skins/default/xui/nl/floater_media_browser.xml
deleted file mode 100644
index 12f693bf33..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_media_browser.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIA VERKENNER">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Terug" name="back"/>
- <button label="Vooruit" name="forward"/>
- <button label="Herladen" name="reload"/>
- <button label="Ga" name="go"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Stuur huidige URL naar perceel" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Open in mijn webbrowser" name="open_browser"/>
- <check_box label="Altijd in mijn webbrowser openen" name="open_always"/>
- <button label="Sluiten" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml
deleted file mode 100644
index d0b25587b6..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="GEHEUGENLEK SIMULATIE">
- <spinner label="Leksnelheid (bytes per frame):" name="leak_speed"/>
- <spinner label="Max gelekt geheugen (MB):" name="max_leak"/>
- <text name="total_leaked_label">
- Huidig gelekt geheugen: [SIZE] KB
- </text>
- <text name="note_label_1">
- [NOTE1]
- </text>
- <text name="note_label_2">
- [NOTE2]
- </text>
- <button label="Start" name="start_btn"/>
- <button label="Stop" name="stop_btn"/>
- <button label="Vrijgeven" name="release_btn"/>
- <button label="Sluiten" name="close_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_moveview.xml b/indra/newview/skins/default/xui/nl/floater_moveview.xml
deleted file mode 100644
index 8a6a874e49..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_moveview.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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="Draai links"/>
- <button label="" label_selected="" name="turn right btn" tool_tip="Draai rechts"/>
- <button label="" label_selected="" name="move up btn" tool_tip="Spring of vlieg omhoog"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Kruip of vlieg omlaag"/>
- <joystick_slide name="slide left btn" tool_tip="Verplaats links"/>
- <joystick_slide name="slide right btn" tool_tip="Verplaats rechts"/>
- <joystick_turn name="forward btn" tool_tip="Verplaats vooruit"/>
- <joystick_turn name="backward btn" tool_tip="Verplaats achteruit"/>
-</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_mute_object.xml b/indra/newview/skins/default/xui/nl/floater_mute_object.xml
deleted file mode 100644
index edea63b42c..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_mute_object.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="BLOKKEER VOORWERP BIJ NAAM">
- <text bottom_delta="-40" name="message">
- Blokkeer een Voorwerp:
- </text>
- <line_editor bottom_delta="-58" name="object_name">
- Object naam
- </line_editor>
- <text name="note">
- * Blokkeerd alleen object tekst, niet de geluiden
- </text>
- <button label="Ok" name="OK"/>
- <button label="Annuleren" name="Cancel"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_openobject.xml b/indra/newview/skins/default/xui/nl/floater_openobject.xml
deleted file mode 100644
index 832c63403d..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_openobject.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="objectcontents" title="OBJECT INHOUD">
- <text name="object_name">
- [DESC]:
- </text>
- <button label="Kopiëren naar inventaris" label_selected="Kopiëren naar inventaris" name="copy_to_inventory_button" width="140"/>
- <button label="Kopiëren en dragen" label_selected="Kopiëren en dragen" name="copy_and_wear_button" left="164"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_pay.xml b/indra/newview/skins/default/xui/nl/floater_pay.xml
deleted file mode 100644
index f2b34d78d7..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_pay.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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="Betaal" label_selected="Betaal" name="pay btn"/>
- <button label="Annuleren" label_selected="Annuleren" name="cancel btn"/>
- <text name="payee_label" width="100">
- Betaal inwoner:
- </text>
- <text name="payee_name" left="110">
- Test Name That Is Extremely Long To Check Clipping
- </text>
- <text name="fastpay text">
- Snel betalen:
- </text>
- <text name="amount text">
- Bedrag:
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_pay_object.xml b/indra/newview/skins/default/xui/nl/floater_pay_object.xml
deleted file mode 100644
index 11fa6d4a44..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_pay_object.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Give Money" title="">
- <text name="payee_group" left="5" width="90" halign="left">
- Betaal groep:
- </text>
- <text name="payee_resident" left="5" width="90" halign="left">
- Betaal inwoner:
- </text>
- <text name="payee_name" left="100" width="200">
- Ericacita Moostopolison
- </text>
- <text name="object_name_label" left="5" width="90" halign="left">
- Via object:
- </text>
- <text name="object_name_text" left="100" width="200">
- ...
- </text>
- <text name="fastpay text" halign="left">
- Snel betalen:
- </text>
- <text name="amount text">
- Bedrag:
- </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="Betaal" label_selected="Betaal" name="pay btn"/>
- <button label="Annuleren" label_selected="Annuleren" name="cancel btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml
deleted file mode 100644
index f946c42678..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="perm prefs" title="STANDAARD UPLOAD PERMISSIES">
- <panel label="Permissies" name="permissions">
- <button label="?" label_selected="?" name="help"/>
- <check_box label="Delen met groep" name="share_with_group"/>
- <check_box label="Iedereen mag kopiëren" name="everyone_copy"/>
- <text name="NextOwnerLabel">
- Volgende eigenaar kan:
- </text>
- <check_box label="Wijzigen" name="next_owner_modify"/>
- <check_box label="Kopiëren" name="next_owner_copy"/>
- <check_box label="Verkopen/weggeven" name="next_owner_transfer" left_delta="80"/>
- </panel>
- <button label="OK" label_selected="OK" name="ok"/>
- <button label="Annuleren" label_selected="Annuleren" name="cancel"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_post_process.xml b/indra/newview/skins/default/xui/nl/floater_post_process.xml
deleted file mode 100644
index e627f81a70..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="NABEWERKINGINSTELLINGEN">
- <tab_container name="Post-Process Tabs">
- <panel label="Kleurfilter" name="wmiColorFilterPanel">
- <check_box label="Inschakelen" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- Helderheid
- </text>
- <text name="wmiColorFilterSaturationText">
- Verzadiging
- </text>
- <text name="wmiColorFilterContrastText">
- Contrast
- </text>
- <text name="wmiColorFilterBaseText">
- Contrastbasiskleur
- </text>
- <slider label="R" name="wmiColorFilterBaseR"/>
- <slider label="G" name="wmiColorFilterBaseG"/>
- <slider label="B" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="Nachtvisie" name="wmiNightVisionPanel">
- <check_box label="Inschakelen" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- Lichtversterking
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Ruisgrootte
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Ruissterkte
- </text>
- </panel>
- <panel label="Bloom" name="wmiBloomPanel">
- <check_box label="Inschakelen" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- Lichtsterkte extractie
- </text>
- <text name="wmiBloomSizeText">
- Bloom-grootte
- </text>
- <text name="wmiBloomStrengthText">
- Bloom-sterkte
- </text>
- </panel>
- <panel label="Extra&apos;s" name="Extras">
- <button label="LaadEffect" label_selected="LaadEffect" name="PPLoadEffect"/>
- <button label="Effect opslaan" label_selected="Effect opslaan" name="PPSaveEffect"/>
- <line_editor label="Effectnaam" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_postcard.xml b/indra/newview/skins/default/xui/nl/floater_postcard.xml
deleted file mode 100644
index c2d092fdd4..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_postcard.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="EMAIL FOTO">
- <text name="to_label">
- Ontvanger e-mail:
- </text>
- <text name="from_label">
- Uw e-mail:
- </text>
- <text name="name_label">
- Uw naam:
- </text>
- <text name="subject_label">
- Onderwerp:
- </text>
- <line_editor label="Type hier uw onderwerp." name="subject_form"/>
- <text name="msg_label">
- Bericht:
- </text>
- <text_editor name="msg_form">
- Type hier uw bericht.
- </text_editor>
- <text name="fine_print">
- Indien uw ontvanger deelneemt aan SL, zult u een verwijzingsbonus ontvangen.
- </text>
- <button label="Annuleren" name="cancel_btn"/>
- <button label="Verzenden" name="send_btn"/>
- <string name="default_subject">
- Ansichtkaart uit [SECOND_LIFE]
- </string>
- <string name="default_message">
- Kom dit zien!
- </string>
- <string name="upload_message">
- Verzenden...
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preferences.xml b/indra/newview/skins/default/xui/nl/floater_preferences.xml
deleted file mode 100644
index 6fc8005fd2..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_preferences.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Preferences" title="VOORKEUREN">
- <button label="OK" label_selected="OK" name="OK"/>
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
- <button label="Toepassen" label_selected="Toepassen" name="Apply"/>
- <button label="Over" label_selected="Over" name="About..."/>
- <button label="Help" label_selected="Help" name="Help"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_animation.xml b/indra/newview/skins/default/xui/nl/floater_preview_animation.xml
deleted file mode 100644
index 0634452d96..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_animation.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_anim">
- <text name="desc txt">
- Omschrijving:
- </text>
- <button label="Afspelen in wereld" label_selected="Stop" name="Anim play btn" tool_tip="Speel deze animatie af, zodat anderen hem kunnen zien." width="120"/>
- <button label="Lokaal afspelen" label_selected="Stop" name="Anim audition btn" tool_tip="Speel deze animatie af, zodat alleen u hem kunt zien." width="110"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml
deleted file mode 100644
index c6b301841a..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gesture_preview">
- <string name="stop_txt">
- Stop
- </string>
- <string name="preview_txt">
- Voorbeeld
- </string>
- <string name="none_text">
- -- Geen --
- </string>
- <text name="desc_label">
- Omschrijving:
- </text>
- <text name="trigger_label">
- Trigger:
- </text>
- <text name="replace_text" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein &apos;hallo&apos; vervang door &apos;hoi&apos; zal de chat &apos;Ik wilde hallo zeggen&apos; veranderen in &apos;Ik wilde hoi zeggen&apos;, waarbij tevens het gebaar afgespeeld zal worden!">
- Vervangen door:
- </text>
- <line_editor name="replace_editor" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein &apos;hallo&apos; vervang door &apos;hoi&apos; zal de chat &apos;Ik wilde hallo zeggen&apos; veranderen in &apos;Ik wilde hoi zeggen&apos;, waarbij tevens het gebaar afgespeeld zal worden."/>
- <text name="key_label">
- Snelkoppeling toets:
- </text>
- <combo_box label="Geen" name="modifier_combo" left="136" width="56"/>
- <combo_box label="Geen" name="key_combo" width="56"/>
- <text name="library_label">
- Bibliotheek:
- </text>
- <text name="steps_label">
- Stappen:
- </text>
- <scroll_list name="library_list" width="94">
- Animatie
-Geluid
-Chat
-Wacht
- </scroll_list>
- <button label="Toevoegen &gt;&gt;" name="add_btn" left="124" width="87"/>
- <button label="Beweeg omhoog" name="up_btn" width="106" left_delta="-9"/>
- <button label="Beweeg omlaag" name="down_btn" width="106"/>
- <button label="Verwijderen" name="delete_btn" width="84" left_delta="9"/>
- <scroll_list left="226" name="step_list" width="205" />
- <text name="help_label">
- Alle stappen gebeuren tegelijkertijd,
-tenzij u wachtstappen toevoegt.
- </text>
- <text left="230" name="options_text" width="200" />
- <radio_group name="animation_trigger_type">
- <radio_item name="start" label="Start" />
- <radio_item name="stop" label="Stop" />
- </radio_group>
- <check_box label="tot alle animaties zijn afgelopen" name="wait_anim_check"/>
- <check_box label="tijd in seconden" name="wait_time_check"/>
- <check_box label="Actief" name="active_check" tool_tip="Actieve gebaren kunnen worden gestart door het zeggen van hun startseinwoorden of door het indrukken van hun sneltoetsen. Gebaren worden gewoonlijk inactief wanneer er een conflict is in de koppeling van de sneltoetsen"/>
- <button label="Voorbeeld" name="preview_btn"/>
- <button label="Opslaan" name="save_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/nl/floater_preview_notecard.xml
deleted file mode 100644
index f97d1fe6ba..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_notecard.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="NEUS">
- <button label="Opslaan" label_selected="Opslaan" name="Save"/>
- <text name="desc txt">
- Omschrijving:
- </text>
- <text_editor name="Notecard Editor">
- Laden…
- </text_editor>
- <string name="no_object">
- Kan object dat deze notitie bevat niet vinden.
- </string>
- <string name="not_allowed">
- U heeft geen toestemming om deze notitie te bekijken
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_sound.xml b/indra/newview/skins/default/xui/nl/floater_preview_sound.xml
deleted file mode 100644
index f168f3ed32..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_sound.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_sound">
- <text name="desc txt">
- Omschrijving:
- </text>
- <button label="Lokaal afspelen" label_selected="Lokaal afspelen" name="Sound audition btn" tool_tip="Speel dit geluid of zodat alleen u het kunt horen."/>
- <button label="In wereld afspelen" label_selected="In wereld afspelen" name="Sound play btn" tool_tip="Speel dit geluid of zodat anderen het kunnen horen."/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_texture.xml b/indra/newview/skins/default/xui/nl/floater_preview_texture.xml
deleted file mode 100644
index c4a06b7b6f..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_texture.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_texture">
- <text name="desc txt">
- Omschrijving:
- </text>
- <text name="dimensions">
- Afmetingen: [WIDTH] x [HEIGHT]
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_region_info.xml b/indra/newview/skins/default/xui/nl/floater_region_info.xml
deleted file mode 100644
index 0a98da3b4e..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_region_info.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="regioninfo" title="REGIO/ESTATE"/>
diff --git a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml b/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
deleted file mode 100644
index a50773c2b3..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_report_abuse" title="MISBRUIK RAPPORTEREN">
- <floater.string name="Screenshot">
- Schermafbeelding
- </floater.string>
- <check_box label="Gebruik deze schermafbeelding" name="screen_check"/>
- <text name="reporter_title" width="110">
- Rapporteur:
- </text>
- <text left_delta="70" name="reporter_field">
- Loremipsum Dolorsitamut Longnamez
- </text>
- <text name="sim_title">
- Regio:
- </text>
- <text left_delta="70" name="sim_field">
- Regionaam
- </text>
- <text name="pos_title">
- Positie:
- </text>
- <text left_delta="70" name="pos_field">
- {128.1, 128.1, 15.4}
- </text>
- <text name="select_object_label">
- Klik de knop, vervolgens het misbruik voorwerp:
- </text>
- <button label="" label_selected="" name="pick_btn" tool_tip="Objectkiezer - Identificeer een object als het onderwerp van dit rapport"/>
- <text name="object_name_label">
- voorwerp:
- </text>
- <text name="object_name" width="120">
- Consetetur Sadipscing
- </text>
- <text name="owner_name_label">
- Eigenaar:
- </text>
- <text name="owner_name">
- Hendrerit Vulputate Kamawashi Longname
- </text>
- <combo_box name="category_combo" tool_tip="Categorie -- selecteer de categorie die dit rapport het best beschrijft">
- <combo_box.item label="Selecteer categorie" name="Select_category"/>
- <combo_box.item label="Leeftijd &gt; Leeftijd spelen" name="Age__Age_play"/>
- <combo_box.item label="Leeftijd &gt; Volwassen inwoner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
- <combo_box.item label="Leeftijd &gt; Minderjarige inwoner buiten Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
- <combo_box.item label="Aanval &gt; Gevechtszandbak / onveilig gebied" name="Assault__Combat_sandbox___unsafe_area"/>
- <combo_box.item label="Aanval &gt; Veilig gebied" name="Assault__Safe_area"/>
- <combo_box.item label="Aanval &gt; Zandbak voor het testen van wapens" name="Assault__Weapons_testing_sandbox"/>
- <combo_box.item label="Handel &gt; Product of dienst is niet geleverd" name="Commerce__Failure_to_deliver_product_or_service"/>
- <combo_box.item label="Openbaring &gt; Echte wereld informatie" name="Disclosure__Real_world_information"/>
- <combo_box.item label="Openbaring &gt; Op afstand chat afluisteren" name="Disclosure__Remotely_monitoring chat"/>
- <combo_box.item label="Openbaring &gt; Second Life informatie/chat/IMs" name="Disclosure__Second_Life_information_chat_IMs"/>
- <combo_box.item label="Vredebreuk &gt; Oneerlijk gebruik van regiomiddelen" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
- <combo_box.item label="Vredebreuk &gt; Excessieve gescripte objecten" name="Disturbing_the_peace__Excessive_scripted_objects"/>
- <combo_box.item label="Vredebreuk &gt; Objecten laten rondslingeren" name="Disturbing_the_peace__Object_littering"/>
- <combo_box.item label="Vredebreuk &gt; Herhaalde spam" name="Disturbing_the_peace__Repetitive_spam"/>
- <combo_box.item label="Vredebreuk &gt; Ongewenste reclame-spam" name="Disturbing_the_peace__Unwanted_advert_spam"/>
- <combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
- <combo_box.item label="Fraude &gt; Land" name="Fraud__Land"/>
- <combo_box.item label="Fraude &gt; Piramideschema of kettingbrief" name="Fraud__Pyramid_scheme_or_chain_letter"/>
- <combo_box.item label="Fraude &gt; US$" name="Fraud__US$"/>
- <combo_box.item label="Intimidatie &gt; Reclameverzamelingen / visuele spam" name="Harassment__Advert_farms___visual_spam"/>
- <combo_box.item label="Intimidatie &gt; Individuen of groepen in diskrediet brengen" name="Harassment__Defaming_individuals_or_groups"/>
- <combo_box.item label="Intimidatie &gt; Beweging verhinderen" name="Harassment__Impeding_movement"/>
- <combo_box.item label="Intimidatie &gt; Seksuele intimidatie" name="Harassment__Sexual_harassment"/>
- <combo_box.item label="Intimidatie &gt; Anderen uitnodigen/aanzetten tot het schenden van de ToS" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
- <combo_box.item label="Intimidatie &gt; Verbaal misbruik" name="Harassment__Verbal_abuse"/>
- <combo_box.item label="Onfatsoenlijkheid &gt; Globaal beledigende inhoud of gedrag" name="Indecency__Broadly_offensive_content_or_conduct"/>
- <combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste avatar naam" name="Indecency__Inappropriate_avatar_name"/>
- <combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een PG regio" name="Indecency__Mature_content_in_PG_region"/>
- <combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een Mature regio" name="Indecency__Inappropriate_content_in_Mature_region"/>
- <combo_box.item label="Inbreuk op intellectueel eigendom &gt; Verwijderen van inhoud" name="Intellectual_property_infringement_Content_Removal"/>
- <combo_box.item label="Inbreuk op intellectueel eigendom &gt; CopyBot of misbruik van permissies" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
- <combo_box.item label="Intolerantie" name="Intolerance"/>
- <combo_box.item label="Land &gt; Misbruik van zandbakmiddelen" name="Land__Abuse_of_sandbox_resources"/>
- <combo_box.item label="Land &gt; Indringing &gt; Objecten/texturen" name="Land__Encroachment__Objects_textures"/>
- <combo_box.item label="Land &gt; Indringing &gt; Particles" name="Land__Encroachment__Particles"/>
- <combo_box.item label="Land &gt; Indringing &gt; Bomen/planten" name="Land__Encroachment__Trees_plants"/>
- <combo_box.item label="Weddenschappen/gokken" name="Wagering_gambling"/>
- <combo_box.item label="Anders" name="Other"/>
- </combo_box>
- <text name="abuser_name_title">
- Misbruikernaam:
- </text>
- <button label="Kies inwoner" label_selected="" name="select_abuser" tool_tip="Selecteer de naam van de misbruiker uit een lijst"/>
- <text name="abuser_name_title2">
- Locatie van misbruik:
- </text>
- <text name="sum_title">
- Samenvatting:
- </text>
- <text name="dscr_title">
- Details:
- </text>
- <text name="bug_aviso">
- Wees zo specifiek mogelijk
- </text>
- <text name="incomplete_title">
- Let Op: Onvolledige verslagen zullen niet worden onderzocht
- </text>
- <button label="Misbruik rapporteren" label_selected="Misbruik rapporteren" name="send_btn"/>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_debug.xml b/indra/newview/skins/default/xui/nl/floater_script_debug.xml
deleted file mode 100644
index 15e57f30d6..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_debug.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="script debug floater" title="Script waarschuwing/fout">
- <tab_container name="Preview Tabs">
- <floater label="Script" name="all_scripts" title="[ALL SCRIPTS]"/>
- </tab_container>
-</multi_floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_preview.xml b/indra/newview/skins/default/xui/nl/floater_script_preview.xml
deleted file mode 100644
index bd57e27b77..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_preview.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview lsl text" title="SCRIPT: ROTATIESCRIPT">
- <text name="desc txt">
- Omschrijving:
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_queue.xml b/indra/newview/skins/default/xui/nl/floater_script_queue.xml
deleted file mode 100644
index f79ad8faf3..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_queue.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="VOORTGANG OPNIEUW INSTELLEN">
- <button label="Sluiten" label_selected="Sluiten" name="close"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_search.xml b/indra/newview/skins/default/xui/nl/floater_script_search.xml
deleted file mode 100644
index cf502c6f4d..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_search.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script search" title="SCRIPT ZOEKEN">
- <check_box label="Niet hoofdlettergevoelig" name="case_text"/>
- <button label="Zoeken" label_selected="Zoeken" name="search_btn" left="4"/>
- <button label="Vervangen" label_selected="Vervangen" name="replace_btn" left="100"/>
- <button label="Alles vervangen" label_selected="Alles vervangen" name="replace_all_btn" width="100" left="196"/>
- <text name="txt">
- Zoeken
- </text>
- <text name="txt2" width="130">
- Vervangen
- </text>
- <line_editor left="65" name="search_text" width="230" />
- <line_editor left="65" name="replace_text" width="230" />
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_select_key.xml b/indra/newview/skins/default/xui/nl/floater_select_key.xml
deleted file mode 100644
index c8daa10ab6..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_select_key.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="">
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
- <text name="Save item as:" left="12" width="220">
- Druk op een toets om die te selecteren
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_sell_land.xml b/indra/newview/skins/default/xui/nl/floater_sell_land.xml
deleted file mode 100644
index 468a383cfc..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_sell_land.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sell land" title="VERKOOP LAND">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- Perceel:
- </text>
- <text name="info_parcel">
- PERCEEL NAAM
- </text>
- <text name="info_size_label">
- Grootte:
- </text>
- <text name="info_size">
- [AREA] m²
- </text>
- <text height="28" name="info_action" bottom_delta="-57">
- Om dit perceel te
-verkopen:
- </text>
- <icon bottom_delta="-86" name="step_price" />
- <text name="price_label">
- Stel een prijs in:
- </text>
- <text name="price_text">
- Kies een geschikte prijs voor dit land.
- </text>
- <text name="price_ld">
- L$
- </text>
- <text name="price_per_m">
- (L$[PER_METER] per vierkante meter)
- </text>
- <text name="sell_to_label">
- Verkoop het land aan:
- </text>
- <text name="sell_to_text">
- Kies of u aan iedereen wil verkopen of een specifieke koper.
- </text>
- <combo_box name="sell_to">
- <combo_box.item name="--selectone--" label="selecteer een --"/>
- <combo_box.item name="Anyone" label="Iedereen"/>
- <combo_box.item name="Specificuser:" label="Specifieke gebruiker:"/>
- </combo_box>
- <button label="Selecteren..." name="sell_to_select_agent"/>
- <text name="sell_objects_label">
- Verkoop de objecten samen met het land?
- </text>
- <text name="sell_objects_text">
- Overdraagbare objecten die eigendom zijn van de landeigenaar
-zullen van eigenaar veranderen.
- </text>
- <radio_group name="sell_objects" bottom_delta="-58">
- <radio_item name="no" label="Nee, behoud het eigendom van objecten" />
- <radio_item name="yes" label="Ja, verkoop objecten met het land" />
- </radio_group>
- <button label="Toon objecten" name="show_objects"/>
- <text name="nag_message_label">
- ONTHOUD: Alle verkopen zijn definitief.
- </text>
- <button label="Zet het land te koop" name="sell_btn"/>
- <button label="Annuleren" name="cancel_btn"/>
- </panel>
- </scroll_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_settings_debug.xml b/indra/newview/skins/default/xui/nl/floater_settings_debug.xml
deleted file mode 100644
index 4d95f0a828..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_settings_debug.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="DEBUG INSTELLINGEN">
- <combo_box name="boolean_combo">
- <combo_box.item name="TRUE" label="TRUE"/>
- <combo_box.item name="FALSE" label="FALSE"/>
- </combo_box>
- <color_swatch label="Kleur" 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="Opnieuw instellen naar standaard" name="default_btn" width="210"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_snapshot.xml b/indra/newview/skins/default/xui/nl/floater_snapshot.xml
deleted file mode 100644
index 251f3690da..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_snapshot.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="FOTOVOORBEELD">
- <text name="type_label">
- Fotobestemming
- </text>
- <radio_group label="Fototype" name="snapshot_type_radio">
- <radio_item name="postcard" label="Verzend via e-mail" />
- <radio_item name="texture" label="Opslaan in uw inventaris (L$[AMOUNT])" />
- <radio_item name="local" label="Opslaan op uw harde schijf" />
- </radio_group>
- <text name="file_size_label">
- Bestandsgrootte: [SIZE] KB
- </text>
- <button label="Ververs foto" name="new_snapshot_btn"/>
- <button label="Verzenden" name="send_btn"/>
- <button label="Opslaan (L$[AMOUNT])" name="upload_btn"/>
- <flyout_button label="Opslaan" name="save_btn" tool_tip="Afbeelding in een bestand opslaan">
- <flyout_button_item name="save_item" label="Opslaan"/>
- <flyout_button_item name="saveas_item" label="Opslaan als..."/>
- </flyout_button>
- <button label="Annuleren" name="discard_btn"/>
- <button label="Meer &gt;&gt;" name="more_btn" tool_tip="Geavanceerde opties"/>
- <button label="&lt;&lt; Minder" name="less_btn" tool_tip="Geavanceerde opties"/>
- <text name="type_label2">
- Grootte
- </text>
- <text name="format_label">
- Formaat
- </text>
- <combo_box label="Resolutie" name="postcard_size_combo">
- <combo_box.item name="CurrentWindow" label="Huidig venster"/>
- <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="Aangepast"/>
- </combo_box>
- <combo_box label="Resolutie" name="texture_size_combo">
- <combo_box.item name="CurrentWindow" label="Huidig venster"/>
- <combo_box.item name="Small(128x128)" label="Klein (128x128)"/>
- <combo_box.item name="Medium(256x256)" label="Middel (256x256)"/>
- <combo_box.item name="Large(512x512)" label="Groot (512x512)"/>
- <combo_box.item name="Custom" label="Aangepast"/>
- </combo_box>
- <combo_box label="Resolutie" name="local_size_combo">
- <combo_box.item name="CurrentWindow" label="Huidig venster"/>
- <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="Aangepast"/>
- </combo_box>
- <combo_box label="Formaat" 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>
- <spinner label="Breedte" name="snapshot_width" label_width="48" width="100"/>
- <spinner label="Hoogte" name="snapshot_height" label_width="41" width="95" left="114"/>
- <check_box label="Beperk verhoudingen" name="keep_aspect_check"/>
- <slider label="Afbeeldingkwaliteit" name="image_quality_slider"/>
- <text name="layer_type_label" width="100">
- Vastleggen:
- </text>
- <combo_box label="Afbeeldingslagen" name="layer_types" width="130" left="76">
- <combo_box.item name="Colors" label="Kleuren"/>
- <combo_box.item name="Depth" label="Diepte"/>
- <combo_box.item name="ObjectMattes" label="Object matheid"/>
- </combo_box>
- <check_box label="Toon interface in foto" name="ui_check"/>
- <check_box label="Toon HUD objecten in foto" name="hud_check"/>
- <check_box label="Open houden na opslaan" name="keep_open_check"/>
- <check_box label="Frame bevriezen" name="freeze_frame_check"/>
- <check_box label="Automatisch verversen" name="auto_snapshot_check"/>
- <string name="unknown">
- onbekend
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_sound_preview.xml b/indra/newview/skins/default/xui/nl/floater_sound_preview.xml
deleted file mode 100644
index 13cb832d57..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_sound_preview.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Sound Preview" title="SOUND.WAV">
- <text name="name_label">
- Naam:
- </text>
- <text name="description_label">
- Omschrijving:
- </text>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
- <button label="Upload (L$[AMOUNT])" label_selected="Upload (L$[AMOUNT])" name="ok_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_stats.xml b/indra/newview/skins/default/xui/nl/floater_stats.xml
deleted file mode 100644
index 0db3f76735..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_stats.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="STATISTIEKEN">
- <scroll_container name="statistics_scroll">
- <container_view name="statistics_view">
- <stat_view label="Basis" name="basic">
- <stat_bar label="FPS" name="fps"/>
- <stat_bar label="Bandbreedte" name="bandwidth"/>
- <stat_bar label="Pakket Verlies" name="packet_loss"/>
- <stat_bar label="Ping Sim" name="ping"/>
- </stat_view>
- <stat_view label="Geavanceerd" name="advanced">
- <stat_view label="Weergeven" name="render">
- <stat_bar label="KTris Tekenen" name="ktrisframe"/>
- <stat_bar label="KTris Tekenen" name="ktrissec"/>
- <stat_bar label="Totaal Voorwerpen" name="objs"/>
- <stat_bar label="Nieuwe Voorwerpen" name="newobjs"/>
- </stat_view>
- <stat_view label="Textuur" 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="Netwerk" name="network">
- <stat_bar label="Pakketten In" name="packetsinstat"/>
- <stat_bar label="Pakketten Uit" name="packetsoutstat"/>
- <stat_bar label="Voorwerpen" name="objectkbitstat"/>
- <stat_bar label="Textuur" name="texturekbitstat"/>
- <stat_bar label="Bezit" name="assetkbitstat"/>
- <stat_bar label="Lagen" name="layerskbitstat"/>
- <stat_bar label="Daadwerkelijk In" name="actualinkbitstat"/>
- <stat_bar label="Daadwerkelijk Out" name="actualoutkbitstat"/>
- <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
- </stat_view>
- </stat_view>
- <stat_view label="Simulator" name="sim">
- <stat_bar label="Tijd Dilatatie" 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="Voorwerpen" name="simobjects"/>
- <stat_bar label="Actieve Voorwerpen" name="simactiveobjects"/>
- <stat_bar label="Actieve Scripts" name="simactivescripts"/>
- <stat_bar label="Actieve Evenementen" name="simscripteps"/>
- <stat_bar label="Pakketten In" name="siminpps"/>
- <stat_bar label="Pakketten Uit" name="simoutpps"/>
- <stat_bar label="Wachtende Downloads" name="simpendingdownloads"/>
- <stat_bar label="Wachtende Uploads" name="simpendinguploads"/>
- <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
- </stat_view>
- <stat_view label="Tijd (ms)" name="simperf">
- <stat_bar label="Totale Frame Tijd" name="simframemsec"/>
- <stat_bar label="Net Time" name="simnetmsec"/>
- <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
- <stat_bar label="Simulatie Tijd" name="simsimothermsec"/>
- <stat_bar label="Agent Tijd" name="simagentmsec"/>
- <stat_bar label="Plaatjes Tijd" name="simimagesmsec"/>
- <stat_bar label="Script Tijd" name="simscriptmsec"/>
- </stat_view>
- </stat_view>
- </container_view>
- </scroll_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_telehub.xml b/indra/newview/skins/default/xui/nl/floater_telehub.xml
deleted file mode 100644
index 7b745d967c..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_telehub.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="telehub" title="TELEHUB" width="292">
- <text name="status_text_connected">
- Telehub verbonden met object [OBJECT]
- </text>
- <text name="status_text_not_connected">
- Geen telehub verbonden.
- </text>
- <text name="help_text_connected">
- Om te verwijderen, klik Verbinding verbreken
- </text>
- <text name="help_text_not_connected">
- Selecteer objecten klik Verbind telehub
- </text>
- <button label="Verbind telehub" name="connect_btn"/>
- <button label="Verbinding verbreken" name="disconnect_btn" width="128"/>
- <text name="spawn_points_text">
- Spawnpunten (posities, niet objecten):
- </text>
- <scroll_list bottom_delta="-44" draw_border="true" follows="left|top"
- height="40" left="10" multi_select="false" name="spawn_points_list"
- width="230" />
-
- <button label="Spawn toevoegen" name="add_spawn_point_btn"/>
- <button label="Verwijder Spawn" name="remove_spawn_point_btn"/>
- <text name="spawn_point_help" width="290">
- Selecteer object en klik Toevoegen om positie
-te specificeren. U kunt het object daarna verplaatsen
-of verwijderen. Posities zijn relatief ten opzichte
-van het middelpunt van de telehub. Selecteer een
-item in de lijst om de positie in de wereld te tonen.
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml
deleted file mode 100644
index c8caa8caf4..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="KIES: TEXTUUR">
- <string name="choose_picture">
- Klik om een afbeelding te kiezen
- </string>
- <text name="Multiple">
- Meerdere
- </text>
- <text name="unknown">
- Afmetingen: [DIMENSIONS]
- </text>
- <button label="Standaard" label_selected="Standaard" name="Default" width="70"/>
- <button label="Geen" label_selected="Geen" name="None" left="80"/>
- <button label="Blanco" label_selected="Blanco" name="Blank"/>
- <check_box label="Toon mappen" name="show_folders_check"/>
- <search_editor label="Type hier om te zoeken" name="inventory search editor"/>
- <check_box label="Direct toepassen" name="apply_immediate_check"/>
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
- <button label="Selecteren" label_selected="Selecteren" name="Select"/>
- <string name="pick title">
- Kies:
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_tools.xml b/indra/newview/skins/default/xui/nl/floater_tools.xml
deleted file mode 100644
index 98339383e4..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_tools.xml
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" title="" short_title="BOUWEN" height="592">
- <button label="" label_selected="" name="button focus" tool_tip="Focus"/>
- <button label="" label_selected="" name="button move" tool_tip="Verplaats"/>
- <button label="" label_selected="" name="button edit" tool_tip="Bewerk"/>
- <button label="" label_selected="" name="button create" tool_tip="Maak"/>
- <button label="" label_selected="" name="button land" tool_tip="Land"/>
- <radio_group name="focus_radio_group">
- <radio_item label="Zoom" name="radio zoom"/>
- <radio_item label="Roteren (Ctrl)" name="radio orbit"/>
- <radio_item label="Verplaatsen (Ctrl-Shift)" name="radio pan"/>
- </radio_group>
- <radio_group name="move_radio_group">
- <radio_item label="Verplaatsen" name="radio move"/>
- <radio_item label="Optillen (Ctrl)" name="radio lift"/>
- <radio_item label="Roteren (Ctrl-Shift)" name="radio spin"/>
- </radio_group>
- <radio_group name="edit_radio_group">
- <radio_item label="Positie" name="radio position"/>
- <radio_item label="Roteren (Ctrl)" name="radio rotate"/>
- <radio_item label="Uitrekken (Ctrl-Shift)" name="radio stretch"/>
- <radio_item label="Selecteer textuur" name="radio select face"/>
- </radio_group>
- <check_box label="Bewerk gekoppelde onderdelen" name="checkbox edit linked parts"/>
- <text name="text ruler mode">
- Liniaal:
- </text>
- <combo_box name="combobox grid mode">
- <combo_box.item name="World" label="Wereld"
- />
- <combo_box.item name="Local" label="Lokaal"
- />
- <combo_box.item name="Reference" label="Referentie"
- />
- </combo_box>
- <check_box left="136" name="checkbox uniform"/>
- <text name="checkbox uniform label">
- Beide zijden uitrekken
- </text>
- <check_box left="136" label="Texturen uitrekken" name="checkbox stretch textures"/>
- <check_box left="136" label="Gebruik grid" name="checkbox snap to grid"/>
- <button label="Opties..." label_selected="Opties..." name="Options..." height="18" bottom_delta="-15"/>
- <text name="text status" width="280">
- Sleep om te verplaatsen, Shift-slepen om te kopiëren
- </text>
- <button label="" label_selected="" name="ToolCube" tool_tip="Kubus"/>
- <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
- <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/>
- <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetrahedron"/>
- <button label="" label_selected="" name="ToolCylinder" tool_tip="Cilinder"/>
- <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halve cilinder"/>
- <button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/>
- <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halve kegel"/>
- <button label="" label_selected="" name="ToolSphere" tool_tip="Bol"/>
- <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halve bol"/>
- <button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/>
- <button label="" label_selected="" name="ToolTube" tool_tip="Buis"/>
- <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/>
- <button label="" label_selected="" name="ToolTree" tool_tip="Boom"/>
- <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/>
- <check_box label="Behoud geselecteerd" name="checkbox sticky"/>
- <check_box label="Kopiëer Selectie" name="checkbox copy selection"/>
- <check_box label="Middelpunt" name="checkbox copy centers"/>
- <check_box label="Roteer" name="checkbox copy rotates"/>
- <radio_group name="land_radio_group">
- <radio_item label="Selecteer land" name="radio select land"/>
- <radio_item label="Vlak maken" name="radio flatten"/>
- <radio_item label="Verhogen" name="radio raise"/>
- <radio_item label="Verlagen" name="radio lower"/>
- <radio_item label="Egaliseren" name="radio smooth"/>
- <radio_item label="Opruwen" name="radio noise"/>
- <radio_item label="Herstellen" name="radio revert"/>
- </radio_group>
- <button label="Toepassen" label_selected="Toepassen" name="button apply to selection" tool_tip="Wijzig geselecteerd land"/>
- <text name="Bulldozer:">
- Bulldozer:
- </text>
- <text name="Dozer Size:">
- Grootte
- </text>
- <text name="Strength:">
- Sterkte
- </text>
- <text name="obj_count" top_pad="20">
- Geselecteerde objecten: [COUNT]
- </text>
- <text name="prim_count">
- primitieven: [COUNT]
- </text>
- <tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" top="185">
- <panel label="Algemeen" name="General">
- <text name="Name:">
- Naam:
- </text>
- <text name="Description:">
- Omschrijving:
- </text>
- <text name="Creator:">
- Maker:
- </text>
- <button label="Profiel..." label_selected="Profiel..." name="button creator profile"/>
- <text name="Owner:">
- Eigenaar:
- </text>
- <button label="Profiel..." label_selected="Profiel..." name="button owner profile"/>
- <text name="Group:">
- Groep:
- </text>
- <text name="Group Name Proxy">
- De Lindens
- </text>
- <button label="Instellen..." label_selected="Instellen..." name="button set group"/>
- <text name="Permissions:">
- Permissies:
- </text>
-
- <check_box label="Deel met groep" name="checkbox share with group" tool_tip="Alle leden van de ingestelde groep toestaan om te delen en uw permissies voor dit object te gebruiken. U moet &apos;Overdragen&apos; om rolbeperkingen in te schakelen."/>
- <string name="text deed continued">
- Overdragen...
- </string>
- <string name="text deed">
- Overdragen
- </string>
- <button label="Overdragen..." label_selected="Overdragen..." name="button deed" tool_tip="Groepgedeelde objecten kunnen door een groepofficier worden overgedragen"/>
- <check_box label="Iedereen mag verplaatsen" name="checkbox allow everyone move"/>
- <check_box label="Iedereen mag kopiëren" name="checkbox allow everyone copy"/>
- <check_box label="Toon in zoeken" name="search_check" tool_tip="Laat mensen dit object zien in zoekresultaten"/>
- <check_box label="Te koop" name="checkbox for sale"/>
- <text name="Cost">
- Prijs: L$
- </text>
- <combo_box name="sale type">
- <combo_box.item label="Kopie" name="Copy"/>
- <combo_box.item label="Inhoud" name="Contents"/>
- <combo_box.item label="Origineel" name="Original"/>
- </combo_box>
-
- <text name="label click action">
- Wanneer links-geklikt:
- </text>
- <combo_box name="clickaction">
- <combo_box.item name="Touch/grab(default)" label="Aanraken/pakken (standaard)"
- />
- <combo_box.item name="Sitonobject" label="Zit op object"
- />
- <combo_box.item name="Buyobject" label="Koop object"
- />
- <combo_box.item name="Payobject" label="Betaal object"
- />
- <combo_box.item name="Open" label="Open"
- />
- <combo_box.item name="Play" label="Perceelmedia afspelen"
- />
- <combo_box.item name="Opemmedia" label="Perceelmedia openen"
- />
- </combo_box>
- <panel name="perms_build">
- <text name="perm_modify">
- U kunt dit object wijzigen
- </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:">
- Volgende eigenaar kan:
- </text>
- <check_box label="Wijzigen" name="checkbox next owner can modify"/>
- <check_box label="Kopiëren" 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">
- U kunt dit object wijzigen
- </string>
- <string name="text modify info 2">
- U kunt deze objecten wijzigen
- </string>
- <string name="text modify info 3">
- U kunt dit object niet wijzigen
- </string>
- <string name="text modify info 4">
- U kunt deze objecten niet wijzigen
- </string>
- <string name="text modify warning">
- U moet het hele object selecteren om permissies in te stellen
- </string>
- <string name="Cost Default">
- Prijs: L$
- </string>
- <string name="Cost Total">
- Totale Prijs: L$
- </string>
- <string name="Cost Per Unit">
- Prijs per: L$
- </string>
- <string name="Cost Mixed">
- Gemengde prijs
- </string>
- <string name="Sale Mixed">
- Gemengde verkoop
- </string>
- </panel>
- <panel label="Object" name="Object">
- <text name="select_single">
- Selecteer slechts één primitief om parameters te bewerken
- </text>
- <text name="edit_object">
- Bewerk object parameters:
- </text>
- <check_box label="Vergrendeld" name="checkbox locked" tool_tip="Voorkomt het verplaatsen of verwijderen van objecten. Regelmatig handig tijdens het bouwen om onbedoelde bewerkingen te voorkomen."/>
- <check_box label="Fysiek" name="Physical Checkbox Ctrl" tool_tip="Staat toe dat objecten geduwd worden en worden beïnvloed door de zwaartekracht"/>
- <check_box label="Tijdelijk" name="Temporary Checkbox Ctrl" tool_tip="Zorgt ervoor dat het object 1 minuut na creatie wordt verwijderd."/>
- <check_box label="Fantoom" name="Phantom Checkbox Ctrl" tool_tip="Zorgt ervoor dat objecten niet kunnen botsen met andere objecten of avatars"/>
- <text name="label position">
- Positie (meters)
- </text>
- <spinner label="X" name="Pos X"/>
- <spinner label="Y" name="Pos Y"/>
- <spinner label="Z" name="Pos Z"/>
- <text name="label size">
- Grootte (meters)
- </text>
- <spinner label="X" name="Scale X"/>
- <spinner label="Y" name="Scale Y"/>
- <spinner label="Z" name="Scale Z"/>
- <text name="label rotation">
- Rotatie (graden)
- </text>
- <spinner label="X" name="Rot X"/>
- <spinner label="Y" name="Rot Y"/>
- <spinner label="Z" name="Rot Z"/>
- <text name="label material">
- Materiaal
- </text>
- <combo_box name="material">
- <combo_box.item name="Stone" label="Steen"
- />
- <combo_box.item name="Metal" label="Metaal"
- />
- <combo_box.item name="Glass" label="Glas"
- />
- <combo_box.item name="Wood" label="Hout"
- />
- <combo_box.item name="Flesh" label="Vlees"
- />
- <combo_box.item name="Plastic" label="Plastic"
- />
- <combo_box.item name="Rubber" label="Rubber"
- />
- </combo_box>
- <text name="label basetype">
- Bouwbloktype
- </text>
- <combo_box name="comboBaseType">
- <combo_box.item name="Box" label="Kubus"
- />
- <combo_box.item name="Cylinder" label="Cilinder"
- />
- <combo_box.item name="Prism" label="Prisma"
- />
- <combo_box.item name="Sphere" label="Bol"
- />
- <combo_box.item name="Torus" label="Torus"
- />
- <combo_box.item name="Tube" label="Buis"
- />
- <combo_box.item name="Ring" label="Ring"
- />
- <combo_box.item name="Sculpted" label="Sculpted"
- />
- </combo_box>
- <text name="text cut">
- Uitsnede begin en einde
- </text>
- <spinner label="B" name="cut begin"/>
- <spinner label="E" name="cut end"/>
- <text name="text hollow">
- Hol
- </text>
- <text name="text skew">
- Verschuiven
- </text>
- <text name="Hollow Shape">
- Holtevorm
- </text>
- <combo_box name="hole">
- <combo_box.item name="Default" label="Standaard"
- />
- <combo_box.item name="Circle" label="Cirkel"
- />
- <combo_box.item name="Square" label="Vierkant"
- />
- <combo_box.item name="Triangle" label="Driehoek"
- />
- </combo_box>
- <text name="text twist">
- Verdraai begin en einde
- </text>
- <spinner label="B" name="Twist Begin"/>
- <spinner label="E" name="Twist End"/>
- <text name="scale_taper">
- Knijpen
- </text>
- <text name="scale_hole">
- Gatgrootte
- </text>
- <spinner label="X" name="Taper Scale X"/>
- <spinner label="Y" name="Taper Scale Y"/>
- <text name="text topshear">
- Bovenkant verschuiven
- </text>
- <spinner label="X" name="Shear X"/>
- <spinner label="Y" name="Shear Y"/>
- <text name="advanced_cut">
- Profielsnede begin en einde
- </text>
- <text name="advanced_dimple">
- Deuk begin en einde
- </text>
- <text name="advanced_slice">
- Uitsnede begin en einde
- </text>
- <spinner label="B" name="Path Limit Begin"/>
- <spinner label="E" name="Path Limit End"/>
- <text name="text taper2">
- Knijpen
- </text>
- <spinner label="X" name="Taper X"/>
- <spinner label="Y" name="Taper Y"/>
- <text name="text radius delta">
- Straal
- </text>
- <text name="text revolutions" width="84">
- Omwentelingen
- </text>
- <texture_picker label="Sculpt textuur" name="sculpt texture control" tool_tip="Klik om een afbeelding te kiezen"/>
- <check_box label="Spiegelen" name="sculpt mirror control" tool_tip="Spiegelt de sculpted prim om de X-as"/>
- <check_box label="Binnenstebuiten" name="sculpt invert control" tool_tip="Inverteert de normalen van de sculpted prim, zodat deze binnenstebuiten verschijnt."/>
- <text name="label sculpt type">
- Hechtingstype
- </text>
- <combo_box name="sculpt type control">
- <combo_box.item name="None" label="(geen)"
- />
- <combo_box.item name="Sphere" label="Bol"
- />
- <combo_box.item name="Torus" label="Torus"
- />
- <combo_box.item name="Plane" label="Vlak"
- />
- <combo_box.item name="Cylinder" label="Cilinder"
- />
- </combo_box>
- </panel>
- <panel label="Kenmerken" name="Features">
- <text name="select_single">
- Selecteer slechts één primitief om kenmerken te bewerken
- </text>
- <text name="edit_object">
- Bewerk objectkenmerken:
- </text>
- <check_box label="Flexibiliteit" name="Flexible1D Checkbox Ctrl" tool_tip="Staat toe dat objecten kunnen buigen om de Z-as. (alleen aan de client kant)"/>
- <spinner label="Zachtheid" name="FlexNumSections" width="143" label_width="80"/>
- <spinner label="Zwaartekracht" name="FlexGravity" width="143" label_width="80"/>
- <spinner label="Slepen" name="FlexFriction" width="143" label_width="80"/>
- <spinner label="Wind" name="FlexWind" width="143" label_width="80"/>
- <spinner label="Spanning" name="FlexTension" width="143" label_width="80"/>
- <spinner label="Kracht X" name="FlexForceX" width="143" label_width="80"/>
- <spinner label="Kracht Y" name="FlexForceY" width="143" label_width="80"/>
- <spinner label="Kracht Z" name="FlexForceZ" width="143" label_width="80"/>
- <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Zorgt dat het object licht uitstraalt"/>
- <text name="label color">
- Kleur
- </text>
- <color_swatch label="" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/>
- <spinner label="Intensiteit" name="Light Intensity"/>
- <spinner label="Straal" name="Light Radius"/>
- <spinner label="Uitstraling" name="Light Falloff"/>
- </panel>
- <panel label="Textuur" name="Texture">
- <texture_picker label="Textuur" name="texture control" tool_tip="Klik om een afbeelding te kiezen"/>
- <color_swatch label="Kleur" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/>
- <text name="color trans" width="100">
- Transparantie %
- </text>
- <text name="glow label">
- Gloed
- </text>
- <check_box label="Volledige helderheid" name="checkbox fullbright" left_delta="-10"/>
- <text name="tex gen">
- Mapping
- </text>
- <combo_box name="combobox texgen">
- <combo_box.item name="Default" label="Standaard"
- />
- <combo_box.item name="Planar" label="Vlak"
- />
- </combo_box>
- <text name="label shininess">
- Glans
- </text>
- <combo_box name="combobox shininess">
- <combo_box.item name="None" label="Geen"
- />
- <combo_box.item name="Low" label="Laag"
- />
- <combo_box.item name="Medium" label="Middel"
- />
- <combo_box.item name="High" label="Hoog"
- />
- </combo_box>
- <text name="label bumpiness">
- Bumpiness
- </text>
- <combo_box name="combobox bumpiness">
- <combo_box.item name="None" label="Geen"
- />
- <combo_box.item name="Brightness" label="Helderheid"
- />
- <combo_box.item name="Darkness" label="Donkerheid"
- />
- <combo_box.item name="woodgrain" label="Houtnerf"
- />
- <combo_box.item name="bark" label="Schors"
- />
- <combo_box.item name="bricks" label="Stenen"
- />
- <combo_box.item name="checker" label="Dambord"
- />
- <combo_box.item name="concrete" label="Beton"
- />
- <combo_box.item name="crustytile" label="gebarsten tegels"
- />
- <combo_box.item name="cutstone" label="natuursteen"
- />
- <combo_box.item name="discs" label="schijven"
- />
- <combo_box.item name="gravel" label="grind"
- />
- <combo_box.item name="petridish" label="petrischaal"
- />
- <combo_box.item name="siding" label="wandpaneel"
- />
- <combo_box.item name="stonetile" label="plavuizen"
- />
- <combo_box.item name="stucco" label="stucwerk"
- />
- <combo_box.item name="suction" label="zuignappen"
- />
- <combo_box.item name="weave" label="weven"
- />
- </combo_box>
- <text name="tex scale">
- Herhalingen per zijde
- </text>
- <spinner label="Horizontaal (U)" name="TexScaleU"/>
- <check_box label="Omkeren" name="checkbox flip s"/>
- <spinner label="Verticaal (V)" name="TexScaleV"/>
- <check_box label="Omkeren" name="checkbox flip t"/>
- <text name="tex rotate">
- Rotatie (graden)
- </text>
- <string name="string repeats per meter">
- Herhalingen per meter
- </string>
- <string name="string repeats per face">
- Herhalingen per zijde
- </string>
- <text name="rpt">
- Herhalingen per m
- </text>
- <button label="Toepassen" label_selected="Toepassen" name="button apply"/>
- <text name="tex offset">
- Verplaatsing
- </text>
- <spinner label="Horizontaal (U)" name="TexOffsetU"/>
- <spinner label="Verticaal (V)" name="TexOffsetV"/>
- <text name="textbox autofix">
- Mediatextuur uitlijnen
-(moet eerst laden)
- </text>
- <button label="Uitlijnen" label_selected="Uitlijnen" name="button align" left="155" />
- </panel>
- <panel label="Inhoud" name="Contents">
- <button label="Nieuw script" label_selected="Nieuw script" name="button new script"/>
- <button label="Permissies" name="button permissions"/>
- <panel name="ContentsInventory" width="272" />
- </panel>
- </tab_container>
- <panel name="land info panel">
- <text name="label_parcel_info">
- Perceel Informatie
- </text>
- <text name="label_area_price">
- Prijs: L$[PRICE] voor [AREA] m².
- </text>
- <text name="label_area">
- Gebied: [AREA] m².
- </text>
- <button label="Over land..." label_selected="Over land..." name="button about land"/>
- <check_box label="Toon Eigenaren" name="checkbox show owners" tool_tip="Kleur percelen op basis van hun eigendom: &#10;&#10;Groen = Uw land &#10;Aqua = Land van uw groep &#10;Rood = Eigendom van anderen &#10;Geel = Te koop &#10;Paars = Ter veiling &#10;Grijs = Openbaar"/>
- <button label="?" label_selected="?" name="button show owners help" left_delta="105"/>
- <text name="label_parcel_modify">
- Wijzig Perceel
- </text>
- <button label="Opdelen" label_selected="Opdelen" name="button subdivide land"/>
- <button label="Samenvoegen" label_selected="Samenvoegen" name="button join land"/>
- <text name="label_parcel_trans">
- Landtransacties
- </text>
- <button label="Koop land" label_selected="Koop land" name="button buy land"/>
- <button label="Land Afstaan" label_selected="Land Afstaan" name="button abandon land"/>
- </panel>
- <floater.string name="status_rotate">
- Sleep de gekleurde banden om het object te roteren
- </floater.string>
- <floater.string name="status_scale">
- Klik en sleep om de geselecteerde zijde uit te rekken.
- </floater.string>
- <floater.string name="status_move">
- Sleep om te verplaatsen, Shift-slepen om te kopiëren
- </floater.string>
- <floater.string name="status_modifyland">
- Klik en houd vast om land te wijzigen
- </floater.string>
- <floater.string name="status_camera">
- Klik en sleep om beeld te wijzigen
- </floater.string>
- <floater.string name="status_grab">
- Sleep om te verplaatsen, Ctrl om op te tillen, Ctrl-Shift om te roteren.
- </floater.string>
- <floater.string name="status_place">
- Klik in-wereld om te bouwen
- </floater.string>
- <floater.string name="status_selectland">
- Klik en sleep om land te selecteren
- </floater.string>
- <floater.string name="grid_screen_text">
- Scherm
- </floater.string>
- <floater.string name="grid_local_text">
- Lokaal
- </floater.string>
- <floater.string name="grid_world_text">
- Wereld
- </floater.string>
- <floater.string name="grid_reference_text">
- Referentie
- </floater.string>
- <floater.string name="grid_attachment_text">
- Bevestiging
- </floater.string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_top_objects.xml b/indra/newview/skins/default/xui/nl/floater_top_objects.xml
deleted file mode 100644
index 2bbb701df8..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_top_objects.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="LADEN…">
- <text name="title_text">
- Laden…
- </text>
- <scroll_list name="objects_list">
- <column label="Score" name="score" width="84"/>
- <column label="Naam" name="name" width="84"/>
- <column label="Eigenaar" name="owner" width="84"/>
- <column label="Locatie" name="location" width="84"/>
- <column label="Tijd" name="time" width="84"/>
- <column label="Mono tijd" name="mono_time" width="84"/>
- </scroll_list>
- <text name="id_text" left="2">
- Object ID:
- </text>
- <button label="Toon baken" name="show_beacon_btn"/>
- <text name="obj_name_text" left="2">
- Object naam:
- </text>
- <button label="Filter" name="filter_object_btn"/>
- <text name="owner_name_text" left="2">
- Eigenaar naam:
- </text>
- <button label="Filter" name="filter_owner_btn"/>
- <button label="Geselecteerde retourneren" name="return_selected_btn" width="170"/>
- <button label="Alles retourneren" name="return_all_btn" left="190"/>
- <button label="Geselecteerde uitschakelen" name="disable_selected_btn" width="170"/>
- <button label="Alles uitschakelen" name="disable_all_btn" left="190"/>
- <button label="Verversen" name="refresh_btn"/>
- <string name="top_scripts_title">
- Top scripts
- </string>
- <string name="top_scripts_text">
- [COUNT] scripts besteden in totaal [TIME] ms
- </string>
- <string name="scripts_score_label">
- Tijd
- </string>
- <string name="scripts_mono_time_label">
- Mono tijd
- </string>
- <string name="top_colliders_title">
- Top botsingen
- </string>
- <string name="top_colliders_text">
- Top [COUNT] objecten die veel mogelijke botsingen ervaren.
- </string>
- <string name="colliders_score_label">
- Score
- </string>
- <string name="none_descriptor">
- Geen gevonden.
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_tos.xml b/indra/newview/skins/default/xui/nl/floater_tos.xml
deleted file mode 100644
index d71412664c..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_tos.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="">
- <button label="Doorgaan" label_selected="Doorgaan" name="Continue"/>
- <button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
- <check_box label="Ik ga akkoord met de voorwaarden van service" name="agree_chk"/>
- <text name="tos_heading">
- Leest u alstublieft de volgende voorwaarden van service door. Om door te gaan met inloggen in
-[SECOND_LIFE] dient u de overeenkomst te accepteren.
- </text>
- <text_editor name="tos_text">
- TOS_TEXT
- </text_editor>
- <string name="real_url">
- http://secondlife.com/app/tos/
- </string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_url_entry.xml b/indra/newview/skins/default/xui/nl/floater_url_entry.xml
deleted file mode 100644
index 6926f09390..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_url_entry.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="url_entry" title="">
- <text name="media_label">
- Media URL:
- </text>
- <button label="OK" name="ok_btn"/>
- <button label="Annuleren" name="cancel_btn" width="80"/>
- <button label="Leegmaken" name="clear_btn" width="80"/>
- <text name="loading_label">
- Laden…
- </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_world_map.xml b/indra/newview/skins/default/xui/nl/floater_world_map.xml
deleted file mode 100644
index 2fee2ecf05..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_world_map.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="worldmap" title="WERELDKAART">
- <tab_container name="maptab">
- <panel label="Objecten" name="objects_mapview"/>
- <panel label="Terrein" name="terrain_mapview"/>
- </tab_container>
- <text name="you_label">
- U
- </text>
- <icon left="1058" name="home"/>
- <text name="home_label">
- Thuis
- </text>
- <text name="auction_label">
- Veiling
- </text>
- <text name="land_for_sale_label">
- Land te koop
- </text>
- <button width="122" left="1116" label="Ga naar Thuislocatie" label_selected="Ga naar Thuislocatie" name="Go Home" tool_tip="Teleport naar uw thuislocatie"/>
- <check_box label="Inwoner" name="people_chk"/>
- <check_box label="Infohub" name="infohub_chk"/>
- <check_box label="Telehub" name="telehubchk"/>
- <check_box label="Land te koop" name="land_for_sale_chk"/>
- <text name="events_label">
- Evenementen:
- </text>
- <check_box label="PG" name="event_chk"/>
- <check_box label="Mature" name="events_mature_chk"/>
- <check_box label="Adult" name="events_adult_chk"/>
- <combo_box label="Online vrienden" name="friend combo" tool_tip="Vriend die op kaart getoond wordt">
- <combo_box.item name="item1" label="Online vrienden"/>
- </combo_box>
- <combo_box label="Landmarkeringen" name="landmark combo" tool_tip="Landmarkering die op kaart getoond wordt">
- <combo_box.item name="item1" label="Landmarkeringen"/>
- </combo_box>
- <line_editor label="Zoek op regionaam" name="location" tool_tip="Type de naam van een regio"/>
- <button label="Zoeken" name="DoSearch" tool_tip="Zoek naar regio"/>
- <text name="search_label">
- Zoekresultaten
- </text>
- <text name="location_label">
- Locatie:
- </text>
- <spinner name="spin x" tool_tip="X coördinaat van de locatie die op de kaart getoond wordt"/>
- <spinner name="spin y" tool_tip="Y coördinaat van de locatie die op de kaart getoond wordt"/>
- <spinner name="spin z" tool_tip="Z coördinaat van de locatie die op de kaart getoond wordt"/>
- <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport naar geselecteerde locatie"/>
- <button label="Toon bestemming" label_selected="Toon bestemming" name="Show Destination" tool_tip="Centreer kaart op geselecteerde locatie"/>
- <button label="Verwijder" label_selected="Verwijder" name="Clear" tool_tip="Stop volgen"/>
- <button label="Toon mijn locatie" label_selected="Toon mijn locatie" name="Show My Location" tool_tip="Centreer kaart op de locatie van uw avatar"/>
- <button label="Kopieer SLurl naar klembord" name="copy_slurl" tool_tip="Kopieert huidige locatie als SLurl, zodat deze op het web gebruikt kan worden."/>
- <slider label="Zoom" name="zoom slider"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/language_settings.xml b/indra/newview/skins/default/xui/nl/language_settings.xml
deleted file mode 100644
index 40f4d9178a..0000000000
--- a/indra/newview/skins/default/xui/nl/language_settings.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- This file contains strings that used to be hardcoded in the source.-->
-<strings>
-
- <!-- Locale Information -->
- <string name="MicrosoftLocale">dutch</string>
- <string name="MacLocale">nl_NL.UTF-8</string>
- <string name="DarwinLocale">nl_NL.UTF-8</string>
- <string name="LinuxLocale">nl_NL.UTF-8</string>
-
- <!--
- datetimeToCodes["wkday"] = "%a"; // Thu
- datetimeToCodes["weekday"] = "%A"; // Thursday
- datetimeToCodes["year4"] = "%Y"; // 2009
- datetimeToCodes["year"] = "%Y"; // 2009
- datetimeToCodes["year2"] = "%y"; // 09
- datetimeToCodes["mth"] = "%b"; // Aug
- datetimeToCodes["month"] = "%B"; // August
- datetimeToCodes["mthnum"] = "%m"; // 08
- datetimeToCodes["day"] = "%d"; // 31
- datetimeToCodes["sday"] = "%-d"; // 9
- datetimeToCodes["hour24"] = "%H"; // 14
- datetimeToCodes["hour"] = "%H"; // 14
- datetimeToCodes["hour12"] = "%I"; // 02
- datetimeToCodes["min"] = "%M"; // 59
- datetimeToCodes["ampm"] = "%p"; // AM
- datetimeToCodes["second"] = "%S"; // 59
- datetimeToCodes["timezone"] = "%Z"; // PST
- -->
-
- <string name="TimeHour">hour,datetime,slt</string>
- <string name="TimeMin">min,datetime,slt</string>
- <string name="TimeYear">year,datetime,slt</string>
- <string name="TimeDay">day,datetime,slt</string>
- <string name="TimeMonth">mthnum,datetime,slt</string>
- <string name="TimeWeek">wkday,datetime,slt</string>
- <string name="TimeAMPM">ampm,datetime,slt</string>
- <string name="TimeHour12">hour12,datetime,slt</string>
-
- <string name="LTimeMthNum">mthnum,datetime,local</string>
- <string name="LTimeWeek">wkday,datetime,local</string>
- <string name="LTimeMonth">mth,datetime,local</string>
- <string name="LTimeDay">day,datetime,local</string>
- <string name="LTimeSec">second,datetime,local</string>
- <string name="LTimeHour">hour,datetime,local</string>
- <string name="LTimeMin">min,datetime,local</string>
- <string name="LTimeYear">year,datetime,local</string>
-
- <string name="UTCTimeWeek">weekday,datetime,utc</string>
- <string name="UTCTimeDay">day,datetime,utc</string>
- <string name="UTCTimeMth">mth,datetime,utc</string>
- <string name="UTCTimeYr">year,datetime,utc</string>
- <string name="UTCTimeHr">hour,datetime,utc</string>
- <string name="UTCTimeMin">min,datetime,utc</string>
- <string name="UTCTimeSec">second,datetime,utc</string>
- <string name="UTCTimeTimezone">timezone,datetime,utc</string>
-</strings>
diff --git a/indra/newview/skins/default/xui/nl/menu_inventory.xml b/indra/newview/skins/default/xui/nl/menu_inventory.xml
deleted file mode 100644
index c3b47cbddb..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_inventory.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Koop" name="Task Buy"/>
- <menu_item_call label="Open" name="Task Open"/>
- <menu_item_call label="Afspelen" name="Task Play"/>
- <menu_item_call label="Eigenschappen" name="Task Properties"/>
- <menu_item_call label="Hernoemen" name="Task Rename"/>
- <menu_item_call label="Verwijderen" name="Task Remove"/>
- <menu_item_call label="Prullenbak legen" name="Empty Trash"/>
- <menu_item_call label="Verloren en gevonden leegmaken" name="Empty Lost And Found"/>
- <menu_item_call label="Nieuwe map" name="New Folder"/>
- <menu_item_call label="Nieuw script" name="New Script"/>
- <menu_item_call label="Nieuwe notitie" name="New Note"/>
- <menu_item_call label="Nieuw gebaar" name="New Gesture"/>
- <menu label="Nieuwe Kleding" name="New Clothes">
- <menu_item_call label="Nieuw shirt" name="New Shirt"/>
- <menu_item_call label="Nieuwe broek" name="New Pants"/>
- <menu_item_call label="Nieuwe schoenen" name="New Shoes"/>
- <menu_item_call label="Nieuwe sokken" name="New Socks"/>
- <menu_item_call label="Nieuwe jas" name="New Jacket"/>
- <menu_item_call label="Nieuwe rok" name="New Skirt"/>
- <menu_item_call label="Nieuwe handschoenen" name="New Gloves"/>
- <menu_item_call label="Nieuw onderhemd" name="New Undershirt"/>
- <menu_item_call label="Nieuwe onderbroek" name="New Underpants"/>
- <menu_item_call label="Nieuw Alpha Masker" name="New Alpha Mask"/>
- <menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
- </menu>
- <menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
- <menu_item_call label="Nieuwe postuur" name="New Shape"/>
- <menu_item_call label="Nieuwe huid" name="New Skin"/>
- <menu_item_call label="Nieuw haar" name="New Hair"/>
- <menu_item_call label="Nieuwe ogen" name="New Eyes"/>
- </menu>
- <menu label="Change Type" name="Change Type">
- <menu_item_call label="Standaard" name="Default"/>
- <menu_item_call label="Handschoenen" name="Gloves"/>
- <menu_item_call label="Jas" name="Jacket"/>
- <menu_item_call label="Broek" name="Pants"/>
- <menu_item_call label="Vorm" name="Shape"/>
- <menu_item_call label="Schoenen" name="Shoes"/>
- <menu_item_call label="Overhemd" name="Shirt"/>
- <menu_item_call label="Rok" name="Skirt"/>
- <menu_item_call label="Onderbroek" name="Underpants"/>
- <menu_item_call label="Onderhemd" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleport" name="Landmark Open"/>
- <menu_item_call label="Open" name="Animation Open"/>
- <menu_item_call label="Open" name="Sound Open"/>
- <menu_item_call label="Verwijderen item" name="Purge Item"/>
- <menu_item_call label="Herstellen item" name="Restore Item"/>
- <menu_item_call label="Ga Naar Link" name="Goto Link"/>
- <menu_item_call label="Open" name="Open"/>
- <menu_item_call label="Eigenschappen" name="Properties"/>
- <menu_item_call label="Hernoemen" name="Rename"/>
- <menu_item_call label="Kopieer asset UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Kopiëren" name="Copy"/>
- <menu_item_call label="Plakken" name="Paste"/>
- <menu_item_call label="Plak Als Link" name="Paste As Link"/>
- <menu_item_call label="Verwijderen" name="Delete"/>
- <menu_item_call label="Items uitdoen" name="Take Off Items"/>
- <menu_item_call label="Voeg toe aan kleding" name="Add To Outfit"/>
- <menu_item_call label="Vervang kleding" name="Replace Outfit"/>
- <menu_item_call label="Start conferentie chat" name="Conference Chat Folder"/>
- <menu_item_call label="Afspelen" name="Sound Play"/>
- <menu_item_call label="Over Landmark" name="About Landmark"/>
- <menu_item_call label="In wereld afspelen" name="Animation Play"/>
- <menu_item_call label="Lokaal afspelen" name="Animation Audition"/>
- <menu_item_call label="Stuur instant message" name="Send Instant Message"/>
- <menu_item_call label="Bied teleport aan…" name="Offer Teleport..."/>
- <menu_item_call label="Start conferentie chat" name="Conference Chat"/>
- <menu_item_call label="Activeren" name="Activate"/>
- <menu_item_call label="Deactiveren" name="Deactivate"/>
- <menu_item_call label="Opslaan Als" name="Save As"/>
- <menu_item_call label="Losmaken van jezelf" name="Detach From Yourself"/>
- <menu_item_call label="Dragen" name="Object Wear"/>
- <menu label="Bevestigen aan" name="Attach To"/>
- <menu label="Bevestigen aan HUD" name="Attach To HUD"/>
- <menu_item_call label="Bewerken" name="Wearable Edit"/>
- <menu_item_call label="Dragen" name="Wearable Wear"/>
- <menu_item_call label="Uitdoen" name="Take Off"/>
- <menu_item_call label="--geen opties--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_inventory_add.xml b/indra/newview/skins/default/xui/nl/menu_inventory_add.xml
deleted file mode 100644
index 09330b9597..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_inventory_add.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Upload" name="upload">
- <menu_item_call label="Plaatje (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
- </menu>
- <menu_item_call label="Nieuwe Map" name="New Folder"/>
- <menu_item_call label="Nieuw Script" name="New Script"/>
- <menu_item_call label="Nieuw Notitie" name="New Note"/>
- <menu_item_call label="Nieuw Gebaar" name="New Gesture"/>
- <menu label="Nieuwe Kleding" name="New Clothes">
- <menu_item_call label="Nieuw Overhemd" name="New Shirt"/>
- <menu_item_call label="Nieuwe Broek" name="New Pants"/>
- <menu_item_call label="Nieuwe Schoenen" name="New Shoes"/>
- <menu_item_call label="Nieuwe Sokken" name="New Socks"/>
- <menu_item_call label="Nieuw Jas" name="New Jacket"/>
- <menu_item_call label="Nieuw Rok" name="New Skirt"/>
- <menu_item_call label="Nieuwe Handschoenen" name="New Gloves"/>
- <menu_item_call label="Nieuw Hemd" name="New Undershirt"/>
- <menu_item_call label="Nieuwe Onderbroek" name="New Underpants"/>
- <menu_item_call label="Nieuwe Alpha" name="New Alpha"/>
- <menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
- </menu>
- <menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
- <menu_item_call label="Nieuwe Vorm" name="New Shape"/>
- <menu_item_call label="Nieuwe Huid" name="New Skin"/>
- <menu_item_call label="Nieuw Haar" name="New Hair"/>
- <menu_item_call label="Nieuwe Ogen" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_login.xml b/indra/newview/skins/default/xui/nl/menu_login.xml
deleted file mode 100644
index 987b82b128..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_login.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Bestand" name="File">
- <menu_item_call label="Afsluiten" name="Quit"/>
- </menu>
- <menu label="Bewerken" name="Edit">
- <menu_item_call label="Voorkeuren..." name="Preferences..."/>
- </menu>
- <menu label="Help" name="Help">
- <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
- <menu_item_call label="Over [APP_NAME]..." name="About Second Life..."/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/default/xui/nl/menu_mini_map.xml b/indra/newview/skins/default/xui/nl/menu_mini_map.xml
deleted file mode 100644
index f7c09660ea..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_mini_map.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom dichtbij" name="Zoom Close"/>
- <menu_item_call label="Zoom gemiddeld" name="Zoom Medium"/>
- <menu_item_call label="Zoom veraf" name="Zoom Far"/>
- <menu_item_call label="Stop volgen" name="Stop Tracking"/>
- <menu_item_call label="Profiel..." name="Profile"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_picks.xml b/indra/newview/skins/default/xui/nl/menu_picks.xml
deleted file mode 100644
index 2e53dbda58..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Bewerken" name="pick_edit"/>
- <menu_item_call label="Teleport" name="pick_teleport"/>
- <menu_item_call label="Kaart" name="pick_map"/>
- <menu_item_call label="Verweideren" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml
deleted file mode 100644
index dab5a388d7..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Meer Informatie" name="more_info"/>
- <menu_item_call label="Toon op Kaart" name="show_on_map"/>
- <menu_item_call label="Voeg Landmark Toe" name="add_landmark"/>
- <menu_item_call label="Voeg Map Toe" name="add_folder"/>
- <menu_item_call label="Knippen" name="cut"/>
- <menu_item_call label="Kopieër Landmark" name="copy_landmark"/>
- <menu_item_call label="Kopieër SLurl" name="copy_slurl"/>
- <menu_item_call label="Plakken" name="paste"/>
- <menu_item_call label="Hernoemen" name="rename"/>
- <menu_item_call label="Verweideren" name="delete"/>
- <menu_item_call label="Alle mappen uitvouwen" name="expand_all"/>
- <menu_item_call label="Alle mappen samenvouwen" name="collapse_all"/>
- <menu_item_check label="Sorteer bij Datum" name="sort_by_date"/>
- <menu_item_call label="Maak Favoriet" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_slurl.xml b/indra/newview/skins/default/xui/nl/menu_slurl.xml
deleted file mode 100644
index 48a4698d0c..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Over URL" name="about_url"/>
- <menu_item_call label="Teleport naar URL" name="teleport_to_url"/>
- <menu_item_call label="Toon op kaart" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_viewer.xml b/indra/newview/skins/default/xui/nl/menu_viewer.xml
deleted file mode 100644
index 6d5c833610..0000000000
--- a/indra/newview/skins/default/xui/nl/menu_viewer.xml
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Bestand" name="File">
- <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
- <menu label="Upload" name="upload">
- <menu_item_call label="Afbeelding (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Standaard permissies instellen..." name="perm prefs"/>
- </menu>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Sluit venster" name="Close Window"/>
- <menu_item_call label="Sluit alle vensters" name="Close All Windows"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Textuur opslaan als..." name="Save Texture As..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Maak foto" name="Take Snapshot"/>
- <menu_item_call label="Foto naar harde schijf" name="Snapshot to Disk"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Afsluiten" name="Quit"/>
- </menu>
- <menu label="Bewerken" name="Edit">
- <menu_item_call label="Ongedaan maken" name="Undo"/>
- <menu_item_call label="Herhalen" name="Redo"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Knippen" name="Cut"/>
- <menu_item_call label="Kopiëren" name="Copy"/>
- <menu_item_call label="Plakken" name="Paste"/>
- <menu_item_call label="Verwijderen" name="Delete"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Zoeken..." name="Search..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Alles selecteren" name="Select All"/>
- <menu_item_call label="Deselecteren" name="Deselect"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Dupliceren" name="Duplicate"/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu label="Bevestig object" name="Attach Object"/>
- <menu label="Object losmaken" name="Detach Object"/>
- <menu label="Kleding uitdoen" name="Take Off Clothing">
- <menu_item_call label="Hemd" name="Shirt"/>
- <menu_item_call label="Broek" name="Pants"/>
- <menu_item_call label="Schoenen" name="Shoes"/>
- <menu_item_call label="Sokken" name="Socks"/>
- <menu_item_call label="Jas" name="Jacket"/>
- <menu_item_call label="Handschoenen" name="Gloves"/>
- <menu_item_call label="Onderhemd" name="Menu Undershirt"/>
- <menu_item_call label="Onderbroek" name="Menu Underpants"/>
- <menu_item_call label="Rok" name="Skirt"/>
- <menu_item_call label="Alle kleding" name="All Clothes"/>
- </menu>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Gebaren..." name="Gestures..."/>
- <menu_item_call label="Profiel..." name="Profile..."/>
- <menu_item_call label="Uiterlijk..." name="Appearance..."/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu_item_check label="Vrienden..." name="Friends..."/>
- <menu_item_call label="Groepen..." name="Groups..."/>
- <menu_item_separator label="-----------" name="separator8"/>
- <menu_item_call label="Voorkeuren..." name="Preferences..."/>
- </menu>
- <menu label="Weergave" name="View">
- <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
- <menu_item_call label="Mouselook" name="Mouselook"/>
- <menu_item_check label="Bouwen" name="Build"/>
- <menu_item_check label="Joystick vliegcamera" name="Joystick Flycam"/>
- <menu_item_call label="Weergave opnieuw instellen" name="Reset View"/>
- <menu_item_call label="Kijk naar laatste geklets" name="Look at Last Chatter"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Werkbalk" name="Toolbar"/>
- <menu_item_check label="Lokale chat" name="Chat History"/>
- <menu_item_check label="Communiceren" name="Instant Message"/>
- <menu_item_check label="Inventaris" name="Inventory"/>
- <menu_item_check label="Actieve sprekers" name="Active Speakers"/>
- <menu_item_check label="Negeerlijst" name="Mute List"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_check label="Camerabediening" name="Camera Controls"/>
- <menu_item_check label="Bewegingsbediening" name="Movement Controls"/>
- <menu_item_check label="Wereldkaart" name="World Map"/>
- <menu_item_check label="Mini-kaart" name="Mini-Map"/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_check label="Statistiekenbalk" name="Statistics Bar"/>
- <menu_item_check label="Eigendomlijnen" name="Property Lines"/>
- <menu_item_check label="Banlijnen" name="Banlines"/>
- <menu_item_check label="Landeigenaren" name="Land Owners"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu label="Tooltips" name="Hover Tips">
- <menu_item_check label="Toon tips" name="Show Tips"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Land tips" name="Land Tips"/>
- <menu_item_check label="Tips voor alle objecten" name="Tips On All Objects"/>
- </menu>
- <menu_item_check label="Markeer transparant" name="Highlight Transparent"/>
- <menu_item_check label="Bakens" name="beacons"/>
- <menu_item_check label="Verberg particles" name="Hide Particles"/>
- <menu_item_check label="Toon HUD bevestigingen" name="Show HUD Attachments"/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu_item_call label="Inzoomen" name="Zoom In"/>
- <menu_item_call label="Zoom standaard" name="Zoom Default"/>
- <menu_item_call label="Uitzoomen" name="Zoom Out"/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Schakelen naar volledig scherm" name="Toggle Fullscreen"/>
- <menu_item_call label="UI grootte naar standaard instellen" name="Set UI Size to Default"/>
- </menu>
- <menu label="Wereld" name="World">
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_check label="Altijd rennen" name="Always Run"/>
- <menu_item_check label="Vliegen" name="Fly"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Maak hier landmarkering" name="Create Landmark Here"/>
- <menu_item_call label="Thuis hier instellen" name="Set Home to Here"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Teleport naar huis" name="Teleport Home"/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Afwezig instellen" name="Set Away"/>
- <menu_item_call label="Niet-storen instellen" name="Set Busy"/>
- <menu_item_call label="Stop het animeren van mijn avatar" name="Stop Animating My Avatar"/>
- <menu_item_call label="Toetsen vrijgeven" name="Release Keys"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Account geschiedenis..." name="Account History..."/>
- <menu_item_call label="Beheer mijn account" name="Manage My Account..."/>
- <menu_item_call label="Koop L$..." name="Buy and Sell L$..."/>
- <menu_item_separator label="-----------" name="separator5"/>
- <menu_item_call label="Mijn land..." name="My Land..."/>
- <menu_item_call label="Over land..." name="About Land..."/>
- <menu_item_call label="Koop land..." name="Buy Land..."/>
- <menu_item_call label="Regio/Estate..." name="Region/Estate..."/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu label="Omgeving instellingen" name="Environment Settings">
- <menu_item_call label="Zonsopgang" name="Sunrise"/>
- <menu_item_call label="Middag" name="Noon"/>
- <menu_item_call label="Zonsondergang" name="Sunset"/>
- <menu_item_call label="Middernacht" name="Midnight"/>
- <menu_item_call label="Herstel naar regiostandaard" name="Revert to Region Default"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Omgeving editor" name="Environment Editor"/>
- </menu>
- </menu>
- <menu label="Gereedschappen" name="Tools">
- <menu label="Selecteergereedschap" name="Select Tool">
- <menu_item_call label="Focus" name="Focus"/>
- <menu_item_call label="Verplaatsen" name="Move"/>
- <menu_item_call label="Bewerken" name="Edit"/>
- <menu_item_call label="Maak" name="Create"/>
- <menu_item_call label="Land" name="Land"/>
- </menu>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_check label="Selecteer alleen mijn objecten" name="Select Only My Objects"/>
- <menu_item_check label="Selecteer alleen verplaatsbare objecten" name="Select Only Movable Objects"/>
- <menu_item_check label="Selecteer op omgeving" name="Select By Surrounding"/>
- <menu_item_check label="Toon verborgen selectie" name="Show Hidden Selection"/>
- <menu_item_check label="Toon lichtradius voor selectie" name="Show Light Radius for Selection"/>
- <menu_item_check label="Toon selectiestraal" name="Show Selection Beam"/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_check label="Snap aan grid" name="Snap to Grid"/>
- <menu_item_call label="Snap object XY aan grid" name="Snap Object XY to Grid"/>
- <menu_item_call label="Gebruik selectie voor grid" name="Use Selection for Grid"/>
- <menu_item_call label="Gridopties..." name="Grid Options..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_check label="Bewerk gekoppelde delen" name="Edit Linked Parts"/>
- <menu_item_call label="Koppel" name="Link"/>
- <menu_item_call label="Ontkoppel" name="Unlink"/>
- <menu_item_separator label="-----------" name="separator4"/>
- <menu_item_call label="Focus op selectie" name="Focus on Selection"/>
- <menu_item_call label="Zoom naar selectie" name="Zoom to Selection"/>
- <menu_item_call label="Koop object" name="Menu Object Take">
- <on_enable userdata="Koop,Neem" name="EnableBuyOrTake"/>
- </menu_item_call>
- <menu_item_call label="Neem kopie" name="Take Copy"/>
- <menu_item_call label="Object terug opslaan in objectinhoud" name="Save Object Back to Object Contents"/>
- <menu_item_separator label="-----------" name="separator6"/>
- <menu_item_call label="Toon script waarschuwing/fout venster" name="Show Script Warning/Error Window"/>
- <menu label="Hercompileer scripts in selectie" name="Recompile Scripts in Selection">
- <menu_item_call label="Mono" name="Mono"/>
- <menu_item_call label="LSL" name="LSL"/>
- </menu>
- <menu_item_call label="Scripts in selectie opnieuw instellen" name="Reset Scripts in Selection"/>
- <menu_item_call label="Scripts in selectie instellen op uitvoeren" name="Set Scripts to Running in Selection"/>
- <menu_item_call label="Scripts in selectie instellen op niet uitvoeren" name="Set Scripts to Not Running in Selection"/>
- </menu>
- <menu label="Help" name="Help">
- <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
- <menu_item_call label="Handleiding" name="Tutorial"/>
- <menu_item_separator label="-----------" name="separator"/>
- <menu_item_call label="Officiële Linden blog..." name="Official Linden Blog..."/>
- <menu_item_separator label="-----------" name="separator2"/>
- <menu_item_call label="Scripting portaal..." name="Scripting Portal..."/>
- <menu_item_separator label="-----------" name="separator3"/>
- <menu_item_call label="Rapporteer misbruik..." name="Report Abuse..."/>
- <menu_item_call label="Botsingen, duwen &amp; slaan" name="Bumps, Pushes &amp;amp; Hits..."/>
- <menu_item_call label="Lag Meter" name="Lag Meter"/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu label="Bug rapporteren" name="Bug Reporting">
- <menu_item_call label="Publieke problemenlijst..." name="Public Issue Tracker..."/>
- <menu_item_call label="Publieke problemenlijst help" name="Publc Issue Tracker Help..."/>
- <menu_item_separator label="-----------" name="separator7"/>
- <menu_item_call label="Bug rapporteren 101" name="Bug Reporing 101..."/>
- <menu_item_call label="Beveiligingsbevindingen..." name="Security Issues..."/>
- <menu_item_call label="Kwaliteitsbeheersing Wiki..." name="QA Wiki..."/>
- <menu_item_separator label="-----------" name="separator9"/>
- <menu_item_call label="Rapporteer bug..." name="Report Bug..."/>
- </menu>
- <menu_item_call label="Over [APP_NAME]..." name="About Second Life..."/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/default/xui/nl/mime_types.xml b/indra/newview/skins/default/xui/nl/mime_types.xml
deleted file mode 100644
index ba5de136a0..0000000000
--- a/indra/newview/skins/default/xui/nl/mime_types.xml
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<mimetypes name="default">
- <widgetset name="web">
- <label name="web_label">
- Web Inhoud
- </label>
- <tooltip name="web_tooltip">
- Deze locatie bevat Web inhoud
- </tooltip>
- <playtip name="web_playtip">
- Toon Web inhoud
- </playtip>
- </widgetset>
- <widgetset name="movie">
- <label name="movie_label">
- Film
- </label>
- <tooltip name="movie_tooltip">
- Hier kan een film afgespeeld worden
- </tooltip>
- <playtip name="movie_playtip">
- Afspelen film
- </playtip>
- </widgetset>
- <widgetset name="none">
- <label name="none_label">
- Geen Inhoud
- </label>
- <tooltip name="none_tooltip">
- Geen media hier
- </tooltip>
- </widgetset>
- <widgetset name="image">
- <label name="image_label">
- Afbeelding
- </label>
- <tooltip name="image_tooltip">
- Er is een afbeelding op deze locatie
- </tooltip>
- <playtip name="image_playtip">
- Bekijk de afbeelding van deze locatie
- </playtip>
- </widgetset>
- <widgetset name="audio">
- <label name="audio_label">
- Audio
- </label>
- <tooltip name="audio_tooltip">
- Er is audio op deze locatie
- </tooltip>
- <playtip name="audio_playtip">
- Speel de audio van deze locatie af
- </playtip>
- </widgetset>
- <scheme name="rtsp">
- <label name="rtsp_label">
- Real Time Streaming
- </label>
- </scheme>
- <mimetype name="blank">
- <label name="blank_label">
- - Geen -
- </label>
- </mimetype>
- <mimetype name="none/none">
- <label name="none/none_label">
- - Geen -
- </label>
- </mimetype>
- <mimetype name="audio/*">
- <label name="audio2_label">
- Audio
- </label>
- </mimetype>
- <mimetype name="video/*">
- <label name="video2_label">
- Video
- </label>
- </mimetype>
- <mimetype name="image/*">
- <label name="image2_label">
- Afbeelding
- </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 Audio/Video
- </label>
- </mimetype>
- <mimetype name="application/pdf">
- <label name="application/pdf_label">
- PDF Document
- </label>
- </mimetype>
- <mimetype name="application/postscript">
- <label name="application/postscript_label">
- Postscript Document
- </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">
- Web Pagina (XHTML)
- </label>
- </mimetype>
- <mimetype name="application/x-director">
- <label name="application/x-director_label">
- Macromedia Director
- </label>
- </mimetype>
- <mimetype name="application/x-shockwave-flash">
- <label name="application/x-shockwave-flash_label">
- Flash
- </label>
- </mimetype>
- <mimetype name="audio/mid">
- <label name="audio/mid_label">
- Audio (MIDI)
- </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">
- Afbeelding (BMP)
- </label>
- </mimetype>
- <mimetype name="image/gif">
- <label name="image/gif_label">
- Afbeelding (GIF)
- </label>
- </mimetype>
- <mimetype name="image/jpeg">
- <label name="image/jpeg_label">
- Afbeelding (JPEG)
- </label>
- </mimetype>
- <mimetype name="image/png">
- <label name="image/png_label">
- Afbeelding (PNG)
- </label>
- </mimetype>
- <mimetype name="image/svg+xml">
- <label name="image/svg+xml_label">
- Afbeelding (SVG)
- </label>
- </mimetype>
- <mimetype name="image/tiff">
- <label name="image/tiff_label">
- Afbeelding (TIFF)
- </label>
- </mimetype>
- <mimetype name="text/html">
- <label name="text/html_label">
- Web Pagina
- </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/nl/notifications.xml b/indra/newview/skins/default/xui/nl/notifications.xml
deleted file mode 100644
index 06e6d8ae7a..0000000000
--- a/indra/newview/skins/default/xui/nl/notifications.xml
+++ /dev/null
@@ -1,3044 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Toon mij dit niet meer.
- </global>
- <global name="alwayschoose">
- Kies altijd deze optie
- </global>
- <global name="implicitclosebutton">
- Sluiten
- </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="Onbekende waarschuwingsboodschap" name="MissingAlert">
- Uw versie van [APP_NAME] weet niet hoe het de waarschuwingsboodschap die zojuist ontvangen is moet weergeven.
-
-Foutdetails: De waarschuwing genaamd &apos;[_NAME]&apos; is niet gevonden in notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Reële waarde fout: Kon de volgende controllers niet vinden:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Er is momenteel geen handleiding beschikbaar.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
- </notification>
- <notification name="BadInstallation">
- Er is een fout opgetreden tijdens het bijwerken van [APP_NAME]. Download alstublieft de meest recente versie van secondlife.com
- <usetemplate
- name="okbutton"
- yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Netwerkfout: Kan geen verbinding opzetten.
-&apos;[DIAGNOSTIC]&apos;
-Controleer alstublieft uw netwerkverbinding.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Berichtsjabloon [PATH] niet gevonden.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Wijzigingen aan huidig kledingstuk/lichaamsdeel opslaan?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/>
- </notification>
- <notification name="CompileQueueSaveText">
- Er was een probleem met het uploaden van de tekst van een script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- Er was een probleem met het uploaden van het gecompileerde script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens.
- </notification>
- <notification name="WriteAnimationFail">
- Er was een probleem met het wegschrijven van animatie gegevens. Probeer het alstublieft later nog eens.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- Er was een probleem met het uploaden van de veiling foto vanwege de volgende reden: [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Het is niet mogelijk om de inhoud van meer dan één item tegelijk te zien.
-Kies alstublieft slechts één item en probeer het opnieuw.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Wijzigingen aan kledingstuk/lichaamsdeel opslaan?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Alles Opslaan"/>
- </notification>
- <notification name="GrantModifyRights">
- Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk om elk willekeurig object te wijzigen, te verwijderen of om WILLEKEURIGE objecten die u in wereld heeft terug te nemen. Wees HEEL voorzichtig met het uitgeven van dit recht.
-Wilt u wijzigingsrechten aan [FIRST_NAME] [LAST_NAME] geven?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk elk WILLEKEURIG object te wijzigen die u in wereld heeft. Wees HEEL voorzichtig met het uitgeven van dit recht.
-Wilt u wijzigingsrechten aan de geselecteerde inwoners geven?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRights">
- Wilt u de wijzigingsrechten voor [FIRST_NAME] [LAST_NAME] terugnemen?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Wilt u de wijzigingsrechten voor de geselecteerde inwoners terugnemen?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Kan geen groep aanmaken.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Wijzigingen Negeren" yestext="Wijzigingen Toepassen"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- U moet een onderwerp opgeven om dit bericht te kunnen versturen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- U staat op het punt groepsleden de rol [ROLE_NAME] te geven.
-Leden kunnen niet van die groep worden verwijderd.
-De leden moeten zichzelf ontheffen uit deze rol.
-Weet u zeker dat u door wilt gaan?
- <usetemplate ignoretext="Wanneer u groepsleden toevoegt aan de eigenaren rol" name="okcancelignore" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- U staat op het punt de Bekwaamheid &apos;[ACTION_NAME]&apos; aan de Rol &apos;[ROLE_NAME]&apos; toe te voegen.
-
- *WAARSCHUWING*
- Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - Rollen geven die meer mogelijkheden hebben dan waar zij nu over beschikken, zichzelf daarmee verheffend tot bijna eigenaar mogelijkheden. Weet zeker waar u mee bezig bent alvorens deze Bekwaamheid toe te kennen.
-
-Deze Bekwaamheid toevoegen aan &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- U staat op het punt de Bekwaamheid &apos;[ACTION_NAME]&apos; aan de Rol &apos;[ROLE_NAME]&apos; toe te voegen.
-
- *WAARSCHUWING*
- Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - alle Bekwaamheden geven, zich daarmee verheffend tot bijna Eigenaar mogelijkheden.
-
-Deze Bekwaamheid toevoegen aan &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="ClickPublishHelpLand">
- Het selecteren van de &quot;Publiceer in Zoeken&quot; optie
-Het aan vinken van deze optie zal:
-- dit perceel weergeven in de zoek resultaten
-- de publieke objecten van dit perceel weergeven
-- dit perceel in web zoeken weergeven
- </notification>
- <notification name="ClickSoundHelpLand">
- Media en muziek kunnen alleen binnen het perceel ervaren worden. Geluid- en voice-opties kunnen worden beperkt tot het perceel of zullen worden gehoord door inwoners buiten het perceel, gebaseerd op hun inhoudscategorie. Ga naar de kennisbank om meer te leren over hoe deze opties ingesteld kunnen worden.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=5046
- </url>
- <usetemplate
- name="okcancelbuttons"
- yestext="Ga naar kennisbank"
- notext="Sluiten" />
- </notification>
- <notification name="ClickSearchHelpAll">
- Zoekresultaten zijn georganiseerd op basis van het tabblad waar u zich in bevindt, uw inhoudscategorie, de gekozen categorie en andere factoren. Kijk alstublieft in de kennisbank voor meer details.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=4722
- </url>
- <usetemplate
- name="okcancelbuttons"
- yestext="Ga naar kennisbank"
- notext="Sluiten" />
- </notification>
- <notification name="ClickPublishHelpLandDisabled">
- U kunt dit perceel niet zichtbaar maken in zoeken omdat het zich in een regio bevindt dat dit niet toelaat
- </notification>
- <notification name="ClickPublishHelpAvatar">
- Het selecteren van &quot;Weergeven in Zoeken&quot; zal weergeven:
-- mijn profiel in de zoek resultaten
-- een link naar mijn profiel in de publieke groep pagina&apos;s
- </notification>
- <notification name="ClickPartnerHelpAvatar">
- U kunt een andere Inwoner ten huwelijk vragen of een bestaand partner schap verbreken via de [SECOND_LIFE] website.
-
-Naar de [SECOND_LIFE] website gaan voor meer informatie over partner schap?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ga naar Pagina"/>
- </notification>
- <notification name="ClickUploadHelpPermissions">
- Uw standaard permissies werken mogelijk niet in oudere regio&apos;s.
- </notification>
- <notification name="ClickWebProfileHelpAvatar">
- Als een Inwoner een web profiel URL heeft ingesteld:
-* Klik op &apos;Laden&apos; om de pagina in deze web tab te zien.
-* Klik op Laden &gt; &apos;In externe browser&apos; om de pagina in uw standaard browser te zien
-* Klik op Laden &gt; &apos;Thuis pagina URL&apos; om terug te keren naar het web profiel van deze Inwoner indien U verder genavigeerd bent.
-
-Indien u uw eigen profiel bekijkt, kunt U elke willekeurige URL opgeven als uw web profiel en op OK klikken om het in te stellen.
-Andere Inwoners kunnen de door U opgegeven URL bezoeken indien zij uw profiel bekijken.
- </notification>
- <notification name="JoinGroupCanAfford">
- Deelname aan deze groep kost L$[COST].
-Wilt u doorgaan?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Deelnemen"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Deelname aan deze groep kost L$[COST].
-U heeft niet genoeg L$ om deel te kunnen nemen aan deze groep.
- </notification>
- <notification name="LandBuyPass">
- Voor L$[COST] krijgt u toegang tot het land (&apos;[PARCEL_NAME]&apos;) voor de duur van [TIME] uur.
-
-Een pas kopen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- De verkoopprijs moet ingesteld staan op meer dan L$0 indien u aan iemand verkoopt.
-Kies een individu indien u het voor L$0 verkoopt.
- </notification>
- <notification name="ConfirmLandSaleChange">
- De geselecteerde [LAND_SIZE] m² land is te koop gezet.
-Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME].
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- ATTENTIE: Het aanklikken van &apos;verkoop aan iedereen&apos; zal uw land beschikbaar maken aan de gehele [SECOND_LIFE] gemeenschap, zo ook diegenen niet in deze regio!
-
-De geselecteerde [LAND_SIZE] m² land is te koop gezet.
-Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME].
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Weet u zeker dat u alle met de groep &apos;[NAME]&apos; gedeelde objecten van dit perceel wilt retourneren naar de inventaris van hun vorige eigenaren?
-
-*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen!
-
-Objecten: [N]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Weet u zeker dat u alle objecten van Inwoner &apos;[NAME]&apos; op dit perceel wilt retourneren naar hun inventaris?
-
-Objecten: [N]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Weet u zeker dat u al uw eigen objecten op dit perceel wilt retourneren naar uw inventaris?
-
-Objecten: [N]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Weet u zeker dat u alle objecten op dit perceel die geen eigendom van u zijn wilt retourneren naar de inventaris van hun eigenaren?
-Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren.
-
-*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen!
-
-Objecten: [N]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Weet u zeker dat u alle objecten op dit perceel die GEEN eigendom zijn van [NAME] wilt retourneren naar de inventaris van hun eigenaar? Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren.
-
-*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen!
-
-Objecten: [N]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Weet u zeker dat u alle weergegeven objecten wilt retourneren naar de inventaris van hun eigenaar?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Weet u zeker dat u alle objecten in deze regio uit wilt schakelen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Alle objecten op dit perceel die NIET gedeeld worden met de groep [NAME] retourneren naar hun eigenaren?
-
-Objecten: [N]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Kan scripts niet uitschakelen.
-Voor de hele regio is letsel ingeschakeld.
-Scripts moeten toegestaan worden om wapens te kunnen laten werken.
- </notification>
- <notification name="MustBeInParcel">
- U moet binnen een perceel staan om het Landings Punt in te stellen.
- </notification>
- <notification name="PromptRecipientEmail">
- Geef alstublieft een geldig email adres op van de ontvanger(s).
- </notification>
- <notification name="PromptSelfEmail">
- Voer uw email adres in.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Foto e-mailen met het standaard onderwerp of bericht?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Fout opgetreden met het verwerken van de foto gegevens
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Fout opgetreden met het coderen van de foto.
- </notification>
- <notification name="ErrorUploadingPostcard">
- Er is een probleem met het verzenden van de foto vanwege de volgende reden: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- Er is een probleem met het uploaden van de rapport foto vanwege de volgende reden: [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- U moet akkoord gaan met de Voorwaarden van Dienstverlening (Terms of Service) om in te kunnen loggen in [SECOND_LIFE].
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Kon de outfit niet aan doen.
-De outfit folder bevat geen kleding, lichaamsdelen of externe bevestigingen.
- </notification>
- <notification name="CannotWearTrash">
- U kunt geen kleding of lichaamsdelen aan trekken die zich in de vuilnisbak bevinden.
- </notification>
- <notification name="CannotWearInfoNotComplete">
- U kunt dat item niet aantrekken omdat het nog niet geladen is. Probeer het over een minuut opnieuw.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Oeps! Iets is nog leeg.
-U moet zowel de voornaam als de achternaam van uw avatar opgeven.
-
-U heeft een account nodig om [SECOND_LIFE] binnen te gaan. Wilt u er nu een maken?
- <url name="url">
- https://join.secondlife.com/index.php?lang=nl-NL
- </url>
- <usetemplate name="okcancelbuttons" notext="Probeer het opnieuw" yestext="Maak een nieuw account"/>
- </notification>
- <notification name="AddClassified">
- Geclassificeerde advertenties verschijnen een week lang in de &apos;Advertentie&apos; sectie van de Zoek gids en op www.secondlife.com.
-Vul uw advertentie in en klik op &apos;Publiceer...&apos; om het toe te voegen aan de gids.
-Er zal u om een prijs worden gevraagd als u deze gaat publiceren.
-Indien u meer betaald zal uw advertentie hoger in de lijst verschijnen en ook hoger als men op sleutelwoorden zoekt.
- <usetemplate ignoretext="Indien u een advertentie toevoegt" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="DeleteClassified">
- Advertentie &apos;[NAME]&apos; verwijderen?
-Betaalde advertentiekosten zullen niet worden terug gestort.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ClassifiedSave">
- Wijzigingen in advertentie [NAME] opslaan?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Favoriet [PICK] verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Naar de [SECOND_LIFE] evenementen web pagina gaan?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Kies alstublieft een voorstel om in te zien.
- </notification>
- <notification name="SelectHistoryItemToView">
- Kies alstublieft een geschiedenis item om in te zien.
- </notification>
- <notification name="ResetShowNextTimeDialogs">
- Wilt u alle Pop-Up&apos;s opnieuw inschakelen die u eerder aanmerkte als &apos;Laat mij niet opnieuw zien&apos;?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="SkipShowNextTimeDialogs">
- Wilt u alle Pop-Up&apos;s uitschakelen die overgeslagen kunnen worden?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="CacheWillClear">
- De cache zal geleegd worden als u [APP_NAME] opnieuw start.
- </notification>
- <notification name="CacheWillBeMoved">
- De cache zal verplaatst worden als u [APP_NAME] opnieuw start.
-Opmerking: Dit zal de Cache legen.
- </notification>
- <notification name="ChangeConnectionPort">
- Poort instelling zullen effect hebben nadat u [APP_NAME] opnieuw start.
- </notification>
- <notification name="ChangeSkin">
- De nieuwe skin zal verschijnen nadat u [APP_NAME] opnieuw start.
- </notification>
- <notification name="GoToAuctionPage">
- Ga naar de [SECOND_LIFE] web pagina om de veiling details te zien of een bod uit te brengen.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Wijzigingen Opslaan?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- Gebaar opslaan is niet gelukt.
-Dit gebaar heeft te veel stappen.
-Probeer enkele stappen te verwijderen en opnieuw op te slaan.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- Gebaar opslaan is niet gelukt. Probeer het over enkele ogenblikken opnieuw.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Kon het gebaar niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden.
-
-Het object kan buiten bereik of mogelijk verwijderd zijn.
- </notification>
- <notification name="GestureSaveFailedReason">
- Er was een probleem met het opslaan van het gebaar vanwege de volgende reden: [REASON]. Probeert u het gebaar later nogmaals op te slaan.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- Kon de notitiekaart niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden.
-
-Het object kan buiten bereik of mogelijk verwijderd zijn.
- </notification>
- <notification name="SaveNotecardFailReason">
- Er was een probleem met het opslaan van de notitiekaart vanwege de volgende reden: [REASON]. Probeert u de notitiekaart later nogmaals op te slaan.
- </notification>
- <notification name="ScriptCannotUndo">
- Kon niet alle wijzigingen ongedaan maken in uw versie van het script.
-Wilt u de laatst op de server opgeslagen versie laden?
-(**Waarschuwing** Deze operatie kan niet ongedaan gemaakt worden.)
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- Er was een probleem met het opslaan van een script vanwege de volgende reden: [REASON]. Probeert u het script later nogmaals op te slaan.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Kon het script niet opslaan omdat het object waar het in zit niet gevonden kon worden.
-Het object kan buiten bereik of mogelijk verwijderd zijn.
- </notification>
- <notification name="SaveBytecodeFailReason">
- Er was een probleem met het opslaan van een gecompileerd script vanwege de volgende reden: [REASON]. Probeert u het script later nogmaals op te slaan.
- </notification>
- <notification name="CouldNotStartStopScript">
- Kon het script niet starten of stoppen omdat het object wat het in zit niet gevonden kon worden.
-Het object kan buiten bereik of mogelijk verwijderd zijn.
- </notification>
- <notification name="CannotDownloadFile">
- Kon het bestand niet downloaden
- </notification>
- <notification name="CannotWriteFile">
- Kan niet naar bestand [[FILE]] schrijven
- </notification>
- <notification name="UnsupportedHardware">
- Waarschuwing: Uw systeem voldoet niet aan de [APP_NAME] minimum systeem eisen. Indien u [APP_NAME] gebruikt, ervaart u mogelijk slechte prestaties. Helaas kunnen we geen technische ondersteuning geven voor niet ondersteunde configuraties.
-
-MINSPECS
-Wilt u [_URL] bezoeken voor meer informatie?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=nl
- </url>
- <usetemplate ignoretext="Indien niet ondersteunde hardware gedetecteerd" name="okcancelignore" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="UnknownGPU">
- Uw systeem heeft een grafische kaart die bij ons nog niet bekend is op dit moment.
-
-Dit is vaak het geval met nieuwe hardware waarbij wij nog niet de kans gehad hebben om het te testen. [APP_NAME] zal mogelijk naar behoren functioneren, doch het kan zijn dat u uw grafische instellingen naar geschiktere waarden zult moeten instellen.
-(Bewerken menu &gt; Voorkeuren &gt; Grafisch).
- <form name="form">
- <ignore name="ignore" text="Indien een onbekende grafische kaart gedetecteerd"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] is gestopt bij het initialiseren van de grafische stuurprogramma&apos;s.
-Grafische kwaliteit zal op zijn laagst worden ingesteld om veel voorkomende fouten met stuurprogramma&apos;s te vermijden.
-Dit zal sommige grafische opties uitschakelen.
-Wij adviseren u de stuurprogramma&apos;s van uw grafische kaart bij te werken.
-Grafische kwaliteit kan verhoogd worden in Voorkeuren &gt; Grafisch.
- </notification>
- <notification name="RegionNoTerraforming">
- De regio [REGION] staat geen land aanpassingen toe.
- </notification>
- <notification name="CannotCopyWarning">
- U heeft geen permissie dit item te kopiëren en zult het kwijtraken als u het weg geeft. Wilt u dit item echt aanbieden?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="CannotGiveItem">
- Kan inventaris item niet geven.
- </notification>
- <notification name="TransactionCancelled">
- Transactie afgebroken.
- </notification>
- <notification name="TooManyItems">
- Kan niet meer dan 42 items in één enkele inventaris overdracht geven.
- </notification>
- <notification name="NoItems">
- U heeft geen permissie de geselecteerde items over te dragen.
- </notification>
- <notification name="CannotCopyCountItems">
- U heeft geen permissie om [COUNT] geselecteerde items te kopiëren. U zult deze items uit uw inventaris kwijtraken.
-Weet u zeker dat u deze items wilt geven?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="CannotGiveCategory">
- U heeft geen permissie de geselecteerde map over te dragen.
- </notification>
- <notification name="FreezeAvatar">
- Avatar bevriezen?
-Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld.
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Ontdooien" yestext="Bevriezen"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- Bevries [AVATAR_NAME]?
-Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld.
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Ontdooien" yestext="Bevriezen"/>
- </notification>
- <notification name="EjectAvatarFullname">
- [AVATAR_NAME] van uw land verwijderen?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Verwijderen en Bannen" yestext="Verwijderen"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- Deze avatar van u land verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- [AVATAR_NAME] van uw land verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder"/>
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- VERWERVINGS FOUT: Te veel objecten geselecteerd
- </notification>
- <notification name="AcquireErrorObjectSpan">
- VERWERVINGS FOUT: Objecten beslaan meer dan één regio.
-Verplaats alstublieft alle objecten die u wilt verwerven naar dezelfde regio.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Naar [_URL] gaan voor informatie over de aankoop L$?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Kon deze [COUNT] objecten niet linken.
-U kunt maximaal [MAX] objecten linken.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- U kunt alleen complete sets van objecten linken en moet meer dan één object selecteren.
- </notification>
- <notification name="CannotLinkModify">
- Kon niet linken omdat u geen wijziging permissies heeft op alle objecten.
-
-Wees er van overtuigd dat er geen enkele geblokkeerd is en dat ze allen uw eigendom zijn.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Kon niet linken omdat niet alle objecten dezelfde eigenaar hebben.
-
-Wees er van overtuigd dat alle objecten uw eigendom zijn.
- </notification>
- <notification name="NoFileExtension">
- Geen bestandsextensie voor het bestand: &apos;[FILE]&apos;
-
-Zorg dat het bestand de juiste bestandsextensie heeft.
- </notification>
- <notification name="InvalidFileExtension">
- Ongeldige bestandsextensie [EXTENSION]
-Verwacht [VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Kon het geüploade geluidsbestand niet openen om te lezen:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Het bestand lijkt geen RIFF WAVE bestand te zijn:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Het bestand lijkt geen PCM WAVE audio bestand te zijn:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Het bestand heeft een ongeldig aantal kanalen (moet mono of stereo zijn):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Het bestand lijkt geen ondersteund sample rate te hebben (moet 44.1k zijn):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Het bestand lijkt geen ondersteund word size te hebben (moet 8 of 16 bit zijn):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- Kon geen &apos;data&apos; chunk in WAV header vinden:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Audio bestand is te lang (10 seconden maximum):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- Probleem met bestand [FILE]:
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Kon geen tijdelijk gecomprimeerd geluidsbestand openen om naar toe te schrijven: [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Onbekende Vorbis codeer fout in: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Kan bestand niet coderen: [FILE]
- </notification>
- <notification name="CorruptResourceFile">
- Beschadigd bron bestand: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Onbekende Linden bronbestandsversie in bestand: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Niet mogelijk om uitvoerbestand te maken: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- Wij ondersteunen momenteel geen bulk upload van animatie bestanden.
- </notification>
- <notification name="CannotUploadReason">
- Niet mogelijk om bestand [FILE] te uploaden vanwege de volgende reden: [REASON]
-Probeer het later opnieuw.
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- U kunt hier geen land markering maken omdat de eigenaar van het land dit niet toestaat.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- Niet mogelijk om te &apos;her compileren&apos;.
-Selecteer een object met een script.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- Niet mogelijk om te &apos;hercompileren&apos;.
-
-Selecteer objecten met scripts waarvan u permissie heeft deze aan te passen.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- Kan geen &apos;Opnieuw instellen&apos; uitvoeren.
-
-Selecteer objecten met scripts.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- Kan geen &apos;Opnieuw instellen&apos; uitvoeren.
-
-Selecte objecten met scripts waarvan u permissie heeft deze aan te passen.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- Kan geen enkele scripts instellen op &apos;Uitvoeren&apos;.
-
-Selecteer objecten met scripts.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- Kan geen enkele scripts instellen op &apos;Niet uitvoeren&apos;.
-
-Selecteer objecten met scripts.
- </notification>
- <notification name="NoFrontmostFloater">
- Geen voorgaande floating waarde om op te slaan.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- Uw zoek opdracht was aangepast en de woorden die te kort waren zijn verwijderd.
-
-Gezocht naar: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Uw zoek termen waren te kort en er is geen zoekopdracht uitgevoerd.
- </notification>
- <notification name="CouldNotTeleportReason">
- Kon niet Teleporteren.
-[REASON]
- </notification>
-
- <notification name="invalid_tport">
-Er is een probleem opgetreden bij het verwerken van uw verzoek voor een teleport. U dient wellicht opnieuw in te loggen voor uw kunt teleporteren. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op:
-www.secondlife.com/support
- </notification>
- <notification name="invalid_region_handoff">
-Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio&apos;s. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op:
-www.secondlife.com/support
- </notification>
- <notification name="blocked_tport">
-Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen.
- </notification>
- <notification name="nolandmark_tport">
-Sorry, het systeem was niet in staat de bestemming van de landmarkering te vinden.
- </notification>
- <notification name="timeout_tport">
-Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer.
- </notification>
- <notification name="noaccess_tport">
-Sorry, u heeft geen toegang tot die teleportbestemming.
- </notification>
- <notification name="missing_attach_tport">
-Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren.
- </notification>
- <notification name="too_many_uploads_tport">
-De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied.
- </notification>
- <notification name="expired_tport">
-Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
- </notification>
- <notification name="expired_region_handoff">
-Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
- </notification>
- <notification name="no_host">
-Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten.
- </notification>
- <notification name="no_inventory_host">
-Het inventarissysteem is momenteel niet beschikbaar.
- </notification>
-
- <notification name="CannotSetLandOwnerNothingSelected">
- Kan landeigenaar niet instellen:
-Geen perceel geselecteerd.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Kon geen land eigendom forceren omdat de selectie meerder regio&apos;s omvat.
-Selecteer alstublieft een kleiner gebied en probeer het opnieuw.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Dit perceel staat voor veiling aangemerkt. Eigendom forceren zal de veiling afbreking en kan potentieel een aantal inwoners niet erg blij maken als het bieden al is begonnen. Eigendom forceren?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Unable to contentify:
-Geen perceel geselecteerd.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Unable to contentify:
-Geen regio geselecteerd.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Kan land niet afstaan:
-Geen perceel geselecteerd.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Kan land niet afstaan:
-kan de regio niet vinden.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Kan land niet kopen:
-Geen perceel geselecteerd.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Kan land niet kopen:
-Kan de regio niet vinden waar dit land zich bevind.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- U kunt het Koop Land venster niet sluiten totdat [APP_NAME] de prijs van de transactie geschat heeft.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Kan land niet toekennen:
-Geen perceel geselecteerd.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Kan land niet toekennen:
-Geen groep geselecteerd.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Kan land niet toekennen:
-Kan de regio niet vinden waar dit land zich bevind.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Kan land niet toekennen:
-Meerder percelen geselecteerd.
-
-Probeer één enkel perceel te selecteren.
- </notification>
- <notification name="ParcelCanPlayMedia">
- Deze locatie van streaming media afspelen.
-
-Streaming media vereisen een snelle internet verbinding.
-
-Streaming media afspelen wanneer beschikbaar?
-(U kunt deze optie later wijzigen onder Preferenties &gt; Audio &amp; Video.)
- <usetemplate name="okcancelbuttons" notext="Uitschakelen" yestext="Media Afspelen"/>
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Kan land niet toekennen:
-Wacht op de server om eigendom te rapporteren.
-
-Probeer het alstublieft opnieuw.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Kan land niet toekennen:
-De regio [REGION] staat geen overdracht van land toe.
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Kan land niet afstaan:
-Wacht op server om de perceel informatie bij te werken.
-
-Probeer het over enkele ogenblikken opnieuw.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Kan land niet afstaan:
-Niet alle geselecteerde percelen zijn uw eigendom.
-
-Kies alstublieft één perceel.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Kan land niet afstaan:
-U heeft geen permissie dit perceel vrij te geven.
-Percelen in uw eigendom verschijnen in groen.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Kan land niet afstaan:
-Kan de regio niet vinden waar dit land zich bevind.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Kan land niet afstaan:
-De regio [REGION] staat geen overdracht van land toe.
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Kan land niet afstaan:
-U moet het gehele perceel selecteren om het vrij te kunnen geven.
-
-Selecteer het gehele perceel of deel het eerst op.
- </notification>
- <notification name="ReleaseLandWarning">
- U staat op het punt om [AREA] m² land af te staan.
-Met het afstaan van dit perceel zal het uit uw land houderschapsoverzicht verdwijnen, maar zal u geen L$ toekennen.
-
-Dit land afstaan?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Kan land niet opdelen:
-
-Geen percelen geselecteerd.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Kan land niet opdelen:
-
-U heeft het gehele perceel geselecteerd.
-Probeer een deel van het perceel te selecteren.
- </notification>
- <notification name="LandDivideWarning">
- Opdelen zal het perceel in twee delen verdelen en elk perceel kan zijn eigen instellingen hebben. Sommige instellingen zullen naar de standaard waarden terugkeren als de operatie voltooid is.
-
-Land opdelen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Kan het land niet opdelen:
-Kan de regio niet vinden waar dit land zich bevind.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Kan land niet verbinden:
-Kan de regio niet vinden waar dit land zich bevind.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Kan land niet verbinden:
-Geen perceel geselecteerd.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Kan land niet verbinden:
-U heeft slechts één perceel geselecteerd.
-
-Selecteer land over beide percelen.
- </notification>
- <notification name="CannotJoinLandSelection">
- Kan land niet verbinden:
-U moet meer dan één perceel selecteren.
-
-Selecteer land over beide percelen.
- </notification>
- <notification name="JoinLandWarning">
- Het verbinding van dit land zal één groot perceel opleveren uit alle percelen die de rechthoek doorkruisen.
-U zult de naam en opties van het nieuwe perceel opnieuw in moeten stellen.
-
-Land verbinden?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ShowOwnersHelp">
- Toon eigenaren:
-Kleur percelen om het eigenaarstype te tonen.
-
-Groen = Uw land
-Aqua = Land van uw groep
-Rood = Eigendom van anderen
-Geel = Te koop
-Paars = Ter veiling
-Grijs = Openbaar
- </notification>
- <notification name="ConfirmNotecardSave">
- Deze notitiekaart zal moet worden opgeslagen voordat het item kan worden gekopieerd of bekeken. Notitiekaart opslaan?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Dit item naar uw inventaris kopiëren?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Kopiëren"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Mislukt om resolutie te verwisselen van [RESX] naar [RESY]
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Fout: Onbekend gras: [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Fout: Onbekende bomen: [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- Kon &apos;[NAME]&apos; niet opslaan voor draagbaar item. U zult wat ruimte moeten maken op uw computer en het draagbare item opnieuw op moeten slaan.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Kon [NAME] niet opslaan in centrale (asset) opslag.
-Meestal is dit een tijdelijk probleem.
-Wijzig en sla het draagbaar item over een paar minuten opnieuw op.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- U bent uitgelogd uit [SECOND_LIFE]:
-[MESSAGE]
-U kunt uw bestaande IM en chat bekijken door te klikken op &apos;Toon IM &amp; Chat&apos;. Anders, klik op Afsluiten om [APP_NAME] direct te verlaten.
- <usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Toon IM &amp; Chat"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Kan land niet voor de groep kopen:
-U heeft geen permissie land te kopen voor de actieve groep.
- </notification>
- <notification label="Vriend Toevoegen" name="AddFriend">
- Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen.
-
-Vriendschap aanbieden aan [NAME]?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification label="Vriend Toevoegen" name="AddFriendWithMessage">
- Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen.
-
-Vriendschap aanbieden aan [NAME]?
- <form name="form">
- <input name="message">
- Wilt U mijn vriend zijn?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Wilt u [FIRST_NAME] [LAST_NAME] van uw Vriend lijst verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Wilt u meerder vrienden van uw Vrienden lijst verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Weet u zeker dat u alle gescripte objecten wilt verwijderen eigendom van
-** [AVATAR_NAME] **
-op allen hun land in deze sim?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Weet u zeker dat u ALLE gescripte objecten wilt VERWIJDEREN eigendom van
-** [AVATAR_NAME] **
-op AL het land in deze sim?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Weet u zeker, dat u ALLE objecten (gescript of niet) wilt VERWIJDEREN eigendom van
-** [AVATAR_NAME] **
-op AL het LAND in deze sim?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- U moet een naam opgeven voor uw advertentie.
- </notification>
- <notification name="MinClassifiedPrice">
- De prijs voor weergave moet minimaal L$[MIN_PRICE] zijn.
-
-Voor alstublieft een hoger bedrag in.
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Ten minste één van de geselecteerde items is geblokkeerd.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Ten minste één van de geselecteerde items is niet kopieerbaar.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Tenminste één van de geselecteerde items is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Ten minste één item is geblokkeerd.
-Ten minste één item is niet kopieerbaar.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Ten minste één item is geblokkeerd.
-Tenminste één object is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Ten minste één object is niet kopieerbaar.
-Tenminste één object is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Ten minste één item is geblokkeerd.
-Ten minste één item is niet kopieerbaar.
-Tenminste één object is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Ten minste één object is geblokkeerd.
-
-Weet u zeker dat u deze items terug wilt nemen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Niet alle objecten die u terug neemt zijn uw eigendom.
-Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren.
-
-Weet u zeker dat u deze items terug wilt nemen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Ten minste één object is geblokkeerd.
-Niet alle objecten die u terug neemt zijn uw eigendom.
-Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren.
-Echter, U kunt de huidige selectie wel terugnemen.
-
-Weet u zeker dat u deze items terug wilt nemen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Kan het land niet kopen omdat het meerder regio&apos;s omvat.
-
-Kiest u alstublieft een kleiner gebied en probeer het opnieuw.
- </notification>
- <notification name="DeedLandToGroup">
- Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden.
-Het aankoop bedrag zal niet naar de eigenaar worden terug gestort.
-Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld.
-
-Deze [AREA] m² land overdragen aan de groep &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden.
-De overdracht zal een simultane land contributie verlangen van de groep van &apos;[FIRST_NAME] [LAST_NAME]&apos;.
-Het aankoop bedrag zal niet naar de eigenaar worden terug gestort.
-Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld.
-
-Deze [AREA] m² land overdragen aan de groep &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Weergave instellingen zijn op veilige waarden ingesteld omdat u de -save optie op heeft gegeven.
- </notification>
- <notification name="DisplaySetToRecommended">
- Weergave instellingen zijn ingesteld op geadviseerde waarden, gebaseerd op uw systeem configuratie.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- </notification>
- <notification name="AvatarMoved">
- Uw [TYPE] locatie is momenteel niet beschikbaar.
-[HELP]
-U bent naar een nabij gelegen regio verplaatst.
- </notification>
- <notification name="ClothingLoading">
- Uw kleding wordt nog steeds geladen.
-U kunt [SECOND_LIFE] normaal gebruiken en anderen zullen u correct zien.
- <form name="form">
- <ignore name="ignore" text="Indien kleding een erg lange tijd in beslag neemt om de laden"/>
- </form>
- </notification>
- <notification name="FirstRun">
- [APP_NAME] installatie compleet.
-
-Als dit de eerste keer is dat u [SECOND_LIFE] gebruikt, zult u een account aan moeten maken voordat u in kan loggen.
-Terugkeren naar [https://join.secondlife.com/index.php?lang=nl-NL secondlife.com] om een nieuw account aan te maken?
- <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Nieuw Account..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Wij hebben problemen verbinding te maken. Er zou een probleem kunnen zijn met uw internet verbinding of met de [SECOND_LIFE] servers.
-
-U kunt uw internet verbinding controleren en het over een paar minuten opnieuw proberen, op Help klikken om verbinding te maken met onze support website, of klik op Teleporteren om een poging te doen naar uw thuis locatie te teleporteren.
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Help"/>
- <button name="Teleport" text="Teleport"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Uw avatar zal over enkele ogenblikken verschijnen.
-
-Gebruik de pijltjestoetsen om te lopen.
-Druk op elk gewenst moment op F1 voor Help en om meer te leren over [SECOND_LIFE].
-Kies alstublieft een mannelijk of vrouwelijke avatar. U kunt later nog van gedachten veranderen.
- <usetemplate name="okcancelbuttons" notext="Vrouw" yestext="Man"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] L$ [PRICE] U heeft niet genoeg L$ om dit te doen.
- </notification>
- <notification name="GrantedModifyRights">
- U heeft het recht verkregen om objecten van [FIRST_NAME] [LAST_NAME] te wijzigen.
- </notification>
- <notification name="RevokedModifyRights">
- Uw recht om objecten van [FIRST_NAME] [LAST_NAME] is ingetrokken.
- </notification>
- <notification name="FlushMapVisibilityCaches">
- Dit zal de Kaart cache van deze regio opschonen.
-
-Dit is eigenlijk alleen nuttig voor debugging.
-(In productie, wacht 5 minuten, dan zal de Kaart van iedereen bijgewerkt worden als ze opnieuw verbinden.)
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Kan niet meer dan één object tegelijkertijd kopen. Selecteer alstublieft slechts één object en probeer opnieuw.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Kan niet de inhoud van meer dan één item per keer kopiëren.
-Kies alstublieft slechts één object en probeer het opnieuw.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Alle Inwoners in deze regio naar de thuis locatie Teleporteren?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Weet u zeker dat u alle objecten wilt retourneren eigendom van [USER_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Kon de regio textuur niet plaatsen:
-Terrein textuur [TEXTURE_NUM] heeft een ongeldige bit diepte van [TEXTURE_BIT_DEPTH].
-
-Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op &quot;Toepassen&quot;.
- </notification>
- <notification name="InvalidTerrainSize">
- Kon de regio textuur niet plaatsen:
-Terrein textuur [TEXTURE_NUM] is te groot met [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-
-Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op &quot;Toepassen&quot;.
- </notification>
- <notification name="RawUploadStarted">
- Upload gestart. Het kan tot twee minuten duren, afhankelijk van u verbindings snelheid.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Wilt u werkelijk het huidige terrein &apos;baken&apos;, dit als middelpunt voor de verhoog/verlaag limieten instellen en als standaard instellen voor het &apos;Herstel&apos; gereedschap?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- U kunt slechts [MAX_AGENTS] Toegestane Inwoners hebben.
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- U kunt slechts [MAX_BANNED] Verbannen Inwoners hebben.
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- Een poging [NUM_ADDED] agents toe te voegen is mislukt:
-Overstijgt de [MAX_AGENTS] [LIST_TYPE] limiet met [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- U kunt slechts [MAX_GROUPS] Toegestane Groepen hebben.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Bake"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- U kunt slechts [MAX_MANAGER] Estate Beheerders hebben.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Kan de estate eigenaar niet aan de Verbannen lijst van het estate toe voegen.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Kan het Uiterlijk niet veranderen totdat kleding en Postuur geladen zijn.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- De naam van uw advertentie moet beginnen met een letter van A tot Z of een nummer.
-Leestekens zijn niet toegestaan.
- </notification>
- <notification name="CantSetBuyObject">
- Kan Koop Object niet instellen omdat het object niet te koop is.
-Zet het object alstublieft te koop en probeer het opnieuw.
- </notification>
- <notification name="FinishedRawDownload">
- Download van raw terrein bestand geëindigd naar:
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- Een nieuwe versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-U moet deze update downloaden om [APP_NAME] te kunnen gebruiken.
- <usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Download"/>
- </notification>
- <notification name="DownloadWindows">
- Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
- <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
- <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
- </notification>
- <notification name="DownloadMacMandatory">
- Een nieuwe versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-U moet deze update downloaden om [APP_NAME] te kunnen gebruiken.
-
-Downloaden naar uw Applicatie Data map?
- <usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Download"/>
- </notification>
- <notification name="DownloadMac">
- Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
-
-Downloaden naar uw Applicatie Data map?
- <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
-
-Downloaden naar uw Applicatie Data map?
- <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
- </notification>
- <notification name="DeedObjectToGroup">
- Dit object overdragen aan de groep zal de groep:
-* L$ ontvangen als betaald in het object
- <usetemplate ignoretext="Bij objecten die overgedragen worden aan groepen" name="okcancelignore" notext="Annuleren" yestext="Overdragen"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Uw systeem browser openen om deze inhoud te bekijken?
- <usetemplate ignoretext="Bij openen van systeem browser om de webpagina te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- Naar www.secondlife.com gaan om uw account te beheren?
- <usetemplate ignoretext="Bij openen van webbrowser om uw account te beheren" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Bezoek de [SECOND_LIFE] Wiki voor details over hoe een Veiligheids Probleem (Security Issue) te rapporteren.
- <usetemplate ignoretext="Bij openen webbrowser om de Veiligheids Problemen Wiki (Security Issues Wiki) te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Bezoek de [SECOND_LIFE] QA Wiki (Kwaliteitsbeheersing Wiki).
- <usetemplate ignoretext="Bij openen webbrowser om de QA Wiki (Kwaliteitsbeheersing Wiki) te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Bezoek de [SECOND_LIFE] Publieke problemenlijst, waar u Bugs en andere Problemen kunt rapporteren.
- <usetemplate ignoretext="Bij openen webbrowser om de Publieke problemenlijst te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
- </notification>
- <notification name="WebLaunchPublicIssueHelp">
- Bezoek de [SECOND_LIFE] Wiki voor informatie over het gebruik van de Publieke problemenlijst.
- <usetemplate ignoretext="Bij openen webbrowser om de Publieke problemenlijst Wiki te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Ga naar de Officiële Linden Blog voor het laatste Nieuws en Informatie.
- <usetemplate ignoretext="Bij openen webbrowser om de blog te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Naar de Script Gids gaan voor hulp met scripten?
- <usetemplate ignoretext="Bij openen webbrowser om de Script Gids te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Naar de LSL Portaal gaan voor hulp met scripten?
- <usetemplate ignoretext="Bij openen webbrowser om de LSL Portal te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
- </notification>
- <notification name="ReturnToOwner">
- Weet u zeker dat u de geselecteerde objecten wilt retourneren naar de eigenaren?
-Overdraagbare toegekende objecten zullen naar de oorspronkelijke eigenaren worden geretourneerd.
-
-*WAARSCHUWING* Niet overdraagbare toegekende objecten zullen worden verwijderd!
- <usetemplate ignoretext="Bij retourneren objecten naar de eigenaren" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- U bent momenteel een lid van de groep [GROUP].
-Groep Verlaten?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Weet u HEEL ZEKER dat u alle gebruikers uit het grid wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder Alle Gebruikers"/>
- </notification>
- <notification name="MuteLinden">
- Sorry, u kunt geen Linden Negeren
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- U kunt geen veiling starten op een perceel dat al te koop is gezet. Schakel de landverkoop uit wanneer u zeker bent dat u een veiling wil starten.
- </notification>
- <notification label="Negeren van object mislukt" name="MuteByNameFailed">
- U heeft deze naam al genegeerd.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Alhoewel toegestaan, verwijderen van de inhoud kan het object beschadigen. Wilt u dit item verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Kan op dit moment geen visitekaart aanbieden. Probeer het alstublieft later opnieuw.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Kan op dit moment geen vriendschap aanbieden. Probeer het alstublieft later opnieuw.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- Niet Storen modus ingesteld.
-
-Chat and instant messages zullen verborgen blijven. Instant messages zullen uw Niet Storen melding krijgen. Alle teleport aanbiedingen zullen worden afgewezen. Alle inventaris aanbiedingen zullen in uw Vuilnisbak terecht komen.
- <usetemplate ignoretext="Bij instellen Niet Storen modus" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- U ben lid van teveel groepen om lid te worden van een andere. Verlaat op zijn minst één groep alvorens lid te worden van een andere of weiger de lidmaatschap aanbieding.
-Om een groep te verlaten, selecteer de &apos;Groep..&apos; optie via het &apos;Bewerken&apos; menu.
-
-[NAME] heeft u uitgenodigd om lid te worden van de groep als algemeen lid.
-
-[INVITE]
- <usetemplate name="okcancelbuttons" notext="Afslaan" yestext="Lid worden"/>
- </notification>
- <notification name="KickUser">
- Verwijder deze gebruiker met welk bericht?
- <form name="form">
- <input name="message">
- Een administrator heeft u uitgelogd.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Verwijder iedereen momenteel op het grid met welk bericht?
- <form name="form">
- <input name="message">
- Een administrator heeft u uitgelogd.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Bevries deze gebruiker met welk bericht?
- <form name="form">
- <input name="message">
- U bent bevroren. U kunt zich niet verplaatsen of praten. Een administrator zal contact met u opnemen via instant message (IM).
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Ontdooi deze gebruiker met welk bericht?
- <form name="form">
- <input name="message">
- U bent niet langer bevroren.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="OfferTeleport">
- Een Teleport aanbieden naar uw locatie met welk bericht?
- <form name="form">
- <input name="message">
- Voeg u bij mij in [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- God beveel gebruiker naar uw locatie?
- <form name="form">
- <input name="message">
- Voeg u bij mij in [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Weet u zeker dat u wilt teleporteren?
- <usetemplate ignoretext="Bij teleporteren via een landmarkering in inventaris" name="okcancelignore" notext="Annuleren" yestext="Teleporteren"/>
- </notification>
- <notification label="Bericht iedereen in uw Estate" name="MessageEstate">
- Type een kort bericht om naar iedereen sturen die momenteel in uw Estate aanwezig is.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification label="Wijzig Linden Estate" name="ChangeLindenEstate">
- U staat op het punt een Linden beheerde Estate te wijzigen mainland, teen grid, orientation, etc.).
-
-Dit is EXTREEM GEVAARLIJK om het fundamenteel de gebruikers ervaring kan aantasten.
-Op het mainland zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen.
-
-Doorgaan?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification label="Wijzig Linden Estate Toegang" name="ChangeLindenAccess">
- U staat op het punt de toegangslijst van een Linden Estate eigendom aan te passen (mainland, teen grid, orientation, etc.).
-
-Dit is GEVAARLIJK en zou alleen gedaan moeten worden om de hack toe te staan om objecten/L$ over te dragen in/uit het grid.
-Het zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateAllowedAgentAdd">
- Alleen aan toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateAllowedAgentRemove">
- Verwijderen van toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateAllowedGroupAdd">
- Alleen aan groeps toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateAllowedGroupRemove">
- Verwijderen van groeps toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateBannedAgentAdd">
- Weiger toegang voor alleen dit Estate of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateBannedAgentRemove">
- Deze Inwoner van de ban lijst voor toegang voor alleen dit Estate verwijderen of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateManagerAdd">
- Estate beheerder toevoegen voor alleen dit Estate of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Selecteer Estate" name="EstateManagerRemove">
- Estate beheerder verwijderen voor alleen dit Estate of voor [ALL_ESTATES]?
- <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
- </notification>
- <notification label="Bevestig Verwijderen" name="EstateKickUser">
- Verwijder [EVIL_USER] van deze Estate?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Weet u zeker dat u de Estate Convenant wilt wijzigen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- U wordt niet in die regio toegelaten vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert.
-
-Verifieer alstublieft dat u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- U wordt niet in die regio toegelaten vanwege uw inhoudscategorie.
-
-Ga naar de kennisbank voor meer informatie over inhoudscategorieën?
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate
- name="okcancelignore"
- yestext="Ga naar kennisbank"
- notext="Sluiten"
- ignoretext="Wanneer regiotoegang wordt geblokkeerd vanwege de inhoudscategorie"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- U wordt niet in die regio toegelaten vanwege uw inhoudscategorie.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- U wordt niet in die regio toegelaten vanwege uw inhoudscategorie.
-
-U kunt klikken op &apos;Wijzig voorkeur&apos; om uw inhoudscategorie voorkeur nu te verhogen en toegelaten te worden. U zult in staat zijn om [REGIONMATURITY] inhoud te zoeken en benaderen vanaf dit moment. Wanneer u later deze instelling wilt wijzigen, ga dan naar Bewerken &gt; Voorkeuren... &gt; Algemeen.
- <form name="form">
- <button
- name="OK"
- text="Wijzig voorkeur"/>
- <button
- default="true"
- name="Cancel"
- text="Sluiten"/>
- <ignore name="ignore" text="Wanneer regiotoegang wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/>
- </form>
- </notification>
- <notification name="LandClaimAccessBlocked">
- U kunt dit land niet opeisen vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert.
-
-Verifieer alstublieft dat u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- U kunt dit land niet opeisen vanwege uw inhoudscategorie.
-
-Ga naar de kennisbank voor meer informatie over inhoudscategorieën?
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate
- name="okcancelignore"
- yestext="Ga naar kennisbank"
- notext="Sluiten"
- ignoretext="Wanneer het opeisen van land wordt geblokkeerd vanwege de inhoudscategorie"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- U kunt dit land niet opeisen vanwege uw inhoudscategorie.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- U kunt dit land niet opeisen vanwege uw inhoudscategorie voorkeur.
-
-U kunt klikken op &apos;Wijzig voorkeur&apos; om uw inhoudscategorie voorkeur nu te verhogen en toegang te krijgen om binnen te treden. U zult in staat zijn om [REGIONMATURITY] inhoud vanaf nu te zoeken en benaderen. Wanneer u deze instelling later terug wilt zetten, gaat u naar Bewerken &gt; Voorkeuren... &gt; Algemeen.
- <usetemplate
- name="okcancelignore"
- yestext="Wijzig voorkeur"
- notext="Sluiten"
- ignoretext="Wanneer het opeisen van land wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- U kunt dit land niet kopen vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert.
-
-Verifieer alstublieft of u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
- <usetemplate
- name="okbutton"
- yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- U kunt dit land niet kopen vanwege uw inhoudscategorie.
-
-Ga naar de kennisbank voor meer informatie over inhoudscategorieën?
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate
- name="okcancelignore"
- yestext="Ga naar kennisbank"
- notext="Sluiten"
- ignoretext="Wanneer een landaankoop wordt geblokkeerd vanwege de inhoudscategorie"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- U kunt dit land niet kopen vanwege uw inhoudscategorie.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- U kunt dit land niet kopen vanwege uw inhoudscategorie voorkeur.
-
-U kunt klikken op &apos;Wijzig voorkeur&apos; om uw inhoudscategorie voorkeur nu te verhogen en toegang te krijgen om binnen te treden. U zult in staat zijn om [REGIONMATURITY] inhoud vanaf nu te zoeken en benaderen. Wanneer u deze instelling later terug wilt zetten, gaat u naar Bewerken &gt; Voorkeuren... &gt; Algemeen.
- <usetemplate
- name="okcancelignore"
- yestext="Wijzig voorkeur"
- notext="Sluiten"
- ignoretext="Wanneer een landaankoop wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- &quot;Er zijn teveel prims geselecteerd. Selecteer alstublieft [MAX_PRIM_COUNT] of minder prims en probeer opnieuw.&quot;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Probleem met importeren Estate Convenant.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Problemen met het toevoegen van een Estate beheerder. Eén of meer Estates kunnen een volle beheerders lijst hebben.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Problemen met toevoegen aan deze Estate lijst. Eén of meer Estates kunnen een volle lijst hebben.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Kan de asset van de notitiekaart op dit moment niet laden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Onvoldoende rechten om de notitiekaart in te zien geassocieerd met het opgevraagde asset ID.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- Asset ID voor de notitiekaart ontbreekt in de database.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Bedenk: kosten voor advertenties worden niet terugbetaald.
-
-Advertentie nu Publiceren voor L$[AMOUNT]?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Bevat deze advertentie Mature inhoud?
- <usetemplate
- canceltext="Annuleren"
- name="yesnocancelbuttons"
- notext="Nee"
- yestext="Ja"/>
- </notification>
- <notification name="SetGroupMature">
- Bevat deze groep Mature inhoud?
- <usetemplate
- canceltext="Annuleren"
- name="yesnocancelbuttons"
- notext="Nee"
- yestext="Ja"/>
- </notification>
- <notification label="Bevestig herstart" name="ConfirmRestart">
- Wilt u deze regio echt binnen 2 minuten herstarten?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification label="Bericht iedereen in deze regio" name="MessageRegion">
- Type een kort bericht om naar iedereen sturen die momenteel in regio aanwezig is.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification label="Weiger Land aanpassingen" name="HelpRegionBlockTerraform">
- Indien dit aan gevinkt kunnen landeigenaren geen terrein bewerkingen doen op hun land, ongeacht de per perceel ingestelde waarde voor &apos;Wijzig Terrein&apos;
-
-Standaard: uitgeschakeld
- </notification>
- <notification label="Blokkeer Vliegen" name="HelpRegionBlockFly">
- Indien dit is aan gevinkt kunnen personen niet vliegen in deze regio ongeacht de per perceel ingestelde waarde &apos;Vliegen&apos;
-
-Standaard: uitgeschakeld
- </notification>
- <notification label="Bulkwijzigen Inhoudpermissies" name="HelpBulkPermission">
- Het Bulkpermissiesgereedschap helpt u om snel de permissies op meerdere items in de inhoud van het geselecteerde object te wijzigen. Let echter op dat u alleen de permissies op de items in de Inhoud van de geselecteerde objecten instelt -- niet de permissies van het containerobject zelf.
-
-Merk ook op dat de permissies niet worden toegepast op de geneste inhoud van de items in Inhoud. Uw verzoek werkt alleen op items precies één niveau diep.
-
-U kunt selectief kiezen welke soorten objecten te wijzigen door gebruik te maken van de checklist onder &apos;Inhoud Types&apos; hier. Foto&apos;s worden opgenomen wanneer u Texturen selecteert.
-
-* Dit gereedschap is alleen succesvol in het wijzigen van permissies op objecten die u mag wijzigen.
-* U kunt geen &apos;Volgende Eigenaar&apos; permissies toekennen die u niet al bezit.
-* De &apos;Volgende Eigenaar&apos; permissies zijn slechts verzoeken. Indien een item niet alle nieuwe permissies kan overnemen, zal geen van zijn permissies wijzigen.
-
-Wanneer u klaar bent om de permissies in bulk te wijzigen, klik dan &apos;Toepassen&apos; en wacht tot de resultaten worden weergegeven.
-
-Indien u het Bulkpermissies venster sluit terwijl permissies gewijzigd worden, zal de verwerking gestopt worden.
- </notification>
- <notification label="Sta Letsel Toe" name="HelpRegionAllowDamage">
- Indien dit is aan gevinkt stelt het Letsel systeem in voor alle percelen, ongeacht de individuele instellingen op de percelen. Indien uitgeschakeld, kunnen perceel eigenaren het Letsel systeem op hun perceel activeren.
-
-Standaard: uitgeschakeld
- </notification>
- <notification label="Agent Limiet" name="HelpRegionAgentLimit">
- Stelt het maximale aantal toegestane avatars in voor deze regio.
-De prestaties kunnen variëren afhankelijk van het aantal aanwezige avatars.
-
-Standaard: 40
- </notification>
- <notification label="Object Bonus" name="HelpRegionObjectBonus">
- De Object Bonus is een vermeerderaar voor primitieven op een willekeurig perceel.
-Het bereik is van 1 tot 10. Ingesteld op &apos;1&apos; kan elk 512m² perceel 117 objecten bevatten. Ingesteld op &apos;2&apos; kan elk 512m² perceel 234 objecten bevatten, enzovoort. Het maximale aantal objecten blijft 15.000, ongeacht wat de Object Bonus is. Denk er aan, dat eenmaal ingesteld, het verlagen van de Object Bonus het retourneren of verwijderen van objecten tot gevolg kan hebben.
-
-Standaard: 1.0
- </notification>
- <notification label="Inhoudscategorie:" name="HelpRegionMaturity">
- Stelt de inhoudscategorie van de regio in, zoals getoond in de menubalk bovenaan de viewer van elke inwoner en in tooltips op de wereldkaart wanneer de aanwijzer boven deze regio zweeft. Deze instelling heeft ook invloed op de toegang tot deze regio en zoekresultaten. Andere inwoners kunnen alleen regio&apos;s binnengaan of zoekresultaten zien met dezelfde inhoudscategorie als die zij zelf hebben gekozen in hun voorkeuren.
-
-Het kan enige tijd duren voordat deze wijziging zichtbaar is op de wereldkaart.
- </notification>
- <notification label="Beperk Duwen" name="HelpRegionRestrictPushObject">
- Deze instelling stelt de hele regio in op beperkte duwen permissies.
-Indien aan gevinkt kunnen Inwoners alleen door hun zelf geduwd worden of door de perceel eigenaar.
-
-(Push (Duwen) verwijst naar de llPushObject() LSL functie)
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Perceel Samenvoegen/Opsplitsen" name="HelpParcelChanges">
- Deze instelling stel in of percelen die niet van de estate eigenaar zijn kunnen worden samengevoegd of opgesplitst.
-
-Indien niet aan gevinkt:
- * Alleen Estate eigenaren of beheerders kunnen percelen samenvoegen op opsplitsen.
- * Zij kunnen alleen percelen samenvoegen of opsplitsen die eigendom zijn van de eigenaar of van een groep met de juiste bevoegdheden.
-
-Indien aan gevinkt:
- * Alle perceel eigenaren kunnen percelen samenvoegen of opsplitsen die zij bezitten.
- * Voor percelen in Groep eigendom, kunnen alleen zij met de juiste rechten percelen samenvoegen of opsplitsen.
-
-Standaard: Ingeschakeld
- </notification>
- <notification label="Niet in Zoeken tonen" name="HelpRegionSearch">
- Deze optie aan vinken zal perceel eigenaren blokkeren hun perceel in Zoeken te tonen.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Regio Volwassenen Gewijzigd" name="RegionMaturityChange">
- De Volwassen instelling voor deze regio is bijgewerkt.
-Het kan enige tijd duren voordat de wijziging zichtbaar is op de Kaart.
- </notification>
- <notification label="Land Herverkoop" name="HelpRegionLandResell">
- Estate eigenaren en beheerders kunnen elk stuk land verkopen in eigendom van de Estate eigenaar.
-
-Indien deze optie niet is aan gevinkt, kunnen kopers hun land in deze regio niet verkopen.
-Indien deze optie is aan gevinkt, kunnen kopers hun land in deze regio verkopen.
-
-Standaard: Niet toestaan
- </notification>
- <notification label="Scripts Uitschakelen" name="HelpRegionDisableScripts">
- Indien de sim prestaties slecht zijn, kan een script de oorzaak zijn. Open de Statistieken balk (Ctrl+Shift+1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Script Tijd 25 ms of hoger is, klik dan op de Top Scripts knop. U krijgt dan een naam en lokatie van scripts die mogelijk de slechte prestaties veroorzaken.
-
-Het aan vinken van Scripts Uitschakelen en vervolgens op de Toepassen knop drukken, zal tijdelijk alle scripts in deze regio uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van het &apos;top script&apos;. Eenmaal aangekomen, onderzoek dan of het script het probleem veroorzaakt. U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen.
-Verwijder het vinkje van Scripts Uitschakelen en klik op Toepassen om scripts weer te reactiveren in de regio.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Botsingen Uitschakelen" name="HelpRegionDisableCollisions">
- Indien de sim prestaties slecht zijn, kunnen fysieke objecten de oorzaak zijn. Open de Statistieken balk (Ctrl+Shift+1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Sim Tijd (Fysiek) 20 ms of hoger is, klik dan op de Toon Top Botsingen knop. U krijgt dan een naam en lokatie van de fysieke objecten die mogelijk de slecht prestaties veroorzaken.
-
-Het aan vinken van de Botsingen Uitschakelen knop en vervolgens op de Toepassen knop drukken, zal tijdelijk object-object botsingen uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van de &apos;top botsingen&apos;. Eenmaal aangekomen, onderzoek dan het object. Botst het constant met andere objecten? U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen.
-Verwijder het vinkje van Botsingen Uitschakelen en klik op Toepassen om botsingen weer te reactiveren in de regio.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Fysiek Uitschakelen" name="HelpRegionDisablePhysics">
- Fysiek Uitschakelen is gelijkwaardig aan Botsingen Uitschakelen, alleen alle fysieke simulatie is uitgeschakeld. Dit betekend dat niet alleen alle objecten zullen stoppen met botsen, maar ook dat avatars zich niet meer kunnen bewegen.
-
-Dit zou alleen gebruikt moeten worden als het uitschakelen van Botsingen niet genoeg prestatie winst geeft om een fysiek probleem of top botsingen te onderzoeken.
-
-Indien u klaar bent, wees er dan zeker van Fysiek weer in te schakelen, anders kunnen avatars zich niet meer bewegen.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Top Botsingen" name="HelpRegionTopColliders">
- Toon een lijst van objecten van het grootste aantal potentiële object-object botsingen.
-Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld &gt; Statistieken Balk en kijk onder Simulator &gt; Tijd &gt; Sim Tijd (Fysiek) om te zien of meer dan 20 ms wordt gespendeerd aan fysiek.
- </notification>
- <notification label="Top Scripts" name="HelpRegionTopScripts">
- Toon een lijst van objecten die de meeste tijd besteden aan het uitvoeren van LSL scripts.
-Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld &gt; Statistieken Balk en kijk onder Simulator &gt; Tijd &gt; Script Tijd om te zien of meer dan 25 ms wordt gespendeerd aan scripts.
- </notification>
- <notification label="Herstart Regio" name="HelpRegionRestart">
- Herstart het server proces van de regio na een twee minuten waarschuwing.
-Alle Inwoners van de regio zullen de verbinding kwijt raken. De regio zal alle gegevens bewaren en zou binnen 90 seconden weer operabel moeten zijn.
-
-De regio herstarten zou de meeste prestatie problemen moeten verhelpen en zou normaal gesproken alleen gebruikt moeten worden indien aangegeven.
- </notification>
- <notification label="Water Hoogte" name="HelpRegionWaterHeight">
- Dit is de hoogte in meters waarop het water verschijnt.
-Als deze instelling anders is dan 20 en u heeft water aan de rand van de wereld of u heeft &apos;ontbrekend&apos; water, zal er een gat zichtbaar zijn.
-
-Standaard: 20
- </notification>
- <notification label="Terrein Ophogen" name="HelpRegionTerrainRaise">
- Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verhogen boven de standaard &apos;baked&apos; terrein hoogte.
-
-Standaard: 4
- </notification>
- <notification label="Terrein Verlagen" name="HelpRegionTerrainLower">
- Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verlagen onder de standaard &apos;baked&apos; terrein hoogte.
-
-Standaard: -4
- </notification>
- <notification label="Upload RAW Terrein" name="HelpRegionUploadRaw">
- Deze knop upload een .RAW bestand naar de regio waar u zich bevindt.
-Het bestand moet de juiste afmetingen hebben (RGB, 256x256) en 13 kanalen.
-De beste manier om een terrein bestand te maken is het downloaden van een bestaand RAW bestand. Een goede eerste stap is om het rode kanaal (land hoogte) aan te passen en dat te uploaden.
-
-De upload kan tot 45 seconden in beslag nemen. Bedenk dat het uploaden van een terrein bestand de objecten reeds aanwezig op het land *niet* zal verplaatsen, alleen het terrein zelf en de permissies geassocieerd met de percelen. Dit kan resulteren in objecten die ondergronds gaan.
-
-Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help.
- </notification>
- <notification label="Download RAW Terrein" name="HelpRegionDownloadRaw">
- Deze knop download een bestand welke de hoogte veld gegevens, perceel afmetingen, perceel te koop status en sommige perceel permissies bevat voor deze regio.
-Indien u het bestand opent in een programma als Photoshop, moet u de document afmetingen opgeven, welk RGB, 256x256 met 13 kanalen is. Dit terrein bestand kan op geen enkele andere manier worden geopend.
-
-Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help.
- </notification>
- <notification label="Gebruik Estate Zon" name="HelpRegionUseEstateSun">
- Dit aan vinken zorgt er voor dat de zon positie overeen komt met de zon positie in de rest van het Estate.
-
-Standaard: Ingeschakeld
- </notification>
- <notification label="Vaste Zon" name="HelpRegionFixedSun">
- Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Bake Terrein" name="HelpRegionBakeTerrain">
- Deze knop slaat de huidige vorm van het terrein op als nieuwe standaard voor de regio. Eenmaal baked, kan het land terugkeren naar de opgeslagen vorm wanneer u of anderen gebruik maken van de Wijzig Terrein &apos;Terugkeer&apos; optie. Het baked terrein is ook het uitgangspunt voor de terrein verhogings- en verlagingslimieten.
- </notification>
- <notification label="Estate Beheerders" name="HelpEstateEstateManager">
- Een Estate Beheerder is een Inwoner aan wie u de controle over de regio en estate instellingen heeft uitbesteed. De Estate Beheerder kan de instellingen wijzigen in deze panels, behalve het uploaden, downloaden en terrein bakken. In bijzonder kunnen zij Inwoners toestaan of verbannen van het Estate.
-
-Estate Beheerders kunnen alleen toegevoegd of verwijderd worden door de eigenaar van het Estate, niet door elkaar. Gebruik alstublieft alleen Inwoners die u kunt vertrouwen als Estate Beheerders, omdat uiteindelijk u verantwoordelijk bent voor hun acties.
- </notification>
- <notification label="Gebruik Globale Tijd" name="HelpEstateUseGlobalTime">
- Dit aan vinken zorgt ervoor dat de zon in uw estate dezelfde positie volgt als in Linden-eigendom &apos;mainland&apos; Estates.
-
-Standaard: aan
- </notification>
- <notification label="Vaste Zon" name="HelpEstateFixedSun">
- Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon.
- </notification>
- <notification label="Publieke Toegang" name="HelpEstateExternallyVisible">
- Dit aan vinken geeft aan dat Inwoners die in andere Estates zijn, deze Estate kunnen bezoeken zonder op de Toegangs lijst te staan.
-
-Standaard: Ingeschakeld
- </notification>
- <notification label="Direct Teleporteren Toestaan" name="HelpEstateAllowDirectTeleport">
- Indien aan gevinkt staat het Inwoners toe om direct te Teleporteren naar elke plek in uw Estate. Indien niet aan gevinkt kunnen Inwoners Teleporteren naar de dichtstbijzijnde telehub.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Toegang Toestaan" name="HelpEstateAllowResident">
- Toegang tot dit Estate zal gelimiteerd zijn tot Inwoners in deze lijst en onderstaande groepen. Deze instelling is allen beschikbaar indien Publieke Toegang niet is aan gevinkt.
- </notification>
- <notification label="Groeps Toegang Toestaan" name="HelpEstateAllowGroup">
- Toegang tot dit Estate zal gelimiteerd worden tot groepen in deze lijst en elke Inwoner bovenaan. Deze Instelling is alleen beschikbaar als Publieke Toegang niet is aan gevinkt.
- </notification>
- <notification label="Misbruik Email Adres" name="HelpEstateAbuseEmailAddress">
- Dit instellen met een geldig email adres zal misbruik rapporten op dit Estate doen versturen naar dat adres.
-Indien u het leeg laat, zullen misbruik rapporten alleen verzonden worden naar Linden Lab.
- </notification>
- <notification label="Toegang Weigeren" name="HelpEstateBanResident">
- Inwoners in deze lijst zijn de toegang geweigerd in uw Estate, ongeacht elke andere instelling.
- </notification>
- <notification label="Voice Chat Toestaan" name="HelpEstateVoiceChat">
- Percelen in dit Estate kunnen hun eigen Voice kanalen hebben waarin Inwoners die in de buurt van elkaar zijn, elkaar kunnen horen en met elkaar kunnen praten.
-
-Standaard: Uitgeschakeld
- </notification>
- <notification label="Voice Versie Ongelijkheid" name="VoiceVersionMismatch">
- Deze versie van [APP_NAME] is niet compatibel met de Voice spraak optie in deze regio. Om Voice Chat goed te laten functioneren, moet u [APP_NAME] bijwerken.
- </notification>
- <notification label="Estate Convenant" name="HelpEstateCovenant">
- Het instellen van een Estate Convenant maakt het u mogelijk om percelen in het Estate te verkopen. Indien de Convenant niet is ingesteld kunt u het niet verkopen. Een notitiekaart voor uw Convenant kan leeg zijn indien u geen regels wilt instellen, advies aan kopers wilt geven of iets anders in relatie tot het land wilt mededelen voor als men het koopt.
-
-Een Convenant kan gebruikt worden als u regels wilt mededelen, richtlijnen, culturele informatie of simpelweg uw eigen verwachtingen aan prospect kopers.
-Dit kan zoneren bevatten, bouw reglementen, betaal opties of elke andere vorm van informatie waarvan u het belangrijk vind dat de nieuwe eigenaar het heeft gezien en mee akkoord is gegaan alvorens het te kopen.
-
-De koper moet instemmen met de Convenant middels het aan vinken van het kadertje alvorens zij de aankoop af kunnen ronden. Estate Overeenkomsten zijn altijd zichtbaar in het Over Land dialoog venster voor elk perceel dat er eentje ingesteld heeft staan.
- </notification>
- <notification label="Kan Geen Objecten Kopen" name="BuyObjectOneOwner">
- Kan geen objecten van verschillende eigenaren tegelijk kopen.
-
-Kies alstublieft slechts één object en probeer het opnieuw.
- </notification>
- <notification label="Kan Inhoud Niet Kopen" name="BuyContentsOneOnly">
- Kan geen inhoud kopen van meer dan één object tegelijk.
-
-Kies alstublieft slechts één object en probeer het opnieuw.
- </notification>
- <notification label="Kan Inhoud Niet Kopen" name="BuyContentsOneOwner">
- Kan geen inhoud kopen van verschillende eigenaren tegelijk.
-
-Kies alstublieft slechts één object en probeer het opnieuw.
- </notification>
- <notification name="BuyOriginal">
- Koop originele object van [OWNER] voor L$[PRICE]?
-U zult de eigenaar worden van dit object.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Koop originele object voor L$[PRICE]?
-U zult de eigenaar worden van dit object.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Koop een kopie van [OWNER] voor L$[PRICE]?
-Het object zal gekopieerd worden naar uw inventaris.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Koop een kopie voor L$[PRICE]?
-Het object zal gekopieerd worden naar uw inventaris.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Koop de inhoud van [OWNER] voor L$[PRICE]?
-De inhoud zal naar uw inventaris gekopieerd worden.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Koop de inhoud voor L$[PRICE]?
-De inhoud zal naar uw inventaris gekopieerd worden.
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Deze transactie zal:
-[ACTION]
-
-Weet u zeker dat u verder wilt gaan met deze aankoop?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Deze transactie zal:
-[ACTION]
-
-Weet u zeker dat u verder wilt gaan met deze aankoop?
-Voer alstublieft opnieuw uw wachtwoord in en klik op OK.
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Opmerking:
-
-U heeft de locatie van deze Favoriet bijgewerkt, maar andere details blijven ongewijzigd.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- U heeft &apos;niet kopieerbare&apos; items geselecteerd.
-Deze items zullen worden verplaatst naar uw inventaris, niet gekopieerd.
-
-Verplaats de inventaris item(s)?
- <usetemplate ignoretext="Wanneer niet kopieerbare inventaris uit objecten verplaatst wordt" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- U heeft &apos;niet kopieerbare&apos; inventaris items geselecteerd.
-Deze items zullen verplaatst worden naar uw inventaris, niet gekopieerd.
-Omdat deze objecten scripts bevatten, kan het verplaatsen naar uw inventaris er voor zorgen dat het object niet meer werkt.
-inventaris item(s) verplaatsen?
- <usetemplate ignoretext="Indien verplaatsen &apos;niet kopieerbare&apos; inventaris van gescripte objecten" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Waarschuwing: Het &apos;Betaal object&apos; aan klik actie is ingesteld, maar het zal alleen werken als er een script is toegevoegd met een money() event.
- <form name="form">
- <ignore name="ignore" text="Indien instellen &apos;Betaal&apos; op objecten zonder money() events"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- Er zitten geen items in dit object die u kunt kopiëren.
- </notification>
- <notification name="WebLaunchAccountHistory">
- Naar de [SECOND_LIFE] web site gaan om uw account geschiedenis te bekijken?
- <usetemplate ignoretext="Bij laden van de account geschiedenis webpagina" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
- </notification>
- <notification name="ClickOpenF1Help">
- De [SECOND_LIFE] Support Web site bezoeken?
- <usetemplate ignoretext="Bij bezoeken van de [SECOND_LIFE] Support Website." name="okcancelignore" notext="Annuleren" yestext="Ga"/>
- </notification>
- <notification name="ConfirmQuit">
- Weet u zeker dat u wilt afsluiten?
- <usetemplate ignoretext="Bij afsluiten [APP_NAME]." name="okcancelignore" notext="Doorgaan" yestext="Afsluiten"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Gebruik dit gereedschap om overtredingen van de Voorwaarden voor Service (Terms of Service) en Gemeenschaps Standaarden (Community Standards)te rapporteren. Zie:
-
-http://secondlife.com/corporate/tos.php
-http://secondlife.com/corporate/cs.php
-
-Alle gerapporteerde misbruiken van de Voorwaarden voor Service en Gemeenschaps Standaarden zullen worden onderzocht en opgelost. U kunt de incident oplossing in de Incidenten Rapportage zien op:
-
-http://secondlife.com/support/incidentreport.php
- </notification>
- <notification name="HelpReportAbuseEmailEO">
- BELANGRIJK: Dit rapport zal naar de eigenaar van deze regio gaan en niet naar Linden Lab!
-
-Als een service aan Inwoners en bezoekers heeft de eigenaar van deze regio er voor gekozen om rapporten vanuit deze regio zelf te ontvangen en af te handelen. Linden Lab zal geen onderzoek doen naar rapporten die u indient vanaf deze locatie.
-
-De regio eigenaar zal de rapporten afhandelen op basis van de regels geldend voor deze regio zoals weergegeven in het Estate Convenant (Bekijk Convenants door naar Wereld te gaan in het menu en te kiezen voor Over Land).
-
-De afhandeling van dit rapport is alleen van toepassing op deze regio.
-Toegang van Inwoners tot andere gebieden van [SECOND_LIFE] zullen niet beïnvloed worden door de uitkomst van dit rapport. Alleen Linden Lab kan de toegang tot geheel [SECOND_LIFE] beperken.
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Selecteer alstublieft een categorie voor dit misbruik rapport.
-
-Het selecteren van een categorie helpt ons met het archiveren en verwerken van misbruik rapporten.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Geef alstublieft een naam op van de misbruiker.
-
-Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Geef alstublieft een locatie op waar het misbruik plaats vond.
-
-Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Geef alstublieft een korte samenvatting op van het misbruik dat plaats vond.
-
-Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Geef alstublieft een gedetailleerde omschrijving van het misbruik dat plaats vond.
-
-Wees zo specifiek als mogelijk, inclusief namen en details van het incident waarover u rapporteert.
-
-Het opgeven van een accurate omschrijving helpt ons met het archiveren en verwerken van misbruik rapporten.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Beste Inwoner,
-
-Het lijkt er op dat u intellectueel eigendoms misbruik rapporteert. Wees er alstublieft van overtuigd dat u dit correct rapporteert:
-
-(1) Het Misbruik Proces. U kunt een misbruik rapport indienen als u er van overtuigd bent dat een Inwoner het [SECOND_LIFE] permissie systeem uitbuit, bijvoorbeeld door gebruik van CopyBot of soortgelijke gereedschappen, daarmee de intellectuele eigendoms rechten overtredend. Het Abuse Team onderzoekt en zal passende maatregelen uitvaardigen tegen gedrag dat de [SECOND_LIFE] Gemeenschaps Standaarden overtreedt. Echter, het Abuse Team zal geen actie ondernemen en niet reageren op verzoeken om inhoud te verwijderen uit de [SECOND_LIFE] wereld.
-
-(2) Het DMCA of Inhoud Verwijder Proces. Voor een verzoek tot verwijdering van inhoud in [SECOND_LIFE], MOET u een geldige berichtgeving van misbruik indienen zoals voorzien in onze DMCA beleid op http://secondlife.com/corporate/dmca.php.
-
-Indien u nog steeds door wilt gaan met het misbruik proces, sluit dan alstublieft dit venster en maak het indienen van uw rapport af. U zult mogelijk een specifieke catagorie moeten kiezen &apos;CopyBot of Permissie Uitbuiting&apos;.
-
-Dank U,
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- De volgende vereiste componenten ontbreken van [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Vervang Bestaande Bevestiging" name="ReplaceAttachment">
- Er is al een object bevestigd op dit punt aan uw lichaam.
-Wilt u dit vervangen met het geselecteerde object?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Bij vervangen van bestaande bevestigingen"/>
- <button name="Yes" text="OK"/>
- <button name="No" text="Annuleren"/>
- </form>
- </notification>
- <notification label="Niet Storen Modus Waarschuwing" name="BusyModePay">
- U bevind zich in Niet Storen Modus, hetgeen inhoudt dat u geen enkele items kunt ontvangen voor deze betaling.
-
-Wilt u de Niet Storen Modus verlaten voordat u deze transactie completeert?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Bij betalen van een persoon of object in Niet Storen modus"/>
- <button name="Yes" text="OK"/>
- <button name="No" text="Annuleren"/>
- </form>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Weet u zeker dat u de inhoud van uw vuilnisbak map permanent wilt verwijderen?
- <usetemplate ignoretext="Bij verwijderen van de inhoud uit de inventaris vuilnisbak map" name="okcancelignore" notext="Annuleren" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Weet u zeker dat u uw browsercache wilt legen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Weet u zeker dat u al uw cookies wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Weet u zeker dat u uw lijst met al de opgeslagen URL&apos;s wilt verwijderen?
- <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Weet u zeker dat u de inhoud van de Verloren en Gevonden map permanent wilt verwijderen?
- <usetemplate ignoretext="Bij legen van uw inventaris Verloren en Gevonden map" name="okcancelignore" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="CopySLURL">
- De volgende SLurl is gekopieerd naar uw klem bord:
-[SLURL]
-
-Plaats het in een web pagina om anderen eenvoudig toegang te verschaffen naar de locatie of test het zelf door het te plakken in de adres balk van uw web browser.
- <form name="form">
- <ignore name="ignore" text="Bij kopiëren van een SLurl naar het klem bord"/>
- </form>
- </notification>
- <notification name="GraphicsPreferencesHelp">
- Dit venster bepaald de venster afmetingen, resolutie en kwaliteit van de client&apos;s grafische weergave. De Voorkeuren &gt; Grafische interface laat u kiezen uit vier grafische niveaus: Laag, Middel, Hoog en Ultra. U kunt ook uw grafische instellingen aanpassen met het aan vinken van het Aangepast vakje en de volgende instellingen manipuleren:
-
-Shaders: In of uitschakelen van de verschillende typen pixel shaders.
-
-Reflectiedetail: Stelt het type objecten in hetgeen water kan reflecteren.
-
-Avatarweergave: Stelt de opties in die van invloed zijn op hoe de client een avatar zal renderen.
-
-Zichtbereik: Beïnvloed tot hoe ver objecten vanaf uw zichtpunt worden weergegeven in de scène.
-
-Maximaal Aantal Particles: Stelt het maximaal aantal particles in die u tegelijk kunt zien op uw scherm.
-
-Nabewerkingskwaliteit: Stelt de resolutie in waarmee Gloei wordt weergegeven.
-
-Maasdetail: Stelt de hoeveelheid detail of het aantal driehoeken in gebruikt voor de weergave van bepaalde objecten. Een hogere waarde zal langer nemen om weer te gegeven, maar zorgen voor objecten met meer detail.
-
-Lichtdetail: Bepaald welke typen lichten u wenst weer te geven.
-
-Terreindetail: Stelt de hoeveelheid detail in die u wilt zien voor het terrein textuur.
- </notification>
- <notification name="WLSavePresetAlert">
- Wilt u de opgeslagen voor instellingen overschrijven?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- Wilt u [SKY] verwijderen?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="WLNoEditDefault">
- U kunt de standaard instellingen niet wijzigen of verwijderen.
- </notification>
- <notification name="WLMissingSky">
- Dit dag cyclus bestand heeft een ontbrekend lucht bestand: [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Voorbewerkingeffecten bestaan. Wilt u ze alsnog overschrijven?
- <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="HelpEditSky">
- Wijzig de WindLight schuif knoppen en maak en sla een set van luchten op.
- </notification>
- <notification name="HelpEditDayCycle">
- Bepaald de luchten te gebruiken gedurende de dag.
- </notification>
- <notification name="EnvSettingsHelpButton">
- Deze instelling bepalen hoe de omgeving er uit ziet op uw computer. Uw grafische kaart zal grafische shaders moeten ondersteunen om toegang te krijgen tot alle instellingen.
-
-Wijzig de &quot;Tijd van de Dag&quot; schuif knop om de fase van de dag lokaal in de viewer aan te passen.
-
-Wijzig de &quot;Wolken Dichtheid&quot; schuif knop om de hoeveelheid wolken die de lucht bedekken in te stellen.
-
-Kies een kleur in de &quot;Water Kleur&quot; kleuren kiezer om de kleur van het water aan te passen.
-
-Wijzig de &quot;Water Mist&quot; schuif knop om de dichtheid van de mist onder water in te stellen.
-
-Klik op &quot;Gebruik Estate Tijd&quot; om de tijd van de dag te herstellen naar de huidige tijd en die te volgen.
-
-Klik op &quot;Geavanceerde Lucht&quot; om de editor op te roepen voor geavanceerde instellingen voor de lucht.
-
-Klik op &quot;Geavanceerd Water&quot; om de editor op te roepen voor geavanceerde instellingen voor water.
- </notification>
- <notification name="HelpDayCycle">
- De Dag Cyclus Editor geeft u controle over de lucht gedurende de [SECOND_LIFE]&apos;s dag/nacht cyclus. Dit is de cyclus die gebruikt wordt in de Basis Omgeving Editor&apos;s Tijd van de Dag schuif knop.
-
-De Dag Cyclus Editor werkt beter met het instellen van gemarkeerde frames. Dit zijn nodes (weergegeven als grijze blips in de tijd weergave) die Hemel voorinstelling met zich geassocieerd hebben. Als de Tijd van de Dag voortschrijdt, &quot;animeert&quot; de WindLight Hemel als het interpoleert tussen de gemarkeerde frames.
-
-De gele pijlen boven de tijdlijn representeert uw huidige zicht, gebaseerd op de Tijd van de Dag. Klik en sleep deze om te zien hoe uw dag zal animeren. U kunt gemarkeerde frames toe voegen of verwijderen middels het indrukken van de Frame Toevoegen of Frame Verwijderen knoppen, rechts van de tijdlijn.
-
-U kunt de tijds positie van een gemarkeerd frame instellen door het te slepen over de tijdlijn of middels het handmatig invullen van de Gemarkeerde Frame Instellingen. Binnen de Gemarkeerde Frame Instellingen krijgt u de mogelijkheid het gemarkeerde frame te associëren met de respectievelijke WindLight voorinstelling.
-
-De lengte van de Cyclus bepaald de totale tijdsduur van een &quot;dag&quot;. Stelt u dit in op een lage waarde (bijv. twee minuten) betekend dat uw volledig 24 uurs tijdlijn zal animeren in slechts twee minuten! Als u tevreden bent met uw tijdlijn en gemarkeerde frame cyclus, gebruik dan de Start en Stop knoppen om het resultaat voor te beschouwen. Onthoud dat u ook de gele tijd indicator pijl boven de tijdlijn kunt bewegen om de animatie cyclus interactief te bekijken. Het gebruik van de Estate Tijd knop zal de lengte en tijd van uw dag synchroniseren met de Estate&apos;s dag cyclus.
-
-Als u tevreden bent met uw Dag Cyclus, kunt het opslaan en laden met de Test Dag Opslaan en Laad Test Dag knoppen. Merk op, dat wij momenteel slechts één Dag Cyclus toestaan.
- </notification>
- <notification name="HelpBlueHorizon">
- Gebruik de Rood/Groen/Blauw schuif knoppen om de kleur van de hemel aan te passen. U kunt de Intensiteit (I) schuif knop gebruiken om alle drie de schuif knoppen tegelijk te bewegen.
- </notification>
- <notification name="HelpHazeHorizon">
- Nevel Horizon is één van de meest handige parameters voor de algehele belichting in de scène. Het is effectief om de vele belichting instellingen te simuleren, zoals wit-vlakken van de zon en donkere gesloten iris instellingen.
- </notification>
- <notification name="HelpBlueDensity">
- Blauw Dichtheid beïnvloed de algehele kleur verzadiging van de hemel en mist. Indien u de Intensiteit (I) schuif knop naar rechts schuift, zullen de kleuren lichter en sprekender worden. Indien u het geheel naar links schuift, worden de kleuren doffer, uiteindelijk vervagend naar zwart en wit. Als u de hemel kleur nauwkeurig wilt uitbalanceren, kunt u de individuele elementen van verzadiging instellen door gebruik van de Rood/Groen/Blauw (RGB) schuif knoppen.
- </notification>
- <notification name="HelpHazeDensity">
- Nevel Dichtheid bepaald de hoeveelheid dofheid, grijze nevel in de atmosfeer. Het is effectief om scènes met veel rook of zelf gemaakte vervuiling te simuleren. Het is ook effectief voor het simuleren van nevel en mist.
- </notification>
- <notification name="HelpDensityMult">
- De Dichtheid Vermeerderaar kan gebruikt worden om de algehele dichtheid van de atmosfeer te beïnvloeden.
-Bij lagere instelling creëert het een gevoel van &quot;dunne lucht&quot; en met hogere instellingen een dik zwaar smog effect.
- </notification>
- <notification name="HelpDistanceMult">
- Stelt de WindLight&apos;s waargenomen afstand in. Een waarde van nul stopt de invloed van WindLight op terrein en objecten. Waarden groter dan 1 simuleren grotere afstanden voor dikkere atmosferische effecten.
- </notification>
- <notification name="HelpMaxAltitude">
- Maximale Hoogte bepaald de hoogte calculaties die WindLight uitvoert bij het berekenen van de atmosferische belichting. Later op de dag is het handig om de &quot;diepte&quot; van de zonsondergang weergave in te stellen.
- </notification>
- <notification name="HelpSunlightColor">
- Stelt de kleur en intensiteit in van direct licht in de scène.
- </notification>
- <notification name="HelpSunAmbient">
- Stelt de kleur en intensiteit in van het omgevings atmosferische licht in de scène.
- </notification>
- <notification name="HelpSunGlow">
- De Afmeting schuif knop stelt de afmeting van de zon in.
-De Focus schuif knop bepaald de wazigheid van de zon aan de hemel.
- </notification>
- <notification name="HelpSceneGamma">
- Wijzigt de verdeling van licht op het scherm in licht of donker.
- </notification>
- <notification name="HelpStarBrightness">
- Wijzigt de helderheid van sterren aan de hemel.
- </notification>
- <notification name="HelpTimeOfDay">
- Bepaald de locatie van de zon aan de hemel.
-Gelijkwaardig aan elevatie.
- </notification>
- <notification name="HelpEastAngle">
- Bepaald de locatie van de zon aan de hemel.
-Gelijkwaardig aan azimut.
- </notification>
- <notification name="HelpCloudColor">
- Wijzigt de kleur van de wolken. Het is algemeen aanbevolen deze wit-achtig te houden, maar hé, heb plezier als u dit wilt.
- </notification>
- <notification name="HelpCloudDetail">
- Bepaald het detail plaatje als laag bovenop het basis wolken plaatje. X en Y bepalen de positie. D (Dichtheid) bepaald hoe wollig of verspreid de wolken verschijnen.
- </notification>
- <notification name="HelpCloudDensity">
- Geeft u de mogelijkheid de positie van wolken met de X en Y schuif knoppen in te stellen en hoe dicht ze zijn met de D schuif knop.
- </notification>
- <notification name="HelpCloudCoverage">
- Bepaald hoeveel de wolken de hemel bedekken.
- </notification>
- <notification name="HelpCloudScale">
- Bepaald de schaal van het wolken plaatje op de hemelboog.
- </notification>
- <notification name="HelpCloudScrollX">
- Bepaald de snelheid van de wolken terwijl zij in X richting bewegen.
- </notification>
- <notification name="HelpCloudScrollY">
- Bepaald de snelheid van de wolken terwijl zij in Y richting bewegen.
- </notification>
- <notification name="HelpClassicClouds">
- Vink dit aan voor weergave van [SECOND_LIFE]&apos;s oudere klassieke wolken als toevoeging op WindLight&apos;s wolken.
- </notification>
- <notification name="HelpWaterFogColor">
- Kiest de kleur van de onder water nevel.
- </notification>
- <notification name="HelpWaterFogDensity">
- Bepaald hoe dicht de water nevel is en hoe ver u kunt zien onder water.
- </notification>
- <notification name="HelpUnderWaterFogMod">
- Past het effect aan van de Nevel Dichtheid Exponent om zo te bepalen hoe ver uw avatar onder water kan zien.
- </notification>
- <notification name="HelpWaterGlow">
- Bepaald hoeveel het oppervlak van het water gloeit.
- </notification>
- <notification name="HelpWaterNormalScale">
- Bepaald de schaling van de drie wavelets (golf patronen) die samen water vormen.
- </notification>
- <notification name="HelpWaterFresnelScale">
- Bepaald hoeveel licht er wordt gereflecteerd onder verschillende hoeken.
- </notification>
- <notification name="HelpWaterFresnelOffset">
- Bepaald de hoeveelheid licht intensiteit welke wordt gereflecteerd.
- </notification>
- <notification name="HelpWaterScaleAbove">
- Bepaald hoeveel licht er wordt weerkaatst wanneer van bovenop het water oppervlak gezien.
- </notification>
- <notification name="HelpWaterScaleBelow">
- Bepaald hoeveel licht er wordt weerkaatst wanneer van onder het water oppervlak gezien.
- </notification>
- <notification name="HelpWaterBlurMultiplier">
- Bepaald hoe golven en reflectie worden ge mixed.
- </notification>
- <notification name="HelpWaterNormalMap">
- Bepaald welke Normaal map gelaagd is over het water om de reflectie/weerkaatsing te bepalen.
- </notification>
- <notification name="HelpWaterWave1">
- Bepaald waar en hoe snel de grote schaal versie van de Normaal map beweegt in X en Y richting.
- </notification>
- <notification name="HelpWaterWave2">
- Bepaald waar en hoe snel de kleine schaal versie van de Normaal map beweegt in X en Y richting.
- </notification>
- <notification name="NewSkyPreset">
- Geef een naam op voor de nieuwe lucht.
- <form name="form">
- <input name="message">
- Nieuwe Voorinstelling
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- Voorinstelling bestaat al!
- </notification>
- <notification name="NewWaterPreset">
- Geef een naam voor de nieuwe voorinstelling van water.
- <form name="form">
- <input name="message">
- Nieuwe Voorinstelling
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- Voorinstelling bestaat al!
- </notification>
- <notification name="WaterNoEditDefault">
- u kunt de standaard voorinstelling niet wijzigen of verwijderen.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Kan geen nieuwe chat sessie starten met [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- Uw chat sessie met [NAME] zal moeten worden gesloten.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Items kunnen niet worden gekocht indien ze deel uit maken van een Bevestiging.
- </notification>
- <notification label="Over verzoeken voor debet permissies" name="DebitPermissionDetails">
- Toestemming geven aan dit script geeft het object een onbeperkte permissie om Linden dollars (L$) uit uw account te nemen!
-Om dit recht in te trekken, moet de object eigenaar het object verwijderen of de scripts in het object opnieuw instellen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Wilt u de kleding items die u maakt automatisch aantrekken?
- <usetemplate ignoretext="Automatisch nieuwe kleding aantrekken" name="okcancelignore" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="NotAgeVerified">
- U moet leeftijd geverifieerd zijn om toegang te verkrijgen tot dit perceel.
-Wilt u de [SECOND_LIFE] website bezoeken om uw leeftijd te verifiëren?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php
- </url>
- <usetemplate ignoretext="Waarschuw voor gebrek aan leeftijd verificatie" name="okcancelignore" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Dit perceel verlangd dat u betaal informatie geregistreerd hebt staan alvorens toegang te verkrijgen.
-Wilt u de [SECOND_LIFE] website bezoeken om dit in te stellen?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=nl
- </url>
- <usetemplate ignoretext="Waarschuw voor gebrek aan betaal informatie" name="okcancelignore" notext="Nee" yestext="Ja"/>
- </notification>
- <notification name="MissingString">
- De tekst [STRING_NAME] ontbreekt in strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Geannuleerd
- </notification>
- <notification name="CancelledSit">
- Zitten geannuleerd
- </notification>
- <notification name="CancelledAttach">
- Bevestigen geannuleerd
- </notification>
- <notification name="ReplacedMissingWearable">
- Missend kleding/lichaamsdeel is vervangen door standaard.
- </notification>
- <notification name="GroupNotice">
- Onderwerp: [SUBJECT], Bericht: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] is Online
- </notification>
- <notification name="FriendOffline">
- [NAME] is Offline
- </notification>
- <notification name="AddSelfFriend">
- U kunt uzelf niet als vriend toevoegen.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- In-wereld en website foto&apos;s worden geüpload...
-(Duurt ongeveer 5 minuten.)
- </notification>
- <notification name="UploadPayment">
- U heeft L$[AMOUNT] betaald om te uploaden.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Upload van website foto is gereed.
- </notification>
- <notification name="UploadSnapshotDone">
- Upload van in-wereld foto is gereed.
- </notification>
- <notification name="TerrainDownloaded">
- Terrain.raw gedownload
- </notification>
- <notification name="GestureMissing">
- Gebaar [NAME] mist in de database.
- </notification>
- <notification name="UnableToLoadGesture">
- Kan gebaar [NAME] niet laden. Probeer het a.u.b. opnieuw.
- </notification>
- <notification name="LandmarkMissing">
- Landmarkering mist in de database.
- </notification>
- <notification name="UnableToLoadLandmark">
- Kan landmarkering niet laden. Probeer het a.u.b. opnieuw.
- </notification>
- <notification name="CapsKeyOn">
- Uw Caps Lock toets staat aan. Aangezien dit effect heeft op het wachtwoord dat u intypt, zult u het wellicht willen uitzetten.
- </notification>
- <notification name="NotecardMissing">
- Notitiekaart mist in de database.
- </notification>
- <notification name="NotecardNoPermissions">
- Onvoldoende permissies om de notitiekaart te bekijken.
- </notification>
- <notification name="RezItemNoPermissions">
- Onvoldoende permissies om het object te rezzen.
- </notification>
- <notification name="UnableToLoadNotecard">
- Kan op dit moment notitiekaart inhoud niet laden.
- </notification>
- <notification name="ScriptMissing">
- Script mist in de database.
- </notification>
- <notification name="ScriptNoPermissions">
- Onvoldoende permissies om het script te bekijken.
- </notification>
- <notification name="UnableToLoadScript">
- Kan script niet laden. Probeer het a.u.b. opnieuw.
- </notification>
- <notification name="IncompleteInventory">
- De complete inhoud die u aanbiedt is nog niet lokaal beschikbaar. Probeer die items over een minuut nogmaals aan te bieden.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- U kunt geen beschermde categorieën wijzigen.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- U kunt geen beschermde categorieën verwijderen.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Niet mogelijk te kopen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Niet mogelijk om te koppelen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Kan geen objecten van meerdere eigenaren op hetzelfde moment kopen. Selecteer alstublieft een enkel object.
- </notification>
- <notification name="ObjectNotForSale">
- Object lijkt niet te koop.
- </notification>
- <notification name="EnteringGodMode">
- God modus binnengaan, niveau [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- God modus verlaten, niveau [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Kopiëren mislukt omdat u geen kopieerpermissie bezit.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] heeft uw inventarisaanbod geaccepteerd.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] heeft uw inventarisaanbod afgewezen.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Uw visitekaartje is geaccepteerd.
- </notification>
- <notification name="CallingCardDeclined">
- Uw visite kaart is afgewezen.
- </notification>
- <notification name="TeleportToLandmark">
- Nu u het mainland bereikt heeft, kunt u teleporteren naar locaties als &apos;[NAME]&apos; door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Landmarkeringen map te selecteren. Dubbelklik op de landmarkering en klik op Teleport om ernaartoe te reizen.
- </notification>
- <notification name="TeleportToPerson">
- Nu u het mainland bereikt heeft, kunt u contact opnemen met inwoners als &apos;[NAME]&apos; door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Visitekaartjes map te selecteren. Dubbelklik op het visitekaartje, klik op Instant Message en type een bericht.
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Kan geen land selecteren over servergrenzen.
-Probeer een kleiner stuk land te selecteren.
- </notification>
- <notification name="SearchWordBanned">
- Sommige termen in uw zoekopdracht werden uitgesloten vanwege inhoudbeperkingen zoals beschreven in de Gemeenschap Standaarden.
- </notification>
- <notification name="NoContentToSearch">
- Selecteer alstublieft minstens een type inhoud om te zoeken (PG, Mature of Adult).
- </notification>
- <notification name="GroupVote">
- [NAME] heeft voorgesteld om te stemmen over:
-[MESSAGE]
- <form name="form">
- <button name="VoteNow" text="Stem Nu"/>
- <button name="Later" text="Later"/>
- </form>
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Evenement Bericht:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Omschrijving"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Alle objecten op dit perceel die zullen worden overgedragen aan de koper van dit perceel zijn nu opgelicht.
-
-* Bomen en grassen die worden overgedragen zijn niet opgelicht.
- <form name="form">
- <button name="Done" text="Gereed"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Deactiveren van gebaren met dezelfde trigger:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- De QuickTime software van Apple schijnt niet op uw systeem geïnstalleerd te zijn.
-Indien u streaming media wilt zien op percelen die dit ondersteunen, dient u naar de QuickTime webpagina te gaan (http://www.apple.com/QuickTime) en de QuickTime Player te installeren.
- </notification>
- <notification name="OwnedObjectsReturned">
- De objecten die uw eigendom zijn op het geselecteerde perceel zijn geretourneerd naar uw inventaris.
- </notification>
- <notification name="OtherObjectsReturned">
- De objecten op het geselecteerde perceel dat het eigendom is van [NAME], zijn geretourneerd naar zijn of haar inventaris.
- </notification>
- <notification name="OtherObjectsReturned2">
- De objecten op het geselecteerde perceel dat het eigendom is van inwoner &apos;[NAME]&apos;, zijn geretourneerd naar hun eigenaar.
- </notification>
- <notification name="GroupObjectsReturned">
- De objecten op het geselecteerde perceel dat gedeeld is met de groep [GROUPNAME] zijn geretourneerd naar de inventaris van hun eigenaar.
-Overdraagbare objecten die eigendom zijn van de groep zijn geretourneerd naar hun voormalige eigenaren.
-Niet-overdraagbare objecten die eigendom zijn van de groep zijn verwijderd.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- De objecten op het geselecteerde perceel die NIET uw eigendom zijn, zijn geretourneerd naar hun eigenaren.
- </notification>
- <notification name="NotSafe">
- Op dit land is letsel ingeschakeld (&apos;niet veilig&apos;).
-U kunt hier letsel oplopen. Indien u sterft, zult u naar uw thuis locatie worden geteleporteerd.
- </notification>
- <notification name="NoFly">
- Op dit land is vliegen uitgeschakeld (&apos;niet vliegen&apos;).
-U kunt hier niet vliegen.
- </notification>
- <notification name="PushRestricted">
- Dit land is &apos;Niet Duwen&apos;.
-U kunt geen anderen duwen, tenzij u het land bezit.
- </notification>
- <notification name="NoVoice">
- Op dit land is voice uitgeschakeld.
- </notification>
- <notification name="NoBuild">
- Op dit land is bouwen uitgeschakeld (&apos;niet bouwen&apos;).
-U kunt hier geen objecten creëren.
- </notification>
- <notification name="ScriptsStopped">
- Een beheerder heeft scripts in deze regio tijdelijk gestopt.
- </notification>
- <notification name="ScriptsNotRunning">
- In deze regio worden geen scripts uitgevoerd.
- </notification>
- <notification name="NoOutsideScripts">
- Op dit land zijn externe scripts uitgeschakeld (geen externe scripts).
-Geen scripts zullen worden uitgevoerd, behalve scripts die toebehoren aan de landeigenaar.
- </notification>
- <notification name="ClaimPublicLand">
- Kan alleen publiek land claimen in de regio waar u aanwezig bent.
- </notification>
- <notification name="RegionTPAccessBlocked">
- U bent niet toegestaan in die regio vanwege uw inhoudscategorie. Wellicht dient u uw leeftijd te valideren en/of de nieuwste viewer te installeren.
-
-Gaat u alstublieft naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
- </notification>
- <notification name="URBannedFromRegion">
- U bent uit deze regio verbannen.
- </notification>
- <notification name="NoTeenGridAccess">
- Uw account kan geen verbinding maken met deze teen grid regio.
- </notification>
- <notification name="NoHelpIslandTP">
- U kunt niet terug teleporteren naar Help Island. Ga naar &apos;Help Island Public&apos; om de handleiding te herhalen.
- </notification>
- <notification name="ImproperPaymentStatus">
- U heeft niet de juiste betalingstatus om deze regio binnen te gaan.
- </notification>
- <notification name="MustGetAgeRegion">
- U moet leeftijd geverifieerd zijn om deze regio binnen te gaan.
- </notification>
- <notification name="MustGetAgeParcel">
- U moet leeftijd geverifieerd zijn om dit perceel binnen te gaan.
- </notification>
- <notification name="NoDestRegion">
- Geen bestemmingsregio gevonden.
- </notification>
- <notification name="NotAllowedInDest">
- U wordt niet op de bestemming toegelaten.
- </notification>
- <notification name="RegionParcelBan">
- Kan niet naar de regio oversteken in een verbannen perceel. Probeer het op een andere manier.
- </notification>
- <notification name="TelehubRedirect">
- U bent doorverwezen naar een telehub.
- </notification>
- <notification name="CouldntTPCloser">
- Kan niet dichter bij bestemming teleporteren.
- </notification>
- <notification name="TPCancelled">
- Teleport geannuleerd.
- </notification>
- <notification name="FullRegionTryAgain">
- De regio die u probeert binnen te gaan is momenteel vol.
-Probeer het alstublieft opnieuw over enkele ogenblikken.
- </notification>
- <notification name="GeneralFailure">
- Algemene fout.
- </notification>
- <notification name="RoutedWrongRegion">
- Gerouteerd naar de verkeerde regio. Probeer het alstublieft opnieuw.
- </notification>
- <notification name="NoValidAgentID">
- Geen geldige agent ID.
- </notification>
- <notification name="NoValidSession">
- Geen geldige sessie ID.
- </notification>
- <notification name="NoValidCircuit">
- Geen geldige circuit code.
- </notification>
- <notification name="NoValidTimestamp">
- Geen geldige tijdstempel.
- </notification>
- <notification name="NoPendingConnection">
- Kan wachtende verbinding niet maken.
- </notification>
- <notification name="InternalUsherError">
- Er is een interne fout opgetreden terwijl geprobeerd werd u naar uw teleportbestemming te begeleiden. [SECOND_LIFE] heeft op dit moment mogelijk problemen met de dienstverlening.
- </notification>
- <notification name="NoGoodTPDestination">
- Kan geen goede teleportbestemming vinden in deze regio.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Er is een interne fout opgetreden terwijl de globale coördinaten voor uw teleportverzoek werden bepaald. [SECOND_LIFE] heeft op dit moment mogelijk problemen met de dienstverlening.
- </notification>
- <notification name="NoValidLanding">
- Er kon geen geldig landingspunt worden gevonden.
- </notification>
- <notification name="NoValidParcel">
- Geen geldig perceel kon gevonden worden.
- </notification>
- <notification name="ObjectGiveItem">
- Een object genaamd &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, eigendom van [NAME_SLURL], heeft u een [OBJECTTYPE] genaamd &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; gegeven.
- <form name="form">
- <button name="Keep" text="Behouden"/>
- <button name="Discard" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="ObjectGiveItemUnknownUser">
- Een object genaamd [OBJECTFROMNAME], eigendom van (een onbekende gebruiker), heeft u een [OBJECTTYPE] genaamd [OBJECTNAME] gegeven.
- <form name="form">
- <button name="Keep" text="Behouden"/>
- <button name="Discard" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME] heeft u een [OBJECTTYPE] genaamd &apos;[OBJECTNAME]&apos; gegeven.
- <form name="form">
- <button name="Keep" text="Behouden"/>
- <button name="Discard" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Deelnemen"/>
- <button name="Decline" text="Afwijzen"/>
- <button name="Info" text="Info"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME] heeft aangeboden u te teleporteren naar zijn of haar locatie:
-
-[MESSAGE]
- <form name="form">
- <button name="Teleport" text="Teleport"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Later"/>
- <button name="GoNow..." text="Ga Nu..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME] biedt vriendschap aan.
-
-[MESSAGE]
-
-(Standaard zult u in staat zijn om elkaars online status te zien.)
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- </form>
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME] biedt vriendschap aan.
-
-(Standaard zult u in staat zijn om elkaars online status te zien.)
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] heeft uw vriendschapsaanbod geaccepteerd.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] heeft uw vriendschapsaanbod afgewezen.
- </notification>
- <notification name="OfferCallingCard">
- [NAME] biedt zijn/haar visitekaartje aan.
-Dit zal een bladwijzer in uw inventaris toevoegen zodat u deze inwoner snel kunt een IM kunt sturen.
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- De regio zal over [MINUTES] minuten herstarten.
-Indien u in deze regio blijft, zult u worden uitgelogd.
- </notification>
- <notification name="RegionRestartSeconds">
- De regio zal over [SECONDS] seconden herstarten.
-Indien u in deze regio blijft, zult u worden uitgelogd.
- </notification>
- <notification name="LoadWebPage">
- Laad webpagina [URL]?
-
-[MESSAGE]
-
-Van object: [OBJECTNAME], eigenaar: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Laden"/>
- <button name="Cancel" text="Annuleren"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- Kon [TYPE] niet in de database vinden.
- </notification>
- <notification name="FailedToFindWearable">
- Kon [TYPE] genaamd [DESC] niet in de database vinden.
- </notification>
- <notification name="InvalidWearable">
- Het item dat u probeert te dragen gebruikt een kenmerk dat uw viewer niet kan lezen. Upgrade u alstublieft uw versie van [APP_NAME] om dit item te dragen.
- </notification>
- <notification name="ScriptQuestion">
- [OBJECTNAME]&apos;, een object van &apos;[NAME]&apos;, wil graag:
-
-[QUESTIONS]
-Is dit OK?
- <form name="form">
- <button name="Yes" text="Ja"/>
- <button name="No" text="Nee"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- [OBJECTNAME]&apos;, een object van &apos;[NAME]&apos;, wil graag
-
-[QUESTIONS]
-Indien u dit object en zijn maker niet vertrouwt, zou u het verzoek moeten weigeren. Klik de Details knop voor additionele informatie.
-
-Dit verzoek inwilligen?
- <form name="form">
- <button name="Grant" text="Inwilligen"/>
- <button name="Deny" text="Weigeren"/>
- <button name="Details" text="Details..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Negeren"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]&apos;s &apos;[TITLE]&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Negeren"/>
- </form>
- </notification>
- <notification name="FirstBalanceIncrease">
- U heeft zojuist L$[AMOUNT] ontvangen.
-Objecten en andere gebruikers kunnen u L$ geven.
-Uw saldo wordt in de rechterbovenhoek van het scherm getoond.
- </notification>
- <notification name="FirstBalanceDecrease">
- U heeft zojuist L$[AMOUNT] betaald.
-Uw saldo wordt in de rechterbovenhoek van het scherm getoond.
- </notification>
- <notification name="FirstSit">
- U zit.
-Gebruik de pijltjestoetsen (of AWSD) of uw gezichtsveld te wijzigen.
-Klik de &apos;Sta Op&apos; knop om op te staan.
- </notification>
- <notification name="FirstMap">
- Klik en sleep om de kaart te verplaatsen.
-Dubbelklik om te teleporteren.
-Gebruik de bedieningselementen aan de rechterkant om dingen te vinden en verschillende achtergronden te tonen.
- </notification>
- <notification name="FirstBuild">
- U kunt nieuwe objecten bouwen in sommige gebieden van [SECOND_LIFE].
-Gebruik de gereedschappen in de linkerbovenhoek om te bouwen en probeer Ctrl en Alt ingedrukt te houden om snel tussen gereedschappen te wisselen.
-Druk Esc om te stoppen met bouwen.
- </notification>
- <notification name="FirstLeftClickNoHit">
- Links-klikken werkt in op speciale objecten.
-Indien de muisaanwijzer verandert in een hand, kunt u interacteren met het object.
-Rechts-klikken toont altijd een menu van dingen die u kunt doen.
- </notification>
- <notification name="FirstTeleport">
- Deze regio staat geen point-to-point teleport toe, dus u bent naar de dichtstbijzijnde telehub getransporteerd.
-Uw bestemming is gemarkeerd met een groot baken.
-Volg de rode pijl naar het baken, of klik de pijl om het baken te verwijderen.
- </notification>
- <notification name="FirstOverrideKeys">
- Uw bewegingstoetsen worden nu door een object afgehandeld.
-Probeer de pijltjestoetsen of AWSD om te zien wat ze doen.
-Sommige objecten (zoals geweren) vereisen dat u in mouselook gaat om ze te gebruiken.
-Druk &apos;M&apos; om dit te doen.
- </notification>
- <notification name="FirstAppearance">
- U bent uw uiterlijk aan het bewerken.
-Gebruik de pijltjestoetsen om uw gezichtsveld te draaien en te zoomen.
-Druk &apos;Alles Opslaan&apos; om uw uiterlijk op te slaan wanneer u klaar bent.
-U kunt uw uiterlijk zo vaak als u wil bewerken.
- </notification>
- <notification name="FirstInventory">
- Dit is uw inventaris, die objecten, notitiekaarten, kleding en andere eigendommen bevat.
-* Om een object of een kleding-map te dragen, sleep het op uzelf.
-* Om een object in de wereld te brengen, sleep het op de grond.
-* Om een notitiekaart te lezen, dubbelklik erop.
- </notification>
- <notification name="FirstSandbox">
- Dit is een zandbak regio.
-Objecten die u hier bouwt, kunnen worden verwijderd nadat u het gebied verlaat. Zandbakken schonen op regelmatige basis, kijk alstublieft naar de informatie aan de bovenkant van het scherm, naast de regionaam.
-
-Zandbak regio&apos;s zijn ongewoon en gemarkeerd met borden.
- </notification>
- <notification name="FirstFlexible">
- Dit object is flexibel.
-Flexibele objecten mogen niet fysiek zijn en moeten fantoom zijn tot de &apos;flexibel&apos; checkbox wordt uitgezet.
- </notification>
- <notification name="FirstDebugMenus">
- U heeft het menu Geavanceerd geactiveerd.
-Dit menu bevat opties die handig zijn voor ontwikkelaars tijdens het debuggen van [SECOND_LIFE].
-Om dit menu in en uit te schakelen drukt u binnen Windows Ctrl+Alt+D. Met een Mac drukt u &#8997;&#8984;D.
- </notification>
- <notification name="FirstSculptedPrim">
- U bent een sculpted prim aan het bewerken.
-Sculpted prims vereisen een speciaal textuur om hun vorm te bepalen.
-U kunt voorbeelden van sculpt-texturen in de inventaris bibliotheek vinden.
- </notification>
- <notification name="FirstMedia">
- U bent begonnen met het afspelen van media. In het Voorkeurenvenster, onder Audio / Video, kan media worden ingesteld om automatisch te beginnen met afspelen. Let op dat dit een beveiligingsrisico kan zijn voor media sites die u niet vertrouwt.
- </notification>
- <notification name="MaxListSelectMessage">
- U mag slecht maximaal [MAX_SELECT] items van deze lijst kiezen.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] nodigt u uit voor een Voice chat gesprek.
-Klik Accepteren om deel te nemen aan dit gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- Er is een instant message naar [NAME] gestuurd, waardoor deze automatisch van de negeerlijst is gehaald.
- </notification>
- <notification name="AutoUnmuteByMoney">
- Er is geld gegeven aan [NAME], waardoor deze automatisch van de negeerlijst is gehaald.
- </notification>
- <notification name="AutoUnmuteByInventory">
- Er is inventaris aangeboden aan [NAME], waardoor deze automatisch van de negeerlijst is gehaald.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] doet nu mee met een Voice chat gesprek binnen de groep [GROUP].
-Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] doet nu mee met een Voice chat gesprek binnen een conferentie chat.
-Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] nodigt u uit voor een conferentie chat.
-Klik Accepteren om deel te nemen aan de chat of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
- <form name="form">
- <button name="Accept" text="Accepteren"/>
- <button name="Decline" text="Afwijzen"/>
- <button name="Mute" text="Negeren"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- Het voice gesprek waaraan u probeert deel te nemen, [VOICE_CHANNEL_NAME], heeft zijn maximale capaciteit bereikt. Probeert u het alstublieft later nog een keer.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Onze excuses. Dit gebied heeft zijn maximale capaciteit voor voice conversaties bereikt. Probeert u alstublieft voice te gebruiken in een ander gebied.
- </notification>
- <notification name="VoiceChannelDisconnected">
- U bent niet meer verbonden met [VOICE_CHANNEL_NAME]. U zult weer worden verbonden met spatiale voice chat.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] heeft het gesprek beëindigd. U zult weer worden verbonden met spatiale voice chat.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] heeft uw oproep afgewezen. U zult weer worden verbonden met spatiale voice chat.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] is niet beschikbaar om uw oproep aan te nemen. U zult weer worden verbonden met spatiale voice chat.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Verbinden met [VOICE_CHANNEL_NAME] is mislukt, probeert u het later alstublieft nog een keer. U zult weer worden verbonden met spatiale voice chat.
- </notification>
- <notification name="VoiceLoginRetry">
- We zijn bezig om een voice kanaal voor u te maken. Dit kan tot een minuut duren.
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Kan het perceel niet betreden, u bent geen lid van de juiste groep.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Kan het perceel niet betreden, u bent verbannen.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Kan het perceel niet betreden, u staat niet op de toegangslijst.
- </notification>
- <notification name="VoiceNotAllowed">
- U heeft geen permissie om met voice chat te verbinden voor [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- Er is een fout opgetreden tijdens het verbinden met voice chat voor [VOICE_CHANNEL_NAME]. Probeert u het later alstublieft opnieuw.
- </notification>
- <notification name="UnableToOpenCommandURL">
- De URL die u heeft geklikt kan niet binnen deze webbrowser worden geopend.
- </notification>
- <global name="UnsupportedCPU">
- - Uw Processor snelheid (CPU) voldoet niet aan de minimale eisen.
- </global>
- <global name="UnsupportedGLRequirements">
- U heeft mogelijk niet de vereiste hardware voor [APP_NAME]. [APP_NAME] verlangd een OpenGL grafische kaart die multi-texture ondersteund. Indien dat het geval is, overtuig u er dan van dat u de laatste stuurprogramma&apos;s voor uw grafische kaart, service packs en patches voor uw Operating systeem heeft.
-
-Indien u problemen blijft houden, bezoek dan: http://www.secondlife.com/support
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - Uw grafische kaart voldoet niet aan de minimale eisen.
- </global>
- <global name="UnsupportedRAM">
- - Uw systeem geheugen voldoet niet aan de minimale eisen.
- </global>
- <global name="PermYes">
- Ja
- </global>
- <global name="PermNo">
- Nee
- </global>
-</notifications>
diff --git a/indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml
deleted file mode 100644
index 38018a3626..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="block_list_panel">
- <text name="title_text">
- Blokkeer Lijst
- </text>
- <scroll_list name="blocked" tool_tip="Lijst van momenteel geblokkeerde bewoners"/>
- <button label="Blokkeer Bewoner..." label_selected="Blokkeer Bewoner..." name="Block resident..." tool_tip="Kies een bewoner om te blokkeren"/>
- <button label="Blokkeer object bij naam..." label_selected="Blokkeer object bij naam..." name="Block object by name..."/>
- <button label="Deblokkeren" label_selected="Deblokkeren" name="Unblock" tool_tip="Verweider bewoner of object uit blokkeer lijst"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_edit_profile.xml b/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
deleted file mode 100644
index fffdb9e8df..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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="Inwoner" />
- <string name="AcctTypeTrial"
- value="Proef" />
- <string name="AcctTypeCharterMember"
- value="Charter lid" />
- <string name="AcctTypeEmployee"
- value="Linden Lab werknemer" />
- <string name="PaymentInfoUsed"
- value="Betalingsinformatie gebruikt" />
- <string name="PaymentInfoOnFile"
- value="Betalingsinformatie aanwezig" />
- <string name="NoPaymentInfoOnFile"
- value="Geen betalingsinfo aanwezig" />
- <string name="AgeVerified"
- value="Leeftijd geverifieerd" />
- <string name="NotAgeVerified"
- value="Leeftijd niet geverifieerd" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=nl
- </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="Partner:"/>
- <panel name="partner_data_panel">
- <text name="partner_text"/>
- </panel>
- <text name="text_box3">
- Antwoord bij Niet Storen:
- </text>
- </panel>
- </panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_general.xml b/indra/newview/skins/default/xui/nl/panel_group_general.xml
deleted file mode 100644
index 2a0fe03232..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_general.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Algemeen" name="general_tab">
- <string name="help_text">
- Het tabblad Algemeen bevat algemene informatie over deze groep, een lijst met eigenaren en zichtbare leden, algemene groepsvoorkeuren en ledenopties.
-
-Laat uw muis boven de opties zweven voor meer help.
- </string>
- <string name="group_info_unchanged">
- Algemene groepsinformatie is gewijzigd.
- </string>
- <button label="?" label_selected="?" name="help_button"/>
- <line_editor label="Typ uw nieuwe groepsnaam hier" name="group_name_editor"/>
- <text name="group_name">
- Typ uw nieuwe groepsnaam hier
- </text>
- <text name="prepend_founded_by">
- Opgericht door
- </text>
- <text name="founder_name" left_delta="84">
- (wachten)
- </text>
- <text name="group_charter_label" width="244">
- Groepcharter
- </text>
- <texture_picker label="Groepinsigne" name="insignia" tool_tip="Klik om een afbeelding te kiezen"/>
- <text_editor name="charter" width="244">
- Groepcharter
- </text_editor>
- <button label="Deelnemen (L$0)" label_selected="Deelnemen (L$0)" name="join_button"/>
- <button label="Gedetailleerde weergave" label_selected="Gedetailleerde weergave" name="info_button" width="154"/>
- <text name="text_owners_and_visible_members">
- Eigenaren en zichtbare leden
- </text>
- <text name="text_owners_are_shown_in_bold">
- (Eigenaren worden vet getoond)
- </text>
- <name_list name="visible_members">
- <name_list.columns label="Lidnaam" name="name"/>
- <name_list.columns label="Titel" name="title"/>
- <name_list.columns label="Laatste login" name="online"/>
- </name_list>
- <text name="text_group_preferences">
- Groepvoorkeuren
- </text>
- <panel name="preferences_container">
- <check_box label="Toon in zoeken" name="show_in_group_list" tool_tip="Stelt in of deze groep zichtbaar is in de zoekresultaten."/>
- <check_box label="Vrije toegang" name="open_enrollement" tool_tip="Stelt in of deze groep toestaat dat nieuwe leden lid kunnen worden zonder uitgenodigd te zijn."/>
- <check_box label="Contributiebijdrage:" name="check_enrollment_fee" tool_tip="Stelt in of er een contributiebijdrage vereist is om lid te worden van de groep."/>
- <spinner name="spin_enrollment_fee" tool_tip="Nieuwe leden moeten deze bijdrage betalen om deel te nemen aan de groep wanneer &quot;Contributie bijdrage&quot; is aangevinkt." width="58" left_delta="142"/>
- <combo_box name="group_mature_check" tool_tip="Stelt in of uw groepsinformatie als mature beschouwd wordt.">
- <combo_box.item name="select_mature" label="- Selecteer -"/>
- <combo_box.item name="mature" label="Mature inhoud"/>
- <combo_box.item name="pg" label="PG inhoud"/>
- </combo_box>
- <panel name="title_container">
- <text name="active_title_label">
- Mijn actieve titel
- </text>
- <combo_box name="active_title" tool_tip="Stelt de titel in die in uw avatar&apos;s naamlabel verschijnt wanneer deze groep actief is."/>
- </panel>
- <check_box label="Ontvang groepsberichten" name="receive_notices" tool_tip="Stelt in of u berichten van deze groep wilt ontvangen. Verwijder het vinkje wanneer u spam ontvangt van deze groep." left_delta="-4"/>
- <check_box label="Toon deze groep in mijn profiel" name="list_groups_in_profile" tool_tip="Stelt in of u deze groep in uw profiel wil laten zien"/>
- </panel>
- <string name="incomplete_member_data_str">
- Ledendata ophalen
- </string>
- <string name="confirm_group_create_str">
- Het maken van deze groep zal u L$ 100 kosten. Weet u ECHT héél zeker dat u L$ 100 wilt betalen om deze groep te maken?
-
-WEES U ER VAN BEWUST, dat als er niemand binnen 48 uur lid wordt van deze groep, deze weer ontmanteld zal worden. Hierbij zal ook de groepsnaam onbeschikbaar blijven voor toekomstig gebruik!
- </string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_invite.xml b/indra/newview/skins/default/xui/nl/panel_group_invite.xml
deleted file mode 100644
index e012d88ff5..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_invite.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Nodig een lid uit" name="invite_panel">
- <text name="help_text">
- U kunt meerdere inwoners selecteren
-om voor uw groep uit te nodigen. Klik
-&apos;Open inwonerkiezer&apos; om te starten.
- </text>
- <button label="Open inwonerkiezer" name="add_button" tool_tip=""/>
- <name_list name="invitee_list" tool_tip="Houd de Ctrl-toets vast en klik de namen van de inwoners om meerdere te selecteren."/>
- <button label="Verwijder geselecteerden van lijst" name="remove_button" tool_tip="Verwijderd hierboven geselecteerde inwoners van de uitnodigingslijst."/>
- <text name="role_text">
- Kies welke rol aan hen wordt
-toegewezen:
- </text>
- <combo_box name="role_name" tool_tip="Kies uit de lijst met rollen waarvoor u toestemming heeft om leden toe te wijzen." bottom_delta="-30"/>
- <button label="Verzend uitnodigingen" name="ok_button"/>
- <button label="Annuleren" name="cancel_button"/>
- <string name="confirm_invite_owner_str">
- Weet u zeker dat u een (een) nieuwe eigenaar(s) wilt uitnodigen? Deze actie is permanent!
- </string>
- <string name="loading">
- (laden...)
- </string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_land_money.xml b/indra/newview/skins/default/xui/nl/panel_group_land_money.xml
deleted file mode 100644
index 43babafdf8..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_land_money.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Land &amp; L$" name="land_money_tab">
- <string name="help_text">
- Percelen in groepseigendom worden getoond, samen met bijdragedetails. Een waarschuwing verschijnt totdat Totaal Land In Gebruik minder dan of gelijk aan de totale bijdrage is. De Planning, Details en Verkopen tabbladen verschaffen meer informatie over de financiën van de groep.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
- U heeft geen permissie om land te bekijken dat eigendom van de groep is.
- </string>
- <string name="cant_view_group_accounting_text">
- U heeft geen permissie om accounting informatie van de groep te bekijken.
- </string>
- <string name="loading_txt">
- Laden...
- </string>
- <text name="group_land_heading" width="260">
- Land in eigendom van groep
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Perceelnaam" name="name"/>
- <column label="Regio" name="location"/>
- <column label="Type" name="type"/>
- <column label="Gebied" name="area"/>
- </scroll_list>
- <button label="Toon op kaart" label_selected="Toon op kaart" name="map_button"/>
- <text name="total_contributed_land_label">
- Totale bijdrage:
- </text>
- <text name="total_contributed_land_value" width="200">
- [AREA] m²
- </text>
- <text name="total_land_in_use_label">
- Totaal land in gebruik:
- </text>
- <text name="total_land_in_use_value">
- [AREA] m²
- </text>
- <text name="land_available_label">
- Land beschikbaar:
- </text>
- <text name="land_available_value">
- [AREA] m²
- </text>
- <text name="your_contribution_label">
- Uw bijdrage:
- </text>
- <string name="land_contrib_error">
- Niet in staat uw landbijdrage in te stellen.
- </string>
- <text name="your_contribution_units">
- ( m² )
- </text>
- <text name="your_contribution_max_value">
- ([AMOUNT] max)
- </text>
- <text name="group_over_limit_text">
- Groepsleden moeten landcredits bijdragen om het gebruikte land
-te ondersteunen.
- </text>
- <text name="group_money_heading">
- Groep L$
- </text>
- <tab_container name="group_money_tab_container">
- <panel label="Planning" name="group_money_planning_tab">
- <text_editor name="group_money_planning_text">
- Berekenen...
- </text_editor>
- </panel>
- <panel label="Details" name="group_money_details_tab">
- <text_editor name="group_money_details_text">
- Berekenen...
- </text_editor>
- <button label="&lt; Eerder" label_selected="&lt; Eerder" name="earlier_details_button" tool_tip="Ga terug in de tijd"/>
- <button label="Later &gt;" label_selected="Later &gt;" name="later_details_button" tool_tip="Ga vooruit in de tijd"/>
- </panel>
- <panel label="Verkopen" name="group_money_sales_tab">
- <text_editor name="group_money_sales_text">
- Berekenen...
- </text_editor>
- <button label="&lt; Eerder" label_selected="&lt; Eerder" name="earlier_sales_button" tool_tip="Ga terug in de tijd"/>
- <button label="Later &gt;" label_selected="Later &gt;" name="later_sales_button" tool_tip="Ga vooruit in de tijd"/>
- </panel>
- </tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_notices.xml b/indra/newview/skins/default/xui/nl/panel_group_notices.xml
deleted file mode 100644
index a1929bb5e1..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_notices.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Berichten" name="notices_tab">
- <string name="help_text">
- Berichten vormen een snelle manier om met een groep te communiceren door een bericht en optioneel een bevestigd item af te leveren. Berichten gaan alleen naar groepsleden in rollen die de mogelijkheid hebben om berichten te ontvangen. U kunt berichten uitzetten in de tab Algemeen.
- </string>
- <string name="no_notices_text">
- Er zijn geen oude berichten.
- </string>
- <button label="?" label_selected="?" name="help_button"/>
- <text name="lbl">
- Groepsberichtenarchief
- </text>
- <text name="lbl2">
- Berichten worden 14 dagen bewaard. Berichtenlijsten zijn gelimiteerd tot 200 berichten groep per dag.
- </text>
- <scroll_list name="notice_list">
- <column label="Onderwerp" name="subject"/>
- <column label="Van" name="from"/>
- <column label="Datum" name="date"/>
- </scroll_list>
- <text name="notice_list_none_found">
- Geen gevonden.
- </text>
- <button label="Maak nieuw bericht" label_selected="Maak nieuw bericht" name="create_new_notice"/>
- <button label="Verversen" label_selected="Ververs lijst" name="refresh_notices"/>
- <panel label="Maak nieuw bericht" name="panel_create_new_notice">
- <text name="lbl">
- Maak een bericht
- </text>
- <text name="lbl2">
- U kunt een enkel item aan een bericht toevoegen door het van uw inventaris naar dit paneel te slepen. Bevestigde items moeten kopieerbaar en overdraagbaar zijn en u kunt geen mappen versturen.
- </text>
- <text name="lbl3">
- Onderwerp:
- </text>
- <text name="lbl4">
- Bericht:
- </text>
- <text name="lbl5">
- Bevestig:
- </text>
- <button label="Verwijder bevestiging" label_selected="Verwijder bevestiging" name="remove_attachment"/>
- <button label="Verzend bericht" label_selected="Verzend bericht" name="send_notice"/>
- <panel name="drop_target" tool_tip="Sleep een inventarisitem op het berichtvenster om het met het bericht mee te sturen. U dient permissie te hebben om het object te kopiëren en over te dragen wilt u het met het bericht mee kunnen sturen."/>
- </panel>
- <panel label="Bekijk oud bericht" name="panel_view_past_notice">
- <text name="lbl">
- Gearchiveerd bericht
- </text>
- <text name="lbl2">
- Om een nieuw bericht te sturen, klik de &apos;Maak nieuw bericht&apos; knop hierboven.
- </text>
- <text name="lbl3">
- Onderwerp:
- </text>
- <text name="lbl4">
- Bericht:
- </text>
- <button label="Open bevestiging" label_selected="Open bevestiging" name="open_attachment" width="118"/>
- <line_editor left="128" name="view_inventory_name" width="256"/>
- </panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_roles.xml b/indra/newview/skins/default/xui/nl/panel_group_roles.xml
deleted file mode 100644
index 507906c0d7..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_roles.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Leden &amp; Rollen" name="roles_tab">
- <panel.string name="default_needs_apply_text">
- Er zijn niet opgeslagen veranderingen op de huidige tab
- </panel.string>
- <panel.string name="want_apply_text">
- Wilt u deze wijzigingen opslaan?
- </panel.string>
- <tab_container height="164" name="roles_tab_container">
- <panel height="148" label="LEDEN" name="members_sub_tab" tool_tip="Leden">
- <panel.string name="help_text">
- U kunt Rollen aan Leden toewijzen of van Leden afnemen. Selecteer meerdere Leden door de Ctrl toets ingedrukt te houden en op hun namen te klikken.
- </panel.string>
- <filter_editor label="Filter Leden" name="filter_input"/>
- <name_list bottom_delta="-105" height="104" name="member_list">
- <name_list.columns label="Lid Naam" name="name"/>
- <name_list.columns label="Donaties" name="donated"/>
- <name_list.columns label="Laatste Login" name="online"/>
- </name_list>
- <button label="Uitnodigen" name="member_invite"/>
- <button label="Uitwerpen" name="member_eject"/>
- </panel>
- <panel height="148" label="ROLLEN" name="roles_sub_tab">
- <panel.string name="help_text">
- Rollen hebben een titel en een toegestane lijst met Vaardigheden die Leden kunnen uitvoeren. Leden kunnen tot 1 of meer Rollen behoren. Een groep kan tot 10 Rollen bevatten, inclusief de Iedereen en Eigenaren Rollen.
- </panel.string>
- <panel.string name="cant_delete_role">
- De &apos;Iedereen&apos; en &apos;Eigenaren&apos; Rollen zijn speciaal en kunnen niet verwijderd worden.
- </panel.string>
- <panel.string name="power_folder_icon">
- Inv_FolderClosed
- </panel.string>
- <filter_editor label="Filter Rollen" name="filter_input"/>
- <scroll_list bottom_delta="-104" height="104" name="role_list">
- <scroll_list.columns label="Rol" name="name"/>
- <scroll_list.columns label="Titel" name="title"/>
- <scroll_list.columns label="Leden" name="members"/>
- </scroll_list>
- <button label="Nieuwe Rol..." name="role_create"/>
- <button label="Rol Verwijderen" name="role_delete"/>
- </panel>
- <panel height="148" label="VAARDIGHEDEN" name="actions_sub_tab" tool_tip="Je kan een vaardigheid&apos;s beschrijving en welke Rollen en Leden kunnen uitvoeren van de Vaardigheid.">
- <panel.string name="help_text">
- Mogelijkheden stellen leden in staat om specifieke dingen in een groep te doen. Er is een brede variëteit aan Mogelijkheden.
- </panel.string>
- <filter_editor label="Filter Vaardigheden" name="filter_input"/>
- <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecteer een Vaardigheid om meer details te bekijken"/>
- </panel>
- </tab_container>
- <panel name="members_footer">
- <text name="static">
- Toegekende Rollen
- </text>
- <text name="static2">
- Toegestane Mogelijkheden
- </text>
- <scroll_list name="member_allowed_actions" tool_tip="Voor details van elke Toegestane Vaardigheid in de Mogelijkheden tab"/>
- </panel>
- <panel name="roles_footer">
- <text name="static">
- Naam
- </text>
- <line_editor name="role_name">
- Werknemers
- </line_editor>
- <text name="static3">
- Titel
- </text>
- <line_editor name="role_title">
- (wachten)
- </line_editor>
- <text name="static2">
- Omschrijving
- </text>
- <text_editor name="role_description">
- (wachten)
- </text_editor>
- <text name="static4">
- Toegewezen Rollen
- </text>
- <check_box label="Leden Onthullen" name="role_visible_in_list" tool_tip="Bepaalt of leden van deze rol zichtbaar zijn in de Algemeen tab voor mensen buiten de groep."/>
- <text name="static5" tool_tip="Een lijst met Mogelijkheden die de geselecteerd rol kan uitvoeren.">
- Toegestane Mogelijkheden
- </text>
- <scroll_list name="role_allowed_actions" tool_tip="For details of each allowed ability see the abilities tab"/>
- </panel>
- <panel name="actions_footer">
- <text name="static">
- Vaardigheid omschrijving
- </text>
- <text_editor name="action_description">
- Dit is de Mogelijkheid &apos;Werp Leden uit deze Groep&apos;. Alleen een Eigenaar kan een andere Eigenaar uitwerpen.
- </text_editor>
- <text name="static2">
- Rollen met deze vaardigheid
- </text>
- <text name="static3">
- Leden met deze vaardigheid
- </text>
- </panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_login.xml b/indra/newview/skins/default/xui/nl/panel_login.xml
deleted file mode 100644
index bcc888061f..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_login.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/index.php?lang=nl-NL
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=nl-NL
- </panel.string>
- <panel name="login_widgets">
- <text name="first_name_text">
- Voornaam:
- </text>
- <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Voornaam"/>
- <text name="last_name_text">
- Achternaam:
- </text>
- <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Achternaam"/>
- <text name="password_text">
- Paswoord:
- </text>
- <button label="Inloggen" label_selected="Inloggen" name="connect_btn"/>
- <text name="start_location_text">
- Start locatie:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="Mijn Laatste Locatie" name="MyLastLocation"/>
- <combo_box.item label="Mijn Thuis" name="MyHome"/>
- <combo_box.item label="&lt;Tik regio naam&gt;" name="Typeregionname"/>
- </combo_box>
- <check_box label="Onthoud paswoord" name="remember_check"/>
- <text name="create_new_account_text">
- Maak een nieuwe account
- </text>
- <text name="forgot_password_text">
- Naam of paswoord vergeten?
- </text>
- <text name="channel_text">
- [VERSION]
- </text>
- </panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_main_inventory.xml b/indra/newview/skins/default/xui/nl/panel_main_inventory.xml
deleted file mode 100644
index c533cc20c0..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_main_inventory.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Dingen" name="main inventory panel">
- <panel.string name="Title">
- Dingen
- </panel.string>
- <filter_editor label="Filter" name="inventory search editor"/>
- <tab_container name="inventory filter tabs">
- <inventory_panel label="Alle Voorwerpen" name="All Items"/>
- <inventory_panel label="Recente Voorwerpen" name="Recent Items"/>
- </tab_container>
- <panel name="bottom_panel">
- <button name="options_gear_btn" tool_tip="Toon extra opties"/>
- <button name="add_btn" tool_tip="Voeg nieuw voorwerp toe"/>
- <dnd_button name="trash_btn" tool_tip="Remove selected item"/>
- </panel>
- <menu_bar name="Inventory Menu">
- <menu label="Bestand" name="File">
- <menu_item_call label="Open" name="Open"/>
- <menu label="Upload" name="upload">
- <menu_item_call label="Plaatje (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
- </menu>
- <menu_item_call label="Nieuw Venster" name="New Window"/>
- <menu_item_call label="Toon Filters" name="Show Filters"/>
- <menu_item_call label="Reset Filters" name="Reset Current"/>
- <menu_item_call label="Sluit Alle Mappen" name="Close All Folders"/>
- <menu_item_call label="Prullenbak Leegmaken" name="Empty Trash"/>
- <menu_item_call label="Leeg Verloren En Gevonden" name="Empty Lost And Found"/>
- </menu>
- <menu label="Maken" name="Create">
- <menu_item_call label="Nieuwe Map" name="New Folder"/>
- <menu_item_call label="Nieuw Script" name="New Script"/>
- <menu_item_call label="Nieuwe Notitie" name="New Note"/>
- <menu_item_call label="Nieuw Gebaar" name="New Gesture"/>
- <menu label="Nieuwe Kleding" name="New Clothes">
- <menu_item_call label="Nieuw Overhemd" name="New Shirt"/>
- <menu_item_call label="Nieuwe Broek" name="New Pants"/>
- <menu_item_call label="Nieuwe Schoenen" name="New Shoes"/>
- <menu_item_call label="Nieuwe Sokken" name="New Socks"/>
- <menu_item_call label="Nieuwe Jas" name="New Jacket"/>
- <menu_item_call label="Nieuwe Rok" name="New Skirt"/>
- <menu_item_call label="Nieuwe Handschoenen" name="New Gloves"/>
- <menu_item_call label="Nieuw Hemd" name="New Undershirt"/>
- <menu_item_call label="Nieuwe Onderbroek" name="New Underpants"/>
- <menu_item_call label="Nieuwe Alpha" name="New Alpha"/>
- <menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
- </menu>
- <menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
- <menu_item_call label="Nieuwe Vorm" name="New Shape"/>
- <menu_item_call label="Nieuwe Huid" name="New Skin"/>
- <menu_item_call label="Nieuw Haar" name="New Hair"/>
- <menu_item_call label="Nieuwe Ogen" name="New Eyes"/>
- </menu>
- </menu>
- <menu label="Sorteer" name="Sort">
- <menu_item_check label="Bij Naam" name="By Name"/>
- <menu_item_check label="Bij Datum" name="By Date"/>
- <menu_item_check label="Mappen Altijd Op Naam" name="Folders Always By Name"/>
- <menu_item_check label="Syteemmappen Naar Boven" name="System Folders To Top"/>
- </menu>
- </menu_bar>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml
deleted file mode 100644
index 6626c57472..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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="Bubble chat" name="bubble_text_chat"/>
- <color_swatch name="background" tool_tip="Kies kleur voor bubble chat"/>
- <slider label="Opaciteit" name="bubble_chat_opacity"/>
- <text name="AspectRatioLabel1" tool_tip="breedte / hoogte">
- Beeldverhouding
- </text>
- <combo_box name="aspect_ratio" tool_tip="breedte / hoogte">
- <combo_box.item label="4:3 (Standaard beeldbuis)" name="item1"/>
- <combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/>
- <combo_box.item label="8:5 (Breedbeeld)" name="item3"/>
- <combo_box.item label="16:9 (Breedbeeld)" name="item4"/>
- </combo_box>
- <check_box label="Automatisch detecteren" name="aspect_auto_detect"/>
- <text name="heading1">
- Camera:
- </text>
- <slider label="Kijkhoek" name="camera_fov"/>
- <slider label="Afstand" name="camera_offset_scale"/>
- <text name="heading2">
- Automatisch positionering voor:
- </text>
- <check_box label="Maken/Bewerken" name="edit_camera_movement" tool_tip="Gebruik automatische camera positionering bij ingaan en verlaten van Bewerk modus."/>
- <check_box label="Uiterlijk" name="appearance_camera_movement" tool_tip="Gebruik automatische camera positionering wanneer in bewerk modus"/>
- <text name="heading3">
- Avatars:
- </text>
- <check_box label="Toon mij in Muis Modus" name="first_person_avatar_visible"/>
- <check_box label="Pijltjestoetsen bewegen mij altijd" name="arrow_keys_move_avatar_check"/>
- <check_box label="Tik-tik-vasthouden om te rennen" name="tap_tap_hold_to_run"/>
- <check_box label="Beweeg avatar lippen tijdens het praten" name="enable_lip_sync"/>
- <check_box label="Toon script fouten" name="show_script_errors"/>
- <radio_group name="show_location">
- <radio_item label="In chat" name="0"/>
- <radio_item label="In een venster" name="1"/>
- </radio_group>
- <check_box label="Toggle modus voor microfoon wanneer ik de spreek toets indruk:" name="push_to_talk_toggle_check" tool_tip="Wanneer in toggle mode, drukt u éénmaal op de ontspanner toets om de microfoon in-of uitschakelen. Wanneer niet in toggle mode, kan de microfoon uitzendingen uw stem alleen tijdens de ontspanner wordt ingedrukt."/>
- <line_editor label="Push-to-Speak trigger" name="modifier_combo"/>
- <button label="Plaats Toets" name="set_voice_hotkey_button"/>
- <button label="Middelste Muis Knop" name="set_voice_middlemouse_button"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml
deleted file mode 100644
index d3174a703d..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Pop-ups" name="popups" title="Pop-ups">
- <text name="tell_me_label">
- Vertel mij:
- </text>
- <check_box label="Wanneer ik L$ spendeer of krijg" name="notify_money_change_checkbox"/>
- <check_box label="Wanneer mijn vrienden in- of uit-loggen" name="friends_online_notify_checkbox"/>
- <text name="show_label">
- Toon altijd deze waarschuwingen:
- </text>
- <text name="dont_show_label">
- Toon nooit deze waarschuwingen:
- </text>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/nl/panel_preferences_chat.xml
deleted file mode 100644
index 84f385c86b..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_chat.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Tekst chat" name="chat">
- <radio_group name="chat_font_size">
- <radio_item label="Klein" name="radio"/>
- <radio_item label="Middel" name="radio2"/>
- <radio_item label="Groot" name="radio3"/>
- </radio_group>
- <color_swatch label="U" name="user"/>
- <text name="text_box1">
- U
- </text>
- <color_swatch label="Anderen" name="agent"/>
- <text name="text_box2">
- Anderen
- </text>
- <color_swatch label="IM" name="im"/>
- <text name="text_box3">
- IM
- </text>
- <color_swatch label="Systeem" name="system"/>
- <text name="text_box4">
- Systeem
- </text>
- <color_swatch label="Fouten" name="script_error"/>
- <text name="text_box5">
- Fouten
- </text>
- <color_swatch label="Objecten" name="objects"/>
- <text name="text_box6">
- Objecten
- </text>
- <color_swatch label="Eigenaar" name="owner"/>
- <text name="text_box7">
- Eigenaar
- </text>
- <color_swatch label="URL&apos;s" name="links"/>
- <text name="text_box9">
- URL&apos;s
- </text>
- <check_box initial_value="true" label="Speel typeanimatie tijdens chat" name="play_typing_animation"/>
- <check_box label="Email mij IMs wanneer ik offline ben" name="send_im_to_email"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_general.xml b/indra/newview/skins/default/xui/nl/panel_preferences_general.xml
deleted file mode 100644
index 7be570b27f..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_general.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Algemeen" name="general_panel">
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" tool_tip="Log standaard in op mijn thuislocatie." label="Mijn thuis"/>
- <combo_box.item name="MyLastLocation" tool_tip="Log standaard in op mijn laatste locatie." label="Mijn laatste locatie"/>
- </combo_box>
- <check_box label="Toon startlocatie op loginscherm" name="show_location_checkbox"/>
- <combo_box name="fade_out_combobox">
- <combo_box.item name="Never" label="Nooit"/>
- <combo_box.item name="Show Temporarily" label="Toon tijdelijk"/>
- <combo_box.item name="Always" label="Altijd"/>
- </combo_box>
- <check_box label="Kleine avatarnamen" name="small_avatar_names_checkbox"/>
- <check_box label="Verberg mijn naam op mijn scherm" name="show_my_name_checkbox"/>
- <text name="group_titles_textbox">
- Groepstitels:
- </text>
- <check_box label="Verberg alle groepstitels" name="show_all_title_checkbox"/>
- <check_box label="Verberg mijn groepstitel" name="show_my_title_checkbox"/>
- <color_swatch label="" name="effect_color_swatch" tool_tip="Klik om de kleurkiezer te openen"/>
- <text name="UI Size:">
- UI grootte:
- </text>
- <check_box label="Gebruik resolutie onafhankelijke schaal" name="ui_auto_scale"/>
- <spinner label="Afwezigheidtijdsduur:" name="afk_timeout_spinner"/>
- <check_box label="Waarschuwen wanneer L$ worden uitgegeven of ontvangen" name="notify_money_change_checkbox"/>
- <text name="maturity_desired_label">
- Inhoudscategorie:
- </text>
- <text name="maturity_desired_prompt">
- Ik wil toegang tot inhoud die is beoordeeld als:
- </text>
- <combo_box name="maturity_desired_combobox">
- <combo_box.item name="Desired_Adult" label="PG, Mature en Adult"/>
- <combo_box.item name="Desired_Mature" label="PG en Mature"/>
- <combo_box.item name="Desired_PG" label="PG"/>
- </combo_box>
- <text name="maturity_desired_textbox">
- PG
- </text>
- <text name="start_location_textbox">
- Startlocatie:
- </text>
- <text name="show_names_textbox">
- Toon namen:
- </text>
- <text name="effects_color_textbox">
- Kleur voor mijn effecten:
- </text>
- <text name="seconds_textbox">
- seconden
- </text>
- <text name="crash_report_textbox">
- Crash rapporten:
- </text>
- <text name="language_textbox">
- Taal:
- </text>
- <text name="language_textbox2">
- (Vereist herstart)
- </text>
- <string name="region_name_prompt">
- &lt; Type regionaam &gt;
- </string>
- <combo_box name="crash_behavior_combobox">
- <combo_box.item name="Askbeforesending" label="Vraag voor verzenden"/>
- <combo_box.item name="Alwayssend" label="Altijd verzenden"/>
- <combo_box.item name="Neversend" label="Nooit verzenden"/>
- </combo_box>
- <combo_box name="language_combobox">
- <combo_box.item name="System Default Language" label="Systeemstandaard"/>
- <combo_box.item name="English" label="Engels (English)"/>
- <combo_box.item name="Danish" label="Dansk (Deens) - Bèta"/>
- <combo_box.item name="Deutsch(German)" label="Deutsch (Duits) - Bèta"/>
- <combo_box.item name="Spanish" label="Español (Spaans) - Bèta"/>
- <combo_box.item name="French" label="Français (Frans) - Bèta"/>
- <combo_box.item name="Italian" label="Italiano (Italiaans) - Bèta"/>
- <combo_box.item name="Hungarian" label="Magyar (Hongaars) - Bèta"/>
- <combo_box.item name="Dutch" label="Nederlands - Bèta"/>
- <combo_box.item name="Polish" label="Polski (Pools) - Bèta"/>
- <combo_box.item name="Portugese" label="Português (Portugees) - Bèta"/>
- <combo_box.item name="Russian" label="Русский (Russisch) - Bèta"/>
- <combo_box.item name="Turkish" label="Türkçe (Turks) - Bèta"/>
- <combo_box.item name="Ukrainian" label="Українська (Oekraïens) - Bèta"/>
- <combo_box.item name="Chinese" label="中文 (简体) (Chinees) - Bèta"/>
- <combo_box.item name="(Japanese)" label="日本語 (Japans) - Bèta"/>
- <combo_box.item name="(Korean)" label="한국어 (Koreaans) - Bèta"/>
- </combo_box>
- <check_box label="Deel taal met objecten" name="language_is_public" tool_tip="Dit laat in-wereld objecten uw voorkeurstaal weten."/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml
deleted file mode 100644
index 8f4244e222..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Grafisch" name="Display panel">
- <button label="?" name="GraphicsPreferencesHelpButton"/>
- <check_box label="Voer Second Life uit in een venster" name="windowed mode"/>
- <text_editor name="FullScreenInfo" bottom="-56" height="40" width="480">
- Wanneer niet aangevinkt, zal de viewer in volledig-scherm modus getoond worden wanneer u inlogt.
- </text_editor>
- <text name="WindowSizeLabel">
- Venstergrootte:
- </text>
- <combo_box name="windowsize combo" left="115" >
- <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" width="100">
- Weergaveresolutie:
- </text>
- <combo_box left="115" name="fullscreen combo" />
- <text name="AspectRatioLabel1" tool_tip="breedte / hoogte" width="100">
- Beeldverhouding:
- </text>
- <combo_box name="aspect_ratio" tool_tip="breedte / hoogte" left="115" >
- <combo_box.item name="4:3(StandardCRT)" label="4:3 (Standaard beeldbuis)"/>
- <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/>
- <combo_box.item name="8:5(Widescreen)" label="8:5 (Breedbeeld)"/>
- <combo_box.item name="16:9(Widescreen)" label="16:9 (Breedbeeld)"/>
- </combo_box>
- <check_box label="Verhouding automatisch detecteren" name="aspect_auto_detect" left="275" />
- <text name="HigherText">
- Kwaliteit en
- </text>
- <text name="QualityText">
- Prestatie:
- </text>
- <text name="FasterText">
- Sneller
- </text>
- <text name="ShadersPrefText">
- Laag
- </text>
- <text name="ShadersPrefText2">
- Middel
- </text>
- <text name="ShadersPrefText3">
- Hoog
- </text>
- <text name="ShadersPrefText4">
- Ultra
- </text>
- <text name="HigherText2">
- Hogere
- </text>
- <text name="QualityText2">
- Kwaliteit
- </text>
- <check_box label="Aangepast" name="CustomSettings"/>
- <panel name="CustomGraphics Panel">
- <text name="ShadersText">
- Shaders:
- </text>
- <check_box label="Bump mapping en glans" name="BumpShiny"/>
- <check_box label="Basis shaders" name="BasicShaders" tool_tip="Het uitschakelen van deze optie kan voorkomen dat sommige drivers voor grafische kaarten crashen."/>
- <check_box label="Atmosferische shaders" name="WindLightUseAtmosShaders"/>
- <check_box label="Waterreflecties" name="Reflections"/>
- <text name="ReflectionDetailText">
- Reflectiedetail:
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item name="0" label="Terrein en bomen" />
- <radio_item name="1" label="Alle statische objecten" />
- <radio_item name="2" label="Alle avatars en objecten" />
- <radio_item name="3" label="Alles" />
- </radio_group>
- <text name="AvatarRenderingText">
- Avatarweergave:
- </text>
- <check_box label="Avatar schimmen" name="AvatarImpostors"/>
- <check_box label="Hardware Skinning" name="AvatarVertexProgram"/>
- <check_box label="Avatar kleding" name="AvatarCloth"/>
- <text name="DrawDistanceMeterText1">
- m
- </text>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="Zichtbereik:" name="DrawDistance"/>
- <slider label="Max. aantal particles:" name="MaxParticleCount"/>
- <slider label="Nabewerkingskwaliteit:" name="RenderPostProcess"/>
- <text name="MeshDetailText">
- Maasdetail:
- </text>
- <slider label=" Objecten:" name="ObjectMeshDetail"/>
- <slider label=" Flexibele prims:" name="FlexibleMeshDetail"/>
- <slider label=" Bomen:" name="TreeMeshDetail"/>
- <slider label=" Avatars:" name="AvatarMeshDetail"/>
- <slider label=" Terrein:" name="TerrainMeshDetail"/>
- <slider label=" Lucht:" name="SkyMeshDetail"/>
- <text name="PostProcessText">
- Laag
- </text>
- <text name="ObjectMeshDetailText">
- Laag
- </text>
- <text name="FlexibleMeshDetailText">
- Laag
- </text>
- <text name="TreeMeshDetailText">
- Laag
- </text>
- <text name="AvatarMeshDetailText">
- Laag
- </text>
- <text name="TerrainMeshDetailText">
- Laag
- </text>
- <text name="SkyMeshDetailText">
- Laag
- </text>
- <text name="LightingDetailText">
- Lichtdetail:
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item name="SunMoon" label="Alleen zon en maan" />
- <radio_item name="LocalLights" label="Lokale lichten in de buurt" />
- </radio_group>
- <text name="TerrainDetailText">
- Terreindetail:
- </text>
- <radio_group name="TerrainDetailRadio">
- <radio_item name="0" label="Laag" />
- <radio_item name="2" label="Hoog" />
- </radio_group>
- </panel>
- <button label="Aanbevolen instellingen" name="Defaults"/>
- <button label="Hardware opties" label_selected="Hardware opties" name="GraphicsHardwareButton"/>
- <panel.string name="resolution_format">
- [RES_X] x [RES_Y]
- </panel.string>
- <panel.string name="aspect_ratio_text">
- [NUM]:[DEN]
- </panel.string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml
deleted file mode 100644
index c2014bf0cb..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Communicatie" name="im">
- <text name="text_box">
- Mijn online status:
- </text>
- <check_box left="140" label="Allen mijn vrienden en groepen kunnen zien wanneer ik online ben" name="online_visibility"/>
- <text name="text_box2">
- IM opties:
- </text>
- <string name="log_in_to_change">
- log in om te wijzigen
- </string>
- <check_box left="140" label="Stuur IM naar Email ([EMAIL])" name="send_im_to_email"/>
- <check_box left="140" label="Voeg IM toe in chatconsole" name="include_im_in_chat_console"/>
- <check_box left="140" label="Toon tijdstempels in IM" name="show_timestamps_check"/>
- <check_box left="140" label="Toon melding bij vriend online" name="friends_online_notify_checkbox"/>
- <text name="text_box3">
- Antwoord bij
-Niet Storen:
- </text>
- <text name="text_box4">
- Log opties:
- </text>
- <check_box label="Bewaar een log van IM op mijn computer" name="log_instant_messages"/>
- <check_box label="Toon tijdstempels in IM-log" name="log_instant_messages_timestamp"/>
- <check_box label="Toon het einde van de laatste IM conversatie" name="log_show_history"/>
- <check_box label="Bewaar een log van lokale chat op mijn computer" name="log_chat"/>
- <check_box label="Toon tijdstempels in lokale chatlog" name="log_chat_timestamp"/>
- <check_box label="Toon binnenkomende IM in lokale chatlog" name="log_chat_IM"/>
- <check_box label="Voeg datum toe aan tijdstempels" name="log_date_timestamp"/>
- <button label="Wijzig pad" label_selected="Wijzig pad" name="log_path_button"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/nl/panel_preferences_setup.xml
deleted file mode 100644
index f9f58befe8..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_setup.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Invoer &amp; Camera" name="Input panel">
- <text name=" Mouselook Options:">
- Mouselook opties:
- </text>
- <text name=" Mouse Sensitivity:">
- Muis gevoeligheid:
- </text>
- <check_box label="Muisbeweging omkeren" name="invert_mouse"/>
- <text name=" Auto Fly Options:">
- Automatisch vliegen
-opties:
- </text>
- <check_box label="Vlieg/Land bij indrukken Page Up/Page Down" name="automatic_fly"/>
- <text name=" Camera Options:">
- Camera opties:
- </text>
- <text name="camera_fov_label">
- Camera Zichthoek
- </text>
- <text name="Camera Follow Distance:">
- Camera volgafstand:
- </text>
- <check_box label="Automatische camerabeweging bij bewerken" name="edit_camera_movement" tool_tip="Gebruik automatische camerapositionering bij het betreden en verlaten van de bewerken modus"/>
- <check_box label="Automatische camerabeweging bij uiterlijk bewerken" name="appearance_camera_movement" tool_tip="Gebruik automatische camerapositionering in de bewerken modus"/>
- <text name="text2">
- Avatar weergave opties:
- </text>
- <check_box label="Toon avatar in mouselook" name="first_person_avatar_visible"/>
- <button label="Joystick instellingen" name="joystick_setup_button"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/nl/panel_preferences_sound.xml
deleted file mode 100644
index 5ded015868..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_sound.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Geluid" name="Preference Media panel">
- <slider label="Hoofd volume" name="System Volume"/>
- <check_box initial_value="true" name="mute_when_minimized"/>
- <text name="mute_chb_label">Dempen indien geminimaliseerd</text>
- <slider label="Omliggend" name="Wind Volume"/>
- <slider label="Knoppen" name="UI Volume"/>
- <slider label="Media" name="Media Volume"/>
- <slider label="Geluids effecten" name="SFX Volume"/>
- <slider label="Streamen van muziek" name="Music Volume"/>
- <check_box label="Voice" name="enable_voice_check"/>
- <slider label="Voice" name="Voice Volume"/>
- <text name="Listen from">
- Luisteren vanuit:
- </text>
- <radio_group name="ear_location">
- <radio_item label="Camera positie" name="0"/>
- <radio_item label="Avatar positie" name="1"/>
- </radio_group>
- <button label="Input/Output Apparaten" name="device_settings_btn"/>
- <panel label="Apparaat Instellingen" name="device_settings_panel">
- <panel.string name="default_text">
- Standaard
- </panel.string>
- <text name="Input">
- Input
- </text>
- <text name="My volume label">
- Mijn volume:
- </text>
- <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Verander de volume door gebruik te nemen van deze schuifknop"/>
- <text name="wait_text">
- Even geduld
- </text>
- <text name="Output">
- Output
- </text>
- </panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_covenant.xml b/indra/newview/skins/default/xui/nl/panel_region_covenant.xml
deleted file mode 100644
index adfc62dd22..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_covenant.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Convenant" name="Covenant">
- <text name="estate_section_lbl">
- Estate:
- </text>
- <text name="estate_name_lbl">
- Naam:
- </text>
- <text name="estate_name_text">
- mainland
- </text>
- <text name="estate_owner_lbl">
- Eigenaar:
- </text>
- <text name="estate_owner_text">
- (geen)
- </text>
- <text name="estate_cov_lbl">
- Convenant:
- </text>
- <text name="covenant_timestamp_text">
- Laatst gewijzigd Wed Dec 31 16:00:00 1969
- </text>
- <button label="?" name="covenant_help"/>
- <text_editor name="covenant_editor" bottom="-247" height="162">
- Er is geen convenant voor deze estate.
- </text_editor>
- <button label="Opnieuw instellen" name="reset_covenant" right="460" width="110"/>
- <text name="covenant_help_text" bottom="-25">
- Wijzigingen in het convenant zullen in alle percelen van het estate
- zichtbaar zijn.
- </text>
- <text name="covenant_instructions" bottom_delta="-36" >
- Sleep en deponeer een notitiekaart om het convenant voor deze
- estate te wijzigen.
- </text>
- <text name="region_section_lbl" bottom_delta="-36" >
- Regio:
- </text>
- <text name="region_name_lbl">
- Naam:
- </text>
- <text name="region_name_text">
- leyla
- </text>
- <text name="region_landtype_lbl">
- Type:
- </text>
- <text name="region_landtype_text">
- Mainland / Homestead
- </text>
- <text name="region_maturity_lbl">
- Inhoudscategorie:
- </text>
- <text name="region_maturity_text">
- Adult
- </text>
- <text name="resellable_lbl">
- Doorverkopen:
- </text>
- <text name="resellable_clause">
- Land in deze regio mag niet worden doorverkocht.
- </text>
- <text name="changeable_lbl">
- Opsplitsen:
- </text>
- <text name="changeable_clause">
- Land in deze regio mag niet worden samengevoegd/opgesplitst.
- </text>
- <string name="can_resell">
- Aangekocht land in deze regio mag worden doorverkocht.
- </string>
- <string name="can_not_resell">
- Aangekocht land in deze regio mag niet worden doorverkocht.
- </string>
- <string name="can_change">
- Aangekocht land in deze regio mag worden gecombineerd of
-opgedeeld.
- </string>
- <string name="can_not_change">
- Aangekocht land in deze regio mag niet worden gecombineerd
-of opgedeeld.
- </string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_debug.xml b/indra/newview/skins/default/xui/nl/panel_region_debug.xml
deleted file mode 100644
index 9fad8e478a..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_debug.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Debug" name="Debug">
- <text name="region_text_lbl">
- Regio:
- </text>
- <text name="region_text">
- onbekend
- </text>
- <check_box label="Schakel scripts uit" name="disable_scripts_check" tool_tip="Schakel alle scripts in deze regio uit"/>
- <button label="?" name="disable_scripts_help"/>
- <check_box label="Schakel botsingen uit" name="disable_collisions_check" tool_tip="Schakel alle niet-avatar botsingen in deze regio uit"/>
- <button label="?" name="disable_collisions_help"/>
- <check_box label="Fysiek uitschakelen" name="disable_physics_check" tool_tip="Alle fysiek in deze regio uitschakelen"/>
- <button label="?" name="disable_physics_help"/>
- <button label="Toepassen" name="apply_btn"/>
- <text name="objret_text_lbl">
- Object retourneren
- </text>
- <text name="resident_text_lbl">
- Inwoner:
- </text>
- <line_editor name="target_avatar_name">
- (none)
- </line_editor>
- <button label="Kies..." name="choose_avatar_btn"/>
- <text name="options_text_lbl">
- Opties:
- </text>
- <check_box label="Retourneer alleen objecten die scripts bevatten." name="return_scripts" tool_tip="Retourneer alleen objecten met scripts."/>
- <check_box label="Retourneer alleen die objecten op het land van iemand anders" name="return_other_land" tool_tip="Retourneer alleen objecten die zich op land bevinden dat aan iemand anders toebehoort"/>
- <check_box label="Retourneer objecten in alle regio&apos;s van dit estate" name="return_estate_wide" tool_tip="Retourneer objecten in alle regio&apos;s van dit estate"/>
- <button label="Retourneren" name="return_btn"/>
- <button label="Toon top botsingen..." name="top_colliders_btn" tool_tip="Lijst met objecten die de meeste mogelijke botsingen ondergaan"/>
- <button label="?" name="top_colliders_help"/>
- <button label="Toon top scripts..." name="top_scripts_btn" tool_tip="Lijst met objecten die de meeste tijd besteden met het uitvoeren van scripts"/>
- <button label="?" name="top_scripts_help"/>
- <button label="Herstart regio" name="restart_btn" tool_tip="Geef een 2 minuten afteltijd en herstart de regio."/>
- <button label="?" name="restart_help"/>
- <button label="Vertraag herstart" name="cancel_restart_btn" tool_tip="Vertraag herstart met een uur"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_estate.xml b/indra/newview/skins/default/xui/nl/panel_region_estate.xml
deleted file mode 100644
index 08b68c8d30..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_estate.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Estate" name="Estate">
- <text name="estate_help_text">
- Wijzigingen van instellingen op dit tabblad
-zullen alle regio&apos;s in de estate beïnvloeden.
- </text>
- <text name="estate_text">
- Estate:
- </text>
- <text name="estate_name">
- (onbekend)
- </text>
- <text name="owner_text">
- Eigenaar:
- </text>
- <text name="estate_owner">
- (onbekend)
- </text>
- <check_box label="Gebruik globale tijd" name="use_global_time_check"/>
- <button label="?" name="use_global_time_help"/>
- <check_box label="Vaste zon" name="fixed_sun_check"/>
- <button label="?" name="fixed_sun_help"/>
- <slider label="Fase" name="sun_hour_slider"/>
- <check_box label="Publieke toegang toestaan" name="externally_visible_check"/>
- <button label="?" name="externally_visible_help"/>
- <text name="Only Allow">
- Beperk toegang tot:
- </text>
- <check_box label="Inwoners met betalingsinformatie opgeslagen" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/>
- <check_box label="Leeftijdgeverifieerde volwassenen" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie." bottom_delta="-30"/>
- <check_box label="Voice chat toestaan" name="voice_chat_check"/>
- <button label="?" name="voice_chat_help"/>
- <check_box label="Directe teleport toestaan" name="allow_direct_teleport"/>
- <button label="?" name="allow_direct_teleport_help"/>
- <text name="abuse_email_text" bottom_delta="-23">
- Misbruik e-mail adres:
- </text>
- <line_editor bottom_delta="-14" name="abuse_email_address" />
- <string name="email_unsupported">
- Optie niet ondersteund
- </string>
- <button label="?" name="abuse_email_address_help"/>
- <button label="Toepassen" name="apply_btn" bottom_delta="-22"/>
- <button label="Gebruiker verwijderen van estate..." name="kick_user_from_estate_btn"/>
- <button label="Zend bericht naar estate..." name="message_estate_btn"/>
- <text name="estate_manager_label">
- Estate beheerders:
- </text>
- <button label="?" name="estate_manager_help"/>
- <button label="Verwijderen..." name="remove_estate_manager_btn"/>
- <button label="Toevoegen..." name="add_estate_manager_btn"/>
- <text name="allow_resident_label">
- Toegestane inwoners:
- </text>
- <button label="?" name="allow_resident_help"/>
- <button label="Verwijderen..." name="remove_allowed_avatar_btn"/>
- <button label="Toevoegen..." name="add_allowed_avatar_btn"/>
- <text name="allow_group_label">
- Toegestane groepen
- </text>
- <button label="?" name="allow_group_help"/>
- <button label="Verwijderen..." name="remove_allowed_group_btn"/>
- <button label="Toevoegen..." name="add_allowed_group_btn"/>
- <text name="ban_resident_label">
- Verbannen inwoners:
- </text>
- <button label="?" name="ban_resident_help"/>
- <button label="Verwijderen..." name="remove_banned_avatar_btn"/>
- <button label="Toevoegen..." name="add_banned_avatar_btn"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_general.xml b/indra/newview/skins/default/xui/nl/panel_region_general.xml
deleted file mode 100644
index 74480ed0a4..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_general.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Regio" name="General">
- <text name="region_text_lbl">
- Regio:
- </text>
- <text name="region_text">
- onbekend
- </text>
- <text name="version_channel_text_lbl">
- Versie:
- </text>
- <text name="version_channel_text">
- onbekend
- </text>
- <text name="region_type_lbl">
- Type:
- </text>
- <text name="region_type">
- onbekend
- </text>
- <check_box label="Blokkeer terreinbewerking" name="block_terraform_check"/>
- <button label="?" name="terraform_help"/>
- <check_box label="Blokkeer vliegen" name="block_fly_check"/>
- <button label="?" name="fly_help"/>
- <check_box label="Letsel toestaan" name="allow_damage_check"/>
- <button label="?" name="damage_help"/>
- <check_box label="Duwen Uitschakelen" name="restrict_pushobject"/>
- <button label="?" name="restrict_pushobject_help"/>
- <check_box label="Landverkoop toestaan" name="allow_land_resell_check"/>
- <button label="?" name="land_resell_help"/>
- <check_box label="Samenvoegen/opsplitsen land toestaan" name="allow_parcel_changes_check"/>
- <button label="?" name="parcel_changes_help" left="240"/>
- <check_box label="Blokkeer zichtbaarheid land in zoeken" name="block_parcel_search_check" tool_tip="Laat mensen deze regio en zijn percelen in zoekresultaten zien"/>
- <button label="?" name="parcel_search_help" left="240"/>
- <spinner label="Agent limiet" name="agent_limit_spin"/>
- <button label="?" name="agent_limit_help"/>
- <spinner label="Object bonus" name="object_bonus_spin"/>
- <button label="?" name="object_bonus_help"/>
- <text label="Volwassenheid" name="access_text">
- Inhoudscategorie:
- </text>
- <combo_box label="Mature" name="access_combo">
- <combo_box.item label="Adult" name="Adult"/>
- <combo_box.item label="Mature" name="Mature"/>
- <combo_box.item label="PG" name="PG"/>
- </combo_box>
- <button label="?" name="access_help"/>
- <button label="Toepassen" name="apply_btn"/>
- <button label="Teleport één gebruiker naar thuislocatie…" name="kick_btn"/>
- <button label="Teleport alle gebruikers naar thuislocatie…" name="kick_all_btn"/>
- <button label="Zend bericht naar regio…" name="im_btn"/>
- <button label="Beheer telehub…" name="manage_telehub_btn"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_terrain.xml b/indra/newview/skins/default/xui/nl/panel_region_terrain.xml
deleted file mode 100644
index a79bcc0eb5..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_terrain.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Terrein" name="Terrain">
- <text name="region_text_lbl">
- Regio:
- </text>
- <text name="region_text">
- onbekend
- </text>
- <spinner label="Waterhoogte" name="water_height_spin"/>
- <button label="?" name="water_height_help"/>
- <spinner label="Terrein verhooglimiet" name="terrain_raise_spin"/>
- <button label="?" name="terrain_raise_help"/>
- <spinner label="Terrein verlaaglimiet" name="terrain_lower_spin"/>
- <button label="?" name="terrain_lower_help"/>
- <check_box label="Gebruik estate zon" name="use_estate_sun_check"/>
- <button label="?" name="use_estate_sun_help"/>
- <check_box label="Vaste zon" name="fixed_sun_check"/>
- <button label="?" name="fixed_sun_help"/>
- <slider label="Fase" name="sun_hour_slider"/>
- <button label="Toepassen" name="apply_btn"/>
- <button label="Download RAW terrein..." name="download_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/>
- <button label="?" name="download_raw_help"/>
- <button label="Upload RAW terrein..." name="upload_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/>
- <button label="?" name="upload_raw_help"/>
- <button label="Bake terrein" name="bake_terrain_btn" tool_tip="Huidig terrein instellen als middelpunt voor verhoog/verlaag limieten"/>
- <button label="?" name="bake_terrain_help"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_texture.xml b/indra/newview/skins/default/xui/nl/panel_region_texture.xml
deleted file mode 100644
index ff10e20b7c..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_texture.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Grond texturen" name="Textures">
- <text name="region_text_lbl">
- Regio:
- </text>
- <text name="region_text">
- onbekend
- </text>
- <text name="detail_texture_text">
- Terreintexturen (vereist 512x512, 24 bit .tga bestanden)
- </text>
- <text name="height_text_lbl">
- 1 (Laag)
- </text>
- <text name="height_text_lbl2">
- 2
- </text>
- <text name="height_text_lbl3">
- 3
- </text>
- <text name="height_text_lbl4">
- 4 (Hoog)
- </text>
- <text name="height_text_lbl5">
- Textuur hoogtebereiken
- </text>
- <text name="height_text_lbl6">
- Zuidwest
- </text>
- <text name="height_text_lbl7">
- Noordwest
- </text>
- <text name="height_text_lbl8">
- Zuidoost
- </text>
- <text name="height_text_lbl9">
- Noordoost
- </text>
- <spinner label="Laag" name="height_start_spin_0"/>
- <spinner label="Laag" name="height_start_spin_1"/>
- <spinner label="Laag" name="height_start_spin_2"/>
- <spinner label="Laag" name="height_start_spin_3"/>
- <spinner label="Hoog" name="height_range_spin_0"/>
- <spinner label="Hoog" name="height_range_spin_1"/>
- <spinner label="Hoog" name="height_range_spin_2"/>
- <spinner label="Hoog" name="height_range_spin_3"/>
- <text name="height_text_lbl10">
- Deze waardes vertegenwoordigen het mengbereik voor bovenstaande texturen.
- </text>
- <text name="height_text_lbl11">
- Gemeten in meters, is de LOW waarde de MAXIMUM hoogte van textuur #1,
- </text>
- <text name="height_text_lbl12">
- en de HIGH waarde is de MINIMUM hoogte van textuur #4.
- </text>
- <button label="Toepassen" name="apply_btn"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_scrolling_param.xml b/indra/newview/skins/default/xui/nl/panel_scrolling_param.xml
deleted file mode 100644
index 8487ff999a..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_scrolling_param.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="LLScrollingPanelParam">
- <text name="Loading...">
- Laden...
- </text>
- <text name="Loading...2">
- Laden...
- </text>
- <slider label="[DESC]" name="param slider"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_status_bar.xml b/indra/newview/skins/default/xui/nl/panel_status_bar.xml
deleted file mode 100644
index 1d68d25f66..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_status_bar.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <text name="ParcelNameText" tool_tip="Naam van het landperceel waar u staat. Klik voor &apos;Over land&apos;.">
- Hier komt de naam van het perceel
- </text>
- <text name="BalanceText" tool_tip="Account saldo">
- Laden...
- </text>
- <button label="" label_selected="" name="buycurrency" tool_tip="Koop valuta"/>
- <text name="TimeText" tool_tip="Huidige tijd (Pacifisch)">
- -3
- </text>
- <string name="StatBarDaysOfWeek">
- Zondag:Maandag:Dinsdag:Woensdag:Donderdag:Vrijdag:Zaterdag
- </string>
- <string name="StatBarMonthsOfYear">
- Januari:Februari:Maart:April:Mei:Juni:Juli:Augustus:September:Oktober:November:December
- </string>
- <button label="" label_selected="" name="scriptout" tool_tip="Script waarschuwingen en fouten"/>
- <button label="" label_selected="" name="health" tool_tip="Letsel"/>
- <text name="HealthText" tool_tip="Letsel">
- 1
- </text>
- <button label="" label_selected="" name="no_fly" tool_tip="Vliegen niet toegestaan"/>
- <button label="" label_selected="" name="no_build" tool_tip="Bouwen/rezzen niet toegestaan"/>
- <button label="" label_selected="" name="no_scripts" tool_tip="Scripts niet toegestaan"/>
- <button label="" label_selected="" name="restrictpush" tool_tip="Niet duwen"/>
- <button label="" label_selected="" name="status_no_voice" tool_tip="Voice is niet beschikbaar hier"/>
- <button label="" label_selected="" name="buyland" tool_tip="Koop dit perceel"/>
- <line_editor label="Zoeken" name="search_editor" tool_tip="Doorzoek [SECOND_LIFE]"/>
- <button label="" label_selected="" name="search_btn" tool_tip="Doorzoek [SECOND_LIFE]"/>
- <string name="packet_loss_tooltip">
- Pakketten verlies
- </string>
- <string name="bandwidth_tooltip">
- Bandbreedte
- </string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_world_map.xml b/indra/newview/skins/default/xui/nl/panel_world_map.xml
deleted file mode 100644
index d9a0b66fbc..0000000000
--- a/indra/newview/skins/default/xui/nl/panel_world_map.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="world_map">
- <panel.string name="Loading">
- Laden...
- </panel.string>
- <panel.string name="InvalidLocation">
- Ongeldige Locatie
- </panel.string>
- <panel.string name="world_map_north">
- N
- </panel.string>
- <panel.string name="world_map_east">
- O
- </panel.string>
- <panel.string name="world_map_west">
- W
- </panel.string>
- <panel.string name="world_map_south">
- Z
- </panel.string>
- <panel.string name="world_map_southeast">
- ZO
- </panel.string>
- <panel.string name="world_map_northeast">
- NO
- </panel.string>
- <panel.string name="world_map_southwest">
- ZW
- </panel.string>
- <panel.string name="world_map_northwest">
- NW
- </panel.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="O" name="floater_map_east" text="O">
- O
- </text>
- <text label="W" name="floater_map_west" text="W">
- W
- </text>
- <text label="Z" name="floater_map_south" text="Z">
- Z
- </text>
- <text label="ZO" name="floater_map_southeast" text="ZO">
- ZO
- </text>
- <text label="NO" name="floater_map_northeast" text="NO">
- NO
- </text>
- <text label="ZW" name="floater_map_southwest" text="ZW">
- ZW
- </text>
- <text label="NW" name="floater_map_northwest" text="NW">
- NW
- </text>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/role_actions.xml b/indra/newview/skins/default/xui/nl/role_actions.xml
deleted file mode 100644
index 1f0a6e4235..0000000000
--- a/indra/newview/skins/default/xui/nl/role_actions.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<role_actions>
- <action_set description="Deze Mogelijkheden regelen het toevoegen en verwijderen van Groepsleden, en om aan te geven dat nieuwe Leden lid kunnen worden zonder uitnodiging." name="Membership">
- <action description="Personen uitnodigen voor deze Groep" longdescription="Personen uitnodigen voor deze Groep door de 'Uitnodigen Nieuwe Leden...' knop in de leden &amp; Rollen tab &gt; Leden sub-tab." name="member invite"/>
- <action description="Leden uit deze Groep zetten" longdescription="Leden uit deze Groep zetten door de 'Uit Groep Zetten' knop in de leden tab &amp; Rollen tab &gt; Leden sub-tab. Een Eigenaar kan iedereen uit de groep zetten behalve een andere Eigenaar. Als je geen Eigenaar bent, kan een Lid worden uitgezet als, en alleen als, het Lid deel uitmaakt van de Iedereen Rol, en NIET van andere Rollen. Om Leden uit Rollen te verwijderen, moet je de 'Leden uit Rollen Verwijderen' mogelijkheid hebben." name="member eject"/>
- <action description="Selecteer 'Vrije Toegang' en wijzig 'Contibutie Bijdrage'" longdescription="Selecteer 'Vrije Toegang' zodat nieuwe Leden lid kunnen worden zonder uitnodiging, en wijzig 'Contributie Bijdrage' in de Groep Voorkeuren sectie van de Algemene tab." name="member options"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het toevoegen, verwijderen, en wijzigen van Groepsrollen, toevoegen en verwijderen van Leden in Rollen, en toewijzen van Mogelijkheden aan Rollen." name="Roles">
- <action description="Creëren nieuwe Rollen" longdescription="Creëren nieuwe Rollen in de Leden &amp; Rollen tab &gt; Rollen sub-tab." name="role create"/>
- <action description="Verwijderen Rollen" longdescription="Verwijderen Rollen in de Leden &amp; Rollen tab &gt; Rollen sub-tab." name="role delete"/>
- <action description="Wijzigen Rol-naam, titel, beschrijving, en of de Rol leden publiekelijk zichtbaar zijn" longdescription="Wijzigen Rol-naam, titel, beschrijving, en of de Rol leden publiekelijk zichtbaar zijn. Dit kan worden gedaan onderaan de de Leden &amp; Rollen tab &gt; Rollen sub-tab na de selectie van een rol." name="role properties"/>
- <action description="Toewijzen Leden aan Toewijzers Rollen" longdescription="Toewijzen Leden aan Rollen in de Toegewezen Rollen sectie van de Leden &amp; Rol tab &gt; Leden sub-tab. Een Lid met deze Mogelijkheid kan alleen Leden toevoegen aan een Rol waartoe men zelf al behoort." name="role assign member limited"/>
- <action description="Toewijzen Leden aan Alle Rollen" longdescription="Toewijzen van Leden aan Alle Rollen in the Toegewezen Rollen sectie van de Leden &amp; Rollen tab &gt; Leden sub-tab. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan zichzelf--en ieder ander niet-Eigenaar Lid--toewijzen aan rollen met meer rechten dan zijzelf op dat moment hebben, hierdoor ontstaat de mogelijkheid om zichzelf bijna-Eigenaar rechten toewijzen. Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="role assign member"/>
- <action description="Verwijderen Leden uit Rollen" longdescription="Verwijderen Leden uit Rollen in the Toegewezen Rollen sectie van de Leden &amp; Rollen tab &gt; Leden sub-tab. Eigenaars kunnen niet worcen verwijderd." name="role remove member"/>
- <action description="Toewijzen en Verwijderen Mogelijkheden in Rollen" longdescription="Toewijzen en Verwijderen Mogelijkheden in Rollen in de Toegestane Mogelijkheden van de Leden &amp; Rollen tab &gt; Leden sub-tab. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan kan zichzelf--en ieder ander niet-Eigenaar Lid--toewijzen aan rollen met meer rechten dan zijzelf op dat moment hebben, hierdoor ontstaat de mogelijkheid om zichzelf bijna-Eigenaar rechten toewijzen. Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="role change actions"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het wijzigen van de Groepsidentiteit, zoals het veranderen van publieke zichtbaarheid, charter en insigne." name="Group Identity">
- <action description="Wijzigen Charter, Insigne, en 'Toon in zoeken'" longdescription="Wijzigen Charter, Insigne, en 'Toon in zoeken'. Dit kan worden gedaan in de Algemeen tab." name="group change identity"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het overdragen, wijzigen, en verkopen van land dat in bezit is van deze groep. Om naar het Over Land venster te gaan, rechts-klik de grond selecteer 'Over Land...', of klik op de perceel info in de menubalk." name="Parcel Management">
- <action description="Land overdragen en land kopen voor groep" longdescription="Land overdragen en land kopen voor groep. Dit kan worden gedaan in Over Land &gt; Algemeen tab." name="land deed"/>
- <action description="Land overdragen aan Govenor Linden" longdescription="Land overdragen aan Govenor Linden. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan land in eigendom van de groep laten vervallen in Over Land &gt; Algemeen tab, teruggeven in Linden eigendom zonder verkoop! Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="land release"/>
- <action description="Activeer land te koop info" longdescription="Activeer land te koop info. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan land in eigendom van de groep verkopen in Over Land &gt; Algemeen tab als ze dat willen! Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="land set sale info"/>
- <action description="Opdelen en samenvoegen van percelen" longdescription="Opdelen en samenvoegen van percelen. Dit kan worden gedaan door rechts klikken op de grond, 'Terrein Bewerken, en de muis te slepen naar het land om een selectie te maken. Om te verdelen, selecteer wat je wil splitsen en klik 'Opdelen...'. Om samen te voegen, selecteer twee of meer aaneengesloten percelen en klik 'Samenvoegen...'." name="land divide join"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het veranderen van de perceelnaam en publicatie instelling, zichtbaarheid in 'Tonen in zoeken', en landingspunt &amp; TP routering." name="Parcel Identity">
- <action description="Selecteer 'Tonen in zoeken' en instellen categorie" longdescription="Selecteer 'Tonen in zoeken' en instellen van de categorie voor een perceel in Over Land &gt; Opties tab." name="land find places"/>
- <action description="Veranderen perceel naam, omschrijving, en 'Tonen in zoeken' instellingen" longdescription="Veranderen perceel naam, omschrijving en 'Tonen in zoeken' instellingen. Dit kan worden gedaan in Overland &gt; Opties tab." name="land change identity"/>
- <action description="Instellen landingsplaats en instellen teleport routering" longdescription="Op een perceel in groepseigendom, Leden in een Rol met die mogelijkheid kunnen een landingsplaats instellen om te bepalen waar inkomende teleports aankomen, en ook een teleport routering instelling voor meer controle. Dit kan worden gedaan in About Land &gt; Opties tab." name="land set landing point"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het aanpassen van perceel opties, zoals 'Maak Objecten', 'Bewerken Terrein', en muziek &amp; media instellingen." name="Parcel Settings">
- <action description="Veranderen muziek &amp; media instellingen" longdescription="Veranderen streaming muziek en film instellingen in Over Land&gt; Media tab." name="land change media"/>
- <action description="Instellen 'Bewerken Terrein'" longdescription="Instellen 'Bewerken Terrein'. *WAARSCHUWING* Over Land &gt; Opties tab &gt; Bewerken Terrein staat toe dat iedereen de vorm van het terrein kan aanpassen, en Linden planten kan plaatsen en verplaatsen. Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend. Bewerken terrein kan worden aangezet in Over Land&gt; Opties tab." name="land edit"/>
- <action description="Instellen diversen Over Land &gt; Optie instellingen" longdescription="Instellen 'Veilig (geen letsel)', 'Vliegen' and andere Inwoners toestaan om: 'Objecten te maken', 'Terrein te bewerken', en 'Scripts uit te voeren' op land in groepseigendom in Over Land &gt; Opties tab." name="land options"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelend de toestemming voor leden om beperkingen te omzeilen op percelen in groepseigendom." name="Parcel Powers">
- <action description="'Bewerken Terrein' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen terrein bewerken op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow edit land"/>
- <action description="'Vliegen' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen vliegen op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow fly"/>
- <action description="'Maak Objecten' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen objecten maken op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow create"/>
- <action description="'Maak Landmarkering' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen een landmarkering maken op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow landmark"/>
- <action description="Toestaan 'Thuis hier Instellen' op land in groepseigendom" longdescription="Leden in een Rol met deze Mogelijkheid kunnen gebruik maken van Wereld menu &gt; Thuis hier Instellen op een perceel afgestaan aan deze groep." name="land allow set home"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het toestaan of beperken van toegang van percelen in groepseigendom, inclusief het bevriezen en verbannen van Inwoners." name="Parcel Access">
- <action description="Beheren perceel Toegang lijsten" longdescription="Beheren perceel Toegang lijsten in Over Land &gt; Toegang tab." name="land manage allowed"/>
- <action description="Beheren perceel Verbannen lijst" longdescription="Beheren perceel Verbannen lijst in Over Land &gt; Verbannen tab." name="land manage banned"/>
- <action description="Veranderen perceel 'Verkoop toegangspassen...' instellingen" longdescription="Verandere perceel 'Verkoop toegangspassen...'instellingen" name="land manage passes"/>
- <action description="Uitwerpen en bevriezen Inwoners op percelen" longdescription="Leden in een Rol met deze mogelijkheid kunnen een onwelkome Inwoners aanpakken op een perceel in groepseigendom door een rechter-klik op deze inwoner &gt; en 'Uitwerpen...'of 'Bevriezen...'te selecteren." name="land admin"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen de toestemming voor leden om objecten te retourneren en Linden planten te plaatsen en te verplaatsen. Dit is nuttig voor Leden om rommel op te ruimen en landschappen te maken, echter het moet ook met omzichtigheid worden gebruikt, omdat er geen herstelfunktie is voor retourneren objecten." name="Parcel Content">
- <action description="Retourneren objecten in groepseigendom" longdescription="Retourneren van objecten die in eigendom zijn van de groep op percelen in groepseigendom in Over Land &gt; Objecten tab." name="land return group owned"/>
- <action description="Retourneren objecten toegewezen aan de groep" longdescriotion="Retourneren van objecten die aan de groep zijn toegewezen op percelen in groepseigendom in Over Land &gt; Objecten tab." name="land return group set"/>
- <action description="Retourneren objecten die niet van de groep zijn" longdescription="Retourneren objecten die niet van de groep zijn op percelen in groepeigendom in Over Land &gt; Objecten tab." name="land return non group"/>
- <action description="Landschappen maken met Linden planten" longdescription="Landschappen maken om Linden bomen, planten en grassen te plaatsen en te verplaatsen. Deze opties zijn te vinden in de inventaris Library &gt; Objects folder of ze kunnen worden gemaakt via de Bouwen knop." name="land gardening"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen het afstaan, wijzigen, en verkopen van objecten in groepseigendom. Deze veranderingen worden gedaan in Bewerken Gereedschap &gt; Algemeen tab. Rechts-klik een object en selecteer Bewerken om de instellingen ervan te bekijken." name="Object Management">
- <action description="Overdragen objecten aan groep" longdescription="Overdragen objecten aan groep in de Bewerkings Hulpmiddelen &gt; Algemeen tab." name="object deed"/>
- <action description="Manipuleren (verplaatsen, copieren, wijzigen) van objecten in groepseigendom" longdescription="Manipuleren (verplaatsen, copieren, wijzigen) van objecten in groepseigendom in de Bewerkings Hulpmiddelen &gt; Algemeen tab." name="object manipulate"/>
- <action description="Te koop zetten van objecten in groepseigendom" longdescription="Te koop zetten van objecten in groepseigendom in de Bewerkings Hulpmiddelen &gt; Algemeen tab." name="object set sale"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen dat Leden groepsverplichtingen betalen en groepsdividenden ontvangen, en toegang beperken tot de financiele historie van de groep." name="Accounting">
- <action description="Betalen groepsverplichtingen en ontvangen van groepsdividenden" longdescription="Leden in een Rol met deze mogelijkheid betalen groepsverplichtingen en ontvangen groepsdividenden automatisch. Dit betekent dat ze een deel ontvangen van de verkoop van land in groepseigendom die dagelijks worden verdeeld, maar ook dat ze bijdragen aan zaken zoals lijstbijdrage voor het perceel." name="accounting accountable"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen de toestemming dat Leden Groepsberichten kunnen versturen, ontvangen en inzien." name="Notices">
- <action description="Versturen Berichten" longdescription="Leden in een Rol met deze Mogelijkheid kunnen Berichten versturen in Groep Informatie &gt; Berichten tab." name="notices send"/>
- <action description="Ontvangen Berichten en inzien van oude Berichten" longdescription="Leden in een Rol met deze Mogelijkheid kunnen Berichten ontvangen en oude Berichten inzien in Groep Informatie &gt; Berichten tab." name="notices receive"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen de toestemming dat Leden Voorstellen kunnen maken, Voorstellen kunnen inzien, en het stemverloop kunnen bekijken." name="Proposals">
- <action description="Maken Voorstellen" longdescription="Leden in een Rol met deze Mogelijkheid kunnen Voorstellen maken waarop kan worden gestemd in Groep Informatie &gt; Voorstellen tab." name="proposal start"/>
- <action description="Stemmen op Voorstellen" longdescription="Leden in een Rol met deze Mogelijkheid kunnen stemmen op Voorstellen in Groep Informatie &gt; Voorstellen tab." name="proposal vote"/>
- </action_set>
- <action_set description="Deze Mogelijkheden regelen de toegang (en de beperking ervan) tot groep chat sessies en groep voice chat." name="Chat">
- <action description="Deelname aan Groep Chat" longdescription="Leden in een Rol met deze Mogelijkheid kunnen deelnemen aan groep chat sessies, zowel voor tekst als voice." name="join group chat"/>
- <action description="Deelname aan Groep Voice Chat" longdescription="Leden in een Rol met deze Mogelijkheid kunnen deelnemen aan groep voice chat sessies. OPMERKING: De Deelname Group Chat is vereist om toegang te krijgen to de voice chat sessie." name="join voice chat"/>
- <action description="Modereren Groep Chat" longdescription="Leden in een Rol met deze Mogelijkheid kunnen toegang en deelname controleren in groep voice en tekst chat sessies." name="moderate group chat"/>
- </action_set>
-</role_actions> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml
deleted file mode 100644
index ca6b8eb521..0000000000
--- a/indra/newview/skins/default/xui/nl/strings.xml
+++ /dev/null
@@ -1,3247 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- 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="SUPPORT_SITE">
- Second Life Ondersteunings Portaal
- </string>
- <string name="StartupDetectingHardware">
- Detecteert hardware...
- </string>
- <string name="StartupLoading">
- Laden
- </string>
- <string name="LoginInProgress">
- Inloggen. Het kan lijken dat [APP_NAME] is vastgelopen. Wacht u alstublieft... .
- </string>
- <string name="LoginInProgressNoFrozen">
- Inloggen...
- </string>
- <string name="LoginAuthenticating">
- Authenticeren
- </string>
- <string name="LoginMaintenance">
- Account onderhoud wordt uitgevoerd...
- </string>
- <string name="LoginAttempt">
- Vorige loginpoging is mislukt. Inloggen, poging [NUMBER]
- </string>
- <string name="LoginPrecaching">
- Wereld laden...
- </string>
- <string name="LoginInitializingBrowser">
- Geïntegreerde web browser initialiseren...
- </string>
- <string name="LoginInitializingMultimedia">
- Multimedia initialiseren...
- </string>
- <string name="LoginInitializingFonts">
- Lettertypen laden...
- </string>
- <string name="LoginVerifyingCache">
- Veriveren cache bestanden (kan 60-90 seconden duren)...
- </string>
- <string name="LoginProcessingResponse">
- Reactie Verwerken...
- </string>
- <string name="LoginInitializingWorld">
- Wereld initialiseren...
- </string>
- <string name="LoginDecodingImages">
- Afbeeldingen decoderen...
- </string>
- <string name="LoginInitializingQuicktime">
- QuickTime initialiseren...
- </string>
- <string name="LoginQuicktimeNotFound">
- QuickTime niet gevonden - kan niet initialiseren.
- </string>
- <string name="LoginQuicktimeOK">
- QuickTime succesvol geïnitialiseerd.
- </string>
- <string name="LoginWaitingForRegionHandshake">
- Wachten op overeenstemming met regio...
- </string>
- <string name="LoginConnectingToRegion">
- Verbinden met regio...
- </string>
- <string name="LoginDownloadingClothing">
- Kleding downloaden...
- </string>
- <string name="LoginFailedNoNetwork">
- Netwerk Fout: Kon geen verbinding maken, kijk uw nerwerk connectie na alstublieft.
- </string>
- <string name="Quit">
- Afsluiten
- </string>
- <string name="create_account_url">
- http://join.secondlife.com/index.php?lang=nl-NL
- </string>
- <string name="AgentLostConnection">
- Deze regio kan problemen ondervinden. Controleer alstublieft uw verbinding met het internet.
- </string>
- <string name="TooltipPerson">
- Persoon
- </string>
- <string name="TooltipNoName">
- (geen naam)
- </string>
- <string name="TooltipOwner">
- Eigenaar:
- </string>
- <string name="TooltipPublic">
- Openbaar
- </string>
- <string name="TooltipIsGroup">
- (Groep)
- </string>
- <string name="TooltipForSaleL$">
- Te koop: L$[AMOUNT]
- </string>
- <string name="TooltipFlagGroupBuild">
- Groep bouwen
- </string>
- <string name="TooltipFlagNoBuild">
- Niet bouwen
- </string>
- <string name="TooltipFlagNoEdit">
- Groep bouwen
- </string>
- <string name="TooltipFlagNotSafe">
- Niet veilig
- </string>
- <string name="TooltipFlagNoFly">
- Niet vliegen
- </string>
- <string name="TooltipFlagGroupScripts">
- Groep scripts
- </string>
- <string name="TooltipFlagNoScripts">
- Geen scripts
- </string>
- <string name="TooltipLand">
- Land:
- </string>
- <string name="TooltipMustSingleDrop">
- Slechts een enkel item kan hier naartoe gesleept worden
- </string>
- <string name="TooltipHttpUrl">
- Klik om deze web pagina te bekijken
- </string>
- <string name="TooltipSLURL">
- Klik om deze locatie informatie te bekijken
- </string>
- <string name="TooltipAgentUrl">
- Klik om deze inwoner zijn profiel te bekijken
- </string>
- <string name="TooltipGroupUrl">
- Klik om deze groeps informatie te bekijken
- </string>
- <string name="TooltipEventUrl">
- Klik om deze evenement informatie te bekijken
- </string>
- <string name="TooltipClassifiedUrl">
- Klik om deze advertentie te bekijken
- </string>
- <string name="TooltipParcelUrl">
- Klik om deze perceel informatie te bekijken
- </string>
- <string name="TooltipTeleportUrl">
- Klik om naar deze lokatie te teleporteren
- </string>
- <string name="TooltipObjectIMUrl">
- Klik om deze object informatie te bekijken
- </string>
- <string name="TooltipMapUrl">
- Klik om deze locatie op een map te bekijken
- </string>
- <string name="TooltipSLAPP">
- Klik om het secondlife:// commando te starten
- </string>
- <string name="CurrentURL" value="HuidigeURL: [HuidigeURL]"/>
- <string name="SLurlLabelTeleport">
- Teleporteer naar
- </string>
- <string name="SLurlLabelShowOnMap">
- Toon Map voor
- </string>
- <string name="BUTTON_CLOSE_DARWIN">
- Sluiten (⌘W)
- </string>
- <string name="BUTTON_CLOSE_WIN">
- Sluiten (Ctrl+W)
- </string>
- <string name="BUTTON_RESTORE">
- Restore
- </string>
- <string name="BUTTON_MINIMIZE">
- Minimaliseren
- </string>
- <string name="BUTTON_TEAR_OFF">
- Afscheuren
- </string>
- <string name="BUTTON_DOCK">
- Koppelen
- </string>
- <string name="BUTTON_UNDOCK">
- Loskoppelen
- </string>
- <string name="BUTTON_HELP">
- Toon Help
- </string>
- <string name="Searching">
- Zoeken...
- </string>
- <string name="NoneFound">
- Geen gevonden.
- </string>
- <string name="RetrievingData">
- Ophalen...
- </string>
- <string name="ReleaseNotes">
- Release Notes
- </string>
- <string name="LoadingData">
- Laden...
- </string>
- <string name="AvatarNameNobody">
- (niemand)
- </string>
- <string name="AvatarNameWaiting">
- (wachten)
- </string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
- <string name="GroupNameNone">
- (geen)
- </string>
- <string name="AssetErrorNone">
- Geen fout
- </string>
- <string name="AssetErrorRequestFailed">
- Asset verzoek: mislukt
- </string>
- <string name="AssetErrorNonexistentFile">
- Asset verzoek: niet-bestaand bestand
- </string>
- <string name="AssetErrorNotInDatabase">
- Asset verzoek: asset niet gevonden in de database
- </string>
- <string name="AssetErrorEOF">
- Einde van bestand
- </string>
- <string name="AssetErrorCannotOpenFile">
- Kan bestand niet openen
- </string>
- <string name="AssetErrorFileNotFound">
- Bestand niet gevonden
- </string>
- <string name="AssetErrorTCPTimeout">
- Bestandsoverdracht time-out
- </string>
- <string name="AssetErrorCircuitGone">
- Circuit verdwenen
- </string>
- <string name="AssetErrorPriceMismatch">
- Viewer en server zijn het niet eens over de prijs.
- </string>
- <string name="AssetErrorUnknownStatus">
- Onbekende status
- </string>
- <string name="texture">
- textuur
- </string>
- <string name="sound">
- geluid
- </string>
- <string name="calling card">
- visitekaart
- </string>
- <string name="landmark">
- landmarkering
- </string>
- <string name="legacy script">
- legacy script
- </string>
- <string name="clothing">
- kleding
- </string>
- <string name="object">
- object
- </string>
- <string name="note card">
- notecard
- </string>
- <string name="folder">
- map
- </string>
- <string name="root">
- root
- </string>
- <string name="lsl2 script">
- LSL2 script
- </string>
- <string name="lsl bytecode">
- LSL bytecode
- </string>
- <string name="tga texture">
- tga textuur
- </string>
- <string name="body part">
- lichaamsdeel
- </string>
- <string name="snapshot">
- foto
- </string>
- <string name="lost and found">
- Verloren en Gevonden
- </string>
- <string name="targa image">
- targa plaatje
- </string>
- <string name="trash">
- Prullenbak
- </string>
- <string name="jpeg image">
- jpeg plaatje
- </string>
- <string name="animation">
- animatie
- </string>
- <string name="gesture">
- gebaar
- </string>
- <string name="simstate">
- simstate
- </string>
- <string name="favorite">
- favorieten
- </string>
- <string name="symbolic link">
- link
- </string>
- <string name="AvatarAway">
- Afwezig
- </string>
- <string name="AvatarBusy">
- Bezet
- </string>
- <string name="AvatarMuted">
- Genegeerd
- </string>
- <string name="anim_express_afraid">
- Bang
- </string>
- <string name="anim_express_anger">
- Boos
- </string>
- <string name="anim_away">
- Afwezig
- </string>
- <string name="anim_backflip">
- Salto achterwaarts
- </string>
- <string name="anim_express_laugh">
- Daverende lach
- </string>
- <string name="anim_express_toothsmile">
- Grote lach
- </string>
- <string name="anim_blowkiss">
- Blaas kus
- </string>
- <string name="anim_express_bored">
- Verveeld
- </string>
- <string name="anim_bow">
- Buigen
- </string>
- <string name="anim_clap">
- Klappen
- </string>
- <string name="anim_courtbow">
- Hof buiging
- </string>
- <string name="anim_express_cry">
- Huilen
- </string>
- <string name="anim_dance1">
- Dansen 1
- </string>
- <string name="anim_dance2">
- Dansen 2
- </string>
- <string name="anim_dance3">
- Dansen 3
- </string>
- <string name="anim_dance4">
- Dansen 4
- </string>
- <string name="anim_dance5">
- Dansen 5
- </string>
- <string name="anim_dance6">
- Dansen 6
- </string>
- <string name="anim_dance7">
- Dansen 7
- </string>
- <string name="anim_dance8">
- Dansen 8
- </string>
- <string name="anim_express_disdain">
- Minachting
- </string>
- <string name="anim_drink">
- Drinken
- </string>
- <string name="anim_express_embarrased">
- Beschaamd
- </string>
- <string name="anim_angry_fingerwag">
- Vinger opsteken
- </string>
- <string name="anim_fist_pump">
- Vuist pompen
- </string>
- <string name="anim_yoga_float">
- Zwevende Yoga
- </string>
- <string name="anim_express_frown">
- Fronsen
- </string>
- <string name="anim_impatient">
- Ongeduldig
- </string>
- <string name="anim_jumpforjoy">
- Vreugdesprong
- </string>
- <string name="anim_kissmybutt">
- Kus mijn reet
- </string>
- <string name="anim_express_kiss">
- Kussen
- </string>
- <string name="anim_laugh_short">
- Lachen
- </string>
- <string name="anim_musclebeach">
- Spieren tonen
- </string>
- <string name="anim_no_unhappy">
- Nee (ongelukkig)
- </string>
- <string name="anim_no_head">
- Nee
- </string>
- <string name="anim_nyanya">
- Nya-nya-nya
- </string>
- <string name="anim_punch_onetwo">
- Een-twee stomp
- </string>
- <string name="anim_express_open_mouth">
- Open mond
- </string>
- <string name="anim_peace">
- Vrede
- </string>
- <string name="anim_point_you">
- Wijzen naar ander
- </string>
- <string name="anim_point_me">
- Wijzen naar jezelf
- </string>
- <string name="anim_punch_l">
- Stomp links
- </string>
- <string name="anim_punch_r">
- Stomp rechts
- </string>
- <string name="anim_rps_countdown">
- SPS tellen
- </string>
- <string name="anim_rps_paper">
- SPS papier
- </string>
- <string name="anim_rps_rock">
- SPS steen
- </string>
- <string name="anim_rps_scissors">
- SPS schaar
- </string>
- <string name="anim_express_repulsed">
- Afkeer
- </string>
- <string name="anim_kick_roundhouse_r">
- Ronddraaiende trap
- </string>
- <string name="anim_express_sad">
- Droevig
- </string>
- <string name="anim_salute">
- Groet
- </string>
- <string name="anim_shout">
- Roepen
- </string>
- <string name="anim_express_shrug">
- Schouders ophalen
- </string>
- <string name="anim_express_smile">
- Glimlachen
- </string>
- <string name="anim_smoke_idle">
- Roken inactief
- </string>
- <string name="anim_smoke_inhale">
- Roken inhaleren
- </string>
- <string name="anim_smoke_throw_down">
- Roken neergooien
- </string>
- <string name="anim_express_surprise">
- Verrassing
- </string>
- <string name="anim_sword_strike_r">
- Zwaardslag
- </string>
- <string name="anim_angry_tantrum">
- Woedeaanval
- </string>
- <string name="anim_express_tongue_out">
- Tong uitsteken
- </string>
- <string name="anim_hello">
- Zwaaien
- </string>
- <string name="anim_whisper">
- Fluisteren
- </string>
- <string name="anim_whistle">
- Fluiten
- </string>
- <string name="anim_express_wink">
- Knipogen
- </string>
- <string name="anim_wink_hollywood">
- Knipogen (Hollywood)
- </string>
- <string name="anim_express_worry">
- Bezorgd
- </string>
- <string name="anim_yes_happy">
- Ja (vrolijk)
- </string>
- <string name="anim_yes_head">
- Ja
- </string>
- <string name="texture_loading">
- Laden...
- </string>
- <string name="worldmap_offline">
- Off line
- </string>
- <string name="worldmap_results_none_found">
- Geen gevonden.
- </string>
- <string name="Ok">
- OK
- </string>
- <string name="Premature end of file">
- Vroegtijdig eind van bestand
- </string>
- <string name="ST_NO_JOINT">
- Kan niet ROOT of JOINT vinden.
- </string>
- <string name="whisper">
- fluistert:
- </string>
- <string name="shout">
- schreeuwt:
- </string>
- <string name="ringing">
- Verbinden met in-wereld voice chat...
- </string>
- <string name="connected">
- Verbonden
- </string>
- <string name="unavailable">
- Voice is niet beschikbaar op uw huidige locatie
- </string>
- <string name="hang_up">
- Verbinding met in-wereld voicechat verbroken
- </string>
- <string name="ScriptQuestionCautionChatGranted">
- &apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming verleend om te: [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- &apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming geweigerd om te: [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Linden dollars (L$) van u wegnemen
- </string>
- <string name="ActOnControlInputs">
- Acteren op uw bedieningsinvoer
- </string>
- <string name="RemapControlInputs">
- Uw bedieningsinvoer herdefiniëren
- </string>
- <string name="AnimateYourAvatar">
- Animeer uw avatar
- </string>
- <string name="AttachToYourAvatar">
- Bevestig aan uw avatar
- </string>
- <string name="ReleaseOwnership">
- Eigendom vrijgeven en openbaar worden
- </string>
- <string name="LinkAndDelink">
- Koppelen met en ontkoppelen van andere objecten
- </string>
- <string name="AddAndRemoveJoints">
- Toevoegen en verwijderen koppelingen met andere objecten
- </string>
- <string name="ChangePermissions">
- Wijzig zijn permissies
- </string>
- <string name="TrackYourCamera">
- Volg uw camera
- </string>
- <string name="ControlYourCamera">
- Bedien uw camera
- </string>
- <string name="SIM_ACCESS_PG">
- PG
- </string>
- <string name="SIM_ACCESS_MATURE">
- Mature
- </string>
- <string name="SIM_ACCESS_ADULT">
- Adult
- </string>
- <string name="SIM_ACCESS_DOWN">
- Offline
- </string>
- <string name="SIM_ACCESS_MIN">
- Onbekend
- </string>
- <string name="land_type_unknown">
- (onbekend)
- </string>
- <string name="all_files">
- Alle bestanden
- </string>
- <string name="sound_files">
- Geluiden
- </string>
- <string name="animation_files">
- Animaties
- </string>
- <string name="image_files">
- Afbeeldingen
- </string>
- <string name="save_file_verb">
- Opslaan
- </string>
- <string name="load_file_verb">
- Laden
- </string>
- <string name="targa_image_files">
- Targa afbeeldingen
- </string>
- <string name="bitmap_image_files">
- Bitmap afbeeldingen
- </string>
- <string name="avi_movie_file">
- AVI Film bestand
- </string>
- <string name="xaf_animation_file">
- XAF Anim bestand
- </string>
- <string name="xml_file">
- XML bestand
- </string>
- <string name="raw_file">
- RAW bestand
- </string>
- <string name="compressed_image_files">
- Gecomprimeerde afbeeldingen
- </string>
- <string name="load_files">
- Laad bestanden
- </string>
- <string name="choose_the_directory">
- Kies folder
- </string>
- <string name="AvatarSetNotAway">
- Niet Afwezig Instellen
- </string>
- <string name="AvatarSetAway">
- Afwezig Instellen
- </string>
- <string name="AvatarSetNotBusy">
- Niet Bezig Instellen
- </string>
- <string name="AvatarSetBusy">
- Bezig Instellen
- </string>
- <string name="shape">
- Postuur
- </string>
- <string name="skin">
- Huid
- </string>
- <string name="hair">
- Haar
- </string>
- <string name="eyes">
- Ogen
- </string>
- <string name="shirt">
- Hemd
- </string>
- <string name="pants">
- Broek
- </string>
- <string name="shoes">
- Schoenen
- </string>
- <string name="socks">
- Sokken
- </string>
- <string name="jacket">
- Jas
- </string>
- <string name="gloves">
- Handschoenen
- </string>
- <string name="undershirt">
- onderhemd
- </string>
- <string name="underpants">
- Onderbroek
- </string>
- <string name="skirt">
- Rok
- </string>
- <string name="alpha">
- Alpha
- </string>
- <string name="tattoo">
- Tattoo
- </string>
- <string name="invalid">
- ongeldig
- </string>
- <string name="next">
- Volgende
- </string>
- <string name="ok">
- OK
- </string>
- <string name="GroupNotifyGroupNotice">
- Groep Mededeling
- </string>
- <string name="GroupNotifyGroupNotices">
- Groep Mededelingen
- </string>
- <string name="GroupNotifySentBy">
- Verzonden Door:
- </string>
- <string name="GroupNotifyAttached">
- Bijgevoegt:
- </string>
- <string name="GroupNotifyViewPastNotices">
- Bekijk alle mededelingen en bijlages van verzonden Mededelingen in het verleden
- </string>
- <string name="GroupNotifyOpenAttachment">
- Open Bijlage
- </string>
- <string name="GroupNotifySaveAttachment">
- Sla Bijlage Op
- </string>
- <string name="TeleportOffer">
- Teleporteer Aanbieding
- </string>
- <string name="StartUpNotification">
- [%d] Nieuwe mededelingen aangekomen terwijl u weg was ...
- </string>
- <string name="StartUpNotifications">
- [%d] Nieuwe mededelingen aangekomen terwijl u weg was ...
- </string>
- <string name="OverflowInfoChannelString">
- U heeft [%d] meer mededelingen
- </string>
- <string name="BodyPartsRightArm">
- Rechter Arm
- </string>
- <string name="BodyPartsHead">
- Hoofd
- </string>
- <string name="BodyPartsLeftArm">
- Linker Arm
- </string>
- <string name="BodyPartsLeftLeg">
- Linker Been
- </string>
- <string name="BodyPartsTorso">
- Torso
- </string>
- <string name="BodyPartsRightLeg">
- Rechter Been
- </string>
- <string name="GraphicsQualityLow">
- Laag
- </string>
- <string name="GraphicsQualityMid">
- Middel
- </string>
- <string name="GraphicsQualityHigh">
- Hoog
- </string>
- <string name="LeaveMouselook">
- Druk op ESC om terug te keren naar Wereld Zicht
- </string>
- <string name="InventoryNoMatchingItems">
- Geen overeenkomende objecten gevonden in de voorraad.
- </string>
- <string name="InventoryNoTexture">
- Je hebt geen kopie van deze texture in je inventaris
- </string>
- <string name="no_transfer" value="(no transfer)"/>
- <string name="no_modify" value="(no modify)"/>
- <string name="no_copy" value="(no copy)"/>
- <string name="worn" value="(worn)"/>
- <string name="link" value="(link)"/>
- <string name="broken_link" value="(broken_link)&quot;"/>
- <string name="LoadingContents">
- Loading contents...
- </string>
- <string name="NoContents">
- No contents
- </string>
- <string name="WornOnAttachmentPoint" value="(worn on [ATTACHMENT_POINT])"/>
- <string name="Chat" value="Chat :"/>
- <string name="Sound" value="Geluid :"/>
- <string name="Wait" value="--- Wachten :"/>
- <string name="AnimFlagStop" value="Stop Animatie :"/>
- <string name="AnimFlagStart" value="Start Animatie :"/>
- <string name="Wave" value="Wave"/>
- <string name="HelloAvatar" value="Hallo, avatar!"/>
- <string name="ViewAllGestures" value="Bekijk alles &gt;"/>
- <string name="Animations" value="Animaties,"/>
- <string name="Calling Cards" value="Calling Cards,"/>
- <string name="Clothing" value="Kleding,"/>
- <string name="Gestures" value="Gestures,"/>
- <string name="Landmarks" value="Landmarks,"/>
- <string name="Notecards" value="Notecards,"/>
- <string name="Objects" value="Objecten,"/>
- <string name="Scripts" value="Scripts,"/>
- <string name="Sounds" value="Geluiden,"/>
- <string name="Textures" value="Textures,"/>
- <string name="Snapshots" value="Snapshots,"/>
- <string name="No Filters" value="Nee"/>
- <string name="Since Logoff" value="- Sinds Afmelden"/>
- <string name="InvFolder My Inventory">
- Mijn Inventaris
- </string>
- <string name="InvFolder Library">
- Bibliotheek
- </string>
- <string name="InvFolder Textures">
- Textures
- </string>
- <string name="InvFolder Sounds">
- Geluiden
- </string>
- <string name="InvFolder Calling Cards">
- Calling Cards
- </string>
- <string name="InvFolder Landmarks">
- Landmarks
- </string>
- <string name="InvFolder Scripts">
- Scripts
- </string>
- <string name="InvFolder Clothing">
- Kleding
- </string>
- <string name="InvFolder Objects">
- Objecten
- </string>
- <string name="InvFolder Notecards">
- Notecards
- </string>
- <string name="InvFolder New Folder">
- Nieuwe Map
- </string>
- <string name="InvFolder Inventory">
- Inventaris
- </string>
- <string name="InvFolder Uncompressed Images">
- Ongecomprimeerde Afbeeldingen
- </string>
- <string name="InvFolder Body Parts">
- Lichaams Delen
- </string>
- <string name="InvFolder Trash">
- Afval
- </string>
- <string name="InvFolder Photo Album">
- Foto Album
- </string>
- <string name="InvFolder Lost And Found">
- Verloren en Gevonden
- </string>
- <string name="InvFolder Uncompressed Sounds">
- Ongecomprimeerde Geluiden
- </string>
- <string name="InvFolder Animations">
- Animaties
- </string>
- <string name="InvFolder Gestures">
- Gebaren
- </string>
- <string name="InvFolder Favorite">
- Mijn Favorieten
- </string>
- <string name="InvFolder favorite">
- Mijn Favorieten
- </string>
- <string name="InvFolder Current Outfit">
- Huidige Uitrusting
- </string>
- <string name="InvFolder My Outfits">
- Mijn Uitrustingen
- </string>
- <string name="InvFolder Friends">
- Vrienden
- </string>
- <string name="InvFolder All">
- Alles
- </string>
- <string name="Buy">
- Koop
- </string>
- <string name="BuyforL$">
- Koop voor L$
- </string>
- <string name="Stone">
- Steen
- </string>
- <string name="Metal">
- Metaal
- </string>
- <string name="Glass">
- Glas
- </string>
- <string name="Wood">
- Hout
- </string>
- <string name="Flesh">
- Vlees
- </string>
- <string name="Plastic">
- Plastic
- </string>
- <string name="Rubber">
- Rubber
- </string>
- <string name="Light">
- Licht
- </string>
- <string name="KBShift">
- Shift
- </string>
- <string name="KBCtrl">
- Ctrl
- </string>
- <string name="Chest">
- Borstkas
- </string>
- <string name="Skull">
- Schedel
- </string>
- <string name="Left Shoulder">
- Linker Schouder
- </string>
- <string name="Right Shoulder">
- Rechter Schouder
- </string>
- <string name="Left Hand">
- Linker Hand
- </string>
- <string name="Right Hand">
- Rechter Hand
- </string>
- <string name="Left Foot">
- Linker Voet
- </string>
- <string name="Right Foot">
- Rechter Voet
- </string>
- <string name="Spine">
- Ruggegraat
- </string>
- <string name="Pelvis">
- Bekken
- </string>
- <string name="Mouth">
- Mond
- </string>
- <string name="Chin">
- Kin
- </string>
- <string name="Left Ear">
- Linker Oor
- </string>
- <string name="Right Ear">
- Rechter Oor
- </string>
- <string name="Left Eyeball">
- Linker Oogbal
- </string>
- <string name="Right Eyeball">
- Rechter Oogbal
- </string>
- <string name="Nose">
- Neus
- </string>
- <string name="R Upper Arm">
- R Boven Arm
- </string>
- <string name="R Forearm">
- R Onder Arm
- </string>
- <string name="L Upper Arm">
- L Boven Arm
- </string>
- <string name="L Forearm">
- L Onder Arm
- </string>
- <string name="Right Hip">
- Rechter Heup
- </string>
- <string name="R Upper Leg">
- R Boven Been
- </string>
- <string name="R Lower Leg">
- R Onder Been
- </string>
- <string name="Left Hip">
- Linker Heub
- </string>
- <string name="L Upper Leg">
- L Boven Been
- </string>
- <string name="L Lower Leg">
- L Onder Been
- </string>
- <string name="Stomach">
- Maag
- </string>
- <string name="Left Pec">
- Left Pec
- </string>
- <string name="Right Pec">
- Right Pec
- </string>
- <string name="YearsMonthsOld">
- [AGEYEARS] [AGEMONTHS] oud
- </string>
- <string name="YearsOld">
- [AGEYEARS] oud
- </string>
- <string name="MonthsOld">
- [AGEMONTHS] oud
- </string>
- <string name="WeeksOld">
- [AGEWEEKS] oud
- </string>
- <string name="DaysOld">
- [AGEDAYS] oud
- </string>
- <string name="TodayOld">
- Vandaag toegetreden
- </string>
- <string name="AgeYearsA">
- [COUNT] jaar
- </string>
- <string name="AgeYearsB">
- [COUNT] jaar
- </string>
- <string name="AgeYearsC">
- [COUNT] jaar
- </string>
- <string name="AgeMonthsA">
- [COUNT] maand
- </string>
- <string name="AgeMonthsB">
- [COUNT] maanden
- </string>
- <string name="AgeMonthsC">
- [COUNT] maanden
- </string>
- <string name="AgeWeeksA">
- [COUNT] week
- </string>
- <string name="AgeWeeksB">
- [COUNT] weken
- </string>
- <string name="AgeWeeksC">
- [COUNT] weken
- </string>
- <string name="AgeDaysA">
- [COUNT] dag
- </string>
- <string name="AgeDaysB">
- [COUNT] dagen
- </string>
- <string name="AgeDaysC">
- [COUNT] dagen
- </string>
- <string name="GroupMembersA">
- [COUNT] lid
- </string>
- <string name="GroupMembersB">
- [COUNT] leden
- </string>
- <string name="GroupMembersC">
- [COUNT] leden
- </string>
- <string name="AcctTypeResident">
- bewoner
- </string>
- <string name="AcctTypeTrial">
- Trial
- </string>
- <string name="AcctTypeCharterMember">
- Charter Member
- </string>
- <string name="AcctTypeEmployee">
- Linden Lab Werknemer
- </string>
- <string name="PaymentInfoUsed">
- Betalings info gebruikt
- </string>
- <string name="PaymentInfoOnFile">
- Betalings info op bestand
- </string>
- <string name="NoPaymentInfoOnFile">
- Geen betalings info op bestand
- </string>
- <string name="AgeVerified">
- Leeftijd gecontroleerd
- </string>
- <string name="NotAgeVerified">
- Niet leeftijd gecontroleerd
- </string>
- <string name="Center 2">
- Centrum 2
- </string>
- <string name="Top Right">
- Rechts Boven
- </string>
- <string name="Top">
- Boven
- </string>
- <string name="Top Left">
- Links Boven
- </string>
- <string name="Center">
- Centrum
- </string>
- <string name="Bottom Left">
- Links beneden
- </string>
- <string name="Bottom">
- Beneden
- </string>
- <string name="Bottom Right">
- Rechts beneden
- </string>
- <string name="CompileQueueDownloadedCompiling">
- Dedownload, nu samenstellen
- </string>
- <string name="CompileQueueScriptNotFound">
- Script niet gevonden op server.
- </string>
- <string name="CompileQueueProblemDownloading">
- Problem downloading
- </string>
- <string name="CompileQueueInsufficientPermDownload">
- Onvoldoende rechten om een script te downloaden.
- </string>
- <string name="CompileQueueInsufficientPermFor">
- Onvoldoende rechten voor
- </string>
- <string name="CompileQueueUnknownFailure">
- Onbekende fout te downloaden
- </string>
- <string name="CompileQueueTitle">
- Hercompilatie vooruitgang
- </string>
- <string name="CompileQueueStart">
- Hercompilatie
- </string>
- <string name="ResetQueueTitle">
- Reset Vooruitgang
- </string>
- <string name="ResetQueueStart">
- reset
- </string>
- <string name="RunQueueTitle">
- Set Running Progress
- </string>
- <string name="RunQueueStart">
- set running
- </string>
- <string name="NotRunQueueTitle">
- Set Not Running Progress
- </string>
- <string name="NotRunQueueStart">
- set not running
- </string>
- <string name="CompileSuccessful">
- Compileren succesvol!
- </string>
- <string name="CompileSuccessfulSaving">
- Compileren succesvol, opslaan...
- </string>
- <string name="SaveComplete">
- Opslaan gereed.
- </string>
- <string name="ObjectOutOfRange">
- Script (object buiten het bereik)
- </string>
- <string name="GodToolsObjectOwnedBy">
- Object [OBJECT] eigendom van [OWNER]
- </string>
- <string name="GroupsNone">
- geen
- </string>
- <string name="Group" value="(group)"/>
- <string name="Unknown">
- (Unknown)
- </string>
- <string name="SummaryForTheWeek" value="Samenvatting voor deze week, vanaf "/>
- <string name="NextStipendDay" value=". The next stipend day is "/>
- <string name="GroupIndividualShare" value="Groep Individueel Aandeel"/>
- <string name="Balance">
- Banksaldo
- </string>
- <string name="Credits">
- Credits
- </string>
- <string name="Debits">
- Debiteert
- </string>
- <string name="Total">
- Totaal
- </string>
- <string name="NoGroupDataFound">
- Geen groep gegevens gevonden voor groep
- </string>
- <string name="IMParentEstate">
- parent estate
- </string>
- <string name="IMMainland">
- mainland
- </string>
- <string name="IMTeen">
- tiener
- </string>
- <string name="RegionInfoError">
- fout
- </string>
- <string name="RegionInfoAllEstatesOwnedBy">
- all estates owned by [OWNER]
- </string>
- <string name="RegionInfoAllEstatesYouOwn">
- all estates that you own
- </string>
- <string name="RegionInfoAllEstatesYouManage">
- all estates that you manage for [OWNER]
- </string>
- <string name="RegionInfoAllowedResidents">
- Toegestane bewoners: ([ALLOWEDAGENTS], max [MAXACCESS])
- </string>
- <string name="RegionInfoAllowedGroups">
- Toegestane groepen: ([ALLOWEDGROUPS], max [MAXACCESS])
- </string>
- <string name="CursorPos">
- Lijn [LINE], Column [COLUMN]
- </string>
- <string name="PanelDirCountFound">
- [COUNT] gevonden
- </string>
- <string name="PanelContentsNewScript">
- Nieuw Script
- </string>
- <string name="MuteByName">
- (by name)
- </string>
- <string name="MuteAgent">
- (resident)
- </string>
- <string name="MuteObject">
- (object)
- </string>
- <string name="MuteGroup">
- (group)
- </string>
- <string name="RegionNoCovenant">
- There is no Covenant provided for this Estate.
- </string>
- <string name="RegionNoCovenantOtherOwner">
- There is no Covenant provided for this Estate. The land on this estate is being sold by the Estate owner, not Linden Lab. Please contact the Estate Owner for sales details.
- </string>
- <string name="covenant_last_modified" value="Laatst bewerkt: " />
- <string name="none_text" value="(none)"/>
- <string name="never_text" value="(never)"/>
- <string name="GroupOwned">
- Groep Eigendom
- </string>
- <string name="Public">
- Openbaar
- </string>
- <string name="ClassifiedClicksTxt">
- Klikken: [TELEPORT] teleport, [MAP] map, [PROFILE] profiel
- </string>
- <string name="ClassifiedUpdateAfterPublish">
- (zal bijwerken na publiceren)
- </string>
- <string name="MultiPreviewTitle">
- Preview
- </string>
- <string name="MultiPropertiesTitle">
- Eigenschappen
- </string>
- <string name="InvOfferAnObjectNamed">
- Een object genaamd
- </string>
- <string name="InvOfferOwnedByGroup">
- Eigendom van groep
- </string>
- <string name="InvOfferOwnedByUnknownGroup">
- Eigendom van een onbekende groep
- </string>
- <string name="InvOfferOwnedBy">
- Eigendom van
- </string>
- <string name="InvOfferOwnedByUnknownUser">
- Eigendom van onbekende gebruiker
- </string>
- <string name="InvOfferGaveYou">
- gaf je
- </string>
- <string name="InvOfferYouDecline">
- You decline
- </string>
- <string name="InvOfferFrom">
- van
- </string>
- <string name="GroupMoneyTotal">
- Totaal
- </string>
- <string name="GroupMoneyBought">
- kocht
- </string>
- <string name="GroupMoneyPaidYou">
- betaald u
- </string>
- <string name="GroupMoneyPaidInto">
- gestort
- </string>
- <string name="GroupMoneyBoughtPassTo">
- bought pass to
- </string>
- <string name="GroupMoneyPaidFeeForEvent">
- betaalde vergoeding voor evenement
- </string>
- <string name="GroupMoneyPaidPrizeForEvent">
- betaalde prijs voor evenement
- </string>
- <string name="GroupMoneyBalance">
- Banksaldo
- </string>
- <string name="GroupMoneyCredits">
- Credits
- </string>
- <string name="GroupMoneyDebits">
- Debiteert
- </string>
- <string name="ViewerObjectContents">
- Inhoud
- </string>
- <string name="AcquiredItems">
- Verworven objecten
- </string>
- <string name="Cancel">
- Annuleren
- </string>
- <string name="UploadingCosts">
- Uploading [%s] kosten
- </string>
- <string name="UnknownFileExtension">
- Onbekende extensie [.%s]
-Verwacht .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
- </string>
- <string name="AddLandmarkNavBarMenu">
- Voeg Landmark toe...
- </string>
- <string name="EditLandmarkNavBarMenu">
- Bewerk Landmark...
- </string>
- <string name="accel-mac-control">
- ⌃
- </string>
- <string name="accel-mac-command">
- ⌘
- </string>
- <string name="accel-mac-option">
- ⌥
- </string>
- <string name="accel-mac-shift">
- ⇧
- </string>
- <string name="accel-win-control">
- Ctrl+
- </string>
- <string name="accel-win-alt">
- Alt+
- </string>
- <string name="accel-win-shift">
- Shift+
- </string>
- <string name="FileSaved">
- Bestand Opgeslagen
- </string>
- <string name="Receiving">
- Ontvangen
- </string>
- <string name="AM">
- AM
- </string>
- <string name="PM">
- PM
- </string>
- <string name="PST">
- PST
- </string>
- <string name="PDT">
- PDT
- </string>
- <string name="Direction_Forward">
- Vooruit
- </string>
- <string name="Direction_Left">
- Links
- </string>
- <string name="Direction_Right">
- Rechts
- </string>
- <string name="Direction_Back">
- Achteruit
- </string>
- <string name="Direction_North">
- Noord
- </string>
- <string name="Direction_South">
- Zuid
- </string>
- <string name="Direction_West">
- West
- </string>
- <string name="Direction_East">
- Oost
- </string>
- <string name="Direction_Up">
- Omhoog
- </string>
- <string name="Direction_Down">
- Omlaag
- </string>
- <string name="Any Category">
- Elke Categorie
- </string>
- <string name="Shopping">
- Boodschappen
- </string>
- <string name="Land Rental">
- Land Verhuur
- </string>
- <string name="Property Rental">
- Verhuur van onroerend goed
- </string>
- <string name="Special Attraction">
- Speciale Attractie
- </string>
- <string name="New Products">
- Nieuwe Producten
- </string>
- <string name="Employment">
- Employment
- </string>
- <string name="Wanted">
- Gezocht
- </string>
- <string name="Service">
- Service
- </string>
- <string name="Personal">
- Personal
- </string>
- <string name="None">
- Geen
- </string>
- <string name="Linden Location">
- Linden locatie
- </string>
- <string name="Adult">
- Adult
- </string>
- <string name="Arts&amp;Culture">
- Kunst &amp; Cultuur
- </string>
- <string name="Business">
- Zakelijk
- </string>
- <string name="Educational">
- Educatief
- </string>
- <string name="Gaming">
- Spelen
- </string>
- <string name="Hangout">
- Ontmoetingsplaats
- </string>
- <string name="Newcomer Friendly">
- Nieuwkomervriendelijk
- </string>
- <string name="Parks&amp;Nature">
- Parken &amp; natuur
- </string>
- <string name="Residential">
- Woongebied
- </string>
- <string name="Stage">
- Stage
- </string>
- <string name="Other">
- Anders
- </string>
- <string name="Any">
- Any
- </string>
- <string name="You">
- Jij
- </string>
- <string name="Multiple Media">
- Meerdere Media
- </string>
- <string name="Play Media">
- Play/Pause Media
- </string>
- <string name="MBCmdLineError">
- An error was found parsing the command line.
-Please see: http://wiki.secondlife.com/wiki/Client_parameters
-Error:
- </string>
- <string name="MBCmdLineUsg">
- [APP_NAME] Command line usage:
- </string>
- <string name="MBUnableToAccessFile">
- [APP_NAME] is unable to access a file that it needs.
-
-This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open.
-If this message persists, restart your computer and try again.
-If it continues to persist, you may need to completely uninstall [APP_NAME] and reinstall it.
- </string>
- <string name="MBFatalError">
- Fatal Error
- </string>
- <string name="MBRequiresAltiVec">
- [APP_NAME] requires a processor with AltiVec (G4 or later).
- </string>
- <string name="MBAlreadyRunning">
- [APP_NAME] is already running.
-Check your task bar for a minimized copy of the program.
-If this message persists, restart your computer.
- </string>
- <string name="MBFrozenCrashed">
- [APP_NAME] appears to have frozen or crashed on the previous run.
-Would you like to send a crash report?
- </string>
- <string name="MBAlert">
- Alert
- </string>
- <string name="MBNoDirectX">
- [APP_NAME] is unable to detect DirectX 9.0b or greater.
-[APP_NAME] uses DirectX to detect hardware and/or outdated drivers that can cause stability problems, poor performance and crashes. While you can run [APP_NAME] without it, we highly recommend running with DirectX 9.0b.
-
-Do you wish to continue?
- </string>
- <string name="MBWarning">
- Warning
- </string>
- <string name="MBNoAutoUpdate">
- Automatic updating is not yet implemented for Linux.
-Please download the latest version from www.secondlife.com.
- </string>
- <string name="MBRegClassFailed">
- RegisterClass failed
- </string>
- <string name="MBError">
- Error
- </string>
- <string name="MBFullScreenErr">
- Unable to run fullscreen at [WIDTH] x [HEIGHT].
-Running in window.
- </string>
- <string name="MBDestroyWinFailed">
- Shutdown Error while destroying window (DestroyWindow() failed)
- </string>
- <string name="MBShutdownErr">
- Shutdown Error
- </string>
- <string name="MBDevContextErr">
- Can&apos;t make GL device context
- </string>
- <string name="MBPixelFmtErr">
- Can&apos;t find suitable pixel format
- </string>
- <string name="MBPixelFmtDescErr">
- Can&apos;t get pixel format description
- </string>
- <string name="MBTrueColorWindow">
- [APP_NAME] requires True Color (32-bit) to run.
-Please go to your computer&apos;s display settings and set the color mode to 32-bit.
- </string>
- <string name="MBAlpha">
- [APP_NAME] is unable to run because it can&apos;t get an 8 bit alpha channel. Usually this is due to video card driver issues.
-Please make sure you have the latest video card drivers installed.
-Also be sure your monitor is set to True Color (32-bit) in Control Panels &gt; Display &gt; Settings.
-If you continue to receive this message, contact the [SUPPORT_SITE].
- </string>
- <string name="MBPixelFmtSetErr">
- Can&apos;t set pixel format
- </string>
- <string name="MBGLContextErr">
- Can&apos;t create GL rendering context
- </string>
- <string name="MBGLContextActErr">
- Can&apos;t activate GL rendering context
- </string>
- <string name="MBVideoDrvErr">
- [APP_NAME] is unable to run because your video card drivers did not install properly, are out of date, or are for unsupported hardware. Please make sure you have the latest video card drivers and even if you do have the latest, try reinstalling them.
-
-If you continue to receive this message, contact the [SUPPORT_SITE].
- </string>
- <string name="5 O&apos;Clock Shadow">
- Stoppels
- </string>
- <string name="All White">
- Alles Wit
- </string>
- <string name="Anime Eyes">
- Ogen Animeren
- </string>
- <string name="Arced">
- Gebogen
- </string>
- <string name="Arm Length">
- Arm Lengte
- </string>
- <string name="Attached">
- Bijgevoegt
- </string>
- <string name="Attached Earlobes">
- Bijgevoegde Oorlellen
- </string>
- <string name="Back Bangs">
- Achterkant Pony
- </string>
- <string name="Back Bangs Down">
- Achterkant Pony Neer
- </string>
- <string name="Back Bangs Up">
- Achterkant Pony Omhoog
- </string>
- <string name="Back Fringe">
- Achterkant Franje
- </string>
- <string name="Back Hair">
- Achterkant Haar
- </string>
- <string name="Back Hair Down">
- Achterkant Haar Neer
- </string>
- <string name="Back Hair Up">
- Achterkant Haar Omhoog
- </string>
- <string name="Baggy">
- Oogwallen
- </string>
- <string name="Bangs">
- Pony
- </string>
- <string name="Bangs Down">
- Pony Neer
- </string>
- <string name="Bangs Up">
- Pony Omhoog
- </string>
- <string name="Beady Eyes">
- Kraaloogjes
- </string>
- <string name="Belly Size">
- Buik Grootte
- </string>
- <string name="Big">
- Groot
- </string>
- <string name="Big Butt">
- Grote Kont
- </string>
- <string name="Big Eyeball">
- Grote Oogbol
- </string>
- <string name="Big Hair Back">
- Haar Volume Achter
- </string>
- <string name="Big Hair Front">
- Haar Volume Voor
- </string>
- <string name="Big Hair Top">
- Haar Volume Boven
- </string>
- <string name="Big Head">
- Groot Hoofd
- </string>
- <string name="Big Pectorals">
- Groote Borstspieren
- </string>
- <string name="Big Spikes">
- Grote Stekels
- </string>
- <string name="Black">
- Zwart
- </string>
- <string name="Blonde">
- Blond
- </string>
- <string name="Blonde Hair">
- Blond Haar
- </string>
- <string name="Blush">
- Blozen
- </string>
- <string name="Blush Color">
- Bloos Kleur
- </string>
- <string name="Blush Opacity">
- Bloos Opaciteit
- </string>
- <string name="Body Definition">
- Lichaam Definitie
- </string>
- <string name="Body Fat">
- Lichaam vet
- </string>
- <string name="Body Freckles">
- Lichaam Sproeten
- </string>
- <string name="Body Thick">
- Lichaam Dik
- </string>
- <string name="Body Thickness">
- Lichaam Dikte
- </string>
- <string name="Body Thin">
- Lichaam Dun
- </string>
- <string name="Bow Legged">
- Boog Benen
- </string>
- <string name="Breast Buoyancy">
- Borst Drijfvermogen
- </string>
- <string name="Breast Cleavage">
- Borst Splijting
- </string>
- <string name="Breast Size">
- Borst Grootte
- </string>
- <string name="Bridge Width">
- Brug Breedte
- </string>
- <string name="Broad">
- Breed
- </string>
- <string name="Brow Size">
- Wenkbrauw Grootte
- </string>
- <string name="Bug Eyes">
- Insect Ogen
- </string>
- <string name="Bugged Eyes">
- Insect Ogen
- </string>
- <string name="Bulbous">
- Bolle
- </string>
- <string name="Bulbous Nose">
- Bolle Neus
- </string>
- <string name="Bushy Eyebrows">
- Borstelige Wenkbrauwen
- </string>
- <string name="Bushy Hair">
- Borstelig Haar
- </string>
- <string name="Butt Size">
- Kont Grootte
- </string>
- <string name="bustle skirt">
- Bustle Skirt
- </string>
- <string name="no bustle">
- No Bustle
- </string>
- <string name="more bustle">
- More Bustle
- </string>
- <string name="Chaplin">
- Smalle Snor
- </string>
- <string name="Cheek Bones">
- Jukbeenderen
- </string>
- <string name="Chest Size">
- Borst Grootte
- </string>
- <string name="Chin Angle">
- Kin Hoek
- </string>
- <string name="Chin Cleft">
- Gespleten Kin
- </string>
- <string name="Chin Curtains">
- Kin Gordijnen
- </string>
- <string name="Chin Depth">
- Kin Diepte
- </string>
- <string name="Chin Heavy">
- Kin Zware
- </string>
- <string name="Chin In">
- Kin In
- </string>
- <string name="Chin Out">
- Kin uit
- </string>
- <string name="Chin-Neck">
- Kin-Nek
- </string>
- <string name="Clear">
- Opschonen
- </string>
- <string name="Cleft">
- Gespleten
- </string>
- <string name="Close Set Eyes">
- Close Set Eyes
- </string>
- <string name="Closed">
- Gesloten
- </string>
- <string name="Closed Back">
- Gesloten Achterkant
- </string>
- <string name="Closed Front">
- Gesloten Voorkant
- </string>
- <string name="Closed Left">
- Gesloten Links
- </string>
- <string name="Closed Right">
- Gesloten Rechts
- </string>
- <string name="Coin Purse">
- Verminder Grootte
- </string>
- <string name="Collar Back">
- Kraag Achterkant
- </string>
- <string name="Collar Front">
- Kraag Voorkant
- </string>
- <string name="Corner Down">
- Hoek Omlaag
- </string>
- <string name="Corner Normal">
- Hoek Normaal
- </string>
- <string name="Corner Up">
- Hoek Omhoog
- </string>
- <string name="Creased">
- Gevouwen
- </string>
- <string name="Crooked Nose">
- Kromte Neus
- </string>
- <string name="Cropped Hair">
- Bijgesneden Haar
- </string>
- <string name="Cuff Flare">
- Cuff Flare
- </string>
- <string name="Dark">
- Donker
- </string>
- <string name="Dark Green">
- Donker Groen
- </string>
- <string name="Darker">
- Donkerder
- </string>
- <string name="Deep">
- Diep
- </string>
- <string name="Default Heels">
- Standaard Hielen
- </string>
- <string name="Default Toe">
- Standaard Teen
- </string>
- <string name="Dense">
- Dicht
- </string>
- <string name="Dense hair">
- Dicht haar
- </string>
- <string name="Double Chin">
- Dubbele Kin
- </string>
- <string name="Downturned">
- Downturned
- </string>
- <string name="Duffle Bag">
- Vergroot Grootte
- </string>
- <string name="Ear Angle">
- Oor Hoek
- </string>
- <string name="Ear Size">
- Oor Grootte
- </string>
- <string name="Ear Tips">
- Oor Punten
- </string>
- <string name="Egg Head">
- Ei Hoofd
- </string>
- <string name="Eye Bags">
- Oog Zakken
- </string>
- <string name="Eye Color">
- Oog Kleur
- </string>
- <string name="Eye Depth">
- Oog Diepte
- </string>
- <string name="Eye Lightness">
- Oog Lichtheid
- </string>
- <string name="Eye Opening">
- Oog Opening
- </string>
- <string name="Eye Pop">
- Asymmetrisch
- </string>
- <string name="Eye Size">
- Oog Grootte
- </string>
- <string name="Eye Spacing">
- Oog Afstand
- </string>
- <string name="Eyeball Size">
- Oogbal Grootte
- </string>
- <string name="Eyebrow Arc">
- Wenkbrauw Boog
- </string>
- <string name="Eyebrow Density">
- Wenkbrauw Dichtheid
- </string>
- <string name="Eyebrow Height">
- Wenkbrauw Hoogte
- </string>
- <string name="Eyebrow Points">
- Wenkbrauw Punten
- </string>
- <string name="Eyebrow Size">
- Eyebrow Grootte
- </string>
- <string name="Eyelash Length">
- Eyelash Lengte
- </string>
- <string name="Eyeliner">
- Eyeliner
- </string>
- <string name="Eyeliner Color">
- Eyeliner Kleur
- </string>
- <string name="Eyes Back">
- Ogen Achteruit
- </string>
- <string name="Eyes Bugged">
- Insect Ogen
- </string>
- <string name="Eyes Forward">
- Ogen Vooruit
- </string>
- <string name="Eyes Long Head">
- Eyes Long Head
- </string>
- <string name="Eyes Shear Left Up">
- Eyes Shear Left Up
- </string>
- <string name="Eyes Shear Right Up">
- Eyes Shear Right Up
- </string>
- <string name="Eyes Short Head">
- Eyes Short Head
- </string>
- <string name="Eyes Spread">
- Eyes Spread
- </string>
- <string name="Eyes Sunken">
- Ingevallen Ogen
- </string>
- <string name="Eyes Together">
- Ogen Bij Elkaar
- </string>
- <string name="Face Shear">
- Gezicht Gelijkheid
- </string>
- <string name="Facial Definition">
- Gezichts Definitie
- </string>
- <string name="Far Set Eyes">
- Ogen Uit Elkaar
- </string>
- <string name="Fat">
- Dik
- </string>
- <string name="Fat Head">
- Dik Hoofd
- </string>
- <string name="Fat Lips">
- Dikke Lippen
- </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">
- Dikke Boven Lip
- </string>
- <string name="Female">
- Vrouw
- </string>
- <string name="Fingerless">
- Vingerloos
- </string>
- <string name="Fingers">
- Vingers
- </string>
- <string name="Flared Cuffs">
- Verbrede Vorm
- </string>
- <string name="Flat">
- Plat
- </string>
- <string name="Flat Butt">
- Platte Kont
- </string>
- <string name="Flat Head">
- Plat Hoofd
- </string>
- <string name="Flat Toe">
- Platte Teen
- </string>
- <string name="Foot Size">
- Voet Grootte
- </string>
- <string name="Forehead Angle">
- Voorhoofd Hoek
- </string>
- <string name="Forehead Heavy">
- Zwaar Voorhoofd
- </string>
- <string name="Freckles">
- Sproeten
- </string>
- <string name="Front Bangs Down">
- Voorkant Pony Omlaag
- </string>
- <string name="Front Bangs Up">
- Voorkant Pony Omhoog
- </string>
- <string name="Front Fringe">
- Voorste Rand
- </string>
- <string name="Front Hair">
- Gezichtshaar
- </string>
- <string name="Front Hair Down">
- Gezichtshaar Omlaag
- </string>
- <string name="Front Hair Up">
- Gezichtshaar Omhoog
- </string>
- <string name="Full Back">
- Volle Achterkant
- </string>
- <string name="Full Eyeliner">
- Volle Eyeliner
- </string>
- <string name="Full Front">
- Volle Voorkant
- </string>
- <string name="Full Hair Sides">
- Full Hair Sides
- </string>
- <string name="Full Sides">
- Volle Zijkanten
- </string>
- <string name="Glossy">
- Glanzend
- </string>
- <string name="Glove Fingers">
- Vinger Handschoenen
- </string>
- <string name="Glove Length">
- Handschoen Lengte
- </string>
- <string name="Hair">
- Haar
- </string>
- <string name="Hair Back">
- Haar: Zwart
- </string>
- <string name="Hair Front">
- Haar: Voorkant
- </string>
- <string name="Hair Sides">
- Haar: Zijkant
- </string>
- <string name="Hair Sweep">
- Hair Sweep
- </string>
- <string name="Hair Thickess">
- Haar Dikheid
- </string>
- <string name="Hair Thickness">
- Hair Dikheid
- </string>
- <string name="Hair Tilt">
- Hair Tilt
- </string>
- <string name="Hair Tilted Left">
- Hair Tilted Left
- </string>
- <string name="Hair Tilted Right">
- Hair Tilted Right
- </string>
- <string name="Hair Volume">
- Haar: Volume
- </string>
- <string name="Hand Size">
- Hand Grootte
- </string>
- <string name="Handlebars">
- Handlebars
- </string>
- <string name="Head Length">
- Hoofd Lengte
- </string>
- <string name="Head Shape">
- Hoofd Vorm
- </string>
- <string name="Head Size">
- Hooft Grootte
- </string>
- <string name="Head Stretch">
- Hoofd Uitrekken
- </string>
- <string name="Heel Height">
- Hiel Hoogte
- </string>
- <string name="Heel Shape">
- Hiel Vorm
- </string>
- <string name="Height">
- Hoogte
- </string>
- <string name="High">
- Hoog
- </string>
- <string name="High Heels">
- Hoge Hielen
- </string>
- <string name="High Jaw">
- Hoge Kaak
- </string>
- <string name="High Platforms">
- High Platforms
- </string>
- <string name="High and Tight">
- Hoog en Strak
- </string>
- <string name="Higher">
- Hoger
- </string>
- <string name="Hip Length">
- Heup Lengte
- </string>
- <string name="Hip Width">
- Heup Breedte
- </string>
- <string name="In">
- Naar Binnen
- </string>
- <string name="In Shdw Color">
- Binnenste Schaduw Kleur
- </string>
- <string name="In Shdw Opacity">
- Binnenste Schaduw Opaciteit
- </string>
- <string name="Inner Eye Corner">
- Binnenste Oog Hoek
- </string>
- <string name="Inner Eye Shadow">
- Binnenste Oog Schaduw
- </string>
- <string name="Inner Shadow">
- Binnenste Schaduw
- </string>
- <string name="Jacket Length">
- Jas Lengte
- </string>
- <string name="Jacket Wrinkles">
- Jas Rimpels
- </string>
- <string name="Jaw Angle">
- Kaak Hoek
- </string>
- <string name="Jaw Jut">
- Jaw Jut
- </string>
- <string name="Jaw Shape">
- Kaak Vorm
- </string>
- <string name="Join">
- Samenvoegen
- </string>
- <string name="Jowls">
- Kaken
- </string>
- <string name="Knee Angle">
- Knie Hoek
- </string>
- <string name="Knock Kneed">
- Knieën Naar binnen
- </string>
- <string name="Large">
- Fors
- </string>
- <string name="Large Hands">
- Grote Handen
- </string>
- <string name="Left Part">
- Linker Deel
- </string>
- <string name="Leg Length">
- Been Lengte
- </string>
- <string name="Leg Muscles">
- Been Spieren
- </string>
- <string name="Less">
- Minder
- </string>
- <string name="Less Body Fat">
- Minder Lichaams Vet
- </string>
- <string name="Less Curtains">
- Less Curtains
- </string>
- <string name="Less Freckles">
- Minder Sproeten
- </string>
- <string name="Less Full">
- Minder Vol
- </string>
- <string name="Less Gravity">
- Minder Zwaartekracht
- </string>
- <string name="Less Love">
- Less Love
- </string>
- <string name="Less Muscles">
- Minder Spieren
- </string>
- <string name="Less Muscular">
- Minder Spieren
- </string>
- <string name="Less Rosy">
- Minder Rooskleurig
- </string>
- <string name="Less Round">
- Minder Rond
- </string>
- <string name="Less Saddle">
- Minder Heupen
- </string>
- <string name="Less Square">
- Minder Vierkant
- </string>
- <string name="Less Volume">
- Minder Volume
- </string>
- <string name="Less soul">
- Minder Ziel
- </string>
- <string name="Lighter">
- Lichter
- </string>
- <string name="Lip Cleft">
- Gespleten Lip
- </string>
- <string name="Lip Cleft Depth">
- Gespleten Lip Diepte
- </string>
- <string name="Lip Fullness">
- Lip Volheid
- </string>
- <string name="Lip Pinkness">
- Rozeheid Lippen
- </string>
- <string name="Lip Ratio">
- Lip Ratio
- </string>
- <string name="Lip Thickness">
- Lip Dikheid
- </string>
- <string name="Lip Width">
- Lip Breedte
- </string>
- <string name="Lipgloss">
- Lipgloss
- </string>
- <string name="Lipstick">
- Lipstick
- </string>
- <string name="Lipstick Color">
- Lipstick Kleur
- </string>
- <string name="Long">
- Lang
- </string>
- <string name="Long Head">
- Lang Hoofd
- </string>
- <string name="Long Hips">
- Lange Heupen
- </string>
- <string name="Long Legs">
- Lange Benen
- </string>
- <string name="Long Neck">
- Lange Nek
- </string>
- <string name="Long Pigtails">
- Long Pigtails
- </string>
- <string name="Long Ponytail">
- Lange Paardenstaart
- </string>
- <string name="Long Torso">
- Lang Torso
- </string>
- <string name="Long arms">
- Lange Armen
- </string>
- <string name="Longcuffs">
- Longcuffs
- </string>
- <string name="Loose Pants">
- Losse Broek
- </string>
- <string name="Loose Shirt">
- Los Shirt
- </string>
- <string name="Loose Sleeves">
- Losse Mouwen
- </string>
- <string name="Love Handles">
- Love Handles
- </string>
- <string name="Low">
- Laag
- </string>
- <string name="Low Heels">
- Lage Hielen
- </string>
- <string name="Low Jaw">
- Lage Kaak
- </string>
- <string name="Low Platforms">
- Lage Platforms
- </string>
- <string name="Low and Loose">
- Laag en Los
- </string>
- <string name="Lower">
- Lager
- </string>
- <string name="Lower Bridge">
- Lagere Brug
- </string>
- <string name="Lower Cheeks">
- Lagere Wangen
- </string>
- <string name="Male">
- Man
- </string>
- <string name="Middle Part">
- Middelste Deel
- </string>
- <string name="More">
- Meer
- </string>
- <string name="More Blush">
- Meer Blozen
- </string>
- <string name="More Body Fat">
- Meer Lichaams Vet
- </string>
- <string name="More Curtains">
- More Curtains
- </string>
- <string name="More Eyeshadow">
- Meer Oogshadow
- </string>
- <string name="More Freckles">
- Meer Sproeten
- </string>
- <string name="More Full">
- Meer Vol
- </string>
- <string name="More Gravity">
- Meer Zwaartekracht
- </string>
- <string name="More Lipstick">
- Meer Lippenstift
- </string>
- <string name="More Love">
- Meer Lovehandels
- </string>
- <string name="More Lower Lip">
- Meer Onder Lip
- </string>
- <string name="More Muscles">
- Meer Spieren
- </string>
- <string name="More Muscular">
- Meer Spieren
- </string>
- <string name="More Rosy">
- More Rosy
- </string>
- <string name="More Round">
- Meer Rond
- </string>
- <string name="More Saddle">
- Meer Heupen
- </string>
- <string name="More Sloped">
- Meer Hellend
- </string>
- <string name="More Square">
- Meer Vierkant
- </string>
- <string name="More Upper Lip">
- Meer Boven Lip
- </string>
- <string name="More Vertical">
- Meer Verticaal
- </string>
- <string name="More Volume">
- Meer Volume
- </string>
- <string name="More soul">
- Meer ziel
- </string>
- <string name="Moustache">
- Snor
- </string>
- <string name="Mouth Corner">
- Mond Hoek
- </string>
- <string name="Mouth Position">
- Mond Positie
- </string>
- <string name="Mowhawk">
- Hanekam
- </string>
- <string name="Muscular">
- Gespiert
- </string>
- <string name="Mutton Chops">
- Mutton Chops
- </string>
- <string name="Nail Polish">
- Nagel Lak
- </string>
- <string name="Nail Polish Color">
- Nagel Lak Kleur
- </string>
- <string name="Narrow">
- Smal
- </string>
- <string name="Narrow Back">
- Smalle Achterkant
- </string>
- <string name="Narrow Front">
- Smalle Voorkant
- </string>
- <string name="Narrow Lips">
- Smalle Lippen
- </string>
- <string name="Natural">
- Natural
- </string>
- <string name="Neck Length">
- Nek Lengte
- </string>
- <string name="Neck Thickness">
- Nek Dikheid
- </string>
- <string name="No Blush">
- Geen Bloos
- </string>
- <string name="No Eyeliner">
- Geen Eyeliner
- </string>
- <string name="No Eyeshadow">
- Geen Oogschaduw
- </string>
- <string name="No Heels">
- Geen Hakken
- </string>
- <string name="No Lipgloss">
- Geen Lipgloss
- </string>
- <string name="No Lipstick">
- Geen Lippenstift
- </string>
- <string name="No Part">
- Geen Deel
- </string>
- <string name="No Polish">
- Geen Glans
- </string>
- <string name="No Red">
- Geen Rood
- </string>
- <string name="No Spikes">
- Geen Stekels
- </string>
- <string name="No White">
- Geen Wit
- </string>
- <string name="No Wrinkles">
- Geen Rimpels
- </string>
- <string name="Normal Lower">
- Normaal Onder
- </string>
- <string name="Normal Upper">
- Normaal Boven
- </string>
- <string name="Nose Left">
- Neus Links
- </string>
- <string name="Nose Right">
- Neus Rechts
- </string>
- <string name="Nose Size">
- Neus Grootte
- </string>
- <string name="Nose Thickness">
- Neus Dickheid
- </string>
- <string name="Nose Tip Angle">
- Neus Top Hoek
- </string>
- <string name="Nose Tip Shape">
- Neus Top Vorm
- </string>
- <string name="Nose Width">
- Neus Breedte
- </string>
- <string name="Nostril Division">
- Nostril Division
- </string>
- <string name="Nostril Width">
- Neusgat Breedte
- </string>
- <string name="Old">
- Oud
- </string>
- <string name="Opaque">
- Ondoorzichtig
- </string>
- <string name="Open">
- Open
- </string>
- <string name="Open Back">
- Open Achterkant
- </string>
- <string name="Open Front">
- Open Voorkant
- </string>
- <string name="Open Left">
- Open Links
- </string>
- <string name="Open Right">
- Open Rechts
- </string>
- <string name="Orange">
- Oranje
- </string>
- <string name="Out">
- Uit
- </string>
- <string name="Out Shdw Color">
- Buitenste Schaduw Kleur
- </string>
- <string name="Out Shdw Opacity">
- Buitenste Schaduw Opaciteit
- </string>
- <string name="Outer Eye Corner">
- Buitenste Oog Hoek
- </string>
- <string name="Outer Eye Shadow">
- Buitenste Oog Schaduw
- </string>
- <string name="Outer Shadow">
- Buitenste Schaduw
- </string>
- <string name="Overbite">
- Overbeet
- </string>
- <string name="Package">
- Genitaliën
- </string>
- <string name="Painted Nails">
- Gelakte Nagels
- </string>
- <string name="Pale">
- Dof
- </string>
- <string name="Pants Crotch">
- Broek Kruis
- </string>
- <string name="Pants Fit">
- Broek Passend
- </string>
- <string name="Pants Length">
- Broek Lengte
- </string>
- <string name="Pants Waist">
- Broek Teille
- </string>
- <string name="Pants Wrinkles">
- Broek Rimpels
- </string>
- <string name="Part">
- Deel
- </string>
- <string name="Part Bangs">
- Part Bangs
- </string>
- <string name="Pectorals">
- Borstspieren
- </string>
- <string name="Pigment">
- Pigment
- </string>
- <string name="Pigtails">
- Pigtails
- </string>
- <string name="Pink">
- Roze
- </string>
- <string name="Pinker">
- Rozer
- </string>
- <string name="Platform Height">
- Platform Hoogte
- </string>
- <string name="Platform Width">
- Platform Breedte
- </string>
- <string name="Pointy">
- Puntig
- </string>
- <string name="Pointy Heels">
- Puntige Hielen
- </string>
- <string name="Pointy Toe">
- Puntige Tenen
- </string>
- <string name="Ponytail">
- Paardenstaard
- </string>
- <string name="Poofy Skirt">
- Poofy Skirt
- </string>
- <string name="Pop Left Eye">
- Asymmetrisch Links
- </string>
- <string name="Pop Right Eye">
- Asymmetrisch Rechts
- </string>
- <string name="Puffy">
- Opgezwollen
- </string>
- <string name="Puffy Eyelids">
- Opgezwollen Oogleden
- </string>
- <string name="Rainbow Color">
- Regenboog Kleur
- </string>
- <string name="Red Hair">
- Rood Haar
- </string>
- <string name="Red Skin">
- Rode Huid
- </string>
- <string name="Regular">
- Normaal
- </string>
- <string name="Regular Muscles">
- Normale Spieren
- </string>
- <string name="Right Part">
- Rechter Deel
- </string>
- <string name="Rosy Complexion">
- Rosy Complexion
- </string>
- <string name="Round">
- Rond
- </string>
- <string name="Round Forehead">
- Rond Voorhoofd
- </string>
- <string name="Ruddiness">
- Rossige kleur
- </string>
- <string name="Ruddy">
- Rossig
- </string>
- <string name="Rumpled Hair">
- Rumpled Hair
- </string>
- <string name="Saddle Bags">
- Saddle Bags
- </string>
- <string name="Saddlebags">
- Saddlebags
- </string>
- <string name="Scrawny">
- Magere
- </string>
- <string name="Scrawny Leg">
- Mager Been
- </string>
- <string name="Separate">
- Scheiden
- </string>
- <string name="Shading">
- Shading
- </string>
- <string name="Shadow hair">
- Schaduw Haar
- </string>
- <string name="Shallow">
- Ondiep
- </string>
- <string name="Shear Back">
- Shear Back
- </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">
- Shear Left Up
- </string>
- <string name="Shear Right">
- Shear Right
- </string>
- <string name="Shear Right Up">
- Shear Right Up
- </string>
- <string name="Sheared Back">
- Sheared Back
- </string>
- <string name="Sheared Front">
- Sheared Front
- </string>
- <string name="Shift Left">
- Verplaats Links
- </string>
- <string name="Shift Mouth">
- Verplaats Mond
- </string>
- <string name="Shift Right">
- Verplaats Rechts
- </string>
- <string name="Shirt Bottom">
- Hemd Onderkant
- </string>
- <string name="Shirt Fit">
- Hemd Passend
- </string>
- <string name="Shirt Wrinkles">
- Hemd Rimpels
- </string>
- <string name="Shoe Height">
- Schoen Hoogte
- </string>
- <string name="Short">
- Kort
- </string>
- <string name="Short Arms">
- Korte Armen
- </string>
- <string name="Short Legs">
- Korte Benen
- </string>
- <string name="Short Neck">
- Korte Nek
- </string>
- <string name="Short Pigtails">
- Short Pigtails
- </string>
- <string name="Short Ponytail">
- Korte Paardenstaart
- </string>
- <string name="Short Sideburns">
- Korte Bakkebaarden
- </string>
- <string name="Short Torso">
- Korte Torso
- </string>
- <string name="Short hips">
- Korte Heupen
- </string>
- <string name="Shoulders">
- Shouders
- </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">
- Side Fringe
- </string>
- <string name="Sideburns">
- Bakkebaarden
- </string>
- <string name="Sides Hair">
- Sides Hair
- </string>
- <string name="Sides Hair Down">
- Sides Hair Down
- </string>
- <string name="Sides Hair Up">
- Sides Hair Up
- </string>
- <string name="Skinny">
- Broodmager
- </string>
- <string name="Skinny Neck">
- Smalle Nek
- </string>
- <string name="Skirt Fit">
- Skirt Fit
- </string>
- <string name="Skirt Length">
- Rok Lengte
- </string>
- <string name="Slanted Forehead">
- Schuin voorhoofd
- </string>
- <string name="Sleeve Length">
- Mouw Lengte
- </string>
- <string name="Sleeve Looseness">
- Mouw Losheid
- </string>
- <string name="Slit Back">
- Spleet: Achter
- </string>
- <string name="Slit Front">
- Spleet: Voor
- </string>
- <string name="Slit Left">
- Spleet: Links
- </string>
- <string name="Slit Right">
- Spleet: Rechts
- </string>
- <string name="Small">
- Klein
- </string>
- <string name="Small Hands">
- Kleine Handen
- </string>
- <string name="Small Head">
- Klein Hoofd
- </string>
- <string name="Smooth">
- Glad
- </string>
- <string name="Smooth Hair">
- Glad Haar
- </string>
- <string name="Socks Length">
- Sok Lengte
- </string>
- <string name="Some">
- enkele
- </string>
- <string name="Soulpatch">
- Soulpatch
- </string>
- <string name="Sparse">
- Schaars
- </string>
- <string name="Spiked Hair">
- Puntig Haar
- </string>
- <string name="Square">
- Vierkant
- </string>
- <string name="Square Toe">
- Vierkante Teen
- </string>
- <string name="Squash Head">
- Squash Head
- </string>
- <string name="Squash/Stretch Head">
- Squash/Stretch Head
- </string>
- <string name="Stretch Head">
- Uitgerekt Hoofd
- </string>
- <string name="Sunken">
- Verzonken
- </string>
- <string name="Sunken Chest">
- Verzonken Borstkas
- </string>
- <string name="Sunken Eyes">
- Verzonken Ogen
- </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">
- Lang
- </string>
- <string name="Taper Back">
- Spits Achter
- </string>
- <string name="Taper Front">
- Spits Voor
- </string>
- <string name="Thick Heels">
- Dikke Hielen
- </string>
- <string name="Thick Neck">
- Dikke Nek
- </string>
- <string name="Thick Toe">
- Dikke Teen
- </string>
- <string name="Thickness">
- Dikheid
- </string>
- <string name="Thin">
- Dun
- </string>
- <string name="Thin Eyebrows">
- Dunne Wenkbrouwen
- </string>
- <string name="Thin Lips">
- Dunne Lippen
- </string>
- <string name="Thin Nose">
- Dunne Neus
- </string>
- <string name="Tight Chin">
- Strakke Kin
- </string>
- <string name="Tight Cuffs">
- Strakke Manchetten
- </string>
- <string name="Tight Pants">
- Strakke Broek
- </string>
- <string name="Tight Shirt">
- Strak Hemd
- </string>
- <string name="Tight Skirt">
- Strakke Rok
- </string>
- <string name="Tight Sleeves">
- Strakke Mouwen
- </string>
- <string name="Tilt Left">
- Tilt Left
- </string>
- <string name="Tilt Right">
- Tilt Right
- </string>
- <string name="Toe Shape">
- Teen Vorm
- </string>
- <string name="Toe Thickness">
- Teen Dikheid
- </string>
- <string name="Torso Length">
- Borstkas Lengte
- </string>
- <string name="Torso Muscles">
- Borstkas Spieren
- </string>
- <string name="Torso Scrawny">
- Magere Borstkas
- </string>
- <string name="Unattached">
- Niet Verbonden
- </string>
- <string name="Uncreased">
- Uncreased
- </string>
- <string name="Underbite">
- onderbeet
- </string>
- <string name="Unnatural">
- Onnatuurlijk
- </string>
- <string name="Upper Bridge">
- Boven Brug
- </string>
- <string name="Upper Cheeks">
- Bovenste Wangen
- </string>
- <string name="Upper Chin Cleft">
- Bovenste Kin Gespleten
- </string>
- <string name="Upper Eyelid Fold">
- Bovenste Ooglid Gevouwen
- </string>
- <string name="Upturned">
- Omgekeerde
- </string>
- <string name="Very Red">
- Erg Rood
- </string>
- <string name="Waist Height">
- Taille Hoogte
- </string>
- <string name="Well-Fed">
- Goed Gevoed
- </string>
- <string name="White Hair">
- Wit Haar
- </string>
- <string name="Wide">
- Breed
- </string>
- <string name="Wide Back">
- Breede Achterkant
- </string>
- <string name="Wide Front">
- Breed Voorkant
- </string>
- <string name="Wide Lips">
- Breed Lippen
- </string>
- <string name="Wild">
- Wild
- </string>
- <string name="Wrinkles">
- Rimpels
- </string>
- <string name="LocationCtrlAddLandmarkTooltip">
- Add to My Landmarks
- </string>
- <string name="LocationCtrlEditLandmarkTooltip">
- Edit My Landmark
- </string>
- <string name="LocationCtrlInfoBtnTooltip">
- See more info about the current location
- </string>
- <string name="LocationCtrlComboBtnTooltip">
- My location history
- </string>
- <string name="UpdaterWindowTitle">
- [APP_NAME] Update
- </string>
- <string name="UpdaterNowUpdating">
- Now updating [APP_NAME]...
- </string>
- <string name="UpdaterNowInstalling">
- Installing [APP_NAME]...
- </string>
- <string name="UpdaterUpdatingDescriptive">
- Your [APP_NAME] Viewer is being updated to the latest release. This may take some time, so please be patient.
- </string>
- <string name="UpdaterProgressBarTextWithEllipses">
- Downloading update...
- </string>
- <string name="UpdaterProgressBarText">
- Downloading update
- </string>
- <string name="UpdaterFailDownloadTitle">
- Failed to download update
- </string>
- <string name="UpdaterFailUpdateDescriptive">
- An error occurred while updating [APP_NAME]. Please download the latest version from www.secondlife.com.
- </string>
- <string name="UpdaterFailInstallTitle">
- Failed to install update
- </string>
- <string name="UpdaterFailStartTitle">
- Failed to start viewer
- </string>
- <string name="IM_logging_string">
- -- Instant message logging enabled --
- </string>
- <string name="IM_typing_start_string">
- [NAME] is typing...
- </string>
- <string name="Unnamed">
- (Unnamed)
- </string>
- <string name="IM_moderated_chat_label">
- (Moderated: Voices off by default)
- </string>
- <string name="IM_unavailable_text_label">
- Text chat is not available for this call.
- </string>
- <string name="IM_muted_text_label">
- Your text chat has been disabled by a Group Moderator.
- </string>
- <string name="IM_default_text_label">
- Click here to instant message.
- </string>
- <string name="IM_to_label">
- To
- </string>
- <string name="IM_moderator_label">
- (Moderator)
- </string>
- <string name="only_user_message">
- U bent de enige gebruiker in deze sessie.
- </string>
- <string name="offline_message">
- [NAME] is offline.
- </string>
- <string name="invite_message">
- Klik de [BUTTON NAME] knop om deze voicechat te accepteren/verbinden.
- </string>
- <string name="generic_request_error">
- Fout tijdens het maken van het verzoek, probeer het later nog een keer.
- </string>
- <string name="insufficient_perms_error">
- U heeft niet voldoende permissies.
- </string>
- <string name="session_does_not_exist_error">
- De sessie bestaat niet meer
- </string>
- <string name="no_ability_error">
- U beschikt niet over die mogelijkheid.
- </string>
- <string name="no_ability">
- U beschikt niet over die mogelijkheid.
- </string>
- <string name="not_a_mod_error">
- U bent geen sessie moderateur
- </string>
- <string name="muted_error">
- Een groepsmoderator heeft uw textchat uitgeschakeld.
- </string>
- <string name="add_session_event">
- Kan geen gebruikers toevoegen aan chatsessie met [RECIPIENT].
- </string>
- <string name="message_session_event">
- Kan uw bericht niet versturen naar de chatsessie met [RECIPIENT].
- </string>
- <string name="removed_from_group">
- U bent verwijderd uit de groep.
- </string>
- <string name="close_on_no_ability">
- U heeft niet langer de mogelijkheid om in deze chatsessie te zijn.
- </string>
-</strings>
diff --git a/indra/newview/skins/default/xui/nl/teleport_strings.xml b/indra/newview/skins/default/xui/nl/teleport_strings.xml
deleted file mode 100644
index 12a81447c0..0000000000
--- a/indra/newview/skins/default/xui/nl/teleport_strings.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages>
- <message_set name="errors">
- <message name="invalid_tport">
- Probleem ondervonden bij het verwerken van uw verzoek voor een teleport. Het kan nodig zijn om opnieuw in te loggen voordat u kunt teleporteren.
-Als u dit bericht blijft krijgen, controleert u dan alstublieft [SUPPORT_SITE].
- </message>
- <message name="invalid_region_handoff">
- Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio&apos;s.
-Als u dit bericht blijft krijgen, controleert u dan alstublieft [SUPPORT_SITE].
- </message>
- <message name="blocked_tport">
- Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen.
- </message>
- <message name="nolandmark_tport">
- Sorry, het systeem was niet in staat de bestemming van de landmarkering te vinden.
- </message>
- <message name="timeout_tport">
- Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer.
- </message>
- <message name="noaccess_tport">
- Sorry, u heeft geen toegang tot die teleportbestemming.
- </message>
- <message name="missing_attach_tport">
- Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren.
- </message>
- <message name="too_many_uploads_tport">
- De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied.
- </message>
- <message name="expired_tport">
- Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
- </message>
- <message name="expired_region_handoff">
- Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
- </message>
- <message name="no_host">
- Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten.
- </message>
- <message name="no_inventory_host">
- Het inventarissysteem is momenteel niet beschikbaar.
- </message>
- </message_set>
- <message_set name="progress">
- <message name="sending_dest">
- Verzenden naar bestemming
- </message>
- <message name="redirecting">
- U wordt doorverwezen naar andere locatie.
- </message>
- <message name="relaying">
- Omschakelen naar bestemming.
- </message>
- <message name="sending_home">
- Thuislocatieverzoek verzenden
- </message>
- <message name="sending_landmark">
- Landmarkeringlocatieverzoek verzenden
- </message>
- <message name="completing">
- Teleport voltooien
- </message>
- <message name="resolving">
- Bestemming bepalen.
- </message>
- <message name="contacting">
- Contact maken met nieuwe regio.
- </message>
- <message name="arriving">
- Arriveren…
- </message>
- <message name="requesting">
- Teleport aanvragen…
- </message>
- </message_set>
-</teleport_messages>
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
index 637325ddd0..409429ffaa 100644
--- a/indra/newview/skins/default/xui/pl/floater_about.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about.xml
@@ -10,7 +10,7 @@
<floater.string name="AboutPosition">
Położenie [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] w [REGION] zlokalizowanym w &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">
Procesor: [CPU]
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 f2a6579dc3..3e51761b37 100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
@@ -46,7 +46,7 @@
[AMT]L$
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php metoda płatności] | [http://www.secondlife.com/my/account/currency.php waluta] | [http://www.secondlife.com/my/account/exchange_rates.php kurs wymiany]
+ [http://www.secondlife.com/my/account/payment_method_management.php metoda płatności] | [http://www.secondlife.com/my/account/currency.php waluta]
</text>
<text name="exchange_rate_note">
Wpisz ponownie kwotę aby zobaczyć ostatni kurs wymiany.
diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml
index 5b9dd47616..60f3cd0fff 100644
--- a/indra/newview/skins/default/xui/pl/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pl/floater_camera.xml
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Poruszaj kamerą w dół/górę oraz w prawo/lewo
</floater.string>
- <floater.string name="camera_modes_title">
- Ustawienia
- </floater.string>
- <floater.string name="pan_mode_title">
- W prawo lub w lewo
- </floater.string>
- <floater.string name="presets_mode_title">
- Ustaw widok
- </floater.string>
<floater.string name="free_mode_title">
Zobacz obiekt
</floater.string>
diff --git a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
index 7dc3e1f22e..214d465f1c 100644
--- a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="CZAT LOKALNY">
- <check_box label="Tłumaczenie czatu (wspierane przez Google)" name="translate_chat_checkbox"/>
+ <check_box label="Tłumaczenie czatu" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index 7d3225ea31..e1fb6dd3f1 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -946,7 +946,7 @@ Zaproponować znajomość [NAME]?
</form>
</notification>
<notification name="RemoveFromFriends">
- Czy chcesz usunąć [NAME] z listy znajomych?
+ Czy chcesz usunąć &lt;nolink&gt;[NAME]&lt;/nolink&gt; z listy znajomych?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -2078,10 +2078,10 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t
Temat: [SUBJECT], Treść: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] jest w Second Life
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; jest w Second Life
</notification>
<notification name="FriendOffline">
- [NAME] opuszcza Second Life
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; opuszcza Second Life
</notification>
<notification name="AddSelfFriend">
Nie możesz dodać siebie do listy znajomych.
@@ -2458,10 +2458,10 @@ Spróbuj ponowanie za kilka minut.
</form>
</notification>
<notification name="FriendshipAccepted">
- Twoja propozycja znajomości została przyjęta przez [NAME].
+ Twoja propozycja znajomości została przyjęta przez &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
</notification>
<notification name="FriendshipDeclined">
- Twoja propozycja znajomości została odrzucona przez [NAME].
+ Twoja propozycja znajomości została odrzucona przez &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
</notification>
<notification name="FriendshipAcceptedByMe">
Propozycja znajomości została zaakceptowana.
diff --git a/indra/newview/skins/default/xui/pl/panel_my_profile.xml b/indra/newview/skins/default/xui/pl/panel_my_profile.xml
deleted file mode 100644
index cdc833241d..0000000000
--- a/indra/newview/skins/default/xui/pl/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="no_partner_text" value="Żadne"/>
- <string name="no_group_text" value="Żadne"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Nazwa użytkownika
- </text>
- <text name="name_descr_text">
- Wyświetlana nazwa
- </text>
- <button label="Profil" name="see_profile_btn" tool_tip="Zobacz profil tego awatara"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_notes.xml b/indra/newview/skins/default/xui/pl/panel_notes.xml
deleted file mode 100644
index 571171d64c..0000000000
--- a/indra/newview/skins/default/xui/pl/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notatki &amp; Prywatność" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_panel">
- <text name="status_message" value="Notatki:"/>
- <text name="status_message2" value="Pozwól tej osobie na:"/>
- <check_box label="Widzenie mojego statusu" name="status_check"/>
- <check_box label="Lokalizowanie mnie na mapie" name="map_check"/>
- <check_box label="Edytowanie, kasowanie lub zabieranie moich obiektów" name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Dodaj do Znajomych" name="add_friend" tool_tip="Zaoferuj znajomość Rezydentowi"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Otwórz wiadomości IM"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Dzwoń" name="call" tool_tip="Zadzwoń do Rezydenta"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż Rezydenta na mapie"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
index 3251099f74..7fd1029e6a 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
<spinner label="Czas znikania czatu w pobliżu:" name="nearby_toasts_fadingtime"/>
<check_box name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Użyj translatora podczas rozmowy (wspierany przez Google)
+ Użyj translatora podczas rozmowy
</text>
<text name="translate_language_text">
Przetłumacz czat na:
@@ -51,7 +51,7 @@
<combo_box.item label="Русский (Rosyjski)" name="Russian"/>
<combo_box.item label="Türkçe (Turecki)" name="Turkish"/>
<combo_box.item label="Українська (Ukraiński)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (Chiński)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Chiński)" name="Chinese"/>
<combo_box.item label="日本語 (Japoński)" name="Japanese"/>
<combo_box.item label="한국어 (Koreański)" name="Korean"/>
</combo_box>
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 44dcb2112c..fff56eab6e 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
@@ -11,7 +11,6 @@
<combo_box.item label="Español (Hiszpański) - Beta" name="Spanish"/>
<combo_box.item label="Français (Francuski) - Beta" name="French"/>
<combo_box.item label="Italiano (Włoski) - Beta" name="Italian"/>
- <combo_box.item label="Nederlands (Niderlandzki) - Beta" name="Dutch"/>
<combo_box.item label="Polski - Beta" name="Polish"/>
<combo_box.item label="Português (Portugalski) - Beta" name="Portugese"/>
<combo_box.item label="日本語 (Japoński) - Beta" name="(Japanese)"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_profile.xml b/indra/newview/skins/default/xui/pl/panel_profile.xml
deleted file mode 100644
index 77dd951bc4..0000000000
--- a/indra/newview/skins/default/xui/pl/panel_profile.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="no_partner_text" value="Brak"/>
- <string name="no_group_text" value="Żadne"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="Życie#1:"/>
- </panel>
- <text name="title_member_text" value="Urodziny:"/>
- <text name="title_acc_status_text" value="Konto:"/>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text initial_value="(przetwarzanie)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Grupy:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Poznaj" name="add_friend" tool_tip="Zaproponuj znajomość Rezydentowi"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="Otwórz wiadomości IM"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Dzwoń" name="call" tool_tip="Zadzwoń do tego Rezydenta"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Zapłać lub udostępnij obiekt Rezydentowi"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj informacje o sobie"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_profile_view.xml b/indra/newview/skins/default/xui/pl/panel_profile_view.xml
deleted file mode 100644
index 1fd6bc1d10..0000000000
--- a/indra/newview/skins/default/xui/pl/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- Obecnie w SL
- </string>
- <string name="status_offline">
- Nieaktywny
- </string>
- <text name="display_name_label" value="Wyświetlana nazwa:"/>
- <text name="solo_username_label" value="Nazwa użytkownika:"/>
- <text name="status" value="Obecnie w SL"/>
- <text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
- <button name="copy_to_clipboard" tool_tip="Kopiuj do schowka"/>
- <text name="user_label" value="Nazwa użytkownika:"/>
- <tab_container name="tabs">
- <panel label="PROFIL" name="panel_profile"/>
- <panel label="ULUBIONE" name="panel_picks"/>
- <panel label="NOTATKI &amp; PRYWATNOŚĆ" name="panel_notes"/>
- </tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 6a8309cca5..f6dec8536b 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -423,6 +423,9 @@
<string name="symbolic folder link">
link folderu
</string>
+ <string name="AvatarEditingAppearance">
+ (Edycja Wygląd)
+ </string>
<string name="AvatarAway">
Śpi
</string>
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
index 57fb55bf4c..0366c3fdbc 100644
--- a/indra/newview/skins/default/xui/pl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml
@@ -19,6 +19,10 @@ Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
<message name="timeout_tport">
Przepraszamy, ale nie udało się przeprowadzić teleportacji. Spróbuj jeszcze raz.
</message>
+ <message name="NoHelpIslandTP">
+ Brak możliwości ponownej teleportacji do Welcome Island.
+Odwiedź &apos;Welcome Island Public&apos; by powtórzyć szkolenie.
+ </message>
<message name="noaccess_tport">
Przepraszamy, ale nie masz dostępu do miejsca docelowego.
</message>
diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml
index 508635cd6e..c374264c4a 100644
--- a/indra/newview/skins/default/xui/pt/floater_about.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about.xml
@@ -7,9 +7,9 @@
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 &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;([HOSTIP])
+ Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em [HOSTNAME]&lt;/nolink&gt;([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
</floater.string>
<floater.string name="AboutSystem">
CPU: [CPU]
@@ -36,6 +36,9 @@ Versão do servidor de voz: [VOICE_VERSION]
<floater.string name="AboutTraffic">
Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
</floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Erro ao obter URL de notas de versão do servidor.
+ </floater.string>
<tab_container name="about_tab">
<panel label="Info" name="support_panel">
<button label="Copiar" name="copy_btn"/>
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 514c7382f8..cc09888994 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -213,19 +213,19 @@ Vá para o menu Mundo &gt; Sobre o terreno ou selecione outro lote para mostrar
Fator de bônus para objetos na região: [BONUS]
</text>
<text name="Simulator primitive usage:">
- Uso de prims:
+ Capacidade da região:
</text>
<text name="objects_available">
[COUNT] de [MAX] ([AVAILABLE] disponíveis)
</text>
<text name="Primitives parcel supports:">
- Prims suportados pelo lote:
+ Capacidade do lote do terreno:
</text>
<text name="object_contrib_text">
[COUNT]
</text>
<text name="Primitives on parcel:">
- Prims no lote:
+ Impacto no lote do terreno:
</text>
<text name="total_objects_text">
[COUNT]
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar.xml b/indra/newview/skins/default/xui/pt/floater_avatar.xml
new file mode 100644
index 0000000000..f51b765105
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="SELETOR DE AVATAR"/>
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 a737212b50..b5ba477fe5 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
@@ -46,7 +46,7 @@
L$ [AMT]
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
</text>
<text name="exchange_rate_note">
Digite o valor novamente para ver o câmbio atual.
diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml
index 4f3729c623..6b66d01781 100644
--- a/indra/newview/skins/default/xui/pt/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pt/floater_camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="EXIBIR">
<floater.string name="rotate_tooltip">
Girar a Câmera ao redor do Foco
</floater.string>
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
</floater.string>
- <floater.string name="camera_modes_title">
- Modos de câmera
- </floater.string>
- <floater.string name="pan_mode_title">
- Pan zoom orbital
- </floater.string>
- <floater.string name="presets_mode_title">
- Ângulos predefinidos
- </floater.string>
<floater.string name="free_mode_title">
Visualizar objeto
</floater.string>
diff --git a/indra/newview/skins/default/xui/pt/floater_chat_bar.xml b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
new file mode 100644
index 0000000000..c089ab93f2
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="BATE-PAPO LOCAL">
+ <panel>
+ <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>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_destinations.xml b/indra/newview/skins/default/xui/pt/floater_destinations.xml
new file mode 100644
index 0000000000..df18698d2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINOS"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_fast_timers.xml b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml
new file mode 100644
index 0000000000..eeb39583ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Pausa
+ </string>
+ <string name="run">
+ Correr
+ </string>
+ <button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_how_to.xml b/indra/newview/skins/default/xui/pt/floater_how_to.xml
new file mode 100644
index 0000000000..15c4946cb0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="COMO"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_map.xml b/indra/newview/skins/default/xui/pt/floater_map.xml
index faf9c7c170..8233f2a43f 100644
--- a/indra/newview/skins/default/xui/pt/floater_map.xml
+++ b/indra/newview/skins/default/xui/pt/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINI MAPA">
<floater.string name="ToolTipMsg">
[REGION](Clique duas vezes para abrir o mapa, shift+arraste para a visão pan)
</floater.string>
@@ -7,7 +7,7 @@
[REGION](Clique duas vezes para teletransportar, shift+arraste para a visão pan)
</floater.string>
<floater.string name="mini_map_caption">
- MINIMAPA
+ Mini Mapa
</floater.string>
<text label="N" name="floater_map_north" text="N">
N
diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
index 4a537fafb1..17abe72173 100644
--- a/indra/newview/skins/default/xui/pt/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Carregar modelo">
- <string name="status_idle">
- Inativo
- </string>
+<floater name="Model Preview" title="CARREGAR MODELO">
+ <string name="status_idle"/>
<string name="status_parse_error">
- Dae parsing - erro, detalhes no log.
+ Erro: Problema ao analisar .dae - consulte log para obter detalhes.
</string>
<string name="status_reading_file">
Carregando...
@@ -51,6 +49,9 @@
<string name="mesh_status_missing_lod">
Falta o nível de detalhamento necessário.
</string>
+ <string name="mesh_status_invalid_material_list">
+ Materiais LOD não são um subconjunto de modelo de referência.
+ </string>
<string name="layer_all">
Tudo
</string>
@@ -63,188 +64,211 @@
<string name="tbd">
A ser definido
</string>
- <text name="name_label">
- Nome:
- </text>
- <text name="lod_label">
- Visualizar
- </text>
- <combo_box name="preview_lod_combo" tool_tip="LOD para ver no renderizador de pré-visualização">
- <combo_item name="high">
- Nível de detalhamento: Alto
- </combo_item>
- <combo_item name="medium">
- Nível de detalhamento: Média
- </combo_item>
- <combo_item name="low">
- Nível de detalhamento: Baixo
- </combo_item>
- <combo_item name="lowest">
- Nível de detalhamento: Mais baixo
- </combo_item>
- </combo_box>
- <text name="warning_title">
- AVISO:
- </text>
- <text name="warning_message">
- Não será possível concluir o upload final desse modelo para os servidores do Second Life. [[VURL] Saiba como] ativar o upload de modelos mesh.
- </text>
- <text name="weights_text">
- Download:
-Físico:
-Servidor:
-
-Equivalente em prims:
- </text>
- <text name="weights">
- [ST]
-[PH]
-[SIM]
-
-[EQ]
- </text>
- <tab_container name="import_tab">
- <panel label="Nível de detalhamento:" name="lod_panel">
- <text name="lod_table_header">
- Selecione o nível de detalhamento:
- </text>
- <text name="high_label" value="Alto"/>
- <text name="high_triangles" value="0"/>
- <text name="high_vertices" value="0"/>
- <text name="medium_label" value="Médio"/>
- <text name="medium_triangles" value="0"/>
- <text name="medium_vertices" value="0"/>
- <text name="low_label" value="Baixo"/>
- <text name="low_triangles" value="0"/>
- <text name="low_vertices" value="0"/>
- <text name="lowest_label" value="Mais baixo"/>
- <text name="lowest_triangles" value="0"/>
- <text name="lowest_vertices" value="0"/>
- <text name="lod_table_footer">
- Nível de detalhamento: [DETAIL]
- </text>
- <radio_group name="lod_file_or_limit" value="lod_from_file">
- <radio_item label="Carregar de arquivo" name="lod_from_file"/>
- <radio_item label="Gerar automaticamente" name="lod_auto_generate"/>
- <radio_item label="Nenhum" name="lod_none"/>
- </radio_group>
- <button label="Procurar..." name="lod_browse"/>
- <combo_box name="lod_mode">
- <combo_item name="triangle_limit">
- Limite de triângulo
- </combo_item>
- <combo_item name="error_threshold">
- Limite de erro
- </combo_item>
- </combo_box>
- <text name="build_operator_text">
- Operador de construção:
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Nome do modelo:
</text>
- <text name="queue_mode_text">
- Modo de fila:
+ <text name="model_category_label">
+ Esse modelo representa...
</text>
- <combo_box name="build_operator">
- <combo_item name="edge_collapse">
- Queda na borda
- </combo_item>
- <combo_item name="half_edge_collapse">
- Meia queda na borda
- </combo_item>
- </combo_box>
- <combo_box name="queue_mode">
- <combo_item name="greedy">
- Egoísta
- </combo_item>
- <combo_item name="lazy">
- Preguiçoso
- </combo_item>
- <combo_item name="independent">
- Independente
- </combo_item>
+ <combo_box name="model_category_combo">
+ <combo_item label="Escolher uma..." name="Choose one"/>
+ <combo_item label="Forma do avatar" name="Avatar shape"/>
+ <combo_item label="Anexo de avatar" name="Avatar attachment"/>
+ <combo_item label="Objeto em movimento (veículo, animal)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Material de construção" name="Building Component"/>
+ <combo_item label="Grande, sem movimentação etc" name="Large, non moving etc"/>
+ <combo_item label="Menor, sem movimentação etc" name="Smaller, non-moving etc"/>
+ <combo_item label="Nenhuma dessas, na verdade" name="Not really any of these"/>
</combo_box>
- <text name="border_mode_text">
- Modo da borda:
- </text>
- <text name="share_tolderance_text">
- Tolerância com compartilhamento:
- </text>
- <combo_box name="border_mode">
- <combo_item name="border_unlock">
- Desbloquear
- </combo_item>
- <combo_item name="border_lock">
- Bloquear
- </combo_item>
- </combo_box>
- <text name="crease_label">
- Ângulo da dobra:
- </text>
- <spinner name="crease_angle" value="75"/>
</panel>
- <panel label="Física" name="physics_panel">
- <panel name="physics geometry">
- <radio_group name="physics_load_radio" value="physics_load_from_file">
- <radio_item label="Arquivo:" name="physics_load_from_file"/>
- <radio_item label="Nível de detalhamento:" name="physics_use_lod"/>
- </radio_group>
- <combo_box name="physics_lod_combo" tool_tip="LOD para forma física">
- <combo_item name="physics_lowest">
- Mais baixo
- </combo_item>
- <combo_item name="physics_low">
- Baixo
- </combo_item>
- <combo_item name="physics_medium">
- Médio
- </combo_item>
- <combo_item name="physics_high">
- Alto
- </combo_item>
- </combo_box>
- <button label="Procurar..." name="physics_browse"/>
+ <tab_container name="import_tab">
+ <panel label="Nível de detalhe" name="lod_panel" title="Nível de detalhe">
+ <text initial_value="Origem" name="source" value="Origem"/>
+ <text initial_value="Triângulos" name="triangles" value="Triângulos"/>
+ <text initial_value="Vértices" name="vertices" value="Vértices"/>
+ <text initial_value="Alto" name="high_label" value="Alto"/>
+ <button label="Procurar..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Médio" name="medium_label" value="Médio"/>
+ <button label="Procurar..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Baixo" name="low_label" value="Baixo"/>
+ <button label="Procurar..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Mais baixo" name="lowest_label" value="Mais baixo"/>
+ <button label="Procurar..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Gerar normais" name="gen_normals"/>
+ <text initial_value="Ângulo de dobra:" name="crease_label" value="Ângulo de dobra:"/>
+ <spinner name="crease_angle" value="75"/>
</panel>
- <panel name="physics analysis">
- <slider label="Alisar:" name="Smooth"/>
- <check_box label="Tapar buracos (lento)" name="Close Holes (Slow)"/>
- <button label="Analisar" name="Decompose"/>
- <button label="Cancelar" name="decompose_cancel"/>
+ <panel label="Físico" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Etapa 1: Nível de detalhe
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="LOD a ser usada para forma física">
+ <combo_item name="choose_one">
+ Escolher uma...
+ </combo_item>
+ <combo_item name="physics_high">
+ Alto
+ </combo_item>
+ <combo_item name="physics_medium">
+ Médio
+ </combo_item>
+ <combo_item name="physics_low">
+ Baixo
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Mais baixo
+ </combo_item>
+ <combo_item name="load_from_file">
+ Do arquivo
+ </combo_item>
+ </combo_box>
+ <button label="Procurar..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Etapa 2: Analisar
+ </text>
+ <text name="analysis_method_label">
+ Método:
+ </text>
+ <text name="quality_label">
+ Qualidade:
+ </text>
+ <text name="smooth_method_label">
+ Liso:
+ </text>
+ <check_box label="Fechar orifícios" name="Close Holes (Slow)"/>
+ <button label="Analisar" name="Decompose"/>
+ <button label="Cancelar" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Etapa 3: Simplificar
+ </text>
+ <text name="simp_method_header">
+ Método:
+ </text>
+ <text name="pass_method_header">
+ Passes:
+ </text>
+ <text name="Detail Scale label">
+ Escala de detalhes:
+ </text>
+ <text name="Retain%_label">
+ Reter:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Simplificar" name="Simplify"/>
+ <button label="Cancelar" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Resultados:
+ </text>
+ <text name="physics_triangles">
+ Triângulos: [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Vértices: [POINTS],
+ </text>
+ <text name="physics_hulls">
+ Corpos: [HULLS]
+ </text>
+ </panel>
</panel>
- <panel name="physics simplification">
- <slider label="Demãos:" name="Combine Quality"/>
- <slider label="Escala do detalhamento:" name="Detail Scale"/>
- <slider label="Manter:" name="Retain%"/>
- <button label="Simplificar" name="Simplify"/>
- <button label="Cancelar" name="simplify_cancel"/>
- </panel>
- <panel name="physics info">
- <slider label="Visualizar:" name="physics_explode"/>
- <text name="physics_triangles">
- Triângulos: [TRIANGLES]
+ <panel label="Carregar opções" name="modifiers_panel">
+ <text name="scale_label">
+ Escala (1=sem escala):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Dimensões:
</text>
- <text name="physics_points">
- Vértices: [POINTS]
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
</text>
- <text name="physics_hulls">
- Hulls: [HULLS]
+ <check_box label="Incluir texturas" name="upload_textures"/>
+ <text name="include_label">
+ Somente para modelos de avatar:
</text>
+ <check_box label="Incluir peso da pele" name="upload_skin"/>
+ <check_box label="Incluir posições de junções" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Desvio Z (subir ou baixar avatar):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </panel>
- <panel label="Modificadores" name="modifiers_panel">
- <spinner name="import_scale" value="1.0"/>
- <text name="import_dimensions">
- [X] x [Y] x [Z] m
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Calcular pesos e tarifa" name="calculate_btn" tool_tip="Calcular pesos e tarifa"/>
+ <button label="Cancelar" name="cancel_btn"/>
+ <button label="Upload" name="ok_btn" tool_tip="Carregar no simulador"/>
+ <button label="Limpar configurações e redefinir formulário" name="reset_btn"/>
+ <text name="upload_fee">
+ Tarifa de upload: L$ [FEE]
+ </text>
+ <text name="prim_weight">
+ Impacto no terreno: [EQ]
+ </text>
+ <text name="download_weight">
+ Download: [ST]
+ </text>
+ <text name="physics_weight">
+ Físico: [PH]
+ </text>
+ <text name="server_weight">
+ Servidor: [SIM]
+ </text>
+ <text name="warning_title">
+ NOTA:
+ </text>
+ <text name="warning_message">
+ Você não tem direito para fazer upload de modelos mesh. [[VURL] Saiba como] obter certificado.
+ </text>
+ <text name="status">
+ [STATUS]
</text>
- <check_box label="Texturas" name="upload_textures"/>
- <check_box label="Peso da pele" name="upload_skin"/>
- <check_box label="Posição das juntas" name="upload_joints"/>
- <spinner name="pelvis_offset" value="0.0"/>
</panel>
- </tab_container>
- <text name="upload_fee">
- Tarifa de upload: L$ [FEE]
+ </panel>
+ <text name="lod_label">
+ Visualizar
</text>
- <button label="Definir como padrão" name="reset_btn" tool_tip="Definir como padrão"/>
- <button label="Calcular pesos e tarifa" name="calculate_btn" tool_tip="Calcular pesos e tarifa"/>
- <button label="Upload" name="ok_btn" tool_tip="Carregar no simulador"/>
- <button label="Cancelar" name="cancel_btn"/>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="LOD para exibir na renderização de visualização">
+ <combo_item name="high">
+ Alto
+ </combo_item>
+ <combo_item name="medium">
+ Médio
+ </combo_item>
+ <combo_item name="low">
+ Baixo
+ </combo_item>
+ <combo_item name="lowest">
+ Mais baixo
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Visualização...
+ </text>
+ <check_box label="Limites" name="show_edges"/>
+ <check_box label="Físico" name="show_physics"/>
+ <check_box label="Texturas" name="show_textures"/>
+ <check_box label="Pesos de pele" name="show_skin_weight"/>
+ <check_box label="Junções" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Visualizar extensão:
+ </text>
+ </panel>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
index a67a66a446..d9195adbf9 100644
--- a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
@@ -6,26 +6,20 @@
<button label="2. Otimizar" name="optimize_btn"/>
<button label="1. Selecionra arquivo" name="choose_file_btn"/>
<panel name="choose_file_panel">
- <panel name="choose_file_header_panel">
- <text name="choose_file_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Escolher arquivo de modelo
</text>
</panel>
- <panel name="choose_file_content_panel">
+ <panel name="content">
<text name="advanced_users_text">
Usuários avançados: se você estiver familiarizado com ferramentas de criação de conteúdo 3D, use o Advanced Uploader.
</text>
<button label="Trocar para avançado" name="switch_to_advanced"/>
- <text name="choose_model_file_label">
+ <text name="Cache location">
Escolha o arquivo de modelo para upload
</text>
<button label="Procurar..." label_selected="Procurar..." name="browse"/>
- <text name="support_collada_text">
- O Second Life oferece suporte a arquivos COLLADA (.dae)
- </text>
- <text name="dimensions_label">
- Dimensões (metros):
- </text>
<text name="dimensions">
X Y Z
</text>
@@ -38,18 +32,15 @@
</panel>
</panel>
<panel name="optimize_panel">
- <panel name="optimize_header_panel">
- <text name="optimize_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Otimizar modelo
</text>
</panel>
- <text name="optimize_hint">
+ <text name="description">
O modelo foi ajustado para desempenho. Faça novos ajustes, se desejar.
</text>
- <panel name="optimize_content_panel">
- <text name="generating_lod_label">
- Gerar nível de detalhes
- </text>
+ <panel name="content">
<text name="high_detail_text">
Gerar nível de detalhes: Alto
</text>
@@ -64,123 +55,64 @@
</text>
</panel>
<panel name="content2">
- <text name="optimize_performance_text">
- Desempenho
- </text>
- <text name="optimize_faster_rendering_text">
- Renderização mais rápida
-Menos detalhes
-Peso menor do prim
- </text>
- <text name="optimize_accuracy_text">
- Precisão
- </text>
- <text name="optimize_slower_rendering_text">
- Renderização mais lenta
-Mais detalhes
-Peso maior do prim
- </text>
- <text name="accuracy_slider_mark1">
- &apos;
- </text>
- <text name="accuracy_slider_mark2">
- &apos;
- </text>
- <text name="accuracy_slider_mark3">
- &apos;
- </text>
<button label="Recalcular geometria" name="recalculate_geometry_btn"/>
- <text name="geometry_preview_label">
+ <text name="lod_label">
Visualização da geometria
</text>
<combo_box name="preview_lod_combo" tool_tip="LOD para exibir na renderização de visualização">
- <combo_item name="preview_lod_high">
+ <combo_item name="high">
Máximo de detalhes
</combo_item>
- <combo_item name="preview_lod_medium">
+ <combo_item name="medium">
Detalhes médios
</combo_item>
- <combo_item name="preview_lod_low">
+ <combo_item name="low">
Poucos detalhes
</combo_item>
- <combo_item name="preview_lod_lowest">
+ <combo_item name="lowest">
Mínimo de detalhes
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="physics_panel">
- <panel name="physics_header_panel">
- <text name="physics_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Ajustar físico
</text>
</panel>
- <text name="physics_hint">
+ <text name="description">
Criaremos uma forma para o corpo externo do modelo. Ajuste o nível de detalhes como necessário para a finalidade desejada de seu modelo.
</text>
- <panel name="physics_content_panel">
- <text name="physics_performance_text">
- Desempenho
- </text>
- <text name="physics_faster_rendering_text">
- Renderização mais rápida
-Menos detalhes
-Peso menor do prim
- </text>
- <text name="physics_accuracy_text">
- Precisão
- </text>
- <text name="physics_slower_dendering_text">
- Renderização mais lenta
-Mais detalhes
-Peso maior do prim
- </text>
- <text name="physics_example_1">
- Exemplos:
-Objetos em movimento
-Objetos voadores
-Veículos
- </text>
- <text name="physics_example_2">
- Exemplos:
-Objetos estáticos pequenos
-Objetos menos detalhados
-Mobília simples
- </text>
- <text name="physics_example_3">
- Exemplos:
-Objetos estáticos
-Objetos detalhados
-Construções
- </text>
+ <panel name="content">
<button label="Recalcular físico" name="recalculate_physics_btn"/>
<button label="Recalculando..." name="recalculating_physics_btn"/>
- <text name="physics_preview_label">
+ <text name="lod_label">
Visualização do físico
</text>
<combo_box name="preview_lod_combo2" tool_tip="LOD para exibir na renderização de visualização">
- <combo_item name="preview_lod2_high">
+ <combo_item name="high">
Máximo de detalhes
</combo_item>
- <combo_item name="preview_lod2_medium">
+ <combo_item name="medium">
Detalhes médios
</combo_item>
- <combo_item name="preview_lod2_low">
+ <combo_item name="low">
Poucos detalhes
</combo_item>
- <combo_item name="preview_lod2_lowest">
+ <combo_item name="lowest">
Mínimo de detalhes
</combo_item>
</combo_box>
</panel>
</panel>
<panel name="review_panel">
- <panel name="review_header_panel">
- <text name="review_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Revisar
</text>
</panel>
- <panel name="review_content_panel">
+ <panel name="content">
<text name="review_prim_equiv">
Impacto no lote/região: [EQUIV] equivalentes de prim
</text>
@@ -193,8 +125,8 @@ Construções
</panel>
</panel>
<panel name="upload_panel">
- <panel name="upload_header_panel">
- <text name="upload_header_text">
+ <panel name="header_panel">
+ <text name="header_text">
Upload concluído
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml
index b1dc65e3af..0cb6f9a98e 100644
--- a/indra/newview/skins/default/xui/pt/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_moveview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="MOVER">
<string name="walk_forward_tooltip">
Andar para frente (flecha para cima ou W)
</string>
@@ -58,14 +58,14 @@
Voar
</string>
<panel name="panel_actions">
- <button label="" label_selected="" name="move up btn" tool_tip="Voar para cima (tecla E)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda (flecha ESQ ou A)"/>
<joystick_slide name="move left btn" tool_tip="Andar para a esquerda (Shift + Seta esquerda ou A)"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita (flecha DIR ou D)"/>
<joystick_slide name="move right btn" tool_tip="Andar para a direita (Shift + Seta direita ou D)"/>
<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)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Voar para cima (tecla E)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/>
</panel>
<panel name="panel_modes">
<button label="" name="mode_walk_btn" tool_tip="Modo caminhar"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_my_appearance.xml b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml
new file mode 100644
index 0000000000..38e06d2aed
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APARÊNCIA">
+ <panel label="Editar aparência" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_my_inventory.xml b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml
new file mode 100644
index 0000000000..71d8682758
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTÁRIO"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
index 60edfa505f..653861f7d8 100644
--- a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="Bate-papo local">
- <check_box label="Traduzir bate-papo (via Google)" name="translate_chat_checkbox"/>
+ <check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_object_weights.xml b/indra/newview/skins/default/xui/pt/floater_object_weights.xml
new file mode 100644
index 0000000000..45bd1c7127
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANÇADO">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="SELECIONADO"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Objetos"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Prims"/>
+ <text name="weights_of_selected_text" value="PESOS DOS SELECIONADOS"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Baixar"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Físico"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Servidor"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Visualização"/>
+ <text name="land_impacts_text" value="IMPACTOS NO TERRENO"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Selecionado"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Resolução no terreno"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Capacidade restante"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Capacidade total"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights What is all this?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml
new file mode 100644
index 0000000000..60d4d3dc5c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="SALVAR LOOK"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_people.xml b/indra/newview/skins/default/xui/pt/floater_people.xml
new file mode 100644
index 0000000000..10a516ee36
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PESSOAS">
+ <panel_container name="main_panel">
+ <panel label="Perfil do grupo" name="panel_group_info_sidetray"/>
+ <panel label="Residentes e objetos bloqueados" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_picks.xml b/indra/newview/skins/default/xui/pt/floater_picks.xml
new file mode 100644
index 0000000000..9766196319
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Destaques"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_places.xml b/indra/newview/skins/default/xui/pt/floater_places.xml
new file mode 100644
index 0000000000..12c6548205
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUGARES">
+ <panel label="Lugares" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
index 0e6d923778..948d727540 100644
--- a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivos de áudio">
+<floater name="floater_sound_devices" title="DISPOSITIVOS DE SOM">
<text name="voice_label">
Bate-papo de voz
</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml
index 11589b31b6..f0a053ebe3 100644
--- a/indra/newview/skins/default/xui/pt/floater_stats.xml
+++ b/indra/newview/skins/default/xui/pt/floater_stats.xml
@@ -10,8 +10,8 @@
</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="KTris desenhados por quadro" name="ktrisframe"/>
+ <stat_bar label="KTris desenhados por segundo" name="ktrissec"/>
<stat_bar label="Total Objects" name="objs"/>
<stat_bar label="New Objects" name="newobjs"/>
</stat_view>
@@ -32,7 +32,7 @@
<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_bar label="Operações pendentes do VFS" name="vfspendingoperations"/>
</stat_view>
</stat_view>
<stat_view label="Simulator" name="sim">
@@ -43,18 +43,6 @@
<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"/>
@@ -64,6 +52,14 @@
<stat_bar label="Agent Time" name="simagentmsec"/>
<stat_bar label="Images Time" name="simimagesmsec"/>
<stat_bar label="Script Time" name="simscriptmsec"/>
+ <stat_bar label="Tempo restante" name="simsparemsec"/>
+ <stat_view label="Detalhes de tempo (ms)" name="timedetails">
+ <stat_bar label="Etapa física" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Atualizar formas físicas" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Física - outros" name="simsimphysicsothermsec"/>
+ <stat_bar label="Tempo de espera" name="simsleepmsec"/>
+ <stat_bar label="Bombear ES" name="simpumpiomsec"/>
+ </stat_view>
</stat_view>
</stat_view>
</container_view>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index 6850bf2d7c..f35f31f5f7 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -25,10 +25,10 @@
Clicar e arrastar para selecionar a terra
</floater.string>
<floater.string name="status_selectcount">
- [OBJ_COUNT] objetos ( [PRIM_COUNT] prims[PE_STRING] ) selecionados
+ [OBJ_COUNT] objetos selecionados, impacto no terreno [LAND_IMPACT]
</floater.string>
- <floater.string name="status_selectprimequiv">
- , [SEL_WEIGHT] equivalentes de prims
+ <floater.string name="status_remaining_capacity">
+ Capacidade restante [LAND_CAPACITY].
</floater.string>
<button label="" label_selected="" name="button focus" tool_tip="Foco"/>
<button label="" label_selected="" name="button move" tool_tip="Mover"/>
@@ -105,8 +105,8 @@
<text name="selection_empty">
Nada selecionado.
</text>
- <text name="selection_weight">
- Peso do físico [PHYS_WEIGHT], custo de renderização [DISP_WEIGHT].
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
</text>
<tab_container name="Object Info Tabs" tab_max_width="60" tab_min_width="30" width="288">
<panel label="Comum" name="General">
@@ -319,7 +319,6 @@
Tipo costura
</text>
<combo_box name="sculpt type control">
- <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"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_toybox.xml b/indra/newview/skins/default/xui/pt/floater_toybox.xml
new file mode 100644
index 0000000000..67076beb0f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PERSONALIZAR BARRAS DE FERRAMENTA">
+ <text name="toybox label 1">
+ Adicione ou remova botões arrastando-os para dentro ou para fora das barras de ferramentas.
+ </text>
+ <text name="toybox label 2">
+ Os botões aparecerão como mostrado ou somente como ícone, dependendo das configurações de cada barra de ferramentas.
+ </text>
+ <button label="Restaurar padrão" label_selected="Restaurar padrão" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
index fed60c9afa..6132479041 100644
--- a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Controles de voz">
+<floater name="floater_voice_controls" title="CONTROLES DE VOZ">
<string name="title_nearby">
- VOZ LOCAL
+ Voz próxima
</string>
<string name="title_group">
Ligação de grupo com [GROUP]
diff --git a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
index 7585160954..4598b8ab25 100644
--- a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
@@ -8,7 +8,7 @@
<menu_item_check label="Botão Construir" name="ShowBuildButton"/>
<menu_item_check label="Botão Buscar" name="ShowSearchButton"/>
<menu_item_check label="Botão Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Botão do Mini Mapa" name="ShowMiniMapButton"/>
+ <menu_item_check label="Botão do Mini mapa" name="ShowMiniMapButton"/>
<menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
<menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
<menu_item_call label="Colar" name="NearbyChatBar_Paste"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
index c2b063193e..5f6bd096a8 100644
--- a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
- <menu_item_check label="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Mostrar barra de navegação e de favoritos" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Mostrar minibarra de localização" name="ShowMiniLocationPanel"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index 1d3fa48fb3..94195f1b8c 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Login Menu">
<menu label="Eu" name="File">
- <menu_item_call label="Preferências" name="Preferences..."/>
+ <menu_item_call label="Preferências..." name="Preferences..."/>
<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
</menu>
<menu label="Ajuda" name="Help">
diff --git a/indra/newview/skins/default/xui/pt/menu_toolbars.xml b/indra/newview/skins/default/xui/pt/menu_toolbars.xml
new file mode 100644
index 0000000000..f1e41aaea9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Escolher botões..." name="Chose Buttons"/>
+ <menu_item_check label="Ícones e rótulos" name="icons_with_text"/>
+ <menu_item_check label="Somente ícones" name="icons_only"/>
+</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 e1d066261a..9b5711d402 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu_bar name="Main Menu">
<menu label="Eu" name="Me">
- <menu_item_call label="Preferências" name="Preferences"/>
- <menu_item_call label="Meu painel" name="Manage My Account">
+ <menu_item_call label="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="ChangeOutfit"/>
- <menu_item_check label="Meu inventário" name="Inventory"/>
- <menu_item_check label="Meu inventário" name="ShowSidetrayInventory"/>
- <menu_item_check label="Meus gestos" name="Gestures"/>
- <menu_item_check label="Minha voz" name="ShowVoice"/>
+ <menu_item_call label="Perfil..." name="Profile"/>
+ <menu_item_call label="Aparência..." name="ChangeOutfit"/>
+ <menu_item_check label="Inventário..." name="Inventory"/>
+ <menu_item_check label="Gestos..." name="Gestures"/>
+ <menu_item_check label="Voz..." name="ShowVoice"/>
<menu label="Movimentos" name="Movement">
<menu_item_call label="Sentar" name="Sit Down Here"/>
<menu_item_check label="Voar" name="Fly"/>
<menu_item_check label="Correr sempre" name="Always Run"/>
<menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>
</menu>
- <menu label="Meu status" name="Status">
+ <menu label="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="Comprar L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Preferências..." name="Preferences"/>
+ <menu_item_call label="Barras de ferramentas..." name="Toolbars"/>
+ <menu_item_call label="Ocultar todos os controles" name="Hide UI"/>
<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
</menu>
<menu label="Comunicar" name="Communicate">
@@ -145,7 +146,6 @@
</menu>
<menu label="Ajuda" name="Help">
<menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
- <menu_item_check label="Ativar dicas" name="Enable Hints"/>
<menu_item_call label="Denunciar abuso" name="Report Abuse"/>
<menu_item_call label="Relatar bug" name="Report Bug"/>
<menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
<menu label="Ferramentas de desempenho" name="Performance Tools">
<menu_item_call label="Medidor de lag" name="Lag Meter"/>
<menu_item_check label="Barra de estatísticas" name="Statistics Bar"/>
- <menu_item_check label="Carga de renderização de avatar" name="Avatar Rendering Cost"/>
+ <menu_item_check label="Mostrar peso do desenho para avatares" name="Avatar Rendering Cost"/>
</menu>
<menu label="Realces e visibilidade" name="Highlighting and Visibility">
<menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
@@ -271,6 +271,7 @@
<menu_item_check label="Tipo de atualização" name="Update Type"/>
<menu_item_check label="Dados LOD" name="LOD Info"/>
<menu_item_check label="Fila de construção" name="Build Queue"/>
+ <menu_item_check label="Renderizar complexidade" name="rendercomplexity"/>
<menu_item_check label="Esculpir" name="Sculpt"/>
</menu>
<menu label="Rendering" name="Rendering">
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 70d882822d..d3547beeb3 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -973,7 +973,7 @@ Oferecer amizade para [NAME]?
</form>
</notification>
<notification name="RemoveFromFriends">
- Remover [NAME] da sua lista de amigos?
+ Remover &lt;nolink&gt;[NAME]&lt;/nolink&gt; da sua lista de amigos?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Remover"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -1899,6 +1899,12 @@ Mover para o inventário o(s) item(s)?
Tem certeza que deseja sair?
<usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/>
</notification>
+ <notification name="ConfirmRestoreToybox">
+ Tem certeza que deseja restaurar seus botões e barras de ferramenta padrão?
+
+Não é possível desfazer essa ação.
+ <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+ </notification>
<notification name="DeleteItems">
[QUESTION]
<usetemplate ignoretext="Confirmar antes de excluir" name="okcancelignore" notext="Cancelar" yestext="OK"/>
@@ -2103,10 +2109,10 @@ Isso abrirá o seu navegador.
Assunto: [SUBJECT], Mensagem: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] está online
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; está online
</notification>
<notification name="FriendOffline">
- [NAME] está offline
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; está offline
</notification>
<notification name="AddSelfFriend">
Você é o máximo! Mesmo assim, não dá para adicionar a si mesmo(a) como amigo(a).
@@ -2495,10 +2501,10 @@ Cada um pode ver o status do outro (definição padrão).
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME] aceitou seu convite de amizade.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; aceitou seu convite de amizade.
</notification>
<notification name="FriendshipDeclined">
- [NAME] recusou seu convite de amizade
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; recusou seu convite de amizade
</notification>
<notification name="FriendshipAcceptedByMe">
Oferta de amizada aceita.
@@ -2976,10 +2982,6 @@ Se o botão Falar for ocultado, o recurso de voz será desabilitado.
<button name="cancel" text="Cancelar"/>
</form>
</notification>
- <notification label="" name="ModeChange">
- Para alterar o modo, é preciso fechar e reiniciar.
- <usetemplate name="okcancelbuttons" notext="Não sair" yestext="Sair"/>
- </notification>
<notification label="" name="NoClassifieds">
É preciso usar o modo Avançado para criar e editar anúncios classificados. Desejar sair para mudar o modo? Selecione o modo na tela de login.
<usetemplate name="okcancelbuttons" notext="Não sair" yestext="Sair"/>
@@ -3024,6 +3026,10 @@ Se o botão Falar for ocultado, o recurso de voz será desabilitado.
É preciso estar no modo Avançado para fazer pesquisas. Deseja sair para mudar o modo?
<usetemplate name="okcancelbuttons" notext="Não sair" yestext="Sair"/>
</notification>
+ <notification label="" name="ConfirmHideUI">
+ Essa ação irá ocultar todos os itens de menu e botões. Para trazê-los de volta, clique em [SHORTCUT] novamente.
+ <usetemplate ignoretext="Confirmar antes de ocultar interface" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+ </notification>
<global name="UnsupportedGLRequirements">
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.
diff --git a/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..0551d9cba6
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Conversas"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Notificações"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_me.xml b/indra/newview/skins/default/xui/pt/panel_me.xml
index 412f75ca78..281c886bd4 100644
--- a/indra/newview/skins/default/xui/pt/panel_me.xml
+++ b/indra/newview/skins/default/xui/pt/panel_me.xml
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Meu perfil" name="panel_me">
- <tab_container name="tabs">
- <panel label="MEU PERFIL" name="panel_profile"/>
- <panel label="MEUS DESTAQUES" name="panel_picks"/>
- </tab_container>
+ <panel label="MEUS DESTAQUES" name="panel_picks"/>
</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
deleted file mode 100644
index aa15a2445d..0000000000
--- a/indra/newview/skins/default/xui/pt/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
- <string name="no_partner_text" value="Nenhum"/>
- <string name="no_group_text" value="Nenhum"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- Nome de usuário
- </text>
- <text name="name_descr_text">
- Nome de tela
- </text>
- <button label="Perfil" name="see_profile_btn" tool_tip="Ver o perfil deste avatar"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</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
index 01930bf3b3..4fa5436805 100644
--- a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
- <pull_button name="forward_btn" tool_tip="Avançar uma região"/>
- <button name="home_btn" tool_tip="Teletransportar para meu início"/>
- <location_input label="Onde" name="location_combo"/>
- <search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca">
- <combo_editor label="Buscar no [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
- <label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
- Barra Destaques
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos"/>
- </favorites_bar>
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
+ <pull_button name="forward_btn" tool_tip="Avançar uma região"/>
+ <button name="home_btn" tool_tip="Teletransportar para meu início"/>
+ <location_input label="Onde" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
+ <label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
+ Barra Destaques
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos">
+ Mais ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
</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..15470dc94a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_notes.xml b/indra/newview/skins/default/xui/pt/panel_notes.xml
deleted file mode 100644
index c15e838b34..0000000000
--- a/indra/newview/skins/default/xui/pt/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Anotações e Privacidade" name="panel_notes">
- <layout_stack name="layout">
- <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>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Ligar" name="call" tool_tip="Ligar para este residente"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
index e5aa42aae0..f98659aa73 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_fadingtime"/>
<check_box name="translate_chat_checkbox"/>
<text name="translate_chb_label">
- Traduzir bate-papo automaticamente (via Google)
+ Traduzir bate-papo automaticamente
</text>
<text name="translate_language_text">
Traduzir bate-papo para:
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 deeb917e82..c53aa7d5f7 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -11,10 +11,12 @@
<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 (Português) - Beta" name="Portugese"/>
+ <combo_box.item label="Русский (Russo) - Beta" name="Russian"/>
+ <combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
<combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (Chinês tradicional) - Beta" name="Traditional Chinese"/>
</combo_box>
<text name="language_textbox2">
(Reinicie para trocar de idioma)
@@ -49,7 +51,6 @@
<check_box label="Cargos do grupo" name="show_all_title_checkbox1" tool_tip="Mostrar os títulos de cargos, como membro ou diretor"/>
<check_box label="Realçar amigos" name="show_friends" tool_tip="Realçar nomes de tela de amigos"/>
<check_box label="Ver nomes de tela" name="display_names_check" tool_tip="Usar nome de tela no bate-papo, MI, etc."/>
- <check_box label="Exibir dicas da interface" name="viewer_hints_check"/>
<text name="inworld_typing_rg_label">
Teclas de letras:
</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
index 1a4c271827..fa6f5f5851 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
@@ -7,18 +7,33 @@
</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"/>
- <check_box initial_value="verdadeiro" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar posicionamento automático da câmera na barra lateral"/>
+ <text name="keyboard_lbl">
+ Teclado:
+ </text>
+ <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"/>
+ <text name="mouse_lbl">
+ Mouse:
+ </text>
<check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/>
<text name=" Mouse Sensitivity">
Sensibilidade do mouse:
</text>
<check_box label="Inverter" name="invert_mouse"/>
- <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="Dar dois cliques para:" name="double_click_chkbox"/>
- <radio_group name="double_click_action">
- <radio_item label="Teletransportar" name="radio_teleport"/>
- <radio_item label="Piloto automático" name="radio_autopilot"/>
- </radio_group>
+ <text name="single_click_action_lbl">
+ Clique único no terreno:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Nenhuma ação" name="0"/>
+ <combo_box.item label="Mover para ponto clicado" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Clique duplo no terreno:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Nenhuma ação" name="0"/>
+ <combo_box.item label="Mover para ponto clicado" name="1"/>
+ <combo_box.item label="Teletransportar para ponto clicado" name="2"/>
+ </combo_box>
<button label="Outros dispositivos" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_profile.xml b/indra/newview/skins/default/xui/pt/panel_profile.xml
deleted file mode 100644
index 075ef55dee..0000000000
--- a/indra/newview/skins/default/xui/pt/panel_profile.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=pt-BR
- </string>
- <string name="partner_edit_link_url">
- 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="no_group_text" value="Nenhum"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="title_member_text" value="Residente desde:"/>
- <text name="title_acc_status_text" value="Conta:"/>
- <text name="title_partner_text" value="Parceiro(a):"/>
- <panel name="partner_data_panel">
- <text initial_value="(pesquisando)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="Grupos:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Ligar" name="call" tool_tip="Ligar para este residente"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="Pagar ou compartilhar inventário com o residente"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- <layout_panel name="profile_me_buttons_panel">
- <button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/>
- </layout_panel>
- </layout_stack>
-</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
deleted file mode 100644
index d81ee08e6c..0000000000
--- a/indra/newview/skins/default/xui/pt/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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 name="display_name_label" value="Nome de tela:"/>
- <text name="solo_username_label" value="Nome de usuário:"/>
- <text name="status" value="Conectado"/>
- <text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
- <button name="copy_to_clipboard" tool_tip="Copiar para área de transferência"/>
- <text name="user_label" value="Nome de usuário:"/>
- <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_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
index 0d0f8cbf19..d5a3258ddc 100644
--- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
@@ -18,11 +18,8 @@
<panel name="balance_bg">
<text name="balance" tool_tip="Atualizar saldo de L$" value="L$20"/>
<button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/>
+ <button label="Comprar" name="goShop" tool_tip="Abrir Mercado do Second Life"/>
</panel>
- <combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
- <combo_box.item label="Modo básico" name="Basic"/>
- <combo_box.item label="Modo avançado" name="Advanced"/>
- </combo_box>
<text name="TimeText" tool_tip="Hora atual (Pacífico)">
24:00 AM PST
</text>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index cffe92461b..4535c7aaeb 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -34,6 +34,9 @@
<string name="ProgressChangingResolution">
Alterando a resolução...
</string>
+ <string name="Fullbright">
+ Fullbright (antigo)
+ </string>
<string name="LoginInProgress">
Fazendo login. [APP_NAME] pode parecer congelado. Por favor, aguarde.
</string>
@@ -116,7 +119,7 @@
A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada. Contate o administrador do seu Grid.
</string>
<string name="LoginFailedNoNetwork">
- Erro de rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede.
+ Erro de rede: Falha de conexão: verifique sua conexão à internet.
</string>
<string name="LoginFailed">
Falha do login.
@@ -544,6 +547,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
<string name="mesh">
mesh
</string>
+ <string name="AvatarEditingAppearance">
+ (Edição Aparência)
+ </string>
<string name="AvatarAway">
Distante
</string>
@@ -1216,6 +1222,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
<string name="Marketplace Error Internal Import">
Erro: ocorreu um problema com este item. Tente novamente mais tarde.
</string>
+ <string name="Open landmarks">
+ Marcos abertos
+ </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)"/>
@@ -4115,7 +4124,7 @@ Denunciar abuso
<string name="Female - Wow">
Wow - feminino
</string>
- <string name="/bow1">
+ <string name="/bow">
/reverência
</string>
<string name="/clap">
@@ -4628,4 +4637,172 @@ Tente colocar o caminho do editor entre aspas.
<string name="ParticleHiding">
Ocultar partículas
</string>
+ <string name="Command_AboutLand_Label">
+ Sobre terrenos
+ </string>
+ <string name="Command_Appearance_Label">
+ Aparência
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construir
+ </string>
+ <string name="Command_Chat_Label">
+ Bate-papo
+ </string>
+ <string name="Command_Compass_Label">
+ Bússola
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinos
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestos
+ </string>
+ <string name="Command_HowTo_Label">
+ Como
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventário
+ </string>
+ <string name="Command_Map_Label">
+ Mapa
+ </string>
+ <string name="Command_Marketplace_Label">
+ Mercado
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini Mapa
+ </string>
+ <string name="Command_Move_Label">
+ Mover
+ </string>
+ <string name="Command_People_Label">
+ Pessoas
+ </string>
+ <string name="Command_Picks_Label">
+ Destaques
+ </string>
+ <string name="Command_Places_Label">
+ Lugares
+ </string>
+ <string name="Command_Preferences_Label">
+ Preferências
+ </string>
+ <string name="Command_Profile_Label">
+ Perfil
+ </string>
+ <string name="Command_Search_Label">
+ Buscar
+ </string>
+ <string name="Command_Snapshot_Label">
+ Foto
+ </string>
+ <string name="Command_Speak_Label">
+ Falar
+ </string>
+ <string name="Command_View_Label">
+ Exibir
+ </string>
+ <string name="Command_Voice_Label">
+ Voz próxima
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Informações sobre o terreno que você está visitando
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Mudar seu avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Escolha um avatar completo
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construindo objetos e redimensionando terreno
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Bater papo com pessoas próximas usando texto
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Bússola
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinos de interesse
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestos para seu avatar
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Como executar tarefas comuns
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Exibir e usar seus pertences
+ </string>
+ <string name="Command_Map_Tooltip">
+ Mapa-múndi
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Faça compras
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Mostrar quem está aqui
+ </string>
+ <string name="Command_Move_Tooltip">
+ Movendo seu avatar
+ </string>
+ <string name="Command_People_Tooltip">
+ Amigos, grupos e pessoas próximas
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lugares mostrados como favoritos em seu perfil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lugares salvos
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Preferências
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Edite ou visualize seu perfil
+ </string>
+ <string name="Command_Search_Tooltip">
+ Encontre lugares, eventos, pessoas
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Tirar uma foto
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Fale com pessoas próximas usando seu microfone
+ </string>
+ <string name="Command_View_Tooltip">
+ Alterar o ângulo da câmera
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Pessoas próximas com recursos de voz
+ </string>
+ <string name="Retain%">
+ Reter%
+ </string>
+ <string name="Detail">
+ Detalhe
+ </string>
+ <string name="Better Detail">
+ Detalhamento maior
+ </string>
+ <string name="Surface">
+ Superfície
+ </string>
+ <string name="Solid">
+ Sólido
+ </string>
+ <string name="Wrap">
+ Conclusão
+ </string>
+ <string name="Preview">
+ Visualizar
+ </string>
+ <string name="Normal">
+ Normal
+ </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 11ea0f4195..f8ded1ce69 100644
--- a/indra/newview/skins/default/xui/pt/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pt/teleport_strings.xml
@@ -18,6 +18,10 @@ Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].
<message name="timeout_tport">
Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes.
</message>
+ <message name="NoHelpIslandTP">
+ Você não pode se tele-transportar de volta à Ilha de Welcome.
+Vá para a Ilha de Welcome Pública para repetir este tutorial.
+ </message>
<message name="noaccess_tport">
Desculpe, você não tem acesso ao destino deste teletransporte.
</message>
diff --git a/indra/newview/skins/default/xui/ru/floater_aaa.xml b/indra/newview/skins/default/xui/ru/floater_aaa.xml
new file mode 100644
index 0000000000..aa18a4a4a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_aaa.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Test Floater" title="ТЕСТИРОВАТЬ ОКНО">
+ <string name="test_the_vlt">
+ Эта строка CHANGE2 извлечена.
+ </string>
+ <string name="testing_eli">
+ Проверка изменений.
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml
new file mode 100644
index 0000000000..deb6be319c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_about.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="О [CAPITALIZED_APP_NAME]">
+ <floater.string name="AboutHeader">
+ [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutCompiler">
+ Использован компилятор [COMPILER], версия [COMPILER_VERSION]
+ </floater.string>
+ <floater.string name="AboutPosition">
+ Вы в точке [POSITION_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]
+ </floater.string>
+ <floater.string name="AboutSystem">
+ ЦП: [CPU]
+Память: [MEMORY_MB] МБ
+Версия ОС: [OS_VERSION]
+Производитель графической платы: [GRAPHICS_CARD_VENDOR]
+Графическая плата: [GRAPHICS_CARD]
+ </floater.string>
+ <floater.string name="AboutDriver">
+ Версия графического драйвера Windows: [GRAPHICS_DRIVER_VERSION]
+ </floater.string>
+ <floater.string name="AboutLibs">
+ Версия OpenGL: [OPENGL_VERSION]
+Версия libcurl: [LIBCURL_VERSION]
+Версия декодера J2C: [J2C_VERSION]
+Версия драйвера звука: [AUDIO_DRIVER_VERSION]
+Версия Qt Webkit: [QT_WEBKIT_VERSION]
+Версия голосового сервера: [VOICE_VERSION]
+ </floater.string>
+ <floater.string name="none">
+ (нет)
+ </floater.string>
+ <floater.string name="AboutTraffic">
+ Потеряно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Ошибка при получении URL-адреса заметок о выпуске сервера.
+ </floater.string>
+ <tab_container name="about_tab">
+ <panel label="Данные" name="support_panel">
+ <button label="Копировать в буфер обмена" name="copy_btn"/>
+ </panel>
+ <panel label="Создатели" name="credits_panel">
+ <text name="linden_intro">
+ Игра Second Life разработана лабораторией Lindens:
+ </text>
+ <text name="contrib_intro">
+ в написании открытого кода участвовали:
+ </text>
+ <text_editor name="contrib_names">
+ Псевдо-имя изменено при запуске
+ </text_editor>
+ <text name="trans_intro">
+ перевод:
+ </text>
+ <text_editor name="trans_names">
+ Псевдо-имя изменено при запуске
+ </text_editor>
+ </panel>
+ <panel label="Лицензии" name="licenses_panel">
+ <text_editor name="credits_editor">
+ 3Dconnexion SDK (C) 1992-2007 3Dconnexion
+APR (C) 2000-2004 The Apache Software Foundation
+Collada DOM (C) 2005 Sony Computer Entertainment Inc.cURL (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
+
+DBus/dbus-glib (C) 2002, 2003 CodeFactory AB / (C) 2003, 2004 Red Hat, Inc.
+expat (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+FreeType (C) 1996-2002, The FreeType Project (www.freetype.org).
+GL (C) 1999-2004 Brian Paul.
+GLOD (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University и David Luebke, Brenden Schubert, Университет Вирджиинии.
+google-perftools (c) 2005, Google Inc.
+Havok.com(TM) (C) 1999-2001, Telekinesys Research Limited.
+jpeg2000 (C) 2001, David Taubman, Университет Нового Южного Уэльса (UNSW)
+jpeglib (C) 1991-1998, Thomas G. Lane.
+ogg/vorbis (C) 2001, Xiphophorus
+OpenSSL (C) 1998-2002 The OpenSSL Project.
+PCRE (c) 1997-2008, Кембриджский университет
+SDL (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+SSLeay (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+xmlrpc-epi (C) 2000 Epinions, Inc.
+zlib (C) 1995-2002 Jean-loup Gailly и Mark Adler.
+google-perftools (c) 2005, Google Inc.
+
+В клиенте Second Life используется технология Havok (TM) Physics. (C) 1999-2010 Havok.com Inc. (и лицензиары компании). Все права защищены. Подробнее см. веб-сайт www.havok.com.
+
+Все права защищены. Подробные сведения см. в файле licenses.txt.
+
+Кодирование звука для голосового чата: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1, Приложение C)
+ </text_editor>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml
new file mode 100644
index 0000000000..3c278fce52
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="О ЗЕМЛЕ">
+ <floater.string name="maturity_icon_general">
+ &quot;Parcel_PG_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_moderate">
+ &quot;Parcel_M_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_adult">
+ &quot;Parcel_R_Dark&quot;
+ </floater.string>
+ <floater.string name="Minutes">
+ [MINUTES] мин
+ </floater.string>
+ <floater.string name="Minute">
+ минута
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] с
+ </floater.string>
+ <floater.string name="Remaining">
+ осталось
+ </floater.string>
+ <tab_container name="landtab">
+ <panel label="ОСНОВНЫЕ" name="land_general_panel">
+ <panel.string name="new users only">
+ Только новые жители
+ </panel.string>
+ <panel.string name="anyone">
+ Все
+ </panel.string>
+ <panel.string name="area_text">
+ Площадь
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] м²
+ </panel.string>
+ <panel.string name="auction_id_text">
+ 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">
+ Профиль
+ </panel.string>
+ <panel.string name="info_text">
+ Информация
+ </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">
+ Участок не выбран.
+ </panel.string>
+ <panel.string name="time_stamp_template">
+ [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="Name:">
+ Название:
+ </text>
+ <text name="Description:">
+ Описание:
+ </text>
+ <text name="LandType">
+ Тип:
+ </text>
+ <text name="LandTypeText">
+ Материк / поместье
+ </text>
+ <text name="ContentRating">
+ Рейтинг:
+ </text>
+ <text name="ContentRatingText">
+ Взрослый
+ </text>
+ <text name="Owner:">
+ Владелец:
+ </text>
+ <text name="Group:">
+ Группа:
+ </text>
+ <button label="Задать" name="Set..."/>
+ <check_box label="Разрешить передачу земли группе" name="check deed" tool_tip="Должностное лицо группы может передать эту землю группе с учетом существующего взноса."/>
+ <button label="Сделка" name="Deed..." tool_tip="Вы можете передать землю только если вы являетесь должностным лицом выбранной группы."/>
+ <check_box label="Владелец делает взносы при передаче" name="check contrib" tool_tip="Когда земля передается группе, бывший владелец делает взнос, достаточный для поддержки земли."/>
+ <text name="For Sale:">
+ Для продажи:
+ </text>
+ <text name="Not for sale.">
+ Не для продажи
+ </text>
+ <text name="For Sale: Price L$[PRICE].">
+ Цена: L$[PRICE] (L$[PRICE_PER_SQM]/м²)
+ </text>
+ <button label="Продать землю" name="Sell Land..."/>
+ <text name="For sale to">
+ Продажа для: [BUYER]
+ </text>
+ <text name="Sell with landowners objects in parcel.">
+ Объекты продаются вместе с землей
+ </text>
+ <text name="Selling with no objects in parcel.">
+ Объекты не продаются вместе с землей
+ </text>
+ <button label="Отменить продажу земли" label_selected="Отменить продажу земли" name="Cancel Land Sale"/>
+ <text name="Claimed:">
+ Собственность с:
+ </text>
+ <text name="DateClaimText">
+ Вт 15 Авг 13:47:25 2006
+ </text>
+ <text name="PriceLabel">
+ Площадь:
+ </text>
+ <text name="PriceText">
+ 4048 м²
+ </text>
+ <text name="Traffic:">
+ Посещаемость:
+ </text>
+ <text name="DwellText">
+ 0
+ </text>
+ <button label="Купить землю" name="Buy Land..."/>
+ <button label="Продать для Linden" name="Linden Sale..." tool_tip="Земля должна быть в собственности, иметь заданное содержимое и не быть выставленной на аукцион,"/>
+ <button label="Информация о скриптах" name="Scripts..."/>
+ <button label="Купить для группы" name="Buy For Group..."/>
+ <button label="Купить пропуск" name="Buy Pass..." tool_tip="Пропуск дает вам временный доступ на эту землю."/>
+ <button label="Отказаться от земли" name="Abandon Land..."/>
+ <button label="Присвоить землю" name="Reclaim Land..."/>
+ </panel>
+ <panel label="СОГЛАШЕНИЕ" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ Купленная в этом регионе земля может быть перепродана.
+ </panel.string>
+ <panel.string name="can_not_resell">
+ Купленная в этом регионе земля не может быть перепродана.
+ </panel.string>
+ <panel.string name="can_change">
+ Купленная в этом регионе земля может быть объединена или разделена.
+ </panel.string>
+ <panel.string name="can_not_change">
+ Купленная в этом регионе земля не может быть объединена или разделена.
+ </panel.string>
+ <text name="estate_section_lbl">
+ Землевладение:
+ </text>
+ <text name="estate_name_text">
+ материк
+ </text>
+ <text name="estate_owner_lbl">
+ Владелец:
+ </text>
+ <text name="estate_owner_text">
+ (нет)
+ </text>
+ <text_editor name="covenant_editor">
+ Нет соглашения для этого землевладения.
+ </text_editor>
+ <text name="covenant_timestamp_text">
+ Последние изменения Ср 31 Дек 16:00:00 1969
+ </text>
+ <text name="region_section_lbl">
+ Регион:
+ </text>
+ <text name="region_name_text">
+ Эрикавиль
+ </text>
+ <text name="region_landtype_lbl">
+ Тип:
+ </text>
+ <text name="region_landtype_text">
+ Материк / поместье
+ </text>
+ <text name="region_maturity_lbl">
+ Рейтинг:
+ </text>
+ <text name="region_maturity_text">
+ Взрослый
+ </text>
+ <text name="resellable_lbl">
+ Перепродажа:
+ </text>
+ <text name="resellable_clause">
+ Земля в этом регионе не может быть перепродана.
+ </text>
+ <text name="changeable_lbl">
+ Разделение:
+ </text>
+ <text name="changeable_clause">
+ Земля в этом регионе не может быть объединена или разделена.
+ </text>
+ </panel>
+ <panel label="ОБЪЕКТЫ" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] из [MAX] ([AVAILABLE] доступно)
+ </panel.string>
+ <panel.string name="objects_deleted_text">
+ [COUNT] из [MAX] ([DELETED] будет удалено)
+ </panel.string>
+ <text name="parcel_object_bonus">
+ Бонусный множитель для объектов: [BONUS]
+ </text>
+ <text name="Simulator primitive usage:">
+ Емкость региона:
+ </text>
+ <text name="objects_available">
+ [COUNT] из [MAX] ([AVAILABLE] доступно)
+ </text>
+ <text name="Primitives parcel supports:">
+ Емкость участка:
+ </text>
+ <text name="object_contrib_text">
+ [COUNT]
+ </text>
+ <text name="Primitives on parcel:">
+ Воздействие участка:
+ </text>
+ <text name="total_objects_text">
+ [COUNT]
+ </text>
+ <text name="Owned by parcel owner:">
+ Собственность владельца:
+ </text>
+ <text name="owner_objects_text">
+ [COUNT]
+ </text>
+ <button label="Показать" label_selected="Показать" name="ShowOwner"/>
+ <button label="Возврат" name="ReturnOwner..." tool_tip="Вернуть объекты их владельцам."/>
+ <text name="Set to group:">
+ Установлено группой:
+ </text>
+ <text name="group_objects_text">
+ [COUNT]
+ </text>
+ <button label="Показать" label_selected="Показать" name="ShowGroup"/>
+ <button label="Возврат" name="ReturnGroup..." tool_tip="Вернуть объекты их владельцам."/>
+ <text name="Owned by others:">
+ Собственность других:
+ </text>
+ <text name="other_objects_text">
+ [COUNT]
+ </text>
+ <button label="Показать" label_selected="Показать" name="ShowOther"/>
+ <button label="Возврат" name="ReturnOther..." tool_tip="Вернуть объекты их владельцам."/>
+ <text name="Selected / sat upon:">
+ Выбрано / транспорт:
+ </text>
+ <text name="selected_objects_text">
+ [COUNT]
+ </text>
+ <text name="Autoreturn">
+ Автовозвращение объектов других жителей (в минутах, 0 – отключено):
+ </text>
+ <text name="Object Owners:">
+ Владельцы объектов:
+ </text>
+ <button name="Refresh List" tool_tip="Обновить список объектов"/>
+ <button label="Вернуть объекты" name="Return objects..."/>
+ <name_list name="owner list">
+ <name_list.columns label="Тип" name="type"/>
+ <name_list.columns label="Название" name="name"/>
+ <name_list.columns label="Кол-во" name="count"/>
+ <name_list.columns label="Последний объект" name="mostrecent"/>
+ </name_list>
+ </panel>
+ <panel label="НАСТРОЙКИ" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ Позволить людям видеть участок в результатах поиска
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ Этот параметр недоступен, потому площадь участка не превышает 128 м².
+Только большие участки могут быть показаны в поиске.
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ Этот параметр недоступен, потому что вы не можете изменять его на этом участке.
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Умеренный контент
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Контент для взрослых
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ Информация или содержимое вашего участка расценивается как moderate.
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ Информация или содержимое вашего участка расценивается как adult.
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (нет)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ Не толкать
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ Не толкать (настройки региона)
+ </panel.string>
+ <panel.string name="see_avs_text">
+ Видеть жителей этого участка и общаться с ними в чате
+ </panel.string>
+ <text name="allow_label">
+ Позволить другим жителям:
+ </text>
+ <check_box label="Изменить ландшафт" name="edit land check" tool_tip="Если отмечено, вашу землю сможет терраформировать кто угодно. Лучше не отмечать, так как вы всегда можете изменить вашу землю."/>
+ <check_box label="Полет" name="check fly" tool_tip="Если отмечено, жители смогут летать над вашей землей. Если не отметить, они смогут только прилетать и пролетать мимо земли."/>
+ <text name="allow_label2">
+ Строительство:
+ </text>
+ <check_box label="Все" name="edit objects check"/>
+ <check_box label="Группа" name="edit group objects check"/>
+ <text name="allow_label3">
+ Проникновение объектов:
+ </text>
+ <check_box label="Все" name="all object entry check"/>
+ <check_box label="Группа" name="group object entry check"/>
+ <text name="allow_label4">
+ Запускать скрипты:
+ </text>
+ <check_box label="Все" name="check other scripts"/>
+ <check_box label="Группа" name="check group scripts"/>
+ <text name="land_options_label">
+ Параметры земли:
+ </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="Позволить людям видеть участок в результатах поиска"/>
+ <combo_box name="land category with adult">
+ <combo_box.item label="Любая категория" name="item0"/>
+ <combo_box.item label="Место Linden" name="item1"/>
+ <combo_box.item label="Взрослый" name="item2"/>
+ <combo_box.item label="Искусство и культура" name="item3"/>
+ <combo_box.item label="Бизнес" name="item4"/>
+ <combo_box.item label="Образование" name="item5"/>
+ <combo_box.item label="Игры" name="item6"/>
+ <combo_box.item label="Места встреч" name="item7"/>
+ <combo_box.item label="Для новичков" name="item8"/>
+ <combo_box.item label="Парки и природа" name="item9"/>
+ <combo_box.item label="Проживание" name="item10"/>
+ <combo_box.item label="Покупки" name="item11"/>
+ <combo_box.item label="Аренда" name="item13"/>
+ <combo_box.item label="Другое" name="item12"/>
+ </combo_box>
+ <combo_box name="land category">
+ <combo_box.item label="Любая категория" name="item0"/>
+ <combo_box.item label="Место Linden" name="item1"/>
+ <combo_box.item label="Искусство и культура" name="item3"/>
+ <combo_box.item label="Бизнес" name="item4"/>
+ <combo_box.item label="Образование" name="item5"/>
+ <combo_box.item label="Игры" name="item6"/>
+ <combo_box.item label="Места встреч" name="item7"/>
+ <combo_box.item label="Для новичков" name="item8"/>
+ <combo_box.item label="Парки и природа" name="item9"/>
+ <combo_box.item label="Проживание" name="item10"/>
+ <combo_box.item label="Покупки" name="item11"/>
+ <combo_box.item label="Аренда" name="item13"/>
+ <combo_box.item label="Другое" name="item12"/>
+ </combo_box>
+ <check_box label="Умеренный контент" name="MatureCheck" tool_tip=" "/>
+ <text name="Snapshot:">
+ Снимок:
+ </text>
+ <texture_picker name="snapshot_ctrl" tool_tip="Щелкните для выбора изображения"/>
+ <text name="allow_label5">
+ Позволить жителям с других участков:
+ </text>
+ <check_box label="Видны аватары" name="SeeAvatarsCheck" tool_tip="Жители с других участков могут видеть жителей этого участка и общаться с ними в чате (вы также сможете видеть жителей с других участков и общаться с ними)."/>
+ <text name="landing_point">
+ В точку телепортации: [LANDING]
+ </text>
+ <button label="Задать" label_selected="Задать" name="Set" tool_tip="Установить точку телепортации, в которую будут прибывать посетители, Ставится в месте вашего аватара на этом участке."/>
+ <button label="Чисто" label_selected="Чисто" name="Clear" tool_tip="Удалить данные о точке телепортации"/>
+ <text name="Teleport Routing: ">
+ Вариант телепортации:
+ </text>
+ <combo_box name="landing type" tool_tip="Вариант телепортации – выберите, каким образом будет производиться телепортация на вашу землю">
+ <combo_box.item label="В черном списке" name="Blocked"/>
+ <combo_box.item label="В точку телепортации" name="LandingPoint"/>
+ <combo_box.item label="В любое место" name="Anywhere"/>
+ </combo_box>
+ </panel>
+ <panel label="МЕДИА" name="land_media_panel">
+ <text name="with media:">
+ Тип:
+ </text>
+ <combo_box name="media type" tool_tip="Укажите, чем является ссылка – видео, веб-страница или другое медиа"/>
+ <text name="at URL:">
+ Дом. страница:
+ </text>
+ <button label="Задать" name="set_media_url"/>
+ <text name="Description:">
+ Описание:
+ </text>
+ <line_editor name="url_description" tool_tip="Текст, показываемый рядом с кнопкой проигрывания/загрузки"/>
+ <text name="Media texture:">
+ Замена текстуры:
+ </text>
+ <texture_picker name="media texture" tool_tip="Щелкните для выбора изображения"/>
+ <text name="replace_texture_help">
+ Объект, использующий эту текстуру, будет показывать видео или веб-страницу после нажатия кнопки проигрывания. Щелкните на миниатюре для выбора другой текстуры.
+ </text>
+ <check_box label="Автомасштабирование" name="media_auto_scale" tool_tip="В результате установки этого флажка контент для этого участка автоматически масштабируется. Это происходит немного медленнее и в более низком качестве изображения, но не требуется масштабирование и выравнивание текстуры."/>
+ <text name="media_size" tool_tip="Размер отображения веб-медиа, по умолчанию – 0.">
+ Размер:
+ </text>
+ <spinner name="media_size_width" tool_tip="Размер отображения веб-медиа, по умолчанию – 0."/>
+ <spinner name="media_size_height" tool_tip="Размер отображения веб-медиа, по умолчанию – 0."/>
+ <text name="pixels">
+ пикс.
+ </text>
+ <text name="Options:">
+ Опции:
+ </text>
+ <check_box label="Цикл" name="media_loop" tool_tip="Проигрывать медиа в цикле. По завершении проигрывания медиа оно запустится с начала."/>
+ </panel>
+ <panel label="ЗВУК" name="land_audio_panel">
+ <text name="MusicURL:">
+ URL музыки:
+ </text>
+ <text name="Sound:">
+ Звук:
+ </text>
+ <check_box label="Запретить звуки от жестов и объектов на этом участке" name="check sound local"/>
+ <text name="Avatar Sounds:">
+ Звуки аватара:
+ </text>
+ <check_box label="Все" name="all av sound check"/>
+ <check_box label="Группа" name="group av sound check"/>
+ <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_local"/>
+ </panel>
+ <panel label="ДОСТУП" name="land_access_panel">
+ <panel.string name="access_estate_defined">
+ (Определено на землевладении)
+ </panel.string>
+ <panel.string name="allow_public_access">
+ Разрешить общий доступ ([MATURITY]) (Снятие приведет к созданию линий запрета)
+ </panel.string>
+ <panel.string name="estate_override">
+ Часть этих параметров установлена на уровне землевладения
+ </panel.string>
+ <text name="Limit access to this parcel to:">
+ Доступ на этот участок
+ </text>
+ <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="Разрешить временный доступ к участку."/>
+ <combo_box name="pass_combo">
+ <combo_box.item label="Все" name="Anyone"/>
+ <combo_box.item label="Группа" name="Group"/>
+ </combo_box>
+ <spinner label="Цена в L$:" name="PriceSpin"/>
+ <spinner label="Часы доступа:" name="HoursSpin"/>
+ <panel name="Allowed_layout_panel">
+ <text label="Всегда разрешено" name="AllowedText">
+ Допущенные жители
+ </text>
+ <name_list name="AccessList" tool_tip="([LISTED] в списке, [MAX] максимум)"/>
+ <button label="Добавить" name="add_allowed"/>
+ <button label="Удалить" label_selected="Удалить" name="remove_allowed"/>
+ </panel>
+ <panel name="Banned_layout_panel">
+ <text label="Бан" name="BanCheck">
+ Забаненные жители
+ </text>
+ <name_list name="BannedList" tool_tip="([LISTED] в списке, [MAX] максимум)"/>
+ <button label="Добавить" name="add_banned"/>
+ <button label="Удалить" label_selected="Удалить" name="remove_banned"/>
+ </panel>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_activeim.xml b/indra/newview/skins/default/xui/ru/floater_activeim.xml
new file mode 100644
index 0000000000..adfa277822
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="АКТИВНОЕ СООБЩЕНИЕ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_animation_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_preview.xml
new file mode 100644
index 0000000000..b7075fbf97
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_animation_preview.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview">
+ <floater.string name="failed_to_initialize">
+ Невозможно инициализировать движение
+ </floater.string>
+ <floater.string name="anim_too_long">
+ Длина файла анимации: [LENGTH] с.
+Максимальная длина анимации: [MAX_LENGTH] с.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ Невозможно прочитать файл анимации.
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ ОК
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Преждевременный конец файла.
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ Не могу прочитать определение ограничений.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ Не удалось открыть BVH-файл.
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ Неправильный заголовок HIERARCHY.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ Не удалось найти ROOT или JOINT.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ Не удалось получить имя JOINT.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ Не удалось найти OFFSET.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ Не удалось найти CHANNELS.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ Не удалось получить порядок вращения.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ Не удалось получить оси вращения.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ Не удалось найти MOTION.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ Не удалось получить количество кадров.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ Не удалось получить время кадра.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ Не удалось получить значения position.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ Не удалось получить значения rotation.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ Не удалось открыть файл перевода.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Не удалось прочитать заголовок перевода.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Не удалось прочитать имена перевода.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Не удалось прочитать значение перевода ignore.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Не удалось прочитать значение перевода relative.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Не удалось прочитать значение перевода outname.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Не удалось прочитать матрицу перевода.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Не удалось получить имя mergechild.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Не удалось получить имя mergeparent.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ Не удалось получить значение priority.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ Не удалось получить значение loop.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ Не удалось получить значения easeIn.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ Не удалось получить значения easeOut.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ Не удалось получить значение hand morph.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ Не удалось прочитать имя emote.
+ </floater.string>
+ <floater.string name="E_ST_BAD_ROOT">
+ Неверное имя корневого соединения, должно быть «hip».
+ </floater.string>
+ <text name="name_label">
+ Название:
+ </text>
+ <text name="description_label">
+ Описание:
+ </text>
+ <spinner label="Приоритет" name="priority" tool_tip="Управляет тем, как другие анимации могут перекрываться этой"/>
+ <check_box label="Цикл" name="loop_check" tool_tip="Делает анимацию зацикленной"/>
+ <spinner label="Начало(%)" name="loop_in_point" tool_tip="Устанавливает точку возврата цикла"/>
+ <spinner label="Конец(%)" name="loop_out_point" tool_tip="Устанавливает точку конца цикла"/>
+ <text name="hand_label">
+ Положение пальцев
+ </text>
+ <combo_box name="hand_pose_combo" tool_tip="Контролирует положение пальцев во время анимации">
+ <combo_box.item label="Разведены" name="Spread"/>
+ <combo_box.item label="Расслаблены" name="Relaxed"/>
+ <combo_box.item label="Указывают" name="PointBoth"/>
+ <combo_box.item label="Сжаты в кулаки" name="Fist"/>
+ <combo_box.item label="Левые расслаблены" name="RelaxedLeft"/>
+ <combo_box.item label="Левые указывают" name="PointLeft"/>
+ <combo_box.item label="Левые в кулак" name="FistLeft"/>
+ <combo_box.item label="Правые расслаблены" name="RelaxedRight"/>
+ <combo_box.item label="Правые указывают" name="PointRight"/>
+ <combo_box.item label="Правые в кулак" name="FistRight"/>
+ <combo_box.item label="Правые в приветствии" name="SaluteRight"/>
+ <combo_box.item label="Печатают" name="Typing"/>
+ <combo_box.item label="Правые «V»" name="PeaceRight"/>
+ </combo_box>
+ <text name="emote_label">
+ Выражение лица
+ </text>
+ <combo_box name="emote_combo" tool_tip="Контролирует выражение лица во время анимации">
+ <item label="(нет)" name="[None]" value=""/>
+ <item label="Ааааах" name="Aaaaah" value="Ааааах"/>
+ <item label="Боится" name="Afraid" value="Боится"/>
+ <item label="Злится" name="Angry" value="Злится"/>
+ <item label="Широко улыбается" name="BigSmile" value="Широко улыбается"/>
+ <item label="Скучает" name="Bored" value="Скучает"/>
+ <item label="Плачет" name="Cry" value="Плачет"/>
+ <item label="Презирает" name="Disdain" value="Презирает"/>
+ <item label="Смущается" name="Embarrassed" value="Смущается"/>
+ <item label="Хмурится" name="Frown" value="Хмурится"/>
+ <item label="Целует" name="Kiss" value="Целует"/>
+ <item label="Смеется" name="Laugh" value="Смеется"/>
+ <item label="Дразнится" name="Plllppt" value="Дразнится"/>
+ <item label="Не соглашается" name="Repulsed" value="Не соглашается"/>
+ <item label="Грустит" name="Sad" value="Грустит"/>
+ <item label="Не понимает" name="Shrug" value="Не понимает"/>
+ <item label="Улыбается" name="Smile" value="Улыбается"/>
+ <item label="Удивляется" name="Surprise" value="Удивляется"/>
+ <item label="Подмигивает" name="Wink" value="Подмигивает"/>
+ <item label="Беспокоится" name="Worry" value="Беспокоится"/>
+ </combo_box>
+ <text name="preview_label">
+ Просмотр во время
+ </text>
+ <combo_box name="preview_base_anim" tool_tip="Просмотр вашей анимации во время выполнения аватаром действий.">
+ <item label="Стояние" name="Standing" value="Стояние"/>
+ <item label="Ходьба" name="Walking" value="Ходьба"/>
+ <item label="Сидение" name="Sitting" value="Сидение"/>
+ <item label="Полет" name="Flying" value="Полет"/>
+ </combo_box>
+ <spinner label="Вход (сек.)" name="ease_in_time" tool_tip="Количество времени (в секундах) для входа в стартовое положение"/>
+ <spinner label="Выход (сек.)" name="ease_out_time" tool_tip="Количество времени (в секундах) для выхода из анимации"/>
+ <button name="play_btn" tool_tip="Проиграть анимацию"/>
+ <button name="pause_btn" tool_tip="Приостановить анимацию"/>
+ <button name="stop_btn" tool_tip="Остановить проигрывание анимации"/>
+ <text name="bad_animation_text">
+ Невозможно прочитать файл анимации.
+Рекомендуется использовать BVH-файлы, экспортированные из Poser 4.
+ </text>
+ <button label="Передать (L$[AMOUNT])" name="ok_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_auction.xml b/indra/newview/skins/default/xui/ru/floater_auction.xml
new file mode 100644
index 0000000000..d84dc2e941
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_auction.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_auction" title="НАЧАТЬ ПРОДАЖУ ЗЕМЛИ ЛИНДЕНОВ">
+ <floater.string name="already for sale">
+ Нельзя выставить на аукцион участки, которые уже продаются.
+ </floater.string>
+ <check_box initial_value="истина" label="Включая желтую ограду вокруг выбранного участка" name="fence_check"/>
+ <button label="Снимок" label_selected="Снимок" name="snapshot_btn"/>
+ <button label="Купить может каждый" label_selected="Купить может каждый" name="sell_to_anyone_btn"/>
+ <button label="Очистить настройки" label_selected="Очистить настройки" name="reset_parcel_btn"/>
+ <button label="Начать аукцион" label_selected="Начать аукцион" name="start_auction_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar.xml b/indra/newview/skins/default/xui/ru/floater_avatar.xml
new file mode 100644
index 0000000000..6bdf819880
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="ВЫБОР АВАТАРА"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml
new file mode 100644
index 0000000000..edcc35d2b9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatarpicker" title="ВЫБЕРИТЕ ЖИТЕЛЯ">
+ <floater.string name="not_found">
+ Текст «[TEXT]» не найден
+ </floater.string>
+ <floater.string name="no_one_near">
+ Рядом никого нет
+ </floater.string>
+ <floater.string name="no_results">
+ Нет результатов
+ </floater.string>
+ <floater.string name="searching">
+ Поиск...
+ </floater.string>
+ <string name="Select">
+ Выбрать
+ </string>
+ <string name="Close">
+ Закрыть
+ </string>
+ <tab_container name="ResidentChooserTabs">
+ <panel label="Поиск" name="SearchPanel">
+ <text name="InstructSearchResidentName">
+ Наберите часть имени жителя:
+ </text>
+ <button label="Перейти" label_selected="Перейти" name="Find"/>
+ <scroll_list name="SearchResults">
+ <columns label="Название" name="name"/>
+ <columns label="Имя пользователя" name="username"/>
+ </scroll_list>
+ </panel>
+ <panel label="Друзья" name="FriendsPanel">
+ <text name="InstructSelectFriend">
+ Выберите жителя:
+ </text>
+ </panel>
+ <panel label="Рядом со мной" name="NearMePanel">
+ <text name="InstructSelectResident">
+ Выберите жителя поблизости:
+ </text>
+ <slider label="Расстояние" name="near_me_range"/>
+ <text name="meters">
+ Метров
+ </text>
+ <scroll_list name="NearMe">
+ <columns label="Название" name="name"/>
+ <columns label="Имя пользователя" name="username"/>
+ </scroll_list>
+ </panel>
+ </tab_container>
+ <button label="ОК" label_selected="ОК" name="ok_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml
new file mode 100644
index 0000000000..cb39f66247
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatar_texture_debug" title="ТЕКСТУРЫ АВАТАРА">
+ <floater.string name="InvalidAvatar">
+ НЕПРАВИЛЬНЫЙ АВАТАР
+ </floater.string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="label">
+ Сброшенные
+Текстуры
+ </text>
+ <text name="composite_label">
+ Сложные
+Текстуры
+ </text>
+ <button label="Вывод ID на консоль" label_selected="Вывод" name="Dump"/>
+ <panel name="scroll_content_panel">
+ <texture_picker label="Волосы" name="hair-baked"/>
+ <texture_picker label="Волосы" name="hair_grain"/>
+ <texture_picker label="Альфа волос" name="hair_alpha"/>
+ <texture_picker label="Голова" name="head-baked"/>
+ <texture_picker label="Макияж" name="head_bodypaint"/>
+ <texture_picker label="Альфа головы" name="head_alpha"/>
+ <texture_picker label="Тату головы" name="head_tattoo"/>
+ <texture_picker label="Глаза" name="eyes-baked"/>
+ <texture_picker label="Глаз" name="eyes_iris"/>
+ <texture_picker label="Альфа глаз" name="eyes_alpha"/>
+ <texture_picker label="Верхняя часть тела" name="upper-baked"/>
+ <texture_picker label="Раскраска верхней части тела" name="upper_bodypaint"/>
+ <texture_picker label="Майка" name="upper_undershirt"/>
+ <texture_picker label="Перчатки" name="upper_gloves"/>
+ <texture_picker label="Рубашка" name="upper_shirt"/>
+ <texture_picker label="Верх пиджака" name="upper_jacket"/>
+ <texture_picker label="Альфа верха" name="upper_alpha"/>
+ <texture_picker label="Тату верха" name="upper_tattoo"/>
+ <texture_picker label="Нижняя часть тела" name="lower-baked"/>
+ <texture_picker label="Раскраска нижней части тела" name="lower_bodypaint"/>
+ <texture_picker label="Трусы" name="lower_underpants"/>
+ <texture_picker label="Носки" name="lower_socks"/>
+ <texture_picker label="Обувь" name="lower_shoes"/>
+ <texture_picker label="Брюки" name="lower_pants"/>
+ <texture_picker label="Пиджак" name="lower_jacket"/>
+ <texture_picker label="Альфа низа" name="lower_alpha"/>
+ <texture_picker label="Тату низа" name="lower_tattoo"/>
+ <texture_picker label="Юбка" name="skirt-baked"/>
+ <texture_picker label="Юбка" name="skirt"/>
+ </panel>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_beacons.xml b/indra/newview/skins/default/xui/ru/floater_beacons.xml
new file mode 100644
index 0000000000..38d257ff81
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_beacons.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="МЕТКИ">
+ <panel name="beacons_panel">
+ <text name="label_show">
+ Показать:
+ </text>
+ <check_box label="Метки" name="beacons"/>
+ <check_box label="Подсветку" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="Ширина меток">
+ Ширина:
+ </text>
+ <text name="label_objects">
+ Для этих объектов:
+ </text>
+ <check_box label="Физический" name="physical"/>
+ <check_box label="Скриптовые" name="scripted"/>
+ <check_box label="Только касание" name="touch_only"/>
+ <check_box label="Источники звука" name="sounds"/>
+ <check_box label="Источники частиц" name="particles"/>
+ <check_box label="Источники медиа" name="moapbeacon"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_build_options.xml b/indra/newview/skins/default/xui/ru/floater_build_options.xml
new file mode 100644
index 0000000000..9dd01dc823
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_build_options.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="НАСТРОЙКИ СЕТКИ">
+ <floater.string name="grid_screen_text">
+ Экран
+ </floater.string>
+ <floater.string name="grid_local_text">
+ Локальная
+ </floater.string>
+ <floater.string name="grid_world_text">
+ Мир
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ Точка отсчета
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ Присоединение
+ </floater.string>
+ <text name="grid_mode_label" tool_tip="Прозрачность сетки">
+ Режим
+ </text>
+ <combo_box name="combobox grid mode" tool_tip="Выберите тип линейки сетки для размещения объекта">
+ <combo_box.item label="Всемирная" name="World"/>
+ <combo_box.item label="Локальная сетка" name="Local"/>
+ <combo_box.item label="Координатная сетка" name="Reference"/>
+ </combo_box>
+ <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>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
new file mode 100644
index 0000000000..ccf13cf02a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="ИЗМЕНИТЬ РАЗРЕШЕНИЯ НА ИСПОЛЬЗОВАНИЕ КОНТЕНТА">
+ <floater.string name="nothing_to_modify_text">
+ В выбранной области нет контента, который можно изменять.
+ </floater.string>
+ <floater.string name="status_text">
+ Задание разрешений для [NAME]
+ </floater.string>
+ <floater.string name="start_text">
+ Создание запроса на изменение разрешений...
+ </floater.string>
+ <floater.string name="done_text">
+ Выполненные запросы на изменение разрешений.
+ </floater.string>
+ <icon name="icon_animation" tool_tip="Анимация"/>
+ <icon name="icon_bodypart" tool_tip="Части тела"/>
+ <icon name="icon_clothing" tool_tip="Одежда"/>
+ <icon name="icon_gesture" tool_tip="Жесты"/>
+ <icon name="icon_notecard" tool_tip="Заметки"/>
+ <icon name="icon_object" tool_tip="Объекты"/>
+ <icon name="icon_script" tool_tip="Скрипты"/>
+ <icon name="icon_sound" tool_tip="Звуки"/>
+ <icon name="icon_texture" tool_tip="Текстуры"/>
+ <button label="√ Все" name="check_all"/>
+ <button label="Очистить" label_selected="Нет" name="check_none"/>
+ <text name="newperms">
+ Новые разрешения на контент
+ </text>
+ <text name="GroupLabel">
+ Группа:
+ </text>
+ <check_box label="Поделиться" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ Все:
+ </text>
+ <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 initial_value="истина" label="Передать" name="next_owner_transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+ <button label="ОК" name="apply"/>
+ <button label="Отмена" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_bumps.xml b/indra/newview/skins/default/xui/ru/floater_bumps.xml
new file mode 100644
index 0000000000..f81f728290
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_bumps.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_bumps" title="СТОЛКНОВЕНИЯ, ТОЛЧКИ И УДАРЫ">
+ <floater.string name="none_detected">
+ Ничего не обнаружено
+ </floater.string>
+ <floater.string name="bump">
+ [TIME] [NAME] столкнулся с вами
+ </floater.string>
+ <floater.string name="llpushobject">
+ [TIME] [NAME] толкнул вас с помощью скрипта
+ </floater.string>
+ <floater.string name="selected_object_collide">
+ [TIME] [NAME] ударил вас объектом
+ </floater.string>
+ <floater.string name="scripted_object_collide">
+ [TIME] [NAME] ударил вас скриптовым объектом
+ </floater.string>
+ <floater.string name="physical_object_collide">
+ [TIME] [NAME] ударил вас физическим объектом
+ </floater.string>
+ <floater.string name="timeStr">
+ [[hour,datetime,slt]:[min,datetime,slt]]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_contents.xml b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml
new file mode 100644
index 0000000000..b1d66ae14d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_contents" title="ПОКУПКА СОДЕРЖИМОГО">
+ <floater.string name="no_copy_text">
+ (не копируется)
+ </floater.string>
+ <floater.string name="no_modify_text">
+ (не изменяется)
+ </floater.string>
+ <floater.string name="no_transfer_text">
+ (не передается)
+ </floater.string>
+ <text name="contains_text">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; содержит:
+ </text>
+ <text name="buy_text">
+ Купить за L$[AMOUNT] у жителя [NAME]?
+ </text>
+ <check_box label="Надеть одежду сейчас" name="wear_check"/>
+ <button label="Купить" label_selected="Купить" name="buy_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml
new file mode 100644
index 0000000000..7d34ca3274
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="КУПИТЬ L$">
+ <floater.string name="buy_currency">
+ Купить L$ [LINDENS] примерно за [LOCALAMOUNT]
+ </floater.string>
+ <text name="info_need_more">
+ Вам нужно больше L$
+ </text>
+ <text name="contacting">
+ Соединение с LindeX...
+ </text>
+ <text name="info_buying">
+ Купить L$
+ </text>
+ <text name="balance_label">
+ У меня есть
+ </text>
+ <text name="balance_amount">
+ L$ [AMT]
+ </text>
+ <text name="currency_action">
+ Я хочу купить
+ </text>
+ <text name="currency_label">
+ L$
+ </text>
+ <line_editor label="L$" name="currency_amt">
+ 1234
+ </line_editor>
+ <text name="buying_label">
+ По цене
+ </text>
+ <text name="currency_est">
+ примерно [LOCALAMOUNT]
+ </text>
+ <text name="getting_data">
+ Подсчет...
+ </text>
+ <text name="buy_action">
+ [ACTION]
+ </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 способ оплаты] | [http://www.secondlife.com/my/account/currency.php валюта]
+ </text>
+ <text name="exchange_rate_note">
+ Повторно введите сумму, чтобы увидеть новый обменный курс.
+ </text>
+ <text name="purchase_warning_repurchase">
+ Подтверждение этой сделки приведет к покупке L$, а не объектов.
+ </text>
+ <text name="purchase_warning_notenough">
+ Вы не приобрели достаточного количества L$. Увеличьте количество.
+ </text>
+ <button label="Приобрести" name="buy_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+ <text name="info_cannot_buy">
+ Нельзя купить
+ </text>
+ <button label="Продолжить в Интернете" name="error_web"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml
new file mode 100644
index 0000000000..ac8ad469fb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_currency_html" title="КУПИТЬ ВАЛЮТУ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_land.xml b/indra/newview/skins/default/xui/ru/floater_buy_land.xml
new file mode 100644
index 0000000000..907a795393
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_land.xml
@@ -0,0 +1,233 @@
+<?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>
+ <text name="region_name_label">
+ Регион:
+ </text>
+ <text name="region_name_text">
+ (неизвестно)
+ </text>
+ <text name="region_type_label">
+ Тип:
+ </text>
+ <text name="region_type_text">
+ (неизвестно)
+ </text>
+ <text name="estate_name_label">
+ Землевладение:
+ </text>
+ <text name="estate_name_text">
+ (неизвестно)
+ </text>
+ <text name="estate_owner_label">
+ Землевладелец:
+ </text>
+ <text name="estate_owner_text">
+ (неизвестно)
+ </text>
+ <text name="resellable_changeable_label">
+ Приобретенная в этом регионе земля:
+ </text>
+ <text name="resellable_clause">
+ Может или не может быть перепродана.
+ </text>
+ <text name="changeable_clause">
+ Может или не может быть объединена или разделена.
+ </text>
+ <text name="covenant_text">
+ Вы должны принять соглашение по землевладению:
+ </text>
+ <text_editor name="covenant_editor">
+ Загрузка...
+ </text_editor>
+ <check_box label="Я принимаю соглашение, определенное выше." name="agree_covenant"/>
+ <text name="info_parcel_label">
+ Участок:
+ </text>
+ <text name="info_parcel">
+ Scotopteryx 138,204
+ </text>
+ <text name="info_size_label">
+ Размер:
+ </text>
+ <text name="info_size">
+ 1024 м²
+ </text>
+ <text name="info_price_label">
+ Цена:
+ </text>
+ <text name="info_price">
+ L$ 1500
+(L$ 1,1/м²)
+продано с объектами
+ </text>
+ <text name="info_action">
+ Покупка этой земли будет:
+ </text>
+ <text name="error_message">
+ Что-то не правильно.
+ </text>
+ <button label="Перейти на сайт" name="error_web"/>
+ <text name="account_action">
+ Улучшить ваш аккаунт до уровня Premium.
+ </text>
+ <text name="account_reason">
+ Только премиум-участники могут владеть землей.
+ </text>
+ <combo_box name="account_level">
+ <combo_box.item label="9,95 долл. США/мес, оплачивается ежемесячно" name="US$9.95/month,billedmonthly"/>
+ <combo_box.item label="7,50 долл. США/мес, оплачивается ежеквартально" name="US$7.50/month,billedquarterly"/>
+ <combo_box.item label="6,00 долл. США/мес, оплачивается ежегодно" name="US$6.00/month,billedannually"/>
+ </combo_box>
+ <text name="land_use_action">
+ Увеличит вашу месячную оплату на US$ 40/мес.
+ </text>
+ <text name="land_use_reason">
+ Вы владеете 1309 м² земли.
+В этом участке 512 м² земли.
+ </text>
+ <text name="purchase_action">
+ Заплатить жителю Joe L$ 4000 за землю
+ </text>
+ <text name="currency_reason">
+ У вас L$ 2100.
+ </text>
+ <text name="currency_action">
+ Покупка L$
+ </text>
+ <line_editor name="currency_amt">
+ 1000
+ </line_editor>
+ <text name="currency_est">
+ обойдется примерно в [LOCAL_AMOUNT]
+ </text>
+ <text name="currency_balance">
+ У вас L$ 2100.
+ </text>
+ <check_box label="Удалить [AMOUNT] м² взноса из группы." name="remove_contribution"/>
+ <button label="Покупка" name="buy_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_object.xml b/indra/newview/skins/default/xui/ru/floater_buy_object.xml
new file mode 100644
index 0000000000..d25f9eccc2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_object.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="КУПИТЬ КОПИЮ ОБЪЕКТА">
+ <floater.string name="title_buy_text">
+ Купить
+ </floater.string>
+ <floater.string name="title_buy_copy_text">
+ Купить копию
+ </floater.string>
+ <floater.string name="no_copy_text">
+ (не копируется)
+ </floater.string>
+ <floater.string name="no_modify_text">
+ (не изменяется)
+ </floater.string>
+ <floater.string name="no_transfer_text">
+ (не передается)
+ </floater.string>
+ <text name="contents_text">
+ Содержимое:
+ </text>
+ <text name="buy_text">
+ Купить за L$[AMOUNT] у пользователя:
+ </text>
+ <text name="buy_name_text">
+ [NAME]?
+ </text>
+ <button label="Купить" label_selected="Купить" name="buy_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_camera.xml b/indra/newview/skins/default/xui/ru/floater_camera.xml
new file mode 100644
index 0000000000..945a63c0eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_camera.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater" title="КАМЕРА">
+ <floater.string name="rotate_tooltip">
+ Повернуть камеру вокруг точки фокусировки
+ </floater.string>
+ <floater.string name="zoom_tooltip">
+ Приблизить/отдалить камеру относительно точки фокусировки
+ </floater.string>
+ <floater.string name="move_tooltip">
+ Переместить камеру вверх, вниз, влево или вправо
+ </floater.string>
+ <floater.string name="free_mode_title">
+ Смотреть на объект
+ </floater.string>
+ <panel name="controls">
+ <panel name="preset_views_list">
+ <panel_camera_item name="front_view">
+ <panel_camera_item.text name="front_view_text">
+ Вид спереди
+ </panel_camera_item.text>
+ </panel_camera_item>
+ <panel_camera_item name="group_view">
+ <panel_camera_item.text name="side_view_text">
+ Вид сбоку
+ </panel_camera_item.text>
+ </panel_camera_item>
+ <panel_camera_item name="rear_view">
+ <panel_camera_item.text name="rear_view_text">
+ Вид сзади
+ </panel_camera_item.text>
+ </panel_camera_item>
+ </panel>
+ <panel name="camera_modes_list">
+ <panel_camera_item name="object_view">
+ <panel_camera_item.text name="object_view_text">
+ Осмотр объекта
+ </panel_camera_item.text>
+ </panel_camera_item>
+ <panel_camera_item name="mouselook_view">
+ <panel_camera_item.text name="mouselook_view_text">
+ Обзор с помощью мыши
+ </panel_camera_item.text>
+ </panel_camera_item>
+ </panel>
+ <panel name="zoom">
+ <joystick_rotate name="cam_rotate_stick" tool_tip="Повернуть камеру вокруг точки фокусировки"/>
+ <slider_bar name="zoom_slider" tool_tip="Приблизить/отдалить камеру относительно точки фокусировки"/>
+ <joystick_track name="cam_track_stick" tool_tip="Переместить камеру вверх, вниз, влево или вправо"/>
+ </panel>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="presets_btn" tool_tip="Стандартные настройки"/>
+ <button label="" name="pan_btn" tool_tip="Вращение, приближение, сдвиг"/>
+ <button label="" name="avatarview_btn" tool_tip="Режимы камеры"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
new file mode 100644
index 0000000000..eceab1775a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="ЛОКАЛЬНЫЙ ЧАТ">
+ <panel>
+ <line_editor label="Щелкните здесь для общения." name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
+ <button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_choose_group.xml b/indra/newview/skins/default/xui/ru/floater_choose_group.xml
new file mode 100644
index 0000000000..ab8350f539
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_choose_group.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="groups" title="ГРУППЫ">
+ <text name="groupdesc">
+ Выберите группу:
+ </text>
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_color_picker.xml b/indra/newview/skins/default/xui/ru/floater_color_picker.xml
new file mode 100644
index 0000000000..b7034bef0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_color_picker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="ВЫБОР ЦВЕТА">
+ <text name="r_val_text">
+ Красный:
+ </text>
+ <text name="g_val_text">
+ Зеленый:
+ </text>
+ <text name="b_val_text">
+ Синий:
+ </text>
+ <text name="h_val_text">
+ Оттенок:
+ </text>
+ <text name="s_val_text">
+ Насыщен.:
+ </text>
+ <text name="l_val_text">
+ Яркость:
+ </text>
+ <check_box label="Применить сейчас" name="apply_immediate"/>
+ <button label="ОК" label_selected="ОК" name="select_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+ <text name="Current color:">
+ Текущий цвет:
+ </text>
+ <text name="(Drag below to save.)">
+ (Перетащите вниз для сохранения)
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_critical.xml b/indra/newview/skins/default/xui/ru/floater_critical.xml
new file mode 100644
index 0000000000..bc64f3a83e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_critical.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+ <button label="Продолжить" label_selected="Продолжить" name="Continue"/>
+ <text name="tos_heading">
+ Внимательно прочитайте следующее сообщение.
+ </text>
+ <text_editor name="tos_text">
+ TOS_TEXT
+ </text_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml
new file mode 100644
index 0000000000..3303a4f4c1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="УДАЛЕНИЕ НАСТРОЙКИ СРЕДЫ">
+ <string name="title_water">
+ Удалить настройку воды
+ </string>
+ <string name="title_sky">
+ Удалить настройку неба
+ </string>
+ <string name="title_day_cycle">
+ Удалить суточный цикл
+ </string>
+ <string name="label_water">
+ Настройка:
+ </string>
+ <string name="label_sky">
+ Настройка:
+ </string>
+ <string name="label_day_cycle">
+ Суточный цикл:
+ </string>
+ <string name="msg_confirm_deletion">
+ Действительно удалить выбранную настройку?
+ </string>
+ <string name="msg_sky_is_referenced">
+ Нельзя удалить настройку, которая используется в суточных циклах.
+ </string>
+ <string name="combo_label">
+ -Выбор настройки-
+ </string>
+ <text name="label">
+ Настройка:
+ </text>
+ <button label="Удалить" name="delete"/>
+ <button label="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_destinations.xml b/indra/newview/skins/default/xui/ru/floater_destinations.xml
new file mode 100644
index 0000000000..5ba0841564
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="ПУНКТЫ"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/ru/floater_display_name.xml b/indra/newview/skins/default/xui/ru/floater_display_name.xml
new file mode 100644
index 0000000000..feb8a2721f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_display_name.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Display Name" title="СМЕНА ЭКРАННОГО ИМЕНИ">
+ <text name="info_text">
+ Имя, которое вы даете аватару, называется экранным именем. Вы можете менять его раз в неделю.
+ </text>
+ <text name="lockout_text">
+ Вы не можете менять экранное имя до: [TIME].
+ </text>
+ <text name="set_name_label">
+ Новое экранное имя:
+ </text>
+ <text name="name_confirm_label">
+ Наберите новое имя еще раз для подтверждения:
+ </text>
+ <button label="Сохранить" name="save_btn" tool_tip="Сохранить ваше новое экранное имя"/>
+ <button label="Сброс" name="reset_btn" tool_tip="Сменить экранное имя на имя пользователя"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000..61d708c567
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Изменить суточный цикл">
+ <string name="title_new">
+ Создать суточный цикл
+ </string>
+ <string name="title_edit">
+ Изменить суточный цикл
+ </string>
+ <string name="hint_new">
+ Введите имя суточного цикла, задайте его параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </string>
+ <string name="hint_edit">
+ Чтобы изменить суточный цикл, задайте его параметры с помощью элементов управления ниже и нажмите кнопку «Сохранить».
+ </string>
+ <string name="combo_label">
+ -Выбор настройки-
+ </string>
+ <text name="label">
+ Имя настройки:
+ </text>
+ <text name="note">
+ Примечание. Если изменить имя настройки, будет создана новая настройка, а изменения в существующей не будут сохранены.
+ </text>
+ <text name="hint_item1">
+ - Для изменения настроек неба и времени выберите соответствующую вкладку.
+ </text>
+ <text name="hint_item2">
+ - Чтобы задать время переходов, перетаскивайте вкладки.
+ </text>
+ <text name="hint_item3">
+ - Скребок служит для просмотра суточного цикла.
+ </text>
+ <panel name="day_cycle_slider_panel">
+ <multi_slider initial_value="0" name="WLTimeSlider"/>
+ <multi_slider initial_value="0" name="WLDayCycleKeys"/>
+ <button label="+ отметку" label_selected="+ отметку" name="WLAddKey"/>
+ <button label="- отметку" label_selected="- отметку" name="WLDeleteKey"/>
+ <text name="WL12am">
+ 12 ночи
+ </text>
+ <text name="WL3am">
+ 3 ночи
+ </text>
+ <text name="WL6am">
+ 6 утра
+ </text>
+ <text name="WL9amHash">
+ 9 утра
+ </text>
+ <text name="WL12pmHash">
+ 12 дня
+ </text>
+ <text name="WL3pm">
+ 3 дня
+ </text>
+ <text name="WL6pm">
+ 6 вечера
+ </text>
+ <text name="WL9pm">
+ 9 вечера
+ </text>
+ <text name="WL12am2">
+ 12 ночи
+ </text>
+ <text name="WL12amHash">
+ |
+ </text>
+ <text name="WL3amHash">
+ I
+ </text>
+ <text name="WL6amHash">
+ |
+ </text>
+ <text name="WL9amHash2">
+ I
+ </text>
+ <text name="WL12pmHash2">
+ |
+ </text>
+ <text name="WL3pmHash">
+ I
+ </text>
+ <text name="WL6pmHash">
+ |
+ </text>
+ <text name="WL9pmHash">
+ I
+ </text>
+ <text name="WL12amHash2">
+ |
+ </text>
+ </panel>
+ <text name="WLCurKeyPresetText">
+ Небо:
+ </text>
+ <combo_box label="Стандарт" name="WLSkyPresets"/>
+ <text name="WLCurKeyTimeText">
+ Время:
+ </text>
+ <time name="time" value="6:00"/>
+ <check_box label="Установить как новый суточный цикл" name="make_default_cb"/>
+ <button label="Сохранить" name="save"/>
+ <button label="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000..354120ea72
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Изменить настройку неба">
+ <string name="title_new">
+ Создать настройку неба
+ </string>
+ <string name="title_edit">
+ Изменить настройку неба
+ </string>
+ <string name="hint_new">
+ Введите имя настройки, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </string>
+ <string name="hint_edit">
+ Чтобы изменить настройку неба, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </string>
+ <string name="combo_label">
+ -Выбор настройки-
+ </string>
+ <text name="hint">
+ Чтобы изменить настройку, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </text>
+ <text name="label">
+ Имя настройки:
+ </text>
+ <text name="note">
+ Примечание. Если изменить имя настройки, будет создана новая настройка, а изменения в существующей не будут сохранены.
+ </text>
+ <tab_container name="WindLight Tabs">
+ <panel label="АТМОСФЕРА" name="Atmosphere">
+ <text name="BHText">
+ Голубой горизонт
+ </text>
+ <text name="BDensText">
+ Дымка на горизонте
+ </text>
+ <text name="BDensText2">
+ Насыщенность голубого
+ </text>
+ <text name="HDText">
+ Плотность дымки
+ </text>
+ <text name="DensMultText">
+ Коэффициент плотности
+ </text>
+ <text name="WLDistanceMultText">
+ Коэффициент расстояния
+ </text>
+ <text name="MaxAltText">
+ Максимальная высота
+ </text>
+ </panel>
+ <panel label="ОСВЕЩЕНИЕ" name="Lighting">
+ <text name="SLCText">
+ Цвет солнца/луны
+ </text>
+ <text name="WLAmbientText">
+ Рассеянное
+ </text>
+ <text name="SunGlowText">
+ Сияние солнца
+ </text>
+ <slider label="Фокус" name="WLGlowB"/>
+ <slider label="Размер" name="WLGlowR"/>
+ <text name="WLStarText">
+ Яркость звезд
+ </text>
+ <text name="SceneGammaText">
+ Гамма-коррекция сцены
+ </text>
+ <text name="TODText">
+ Положение солнца/луны
+ </text>
+ <multi_slider initial_value="0" name="WLSunPos"/>
+ <text name="WL12amHash">
+ |
+ </text>
+ <text name="WL6amHash">
+ |
+ </text>
+ <text name="WL12pmHash2">
+ |
+ </text>
+ <text name="WL6pmHash">
+ |
+ </text>
+ <text name="WL12amHash2">
+ |
+ </text>
+ <text name="WL12am">
+ 12 ночи
+ </text>
+ <text name="WL6am">
+ 6 утра
+ </text>
+ <text name="WL12pmHash">
+ 12 дня
+ </text>
+ <text name="WL6pm">
+ 6 вечера
+ </text>
+ <text name="WL12am2">
+ 12 ночи
+ </text>
+ <time name="WLDayTime" value="6:00"/>
+ <text name="WLEastAngleText">
+ Смещение отн. востока
+ </text>
+ </panel>
+ <panel label="ОБЛАКА" name="Clouds">
+ <text name="WLCloudColorText">
+ Цвет
+ </text>
+ <text name="WLCloudColorText2">
+ Положение и плотность
+ </text>
+ <slider label="X" name="WLCloudX"/>
+ <slider label="Y" name="WLCloudY"/>
+ <slider label="П" name="WLCloudDensity"/>
+ <text name="WLCloudCoverageText">
+ Облачность
+ </text>
+ <text name="WLCloudScaleText">
+ Размеры
+ </text>
+ <text name="WLCloudDetailText">
+ Детали (положение/плотность)
+ </text>
+ <slider label="X" name="WLCloudDetailX"/>
+ <slider label="Y" name="WLCloudDetailY"/>
+ <slider label="П" name="WLCloudDetailDensity"/>
+ <text name="WLCloudScrollXText">
+ Скорость по X
+ </text>
+ <check_box label="На месте" name="WLCloudLockX"/>
+ <text name="WLCloudScrollYText">
+ Скорость по Y
+ </text>
+ <check_box label="На месте" name="WLCloudLockY"/>
+ </panel>
+ </tab_container>
+ <check_box label="Применить эту настройку неба" name="make_default_cb"/>
+ <button label="Сохранить" name="save"/>
+ <button label="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml
new file mode 100644
index 0000000000..f6def86380
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Изменить настройку воды">
+ <string name="title_new">
+ Создать настройку воды
+ </string>
+ <string name="title_edit">
+ Изменение настройки воды
+ </string>
+ <string name="hint_new">
+ Введите имя настройки, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </string>
+ <string name="hint_edit">
+ Чтобы изменить настройку воды, задайте параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </string>
+ <string name="combo_label">
+ -Выбор настройки-
+ </string>
+ <text name="hint">
+ Чтобы изменить настройку, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+ </text>
+ <text name="label">
+ Имя настройки:
+ </text>
+ <text name="note">
+ Примечание. Если изменить имя настройки, будет создана новая настройка, а изменения в существующей не будут сохранены.
+ </text>
+ <panel name="panel_water_preset">
+ <text name="water_color_label">
+ Оттенок
+ </text>
+ <text name="water_fog_density_label">
+ Прозрачность
+ </text>
+ <text name="underwater_fog_modifier_label">
+ Изменение прозрачности
+ </text>
+ <text name="BHText">
+ Направление больших волн
+ </text>
+ <slider label="X" name="WaterWave1DirX"/>
+ <slider label="Y" name="WaterWave1DirY"/>
+ <text name="BDensText">
+ Степень отражения зыби
+ </text>
+ <text name="HDText">
+ Отражение
+ </text>
+ <text name="FresnelOffsetText">
+ Угловая зависимость
+ </text>
+ <text name="BHText2">
+ Направление ряби
+ </text>
+ <slider label="X" name="WaterWave2DirX"/>
+ <slider label="Y" name="WaterWave2DirY"/>
+ <text name="DensMultText">
+ Преломление (над водой)
+ </text>
+ <text name="WaterScaleBelowText">
+ Преломление (под водой)
+ </text>
+ <text name="MaxAltText">
+ Размытие
+ </text>
+ <text name="BHText3">
+ Карта поверхности
+ </text>
+ </panel>
+ <check_box label="Применить эту настройку воды" name="make_default_cb"/>
+ <button label="Сохранить" name="save"/>
+ <button label="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_env_settings.xml b/indra/newview/skins/default/xui/ru/floater_env_settings.xml
new file mode 100644
index 0000000000..a3e77d61de
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_env_settings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="РЕДАКТОР СРЕДЫ">
+ <floater.string name="timeStr">
+ [hour,datetime,utc]:[min,datetime,utc]
+ </floater.string>
+ <text name="EnvTimeText">
+ Время суток
+ </text>
+ <text name="EnvTimeText2">
+ 12:00
+ </text>
+ <text name="EnvCloudText">
+ Облачность
+ </text>
+ <text name="EnvWaterColorText">
+ Цвет воды
+ </text>
+ <color_swatch name="EnvWaterColor" tool_tip="Щелкните для выбора цвета"/>
+ <text name="EnvWaterFogText">
+ Водный туман
+ </text>
+ <button label="Использовать время в землевладении" name="EnvUseEstateTimeButton"/>
+ <button label="Улучшенное небо" name="EnvAdvancedSkyButton"/>
+ <button label="Улучшенная вода" name="EnvAdvancedWaterButton"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_environment_settings.xml b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml
new file mode 100644
index 0000000000..d752c08cbb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="НАСТРОЙКИ СРЕДЫ">
+ <text name="note">
+ Приведенные ниже параметры позволяют настроить среду клиента.
+ </text>
+ <radio_group name="region_settings_radio_group">
+ <radio_item label="Использовать настройки региона" name="use_region_settings"/>
+ <radio_item label="Настроить среду" name="use_my_settings"/>
+ </radio_group>
+ <panel name="user_environment_settings">
+ <text name="note">
+ Примечание. Ваши персональные настройки не видны другим пользователям.
+ </text>
+ <text name="water_settings_title">
+ Настройка воды
+ </text>
+ <combo_box name="water_settings_preset_combo">
+ <combo_box.item label="-Выбор настройки-" name="item0"/>
+ </combo_box>
+ <text name="sky_dayc_settings_title">
+ Небо и суточный цикл
+ </text>
+ <radio_group name="sky_dayc_settings_radio_group">
+ <radio_item label="Небо не меняется" name="my_sky_settings"/>
+ <radio_item label="Суточный цикл" name="my_dayc_settings"/>
+ </radio_group>
+ <combo_box name="sky_settings_preset_combo">
+ <combo_box.item label="-Выбор настройки-" name="item0"/>
+ </combo_box>
+ <combo_box name="dayc_settings_preset_combo">
+ <combo_box.item label="-Выбор настройки-" name="item0"/>
+ </combo_box>
+ </panel>
+ <button label="ОК" name="ok_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_event.xml b/indra/newview/skins/default/xui/ru/floater_event.xml
new file mode 100644
index 0000000000..5c5bcc6d09
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_event.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Событие" name="Event" title="СВЕДЕНИЯ О СОБЫТИИ">
+ <floater.string name="loading_text">
+ Загрузка...
+ </floater.string>
+ <floater.string name="done_text">
+ Готово
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_fast_timers.xml b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
new file mode 100644
index 0000000000..20936b8494
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Пауза
+ </string>
+ <string name="run">
+ Бег
+ </string>
+ <button label="Пауза" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_font_test.xml b/indra/newview/skins/default/xui/ru/floater_font_test.xml
new file mode 100644
index 0000000000..b51732d3f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_font_test.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="ТЕСТ ШРИФТОВ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_gesture.xml b/indra/newview/skins/default/xui/ru/floater_gesture.xml
new file mode 100644
index 0000000000..759d81b2c6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_gesture.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Места" name="gestures" title="ЖЕСТЫ">
+ <floater.string name="loading">
+ Загрузка...
+ </floater.string>
+ <floater.string name="playing">
+ (проигрывается)
+ </floater.string>
+ <floater.string name="copy_name">
+ Копия [COPY_NAME]
+ </floater.string>
+ <scroll_list name="gesture_list">
+ <scroll_list.columns label="Название" name="name"/>
+ <scroll_list.columns label="Чат" name="trigger"/>
+ <scroll_list.columns label="Клавиша" name="shortcut"/>
+ </scroll_list>
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="gear_btn" tool_tip="Дополнительные параметры"/>
+ <button name="new_gesture_btn" tool_tip="Создать новый жест"/>
+ <button name="activate_btn" tool_tip="Активировать/деактивировать выбранный жест"/>
+ <button name="del_btn" tool_tip="Удалить этот жест"/>
+ </panel>
+ <button label="Изменить" name="edit_btn"/>
+ <button label="Проиграть" name="play_btn"/>
+ <button label="Стоп" name="stop_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_god_tools.xml b/indra/newview/skins/default/xui/ru/floater_god_tools.xml
new file mode 100644
index 0000000000..81329475aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_god_tools.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="ИНСТРУМЕНТЫ ТВОРЦА">
+ <tab_container name="GodTools Tabs">
+ <panel label="Сетка" name="grid">
+ <button label="Обновить кэш данных карты этого региона" label_selected="Обновить кэш данных карты этого региона" name="Flush This Region&apos;s Map Visibility Caches"/>
+ </panel>
+ <panel label="Регион" name="region">
+ <text name="Region Name:">
+ Название региона:
+ </text>
+ <check_box label="Буферная зона" name="check prelude" tool_tip="Сделать этот регион буферной зоной"/>
+ <check_box label="Солнце на месте" name="check fixed sun" tool_tip="Фиксация положения солнца (как в меню «Регион/Землевладение &gt; Ландшафт»)"/>
+ <check_box label="Сброс дома при телепортации" name="check reset home" tool_tip="Дом жителей, которые телепортируются отсюда, будет там, куда они телепортируются."/>
+ <check_box label="Видимый" name="check visible" tool_tip="Сделать регион видимым не только для творцов"/>
+ <check_box label="Повреждения" name="check damage" tool_tip="Сделать возможными повреждения в регионе"/>
+ <check_box label="Блокировать отслеживание трафика" name="block dwell" tool_tip="Выберите, чтобы для региона не отслеживался трафик"/>
+ <check_box label="Запретить терраформирование" name="block terraform" tool_tip="Выберите, чтобы жители не могли изменять ландшафт своей земли"/>
+ <check_box label="Песочница" name="is sandbox" tool_tip="Выберите, является ли этот регион «песочницей»"/>
+ <button label="Зафиксировать пределы" label_selected="Зафиксировать пределы" name="Bake Terrain" tool_tip="Сохранить текущий ландшафт как стандартный"/>
+ <button label="Вернуть ландшафт" label_selected="Вернуть ландшафт" name="Revert Terrain" tool_tip="Заменить текущий ландшафт ландшафтом по умолчанию"/>
+ <button label="Поменять ландшафты" label_selected="Поменять ландшафты" name="Swap Terrain" tool_tip="Поменять местами текущий ландшафт и ландшафт по умолчанию"/>
+ <text name="estate id">
+ ИД землевладения:
+ </text>
+ <text name="parent id">
+ ИД родового объекта:
+ </text>
+ <line_editor name="parentestate" tool_tip="Родовое землевладение для этого региона"/>
+ <text name="Grid Pos: ">
+ Полож. сетки:
+ </text>
+ <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$ за м²:
+ </text>
+ <button label="Обновить" label_selected="Обновить" name="Refresh" tool_tip="Обновление приведенной выше информации"/>
+ <button label="Применить" label_selected="Применить" name="Apply" tool_tip="Применить все изменения выше"/>
+ <button label="Выбрать регион" label_selected="Выбрать регион" name="Select Region" tool_tip="Выбор всего региона с помощью инструмента изменения ландшафта"/>
+ <button label="Автосохранение" label_selected="Автосохранение" name="Autosave now" tool_tip="Сохранить в каталоге автосохранения состояние в архиве Gzip"/>
+ </panel>
+ <panel label="Объекты" name="objects">
+ <panel.string name="no_target">
+ (нет персонажа)
+ </panel.string>
+ <text name="Region Name:">
+ Название региона:
+ </text>
+ <text name="region name">
+ Уэльс
+ </text>
+ <check_box label="Отключить скрипты" name="disable scripts" tool_tip="Отключение всех скриптов в этом регионе"/>
+ <check_box label="Отключить столкновения" name="disable collisions" tool_tip="Отключение столкновений не-агентов в этом регионе"/>
+ <check_box label="Отключить физику" name="disable physics" tool_tip="Отключение всех физических параметров в этом регионе"/>
+ <button label="Применить" label_selected="Применить" name="Apply" tool_tip="Применить все изменения выше"/>
+ <button label="Задать персонаж" label_selected="Задать персонаж" name="Set Target" tool_tip="Выберите аватар-персонаж для удаления объекта"/>
+ <text name="target_avatar_name">
+ (нет персонажа)
+ </text>
+ <button label="Удалить принадлежащие персонажу объекты со скриптами на чужой земле" label_selected="Удалить принадлежащие персонажу объекты со скриптами на чужой земле" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Удаление всех объектов со скриптами, принадлежащих персонажу, на земле, не принадлежащей персонажу. «Не копируемые» объекты будут возвращены."/>
+ <button label="Удалить принадлежащие персонажу объекты со скриптами на *всех* землях" label_selected="Удалить принадлежащие персонажу объекты со скриптами на *всех* землях" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Удаление всех объектов со скриптами, принадлежащих персонажу, в этом регионе. «Не копируемые» объекты будут возвращены."/>
+ <button label="Удалить *ВСЕ* объекты персонажа" label_selected="Удалить *ВСЕ* объекты персонажа" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Удаление всех объектов, принадлежащих персонажу, в этом регионе. «Не копируемые» объекты будут возвращены."/>
+ <button label="Самые активные участники столкновений" label_selected="Самые активные участники столкновений" name="Get Top Colliders" tool_tip="Список объектов, для которых наблюдается больше всего детализированных обратных вызовов"/>
+ <button label="Загрузить лучшие скрипты" label_selected="Загрузить лучшие скрипты" name="Get Top Scripts" tool_tip="Список объектов, в которых скрипты выполняются дольше всего"/>
+ <button label="Сводка по скриптам" label_selected="Сводка по скриптам" name="Scripts digest" tool_tip="Список всех скриптов с числом использований по каждому из них"/>
+ </panel>
+ <panel label="Запрос" name="request">
+ <text name="Destination:">
+ Пункт назначения:
+ </text>
+ <combo_box name="destination">
+ <combo_box.item label="назначенный" name="item1"/>
+ <combo_box.item label="текущий регион" name="item2"/>
+ </combo_box>
+ <text name="Request:">
+ Запрос:
+ </text>
+ <combo_box name="request">
+ <combo_box.item label="участники столкновений &lt;steps&gt;" name="item1"/>
+ <combo_box.item label="скрипты: &lt;count&gt;,&lt;optional pattern&gt;" name="item2"/>
+ <combo_box.item label="объекты &lt;pattern&gt;" name="item3"/>
+ <combo_box.item label="выложить &lt;asset_id&gt;" name="item4"/>
+ </combo_box>
+ <text name="Parameter:">
+ Параметр:
+ </text>
+ <button label="сделать запрос" label_selected="Сделать запрос" name="Make Request"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
new file mode 100644
index 0000000000..0fefb76ea5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="АППАРАТНЫЕ НАСТРОЙКИ">
+ <text name="Filtering:">
+ Фильтрация:
+ </text>
+ <check_box label="Анизотропная фильтрация (медленнее, если включено)" name="ani"/>
+ <text name="Antialiasing:">
+ Сглаживание:
+ </text>
+ <combo_box label="Сглаживание" name="fsaa">
+ <combo_box.item label="Выключено" 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>
+ <text name="antialiasing restart">
+ (требуется перезапуск)
+ </text>
+ <spinner label="Гамма:" name="gamma"/>
+ <text name="(brightness, lower is brighter)">
+ (чем меньше, тем ярче. 0 – яркость по умолчанию)
+ </text>
+ <text name="Enable VBO:">
+ Включить VBO:
+ </text>
+ <check_box initial_value="истина" label="Включить объекты вершинных буферов OpenGL" name="vbo" tool_tip="Включение этого параметра на современном оборудовании даст увеличение производительности. Однако на старом оборудовании это может привести к сбою приложения."/>
+ <slider label="Память для текстур (Мб):" name="GraphicsCardTextureMemory" tool_tip="Количество памяти, отводимое для текстур. По умолчанию равно памяти видеокарты. Уменьшение поможет увеличить производительность, но текстуры могут стать размытыми."/>
+ <spinner label="Дистанция тумана:" name="fog"/>
+ <button label="OK" label_selected="OK" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_help_browser.xml b/indra/newview/skins/default/xui/ru/floater_help_browser.xml
new file mode 100644
index 0000000000..2f560340ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_help_browser.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="ОБЗОР СПРАВКИ">
+ <floater.string name="loading_text">
+ Загрузка...
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_how_to.xml b/indra/newview/skins/default/xui/ru/floater_how_to.xml
new file mode 100644
index 0000000000..52525e5d33
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ПОМОЩЬ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_hud.xml b/indra/newview/skins/default/xui/ru/floater_hud.xml
new file mode 100644
index 0000000000..b05113bfe0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_hud.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_hud" title="УЧЕБНИК"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml
new file mode 100644
index 0000000000..b147cfa2b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="ОБЩЕНИЕ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml
new file mode 100644
index 0000000000..604d9dc6d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="panel_im">
+ <layout_stack name="im_panels">
+ <layout_panel>
+ <line_editor label="Кому" name="chat_editor"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_image_preview.xml b/indra/newview/skins/default/xui/ru/floater_image_preview.xml
new file mode 100644
index 0000000000..dbc4c32b98
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_image_preview.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview">
+ <text name="name_label">
+ Название:
+ </text>
+ <text name="description_label">
+ Описание:
+ </text>
+ <text name="preview_label">
+ Показать изображение как:
+ </text>
+ <combo_box label="Тип одежды" name="clothing_type_combo">
+ <item label="Изображение" name="Image" value="Изображение"/>
+ <item label="Волосы" name="Hair" value="Волосы"/>
+ <item label="Женская голова" name="FemaleHead" value="Женская голова"/>
+ <item label="Верхняя часть тела женщины" name="FemaleUpperBody" value="Верхняя часть тела женщины"/>
+ <item label="Нижняя часть тела женщины" name="FemaleLowerBody" value="Нижняя часть тела женщины"/>
+ <item label="Мужская голова" name="MaleHead" value="Мужская голова"/>
+ <item label="Верхняя часть тела мужчины" name="MaleUpperBody" value="Верхняя часть тела мужчины"/>
+ <item label="Нижняя часть тела мужчины" name="MaleLowerBody" value="Нижняя часть тела мужчины"/>
+ <item label="Юбка" name="Skirt" value="Юбка"/>
+ <item label="Скульптурный примитив" name="SculptedPrim" value="Скульптурный примитив"/>
+ </combo_box>
+ <text name="bad_image_text">
+ Невозможно прочитать изображение.
+Попробуйте сохранить изображение как 24-битный TGA-файл (Targa).
+ </text>
+ <check_box label="Использовать сжатие без потерь" name="lossless_check"/>
+ <button label="Отмена" name="cancel_btn"/>
+ <button label="Передать (L$[AMOUNT])" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_import_collada.xml b/indra/newview/skins/default/xui/ru/floater_import_collada.xml
new file mode 100644
index 0000000000..122315cb26
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_import_collada.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Import Collada" title="Импорт сцены">
+ <text name="mesh count">
+ Мешей: [COUNT]
+ </text>
+ <text name="texture count">
+ Текстур: [COUNT]
+ </text>
+ <text name="status">
+ Статус: [STATUS]
+ </text>
+ <button label="Отмена" name="cancel"/>
+ <button label="ОК" name="ok"/>
+ <string name="status_idle">
+ Неактивно
+ </string>
+ <string name="status_uploading">
+ Передается [NAME]
+ </string>
+ <string name="status_creating">
+ Создается объект [NAME]
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
new file mode 100644
index 0000000000..072c20147d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="Входящий звонок">
+ <floater.string name="lifetime">
+ 5
+ </floater.string>
+ <floater.string name="localchat">
+ Локальный голосовой чат
+ </floater.string>
+ <floater.string name="anonymous">
+ анонимно
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ вызывает.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ теперь участвует в групповом голосовом чате.
+ </floater.string>
+ <floater.string name="VoiceInviteGroup">
+ присоединился (-лась) к голосовому каналу «[GROUP]».
+ </floater.string>
+ <floater.string name="VoiceInviteQuestionGroup">
+ Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к звонку «[GROUP]»?
+ </floater.string>
+ <floater.string name="VoiceInviteQuestionDefault">
+ Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
+ </floater.string>
+ <text name="question">
+ Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
+ </text>
+ <button label="Принять" label_selected="Принять" name="Accept"/>
+ <button label="Отклонить" label_selected="Отклонить" name="Reject"/>
+ <button label="Начать IM" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_inspect.xml b/indra/newview/skins/default/xui/ru/floater_inspect.xml
new file mode 100644
index 0000000000..f7bb981575
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inspect.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="inspect" title="ИНСПЕКТИРОВАНИЕ ОБЪЕКТОВ">
+ <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="Выбор объекта из этого списка приведет к его подсветке">
+ <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="Показывает профиль создателя подсвеченного объекта"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory.xml b/indra/newview/skins/default/xui/ru/floater_inventory.xml
new file mode 100644
index 0000000000..35cbcf177d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inventory.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory" title="МОЙ ИНВЕНТАРЬ">
+ <panel label="Панель инвентаря" name="Inventory Panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml
new file mode 100644
index 0000000000..9021b71fe2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="СВОЙСТВА ПРЕДМЕТА">
+ <floater.string name="unknown">
+ (неизвестно)
+ </floater.string>
+ <floater.string name="public">
+ (публичное)
+ </floater.string>
+ <floater.string name="you_can">
+ Вы можете:
+ </floater.string>
+ <floater.string name="owner_can">
+ Владелец может:
+ </floater.string>
+ <floater.string name="acquiredDate">
+ [wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ </floater.string>
+ <text name="LabelItemNameTitle">
+ Название:
+ </text>
+ <text name="LabelItemDescTitle">
+ Описание:
+ </text>
+ <text name="LabelCreatorTitle">
+ Создатель:
+ </text>
+ <button label="Профиль…" name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ Владелец:
+ </text>
+ <button label="Профиль…" name="BtnOwner"/>
+ <text name="LabelAcquiredTitle">
+ Приобретено:
+ </text>
+ <text name="LabelAcquiredDate">
+ Ср 24 Май 12:50:46 2006
+ </text>
+ <text name="OwnerLabel">
+ Вы:
+ </text>
+ <check_box label="Изменить" name="CheckOwnerModify"/>
+ <check_box label="Копировать" name="CheckOwnerCopy"/>
+ <check_box label="Перепродать" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Все:
+ </text>
+ <check_box label="Копировать" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Группа:
+ </text>
+ <check_box label="Поделиться" name="CheckShareWithGroup"/>
+ <text name="NextOwnerLabel">
+ Следующий владелец:
+ </text>
+ <check_box label="Изменить" name="CheckNextOwnerModify"/>
+ <check_box label="Копировать" name="CheckNextOwnerCopy"/>
+ <check_box label="Перепродать" name="CheckNextOwnerTransfer"/>
+ <check_box label="Для продажи" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Копировать" name="Copy"/>
+ <combo_box.item label="Оригинал" name="Original"/>
+ </combo_box>
+ <spinner label="Цена:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
new file mode 100644
index 0000000000..02068c57b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS">
+ <check_box label="Анимация" name="check_animation"/>
+ <check_box label="Визитки" name="check_calling_card"/>
+ <check_box label="Одежда" name="check_clothing"/>
+ <check_box label="Жесты" name="check_gesture"/>
+ <check_box label="Закладки" name="check_landmark"/>
+ <check_box label="Меши" name="check_mesh"/>
+ <check_box label="Заметки" name="check_notecard"/>
+ <check_box label="Объекты" name="check_object"/>
+ <check_box label="Скрипты" name="check_script"/>
+ <check_box label="Звуки" name="check_sound"/>
+ <check_box label="Текстуры" name="check_texture"/>
+ <check_box label="Снимки" name="check_snapshot"/>
+ <button label="Все" label_selected="Все" name="All"/>
+ <button label="Нет" label_selected="Нет" name="None"/>
+ <check_box label="Всегда показывать папки" name="check_show_empty"/>
+ <check_box label="С момента выхода" name="check_since_logoff"/>
+ <text name="- OR -">
+ - ИЛИ -
+ </text>
+ <spinner label="Часов назад" name="spin_hours_ago"/>
+ <spinner label="Дней назад" name="spin_days_ago"/>
+ <button label="Закрыть" label_selected="Закрыть" name="Close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_joystick.xml b/indra/newview/skins/default/xui/ru/floater_joystick.xml
new file mode 100644
index 0000000000..66568563da
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_joystick.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Joystick" title="КОНФИГУРАЦИЯ ДЖОЙСТИКА">
+ <floater.string name="NoDevice">
+ устройство не выбрано
+ </floater.string>
+ <check_box label="Вкл. джойстик:" name="enable_joystick"/>
+ <spinner label="Наложение по X" name="JoystickAxis1"/>
+ <spinner label="Наложение по Y" name="JoystickAxis2"/>
+ <spinner label="Наложение по Z" name="JoystickAxis0"/>
+ <spinner label="Н. уклонов" name="JoystickAxis4"/>
+ <spinner label="Н. сгибов" name="JoystickAxis5"/>
+ <spinner label="Н. вращения" name="JoystickAxis3"/>
+ <spinner label="Н. масштабир." name="JoystickAxis6"/>
+ <check_box label="Масштабирование" name="ZoomDirect"/>
+ <check_box label="3D курсор" name="Cursor3D"/>
+ <check_box label="Автоуровень" name="AutoLeveling"/>
+ <text name="Control Modes:">
+ Режимы управления:
+ </text>
+ <check_box label="Аватар" name="JoystickAvatarEnabled"/>
+ <check_box label="Стройка" name="JoystickBuildEnabled"/>
+ <check_box label="Камера" name="JoystickFlycamEnabled"/>
+ <stat_view label="Монитор джойстика" name="axis_view">
+ <stat_bar label="Ось 0" name="axis0"/>
+ <stat_bar label="Ось 1" name="axis1"/>
+ <stat_bar label="Ось 2" name="axis2"/>
+ <stat_bar label="Ось 3" name="axis3"/>
+ <stat_bar label="Ось 4" name="axis4"/>
+ <stat_bar label="Ось 5" name="axis5"/>
+ </stat_view>
+ <text name="XScale">
+ Масштаб по X
+ </text>
+ <text name="YScale">
+ Масштаб по Y
+ </text>
+ <text name="ZScale">
+ Масштаб по Z
+ </text>
+ <text name="PitchScale">
+ Масштаб уклона
+ </text>
+ <text name="YawScale">
+ Масштаб сгиба
+ </text>
+ <text name="RollScale">
+ Масштаб вращения
+ </text>
+ <text name="XDeadZone">
+ Невидимая зона по X
+ </text>
+ <text name="YDeadZone">
+ Невидимая зона по Y
+ </text>
+ <text name="ZDeadZone">
+ Невидимая зона по Z
+ </text>
+ <text name="PitchDeadZone">
+ Невид. зона уклона
+ </text>
+ <text name="YawDeadZone">
+ Невид. зона сгиба
+ </text>
+ <text name="RollDeadZone">
+ Невид. зона вращения
+ </text>
+ <text name="Feathering">
+ Размывка краев
+ </text>
+ <text name="ZoomScale2">
+ Масштаб
+ </text>
+ <text name="ZoomDeadZone">
+ Невид. зона масшт.
+ </text>
+ <button label="Стандартные значения SpaceNavigator" name="SpaceNavigatorDefaults"/>
+ <button label="OK" label_selected="OK" name="ok_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_lagmeter.xml b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml
new file mode 100644
index 0000000000..c420006a03
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_lagmeter" title="УРОВЕНЬ ЛАГОВ">
+ <floater.string name="max_title_msg">
+ Уровень лагов
+ </floater.string>
+ <floater.string name="max_width_px">
+ 360
+ </floater.string>
+ <floater.string name="min_title_msg">
+ Лаг
+ </floater.string>
+ <floater.string name="min_width_px">
+ 90
+ </floater.string>
+ <floater.string name="client_text_msg">
+ Клиент
+ </floater.string>
+ <floater.string name="client_frame_rate_critical_fps">
+ 10
+ </floater.string>
+ <floater.string name="client_frame_rate_warning_fps">
+ 15
+ </floater.string>
+ <floater.string name="client_frame_time_window_bg_msg">
+ Нормально, окно в фоне
+ </floater.string>
+ <floater.string name="client_frame_time_critical_msg">
+ Частота кадров клиента ниже [CLIENT_FRAME_RATE_CRITICAL]
+ </floater.string>
+ <floater.string name="client_frame_time_warning_msg">
+ Частота кадров клиента от [CLIENT_FRAME_RATE_CRITICAL] до [CLIENT_FRAME_RATE_WARNING]
+ </floater.string>
+ <floater.string name="client_frame_time_normal_msg">
+ Нормально
+ </floater.string>
+ <floater.string name="client_draw_distance_cause_msg">
+ Возможная причина: дальность отрисовки слишком велика
+ </floater.string>
+ <floater.string name="client_texture_loading_cause_msg">
+ Возможная причина: загрузка изображений
+ </floater.string>
+ <floater.string name="client_texture_memory_cause_msg">
+ Возможная причина: слишком много изображений в памяти
+ </floater.string>
+ <floater.string name="client_complex_objects_cause_msg">
+ Возможная причина: слишком много сложных объектов в сцене
+ </floater.string>
+ <floater.string name="network_text_msg">
+ Сеть
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_pct">
+ 10
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_pct">
+ 5
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_msg">
+ Сеть теряет более [NETWORK_PACKET_LOSS_CRITICAL]% пакетов
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_msg">
+ Сеть теряет [NETWORK_PACKET_LOSS_WARNING]–[NETWORK_PACKET_LOSS_CRITICAL]% пакетов
+ </floater.string>
+ <floater.string name="network_performance_normal_msg">
+ Нормально
+ </floater.string>
+ <floater.string name="network_ping_critical_ms">
+ 600
+ </floater.string>
+ <floater.string name="network_ping_warning_ms">
+ 300
+ </floater.string>
+ <floater.string name="network_ping_critical_msg">
+ Пинг соединения более [NETWORK_PING_CRITICAL] мс
+ </floater.string>
+ <floater.string name="network_ping_warning_msg">
+ Пинг соединения [NETWORK_PING_WARNING]–[NETWORK_PING_CRITICAL] мс
+ </floater.string>
+ <floater.string name="network_packet_loss_cause_msg">
+ Возможно, плохое соединение, или параметр «Ширина канала» слишком велик.
+ </floater.string>
+ <floater.string name="network_ping_cause_msg">
+ Возможно, плохое соединение или есть работающие файлообменные программы.
+ </floater.string>
+ <floater.string name="server_text_msg">
+ Сервер
+ </floater.string>
+ <floater.string name="server_frame_rate_critical_fps">
+ 20
+ </floater.string>
+ <floater.string name="server_frame_rate_warning_fps">
+ 30
+ </floater.string>
+ <floater.string name="server_single_process_max_time_ms">
+ 20
+ </floater.string>
+ <floater.string name="server_frame_time_critical_msg">
+ Частота кадров сервера ниже [SERVER_FRAME_RATE_CRITICAL]
+ </floater.string>
+ <floater.string name="server_frame_time_warning_msg">
+ Частота кадров сервера [SERVER_FRAME_RATE_CRITICAL]–[SERVER_FRAME_RATE_WARNING]
+ </floater.string>
+ <floater.string name="server_frame_time_normal_msg">
+ Нормально
+ </floater.string>
+ <floater.string name="server_physics_cause_msg">
+ Возможная причина: слишком много физических объектов
+ </floater.string>
+ <floater.string name="server_scripts_cause_msg">
+ Возможная причина: слишком много скриптовых объектов
+ </floater.string>
+ <floater.string name="server_net_cause_msg">
+ Возможная причина: слишком большой сетевой трафик
+ </floater.string>
+ <floater.string name="server_agent_cause_msg">
+ Возможная причина: слишком много людей в регионе
+ </floater.string>
+ <floater.string name="server_images_cause_msg">
+ Возможная причина: слишком много изображений
+ </floater.string>
+ <floater.string name="server_generic_cause_msg">
+ Возможная причина: сервер сильно загружен
+ </floater.string>
+ <floater.string name="smaller_label">
+ &gt;&gt;
+ </floater.string>
+ <floater.string name="bigger_label">
+ &lt;&lt;
+ </floater.string>
+ <button name="client_lagmeter" tool_tip="Уровень лагов клиента"/>
+ <text name="client">
+ Клиент
+ </text>
+ <text name="client_text">
+ Нормально
+ </text>
+ <button name="network_lagmeter" tool_tip="Уровень лагов сети"/>
+ <text name="network">
+ Сеть
+ </text>
+ <text name="network_text">
+ Нормально
+ </text>
+ <button name="server_lagmeter" tool_tip="Уровень лагов сервера"/>
+ <text name="server">
+ Сервер
+ </text>
+ <text name="server_text">
+ Нормально
+ </text>
+ <button label="&gt;&gt;" name="minimize" tool_tip="Переключение размера"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_land_holdings.xml b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml
new file mode 100644
index 0000000000..17d347867d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="МОЯ ЗЕМЛЯ">
+ <floater.string name="area_string">
+ [AREA] м²
+ </floater.string>
+ <scroll_list name="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>
+ <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">
+ <scroll_list.columns label="Группа" name="group"/>
+ <scroll_list.columns label="Площадь" name="area"/>
+ </scroll_list>
+ <text name="allowed_label">
+ Разрешенный размер владений для текущего плана оплат:
+ </text>
+ <text name="allowed_text">
+ [AREA] м²
+ </text>
+ <text name="current_label">
+ Текущий размер владений:
+ </text>
+ <text name="current_text">
+ [AREA] м²
+ </text>
+ <text name="available_label">
+ Доступно для приобретения:
+ </text>
+ <text name="available_text">
+ [AREA] м²
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
new file mode 100644
index 0000000000..d8047fc045
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="СКРИПТ: СОЗДАТЬ СКРИПТ">
+ <floater.string name="not_allowed">
+ Вы не можете просматривать и изменять этот скрипт, поскольку для него выбрана категория «не копируемые». Для просмотра или изменения скрипта в объекте нужны полные права доступа.
+ </floater.string>
+ <floater.string name="script_running">
+ Выполняется
+ </floater.string>
+ <floater.string name="Title">
+ СКРИПТ: [NAME]
+ </floater.string>
+ <button label="Сброс" label_selected="Сброс" name="Reset"/>
+ <check_box initial_value="истина" label="Выполняется" name="running"/>
+ <check_box initial_value="истина" label="Моно" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml
new file mode 100644
index 0000000000..95a3b8b2a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="СПРАВКА ПО LSL">
+ <check_box label="Курсор" name="lock_check"/>
+ <combo_box label="Блокировка" name="history_combo"/>
+ <button label="Назад" name="back_btn"/>
+ <button label="Вперед" name="fwd_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_map.xml b/indra/newview/skins/default/xui/ru/floater_map.xml
new file mode 100644
index 0000000000..59ceb0a773
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_map.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map" title="МИНИКАРТА">
+ <floater.string name="ToolTipMsg">
+ [REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)
+ </floater.string>
+ <floater.string name="AltToolTipMsg">
+ [REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)
+ </floater.string>
+ <floater.string name="mini_map_caption">
+ Миникарта
+ </floater.string>
+ <text label="С" name="floater_map_north">
+ С
+ </text>
+ <text label="E" name="floater_map_east">
+ E
+ </text>
+ <text label="З" name="floater_map_west">
+ З
+ </text>
+ <text label="Ю" name="floater_map_south">
+ Ю
+ </text>
+ <text label="ЮВ" name="floater_map_southeast">
+ ЮВ
+ </text>
+ <text label="СВ" name="floater_map_northeast">
+ СВ
+ </text>
+ <text label="ЮЗ" name="floater_map_southwest">
+ ЮЗ
+ </text>
+ <text label="СЗ" name="floater_map_northwest">
+ СЗ
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_media_browser.xml b/indra/newview/skins/default/xui/ru/floater_media_browser.xml
new file mode 100644
index 0000000000..d1fc105046
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_media_browser.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="БРАУЗЕР ДЛЯ ПРОСМОТРА МЕДИА">
+ <floater.string name="home_page_url">
+ http://www.secondlife.com
+ </floater.string>
+ <floater.string name="support_page_url">
+ http://support.secondlife.com
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button label="Назад" name="back"/>
+ <button label="Вперед" name="forward"/>
+ <button label="Обновить" name="reload"/>
+ <button label="Перейти" name="go"/>
+ </layout_panel>
+ <layout_panel name="time_controls">
+ <button label="назад" name="rewind"/>
+ <button label="остановить" name="stop"/>
+ <button label="вперед" name="seek"/>
+ </layout_panel>
+ <layout_panel name="parcel_owner_controls">
+ <button label="Отправить текущую страницу на участок" name="assign"/>
+ </layout_panel>
+ <layout_panel name="external_controls">
+ <button label="Открыть в моем браузере" name="open_browser"/>
+ <check_box label="Всегда открывать в моем браузере" name="open_always"/>
+ <button label="Закрыть" name="close"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_media_settings.xml b/indra/newview/skins/default/xui/ru/floater_media_settings.xml
new file mode 100644
index 0000000000..1515cbb3b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="НАСТРОЙКИ МЕДИА">
+ <button label="OK" label_selected="OK" name="OK"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+ <button label="Применить" label_selected="Применить" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml
new file mode 100644
index 0000000000..7aa5c27cde
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="ИМИТАЦИЯ УТЕЧКИ ПАМЯТИ">
+ <spinner label="Скорость утечки (байтов за кадр):" name="leak_speed"/>
+ <spinner label="Максимальная утечка памяти (Мб):" name="max_leak"/>
+ <text name="total_leaked_label">
+ Текущая утечка памяти: [SIZE] КБ
+ </text>
+ <text name="note_label_1">
+ [NOTE1]
+ </text>
+ <text name="note_label_2">
+ [NOTE2]
+ </text>
+ <button label="Старт" name="start_btn"/>
+ <button label="Стоп" name="stop_btn"/>
+ <button label="Освободить" name="release_btn"/>
+ <button label="Закрыть" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
new file mode 100644
index 0000000000..31517e722d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Preview" title="ПЕРЕДАЧА МОДЕЛИ">
+ <string name="status_idle"/>
+ <string name="status_parse_error">
+ Ошибка. Проблема при анализе файла DAE – см. подробности в журнале.
+ </string>
+ <string name="status_reading_file">
+ Загрузка...
+ </string>
+ <string name="status_generating_meshes">
+ Создаются меши...
+ </string>
+ <string name="status_vertex_number_overflow">
+ Ошибка. Число вершин превышает 65534. Прервано.
+ </string>
+ <string name="bad_element">
+ Ошибка: недопустимый элемент
+ </string>
+ <string name="high">
+ Высокий
+ </string>
+ <string name="medium">
+ Средний
+ </string>
+ <string name="low">
+ Низкий
+ </string>
+ <string name="lowest">
+ Самый низкий
+ </string>
+ <string name="mesh_status_good">
+ Доставлено!
+ </string>
+ <string name="mesh_status_na">
+ Н/Д
+ </string>
+ <string name="mesh_status_none">
+ Нет
+ </string>
+ <string name="mesh_status_submesh_mismatch">
+ Отличается число текстурируемых граней на уровнях детализации.
+ </string>
+ <string name="mesh_status_mesh_mismatch">
+ Отличается число экземпляров меша на уровнях детализации.
+ </string>
+ <string name="mesh_status_too_many_vertices">
+ Слишком много вершин на уровне детализации.
+ </string>
+ <string name="mesh_status_missing_lod">
+ Отсутствует необходимый уровень детализации.
+ </string>
+ <string name="mesh_status_invalid_material_list">
+ Материалы уровня детализации не входят в эталонную модель.
+ </string>
+ <string name="layer_all">
+ Все
+ </string>
+ <string name="decomposing">
+ Анализ...
+ </string>
+ <string name="simplifying">
+ Упрощение...
+ </string>
+ <string name="tbd">
+ Позже
+ </string>
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Имя модели:
+ </text>
+ <text name="model_category_label">
+ Эта модель представляет...
+ </text>
+ <combo_box name="model_category_combo">
+ <combo_item label="Выберите вариант..." name="Choose one"/>
+ <combo_item label="Форма аватара" name="Avatar shape"/>
+ <combo_item label="Присоединение аватара" name="Avatar attachment"/>
+ <combo_item label="Подвижный объект (машина, животное)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Строительный компонент" name="Building Component"/>
+ <combo_item label="Большая, неподвижная и т.д." name="Large, non moving etc"/>
+ <combo_item label="Малая, неподвижная и т.д." name="Smaller, non-moving etc"/>
+ <combo_item label="Ни один из них" name="Not really any of these"/>
+ </combo_box>
+ </panel>
+ <tab_container name="import_tab">
+ <panel label="Уровень детализации" name="lod_panel" title="Уровень детализации">
+ <text initial_value="Источник" name="source" value="Источник"/>
+ <text initial_value="Треугольники" name="triangles" value="Треугольники"/>
+ <text initial_value="Вершины" name="vertices" value="Вершины"/>
+ <text initial_value="Высокий" name="high_label" value="Высокий"/>
+ <button label="Обзор..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Средний" name="medium_label" value="Средний"/>
+ <button label="Обзор..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Низкий" name="low_label" value="Низкий"/>
+ <button label="Обзор..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="Самый низкий" name="lowest_label" value="Самый низкий"/>
+ <button label="Обзор..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Генерировать нормали" name="gen_normals"/>
+ <text initial_value="Угол сгиба:" name="crease_label" value="Угол сгиба:"/>
+ <spinner name="crease_angle" value="75"/>
+ </panel>
+ <panel label="Физика" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ Шаг 1. Уровень детализации
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Уровень детализации для физической формы">
+ <combo_item name="choose_one">
+ Выберите вариант...
+ </combo_item>
+ <combo_item name="physics_high">
+ Высокое
+ </combo_item>
+ <combo_item name="physics_medium">
+ Средний
+ </combo_item>
+ <combo_item name="physics_low">
+ Низкий
+ </combo_item>
+ <combo_item name="physics_lowest">
+ Самый низкий
+ </combo_item>
+ <combo_item name="load_from_file">
+ Из файла
+ </combo_item>
+ </combo_box>
+ <button label="Обзор..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ Шаг 2. Анализ
+ </text>
+ <text name="analysis_method_label">
+ Метод:
+ </text>
+ <text name="quality_label">
+ Качество:
+ </text>
+ <text name="smooth_method_label">
+ Гладкость:
+ </text>
+ <check_box label="Закрыть отверстия" name="Close Holes (Slow)"/>
+ <button label="Анализ" name="Decompose"/>
+ <button label="Отмена" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ Шаг 3. Упрощение
+ </text>
+ <text name="simp_method_header">
+ Метод:
+ </text>
+ <text name="pass_method_header">
+ Проходов:
+ </text>
+ <text name="Detail Scale label">
+ Масштаб деталей:
+ </text>
+ <text name="Retain%_label">
+ Сохранять:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Упрощение" name="Simplify"/>
+ <button label="Отмена" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Результаты:
+ </text>
+ <text name="physics_triangles">
+ Треугольников: [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Вершин: [POINTS],
+ </text>
+ <text name="physics_hulls">
+ Оболочек: [HULLS]
+ </text>
+ </panel>
+ </panel>
+ <panel label="Параметры передачи" name="modifiers_panel">
+ <text name="scale_label">
+ Масштаб (1=не масштабировать):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Размеры:
+ </text>
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
+ </text>
+ <check_box label="Включить текстуры" name="upload_textures"/>
+ <text name="include_label">
+ Только для моделей аватаров:
+ </text>
+ <check_box label="Включить вес кожи" name="upload_skin"/>
+ <check_box label="Включить положения суставов" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Смещение по Z (поднять или опустить аватар):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
+ </panel>
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Рассчитать вес и плату" name="calculate_btn" tool_tip="Рассчитать вес и плату"/>
+ <button label="Отмена" name="cancel_btn"/>
+ <button label="Передать" name="ok_btn" tool_tip="Передать в симулятор"/>
+ <button label="Очистить настройки и сбросить форму" name="reset_btn"/>
+ <text name="upload_fee">
+ Плата за передачу: L$ [FEE]
+ </text>
+ <text name="prim_weight">
+ Влияние земли: [EQ]
+ </text>
+ <text name="download_weight">
+ Загрузка: [ST]
+ </text>
+ <text name="physics_weight">
+ Физика: [PH]
+ </text>
+ <text name="server_weight">
+ Сервер: [SIM]
+ </text>
+ <text name="warning_title">
+ ПРИМЕЧАНИЕ.
+ </text>
+ <text name="warning_message">
+ У вас нет прав на передачу сеточных моделей. [[VURL] Узнайте, как] получить их.
+ </text>
+ <text name="status">
+ [STATUS]
+ </text>
+ </panel>
+ </panel>
+ <text name="lod_label">
+ Просмотр:
+ </text>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="Уровень детализации при предварительном просмотре">
+ <combo_item name="high">
+ Высокий
+ </combo_item>
+ <combo_item name="medium">
+ Среднее
+ </combo_item>
+ <combo_item name="low">
+ Низкий
+ </combo_item>
+ <combo_item name="lowest">
+ Самый низкий
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Показать...
+ </text>
+ <check_box label="Ребра" name="show_edges"/>
+ <check_box label="Физика" name="show_physics"/>
+ <check_box label="Текстуры" name="show_textures"/>
+ <check_box label="Вес кожи" name="show_skin_weight"/>
+ <check_box label="Суставы" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Просмотр разложения:
+ </text>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_model_wizard.xml b/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
new file mode 100644
index 0000000000..ef2fe8e5a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Wizard" title="ПЕРЕДАТЬ МАСТЕР МОДЕЛИРОВАНИЯ">
+ <button label="5. Передать" name="upload_btn"/>
+ <button label="4. Просмотр" name="review_btn"/>
+ <button label="3. Физика" name="physics_btn"/>
+ <button label="2. Оптимизировать" name="optimize_btn"/>
+ <button label="1. Выбрать файл" name="choose_file_btn"/>
+ <panel name="choose_file_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Выберите файл модели
+ </text>
+ </panel>
+ <panel name="content">
+ <text name="advanced_users_text">
+ Пользователям в расширенном режиме: если вы умеете создавать трехмерные графические объекты, то, возможно, захотите воспользоваться средством Advanced Uploader, которое предоставляет расширенные возможности передачи объектов.
+ </text>
+ <button label="Перейти в расширенный режим" name="switch_to_advanced"/>
+ <text name="Cache location">
+ Выберите файл модели для передачи
+ </text>
+ <button label="Обзор..." label_selected="Обзор..." name="browse"/>
+ <text name="dimensions">
+ X Y Z
+ </text>
+ <text name="warning_label">
+ ВНИМАНИЕ!
+ </text>
+ <text name="warning_text">
+ Вы не сможете завершить передачу этой модели на серверы Second Life. [secondlife:///app/floater/learn_more Узнайте, как] настроить в вашем аккаунте передачу сеточных моделей.
+ </text>
+ </panel>
+ </panel>
+ <panel name="optimize_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Оптимизировать модель
+ </text>
+ </panel>
+ <text name="description">
+ Мы оптимизировали модель для повышения быстродействия. По желанию можно выполнить дополнительную настройку.
+ </text>
+ <panel name="content">
+ <text name="high_detail_text">
+ Создать уровень детализации: высокий
+ </text>
+ <text name="medium_detail_text">
+ Создать уровень детализации: средний
+ </text>
+ <text name="low_detail_text">
+ Создать уровень детализации: низкий
+ </text>
+ <text name="lowest_detail_text">
+ Создать уровень детализации: самый низкий
+ </text>
+ </panel>
+ <panel name="content2">
+ <button label="Пересчитать геометрию" name="recalculate_geometry_btn"/>
+ <text name="lod_label">
+ Просмотр геометрии
+ </text>
+ <combo_box name="preview_lod_combo" tool_tip="Детализация при предварительном просмотре">
+ <combo_item name="high">
+ Детально
+ </combo_item>
+ <combo_item name="medium">
+ Средняя детализация
+ </combo_item>
+ <combo_item name="low">
+ Мало деталей
+ </combo_item>
+ <combo_item name="lowest">
+ Минимум деталей
+ </combo_item>
+ </combo_box>
+ </panel>
+ </panel>
+ <panel name="physics_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Настроить физику
+ </text>
+ </panel>
+ <text name="description">
+ Мы создадим форму для внешнего каркаса модели. Настройте уровень детализации формы в соответствии с целями, для которых предназначена модель.
+ </text>
+ <panel name="content">
+ <button label="Пересчитать физику" name="recalculate_physics_btn"/>
+ <button label="Пересчет..." name="recalculating_physics_btn"/>
+ <text name="lod_label">
+ Просмотр физики
+ </text>
+ <combo_box name="preview_lod_combo2" tool_tip="Уровень детализации при предварительном просмотре">
+ <combo_item name="high">
+ Детально
+ </combo_item>
+ <combo_item name="medium">
+ Средняя детализация
+ </combo_item>
+ <combo_item name="low">
+ Мало деталей
+ </combo_item>
+ <combo_item name="lowest">
+ Минимум деталей
+ </combo_item>
+ </combo_box>
+ </panel>
+ </panel>
+ <panel name="review_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Просмотр
+ </text>
+ </panel>
+ <panel name="content">
+ <text name="review_prim_equiv">
+ Воздействие на участок/регион: эквивалент в примитивах: [EQUIV]
+ </text>
+ <text name="review_fee">
+ За передачу с вашего счета будет снята плата в размере L$[FEE].
+ </text>
+ <text name="review_confirmation">
+ Нажав кнопку «Передать», вы подтверждаете, что у вас есть надлежащие права на все составляющие модели.
+ </text>
+ </panel>
+ </panel>
+ <panel name="upload_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Передача завершена
+ </text>
+ </panel>
+ <text name="model_uploaded_text">
+ Ваша модель передана.
+ </text>
+ <text name="inventory_text">
+ Находится в папке «Объекты» вашего инвентаря.
+ </text>
+ <text name="charged_fee">
+ С вашего счета снято: L$[FEE].
+ </text>
+ </panel>
+ <button label="&lt;&lt; Назад" name="back"/>
+ <button label="Далее &gt;&gt;" name="next"/>
+ <button label="Рассчитать вес и плату &gt;&gt;" name="calculate"/>
+ <button label="Расчет..." name="calculating"/>
+ <button label="Передать" name="upload" tool_tip="Передать в симулятор"/>
+ <button label="Отмена" name="cancel"/>
+ <button label="Закрыть" name="close"/>
+ <spinner name="import_scale" value="1.0"/>
+ <string name="status_idle">
+ Неактивно
+ </string>
+ <string name="status_parse_error">
+ Проблема при анализе файла DAE – см. подробности в журнале.
+ </string>
+ <string name="status_reading_file">
+ Загрузка...
+ </string>
+ <string name="status_generating_meshes">
+ Создаются меши...
+ </string>
+ <string name="status_vertex_number_overflow">
+ Ошибка. Число вершин превышает 65534. Прервано.
+ </string>
+ <string name="bad_element">
+ Ошибка: недопустимый элемент
+ </string>
+ <string name="high">
+ высокий
+ </string>
+ <string name="medium">
+ средний
+ </string>
+ <string name="low">
+ низкий
+ </string>
+ <string name="lowest">
+ самый низкий
+ </string>
+ <string name="mesh_status_good">
+ Доставлено!
+ </string>
+ <string name="mesh_status_na">
+ Н/Д
+ </string>
+ <string name="mesh_status_none">
+ Нет
+ </string>
+ <string name="mesh_status_submesh_mismatch">
+ Отличается число текстурируемых граней на уровнях детализации.
+ </string>
+ <string name="mesh_status_mesh_mismatch">
+ Отличается число экземпляров меша на уровнях детализации.
+ </string>
+ <string name="mesh_status_too_many_vertices">
+ Слишком много вершин на уровне детализации.
+ </string>
+ <string name="mesh_status_missing_lod">
+ Отсутствует необходимый уровень детализации.
+ </string>
+ <string name="layer_all">
+ Все
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_moveview.xml b/indra/newview/skins/default/xui/ru/floater_moveview.xml
new file mode 100644
index 0000000000..6e01f997e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_moveview.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater" title="ПЕРЕМЕЩЕНИЕ">
+ <string name="walk_forward_tooltip">
+ Идти вперед (нажмите стрелку вверх или клавишу W)
+ </string>
+ <string name="walk_back_tooltip">
+ Идти назад (нажмите стрелку вниз или клавишу S)
+ </string>
+ <string name="walk_left_tooltip">
+ Идти налево (нажмите Shift + стрелку влево или клавишу A)
+ </string>
+ <string name="walk_right_tooltip">
+ Идти направо (нажмите Shift + стрелку вправо или клавишу D)
+ </string>
+ <string name="run_forward_tooltip">
+ Бежать вперед (нажмите стрелку вверх или клавишу W)
+ </string>
+ <string name="run_back_tooltip">
+ Бежать назад (нажмите стрелку вниз или клавишу S)
+ </string>
+ <string name="run_left_tooltip">
+ Бежать налево (нажмите Shift + стрелку влево или клавишу A)
+ </string>
+ <string name="run_right_tooltip">
+ Бежать направо (нажмите Shift + стрелку вправо или клавишу D)
+ </string>
+ <string name="fly_forward_tooltip">
+ Лететь вперед (нажмите стрелку вверх или клавишу W)
+ </string>
+ <string name="fly_back_tooltip">
+ Лететь назад (нажмите стрелку вниз или клавишу S)
+ </string>
+ <string name="fly_left_tooltip">
+ Лететь налево (нажмите Shift + стрелку влево или клавишу A)
+ </string>
+ <string name="fly_right_tooltip">
+ Лететь направо (нажмите Shift + стрелку вправо или клавишу D)
+ </string>
+ <string name="fly_up_tooltip">
+ Лететь вверх (нажмите клавишу E)
+ </string>
+ <string name="fly_down_tooltip">
+ Лететь вниз (нажмите клавишу C)
+ </string>
+ <string name="jump_tooltip">
+ Прыгнуть (нажмите клавишу E)
+ </string>
+ <string name="crouch_tooltip">
+ Присесть (нажмите клавишу C)
+ </string>
+ <string name="walk_title">
+ Ходьба
+ </string>
+ <string name="run_title">
+ Бег
+ </string>
+ <string name="fly_title">
+ Полет
+ </string>
+ <panel name="panel_actions">
+ <button name="turn left btn" tool_tip="Поворот налево (нажмите стрелку влево или клавишу A)"/>
+ <joystick_slide name="move left btn" tool_tip="Идти налево (нажмите Shift + стрелку влево или клавишу A)"/>
+ <button name="turn right btn" tool_tip="Поворот направо (нажмите стрелку вправо или клавишу D)"/>
+ <joystick_slide name="move right btn" tool_tip="Идти направо (нажмите Shift + стрелку вправо или клавишу D)"/>
+ <joystick_turn name="forward btn" tool_tip="Идти вперед (нажмите стрелку вверх или клавишу W)"/>
+ <joystick_turn name="backward btn" tool_tip="Идти назад (нажмите стрелку вниз или клавишу S)"/>
+ <button name="move up btn" tool_tip="Лететь вверх (нажмите клавишу E)"/>
+ <button name="move down btn" tool_tip="Лететь вниз (нажмите клавишу C)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="Режим ходьбы"/>
+ <button label="" name="mode_run_btn" tool_tip="Режим бега"/>
+ <button label="" name="mode_fly_btn" tool_tip="Режим полета"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_mute_object.xml b/indra/newview/skins/default/xui/ru/floater_mute_object.xml
new file mode 100644
index 0000000000..44177acb53
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_mute_object.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="block by name" title="В ЧЕРНЫЙ СПИСОК">
+ <text name="message">
+ Внести в черный список объект:
+ </text>
+ <line_editor name="object_name">
+ Название объекта
+ </line_editor>
+ <text name="note">
+ * Блокируются только сообщения объекта, но не звуки
+ </text>
+ <button label="ОК" name="OK"/>
+ <button label="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_my_appearance.xml b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
new file mode 100644
index 0000000000..b90d80f3fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="ВНЕШНОСТЬ">
+ <panel label="Изменить внешний вид" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_my_inventory.xml b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
new file mode 100644
index 0000000000..534d2a5774
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="ИНВЕНТАРЬ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_nearby_chat.xml b/indra/newview/skins/default/xui/ru/floater_nearby_chat.xml
new file mode 100644
index 0000000000..184c753e40
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="ЛОКАЛЬНЫЙ ЧАТ">
+ <check_box label="Перевод чата" name="translate_chat_checkbox"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_notification.xml b/indra/newview/skins/default/xui/ru/floater_notification.xml
new file mode 100644
index 0000000000..c3e299202c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_notification.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notification" title="КОНСОЛЬ УВЕДОМЛЕНИЙ">
+ <text_editor name="payload">
+ Загрузка...
+ </text_editor>
+ <combo_box label="Ответ" name="response"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_notifications_console.xml b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml
new file mode 100644
index 0000000000..bd836590e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notifications_console" title="КОНСОЛЬ УВЕДОМЛЕНИЙ">
+ <combo_box label="Выбор типа уведомления" name="notification_types"/>
+ <button label="Добавить" name="add_notification"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_object_weights.xml b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
new file mode 100644
index 0000000000..41e0118732
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="ДОПОЛНИТЕЛЬНО">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="ВЫБРАНО"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Объекты"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Примитивы"/>
+ <text name="weights_of_selected_text" value="ВЕС ВЫБРАННОГО"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Загрузить"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Физика"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Сервер"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Показать"/>
+ <text name="land_impacts_text" value="ВОЗДЕЙСТВИЕ НА ЗЕМЛЮ"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Выбрано"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Выложено на землю"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Остаток емкости"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Общая емкость"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights Что это такое?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_openobject.xml b/indra/newview/skins/default/xui/ru/floater_openobject.xml
new file mode 100644
index 0000000000..5da308eecb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_openobject.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="objectcontents" title="СОДЕРЖИМОЕ ОБЪЕКТА">
+ <text name="object_name">
+ [DESC]:
+ </text>
+ <button label="Копировать в инвентарь" label_selected="Копировать в инвентарь" name="copy_to_inventory_button"/>
+ <button label="Копировать и надеть" label_selected="Копировать и надеть" name="copy_and_wear_button"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
new file mode 100644
index 0000000000..301206e473
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="СОХРАНИТЬ КОСТЮМ">
+ <button label="Сохранить" label_selected="Сохранить" name="Save"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+ <text name="Save item as:">
+ Сохранить текущую одежду
+как новый костюм
+ </text>
+ <line_editor name="name ed">
+ [DESC] (новый)
+ </line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml
new file mode 100644
index 0000000000..5e50a75b85
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="ЗВОНОК">
+ <floater.string name="lifetime">
+ 5
+ </floater.string>
+ <floater.string name="localchat">
+ Ближайший голосовой чат
+ </floater.string>
+ <floater.string name="anonymous">
+ анонимный
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ звонит.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ присоединился к сеансу голосового чата с конференцией.
+ </floater.string>
+ <text name="connecting">
+ Подключение к [CALLEE_NAME]
+ </text>
+ <text name="calling">
+ Вызов [CALLEE_NAME]
+ </text>
+ <text name="noanswer">
+ Нет ответа. Повторите попытку позже.
+ </text>
+ <text name="nearby">
+ Вы были отключены от [VOICE_CHANNEL_NAME]. [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_other">
+ Вызов завершен. [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_agent">
+ Вы завершили вызов. [RECONNECT_NEARBY]
+ </text>
+ <text name="leaving">
+ Выход из [CURRENT_CHAT].
+ </text>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pay.xml b/indra/newview/skins/default/xui/ru/floater_pay.xml
new file mode 100644
index 0000000000..1471a7e133
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_pay.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+ <string name="payee_group">
+ Заплатить группе
+ </string>
+ <string name="payee_resident">
+ Заплатить жителю
+ </string>
+ <text name="payee_name">
+ Слишком длинное тестовое имя для проверки обрезания
+ </text>
+ <button label="L$1" label_selected="L$1" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
+ <text name="amount text">
+ Или введите количество:
+ </text>
+ <button label="Заплатить" label_selected="Заплатить" name="pay btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pay_object.xml b/indra/newview/skins/default/xui/ru/floater_pay_object.xml
new file mode 100644
index 0000000000..7d2da44ac1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_pay_object.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+ <string name="payee_group">
+ Заплатить группе
+ </string>
+ <string name="payee_resident">
+ Заплатить жителю
+ </string>
+ <text name="payee_name">
+ Ericacita Moostopolison
+ </text>
+ <text name="object_name_label">
+ Через объект:
+ </text>
+ <icon name="icon_object" tool_tip="Объекты"/>
+ <text name="object_name_text">
+ Мой офигенный объект с неэпически длинным названием
+ </text>
+ <button label="L$1" label_selected="L$1" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
+ <text name="amount text">
+ Или введите количество:
+ </text>
+ <button label="Заплатить" label_selected="Заплатить" name="pay btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_people.xml b/indra/newview/skins/default/xui/ru/floater_people.xml
new file mode 100644
index 0000000000..7abc34986a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="ЛЮДИ">
+ <panel_container name="main_panel">
+ <panel label="Профиль группы" name="panel_group_info_sidetray"/>
+ <panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
new file mode 100644
index 0000000000..a704b87bd1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="perm prefs" title="СТАНДАРТНЫЕ РАЗРЕШЕНИЯ НА ПЕРЕДАЧУ">
+ <panel label="Разрешения" name="permissions">
+ <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 initial_value="истина" label="перепродавать/отдавать" name="next_owner_transfer"/>
+ </panel>
+ <button label="ОК" label_selected="ОК" name="ok"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_picks.xml b/indra/newview/skins/default/xui/ru/floater_picks.xml
new file mode 100644
index 0000000000..e0ae8d6f03
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Подборка"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_places.xml b/indra/newview/skins/default/xui/ru/floater_places.xml
new file mode 100644
index 0000000000..2a22a855ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="МЕСТА">
+ <panel label="Места" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_post_process.xml b/indra/newview/skins/default/xui/ru/floater_post_process.xml
new file mode 100644
index 0000000000..ae97670548
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_post_process.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Post-Process Floater" title="НАСТРОЙКИ ПОСЛЕДУЮЩЕЙ ОБРАБОТКИ">
+ <tab_container name="Post-Process Tabs">
+ <panel label="Цветовой фильтр" name="wmiColorFilterPanel">
+ <check_box label="Вкл." name="wmiColorFilterToggle"/>
+ <text name="wmiColorFilterBrightnessText">
+ Яркость
+ </text>
+ <text name="wmiColorFilterSaturationText">
+ Насыщенность
+ </text>
+ <text name="wmiColorFilterContrastText">
+ Контрастность
+ </text>
+ <text name="wmiColorFilterBaseText">
+ Основной цвет контрастности
+ </text>
+ <slider label="К" name="wmiColorFilterBaseR"/>
+ <slider label="З" name="wmiColorFilterBaseG"/>
+ <slider label="С" name="wmiColorFilterBaseB"/>
+ <slider label="И" name="wmiColorFilterBaseI"/>
+ </panel>
+ <panel label="Ночное видение" name="wmiNightVisionPanel">
+ <check_box label="Вкл." name="wmiNightVisionToggle"/>
+ <text name="wmiNightVisionBrightMultText">
+ Коэффициент усиления света
+ </text>
+ <text name="wmiNightVisionNoiseSizeText">
+ Размер искажений
+ </text>
+ <text name="wmiNightVisionNoiseStrengthText">
+ Мощность искажений
+ </text>
+ </panel>
+ <panel label="Ореол" name="wmiBloomPanel">
+ <check_box label="Вкл." name="wmiBloomToggle"/>
+ <text name="wmiBloomExtractText">
+ Яркость света
+ </text>
+ <text name="wmiBloomSizeText">
+ Размер ореола
+ </text>
+ <text name="wmiBloomStrengthText">
+ Мощность ореола
+ </text>
+ </panel>
+ <panel label="Дополнительно" name="Extras">
+ <button label="Загрузить эффект" label_selected="Загрузить эффект" name="PPLoadEffect"/>
+ <button label="Сохранить эффект" label_selected="Сохранить эффект" name="PPSaveEffect"/>
+ <line_editor label="Название эффекта" name="PPEffectNameEditor"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_postcard.xml b/indra/newview/skins/default/xui/ru/floater_postcard.xml
new file mode 100644
index 0000000000..889d219511
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_postcard.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Postcard" title="ПОСЛАТЬ СНИМОК ПО EMAIL">
+ <floater.string name="default_subject">
+ Открытка из [SECOND_LIFE].
+ </floater.string>
+ <floater.string name="default_message">
+ Побывай здесь!
+ </floater.string>
+ <floater.string name="upload_message">
+ Отправка...
+ </floater.string>
+ <text name="to_label">
+ Email получателя:
+ </text>
+ <text name="from_label">
+ Ваш Email:
+ </text>
+ <text name="name_label">
+ Ваше имя:
+ </text>
+ <text name="subject_label">
+ Тема:
+ </text>
+ <line_editor label="Введите тему письма." name="subject_form"/>
+ <text name="msg_label">
+ Сообщение:
+ </text>
+ <text_editor name="msg_form">
+ Введите текст письма.
+ </text_editor>
+ <button label="Отмена" name="cancel_btn"/>
+ <button label="Отправить" name="send_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml
new file mode 100644
index 0000000000..fc244b9d8b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preferences.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Preferences" title="НАСТРОЙКИ">
+ <button label="ОК" label_selected="ОК" name="OK"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+ <tab_container name="pref core">
+ <panel label="Общие" name="general"/>
+ <panel label="Графика" name="display"/>
+ <panel label="Звук и медиа" name="audio"/>
+ <panel label="Чат" name="chat"/>
+ <panel label="Движение и обзор" name="move"/>
+ <panel label="Уведомления" name="msgs"/>
+ <panel label="Цвета" name="colors"/>
+ <panel label="Приватность" name="im"/>
+ <panel label="Конфигурация" name="input"/>
+ <panel label="Дополнительно" name="advanced1"/>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
new file mode 100644
index 0000000000..4eecfedf17
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Proxy Settings Floater" title="Настройки прокси-сервера">
+ <check_box initial_value="ложь" label="Использовать HTTP-прокси для веб-страниц" name="web_proxy_enabled"/>
+ <text name="http_proxy_label">
+ HTTP-прокси:
+ </text>
+ <line_editor name="web_proxy_editor" tool_tip="Имя DNS или IP-адрес HTTP-прокси, который следует использовать."/>
+ <spinner label="Номер порта:" name="web_proxy_port" tool_tip="Порт HTTP-прокси, который следует использовать."/>
+ <check_box label="Использовать для трафика UDP прокси-сервер SOCKS 5" name="socks_proxy_enabled"/>
+ <text name="socks5_proxy_label">
+ Сервер SOCKS 5:
+ </text>
+ <line_editor name="socks_proxy_editor" tool_tip="Имя DNS или IP-адрес прокси-сервера SOCKS 5, который следует использовать."/>
+ <spinner label="Номер порта:" name="socks_proxy_port" tool_tip="Порт прокси-сервера SOCKS 5, который следует использовать."/>
+ <text name="socks_auth_label">
+ Аутентификация SOCKS:
+ </text>
+ <radio_group name="socks5_auth_type">
+ <radio_item label="Без аутентификации" name="Socks5NoAuth" tool_tip="Аутентификация на прокси-сервере SOCKS 5 не требуется." value="Нет"/>
+ <radio_item label="Имя пользователя/пароль" name="Socks5UserPass" tool_tip="На прокси-сервере SOCKS 5 требуется аутентификация (имя пользователя и пароль)." value="UserPass"/>
+ </radio_group>
+ <text name="socks5_username_label">
+ Имя пользователя:
+ </text>
+ <text name="socks5_password_label">
+ Пароль:
+ </text>
+ <line_editor name="socks5_username" tool_tip="Имя пользователя для аутентификации на сервере SOCKS 5"/>
+ <line_editor name="socks5_password" tool_tip="Пароль для аутентификации на сервере SOCKS 5"/>
+ <text name="other_proxy_label">
+ Другой прокси-сервер HTTP-трафика:
+ </text>
+ <radio_group name="other_http_proxy_type">
+ <radio_item label="Не использовать прокси" name="OtherNoProxy" tool_tip="HTTP-трафик, не связанный с веб-сайтами, НЕ будет передаваться на прокси-сервер." value="Нет"/>
+ <radio_item label="Использовать HTTP-прокси" name="OtherHTTPProxy" tool_tip="HTTP-трафик, не связанный с веб-узлами, будет передаваться через настроенный веб-прокси." value="Веб"/>
+ <radio_item label="Использовать сервер SOCKS 5" name="OtherSocksProxy" tool_tip="HTTP-трафик, не связанный с веб-узлами, будет передаваться через настроенный сервер Socks 5." value="SOCKS"/>
+ </radio_group>
+ <button label="ОК" label_selected="ОК" name="OK"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml
new file mode 100644
index 0000000000..a1fabedb85
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+ <floater.string name="Title">
+ Анимация: [NAME]
+ </floater.string>
+ <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="Проигрывание этой анимации можете видеть только вы"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml
new file mode 100644
index 0000000000..fde2cea00e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="gesture_preview">
+ <floater.string name="step_anim">
+ Воспроизвести анимацию:
+ </floater.string>
+ <floater.string name="step_sound">
+ Воспроизвести звук:
+ </floater.string>
+ <floater.string name="step_chat">
+ Сказать в чат:
+ </floater.string>
+ <floater.string name="step_wait">
+ Ждать:
+ </floater.string>
+ <floater.string name="stop_txt">
+ Стоп
+ </floater.string>
+ <floater.string name="preview_txt">
+ Предварительный просмотр
+ </floater.string>
+ <floater.string name="none_text">
+ - Ничего -
+ </floater.string>
+ <floater.string name="Title">
+ Жест: [NAME]
+ </floater.string>
+ <text name="desc_label">
+ Описание:
+ </text>
+ <text name="trigger_label">
+ Сигнал:
+ </text>
+ <text name="replace_text" tool_tip="Заменить сигнальное слово этими словами. Например, если сигнал – «здравствуйте», а заменитель – «привет», то при вводе в чат фразы «Я хотел сказать здравствуйте» появится «Я хотел сказать привет» вместе с жестом.">
+ Заменитель:
+ </text>
+ <line_editor name="replace_editor" tool_tip="Заменить сигнальное слово этими словами. Например, если сигнал – «здравствуйте», а заменитель – «привет», то при вводе в чат фразы «Я хотел сказать здравствуйте» появится «Я хотел сказать привет» вместе с жестом."/>
+ <text name="key_label">
+ Горячая клавиша:
+ </text>
+ <combo_box label="Нет" name="modifier_combo"/>
+ <combo_box label="Нет" name="key_combo"/>
+ <text name="library_label">
+ Библиотека:
+ </text>
+ <scroll_list name="library_list">
+ <scroll_list.rows name="action_animation" value="Анимация"/>
+ <scroll_list.rows name="action_sound" value="Звук"/>
+ <scroll_list.rows name="action_chat" value="Чат"/>
+ <scroll_list.rows name="action_wait" value="Ожидание"/>
+ </scroll_list>
+ <button label="Добавить &gt;&gt;" name="add_btn"/>
+ <text name="steps_label">
+ Шаги:
+ </text>
+ <button label="Вверх" name="up_btn"/>
+ <button label="Вниз" name="down_btn"/>
+ <button label="Удалить" name="delete_btn"/>
+ <text name="options_text">
+ (параметры)
+ </text>
+ <radio_group name="animation_trigger_type">
+ <radio_item label="Старт" name="start"/>
+ <radio_item label="Стоп" name="stop"/>
+ </radio_group>
+ <check_box label="до завершения анимации" name="wait_anim_check"/>
+ <check_box label="время в секундах:" name="wait_time_check"/>
+ <text name="help_label">
+ Все шаги выполняются одновременно, если только вы не добавите шаги ожидания.
+ </text>
+ <check_box label="Активный" name="active_check" tool_tip="Активные жесты можно включить путем ввода их триггеров в чат или нажатием горячих клавиш. Жесты обычно становятся неактивными, если возникает конфликт клавиш."/>
+ <button label="Предварительный просмотр" name="preview_btn"/>
+ <button label="Сохранить" name="save_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
new file mode 100644
index 0000000000..2f39d4a4a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="ЗАМЕТКА:">
+ <floater.string name="no_object">
+ Невозможно найти объект, содержащий эту заметку.
+ </floater.string>
+ <floater.string name="not_allowed">
+ У вас нет прав для просмотра заметки.
+ </floater.string>
+ <floater.string name="Title">
+ Заметка: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Описание:
+ </text>
+ <text_editor name="Notecard Editor">
+ Загрузка...
+ </text_editor>
+ <button label="Сохранить" label_selected="Сохранить" name="Save"/>
+ <button label="Удалить" label_selected="Удалить" name="Delete"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_sound.xml b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml
new file mode 100644
index 0000000000..691b2f3e82
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+ <floater.string name="Title">
+ Звук: [NAME]
+ </floater.string>
+ <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="Воспроизведение этого звука могу слышать только я"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_texture.xml b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml
new file mode 100644
index 0000000000..c9cb87282a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+ <floater.string name="Title">
+ Текстура: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ Копировать в инвентарь
+ </floater.string>
+ <text name="desc txt">
+ Описание:
+ </text>
+ <text name="dimensions">
+ [WIDTH]x[HEIGHT] пикселей
+ </text>
+ <text name="aspect_ratio">
+ Соотношение сторон
+ </text>
+ <combo_box name="combo_aspect_ratio" tool_tip="Просмотр изображения с другим соотношением сторон">
+ <combo_item name="Unconstrained">
+ Без ограничения
+ </combo_item>
+ <combo_item name="1:1" tool_tip="Символ группы или профиль в реальном мире">
+ 1:1
+ </combo_item>
+ <combo_item name="4:3" tool_tip="Профиль для [SECOND_LIFE]">
+ 4:3
+ </combo_item>
+ <combo_item name="10:7" tool_tip="Реклама, поиск и закладки">
+ 10:7
+ </combo_item>
+ <combo_item name="3:2" tool_tip="О земле">
+ 3:2
+ </combo_item>
+ <combo_item name="16:10">
+ 16:10
+ </combo_item>
+ <combo_item name="16:9" tool_tip="Профиль подборки">
+ 16:9
+ </combo_item>
+ <combo_item name="2:1">
+ 2:1
+ </combo_item>
+ </combo_box>
+ <button label="OK" name="Keep"/>
+ <button label="Удалить" name="Discard"/>
+ <button label="Сохранить как" name="save_tex_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml b/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml
new file mode 100644
index 0000000000..fd513c8cdb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="price_for_listing" title="ОПУБЛИКОВАТЬ РЕКЛАМУ">
+ <text name="explanation_text">
+ Ваша реклама будет действительна в течение недели с момента публикации.
+
+Позиция объявления определяется уплаченной за него суммой.
+
+Чем выше плата за объявление, тем выше оно расположено в списке и тем легче его найти.
+ </text>
+ <text name="price_text">
+ Цена за объявление:
+ </text>
+ <text name="price_symbol">
+ L$
+ </text>
+ <button label="ОК" name="set_price_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_publish_classified.xml b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml
new file mode 100644
index 0000000000..b9e33d6e22
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="Публикация рекламы">
+ <text name="explanation_text">
+ Ваша реклама будет действительна в течение недели с момента публикации.
+
+Помните, оплата за рекламу не возвращается.
+ </text>
+ <spinner label="Цена: L$" name="price_for_listing" tool_tip="Цена за размещение." value="50"/>
+ <button label="Опубликовать" name="publish_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml b/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml
new file mode 100644
index 0000000000..d413a0bdcc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="region_debug_console" title="Отладка региона"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_region_info.xml b/indra/newview/skins/default/xui/ru/floater_region_info.xml
new file mode 100644
index 0000000000..011b58e385
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_region_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="regioninfo" title="РЕГИОН/ЗЕМЛЕВЛАДЕНИЕ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
new file mode 100644
index 0000000000..6fdbdacadc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="ПОЖАЛОВАТЬСЯ">
+ <floater.string name="Screenshot">
+ Снимок
+ </floater.string>
+ <check_box label="Использовать этот снимок" name="screen_check"/>
+ <text name="reporter_title">
+ Автор:
+ </text>
+ <text name="sim_title">
+ Регион:
+ </text>
+ <text name="sim_field">
+ Название региона
+ </text>
+ <text name="pos_title">
+ Координаты:
+ </text>
+ <text name="pos_field">
+ {128.1, 128.1, 15.4}
+ </text>
+ <text name="select_object_label">
+ Нажмите кнопку, затем объект-нарушитель:
+ </text>
+ <button name="pick_btn" tool_tip="Захват объекта – определяет объект как субъект этого сообщения"/>
+ <text name="object_name_label">
+ Объект:
+ </text>
+ <text name="owner_name_label">
+ Владелец:
+ </text>
+ <combo_box name="category_combo" tool_tip="Категория – выберите категорию, наиболее подходящую по типу нарушения">
+ <combo_box.item label="Выберите категорию" name="Select_category"/>
+ <combo_box.item label="Возраст &gt; Игровой возраст" name="Age__Age_play"/>
+ <combo_box.item label="Возраст &gt; Взрослый житель в Second Life для подростков" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Возраст &gt; Малолетний житель в Second Life для подростков" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Нападение &gt; Боевая «песочница»/небезопасная область" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Нападение &gt; Безопасная область" name="Assault__Safe_area"/>
+ <combo_box.item label="Нападение &gt; «Песочница» испытания оружия" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Коммерция &gt; Не удалось доставить продукт или услугу" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="Раскрытие &gt; Информация о реальном мире" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="Раскрытие &gt; Удаленный контроль чата" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="Раскрытие &gt; Информация/чат/мгновенные сообщения Second Life" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Нарушение порядка &gt; Недобросовестное использование ресурсов региона" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Нарушение порядка &gt; Избыточно скриптовые объекты" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Нарушение порядка &gt; Разбрасывание объектов" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Нарушение порядка &gt; Постоянный спам" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Нарушение порядка &gt; Нежелательная реклама" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Мошенничество &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Мошенничество &gt; Земля" name="Fraud__Land"/>
+ <combo_box.item label="Мошенничество &gt; «Пирамида» или «письмо счастья»" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Мошенничество &gt; US$" name="Fraud__US$"/>
+ <combo_box.item label="Беспокойство &gt; Рекламная ферма/видимый спам" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Беспокойство &gt; Клевета на отдельных лиц или группы" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Беспокойство &gt; Препятствие движению" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Беспокойство &gt; Сексуальное домогательство" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Беспокойство &gt; Подстрекательство
/призыв к нарушению лицензионного соглашения" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Беспокойство &gt; Оскорбление словом" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Непристойность &gt; Откровенно оскорбительное содержимое или поведение" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Непристойность &gt; Некорректное имя аватара" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Непристойность &gt; Некорректное содержимое или поведение в регионе PG" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Непристойность &gt; Некорректное содержимое или поведение в регионе Moderate" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Нарушение прав интеллектуальной собственности &gt; Удаление содержимого" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Нарушение прав интеллектуальной собственности &gt; CopyBot или нарушение разрешений" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Нетерпимость" name="Intolerance"/>
+ <combo_box.item label="Земля &gt; Злоупотребление ресурсами «песочницы»" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Земля &gt; Посягательство &gt; Объекты/текстуры" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Земля &gt; Посягательство &gt; Частицы" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Земля &gt; Посягательство &gt; Деревья/растения" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Пари/азартные игры" name="Wagering_gambling"/>
+ <combo_box.item label="Другое" name="Other"/>
+ </combo_box>
+ <text name="abuser_name_title">
+ Имя нарушителя:
+ </text>
+ <button label="Выбор" name="select_abuser" tool_tip="Выбор имени нарушителя из списка"/>
+ <text name="abuser_name_title2">
+ Место нарушения:
+ </text>
+ <text name="sum_title">
+ Краткое описание:
+ </text>
+ <text name="dscr_title">
+ Подробности:
+ </text>
+ <text name="bug_aviso">
+ Опишите проблему максимально подробно
+ </text>
+ <text name="incomplete_title">
+ * Неполные заявления не будут рассматриваться
+ </text>
+ <button label="Жалоба" label_selected="Жалоба" name="send_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug.xml b/indra/newview/skins/default/xui/ru/floater_script_debug.xml
new file mode 100644
index 0000000000..b91fc4e4ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_debug.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="script debug floater" title="Предупреждения/ошибки скриптов"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml
new file mode 100644
index 0000000000..e70a30fa24
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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/ru/floater_script_limits.xml b/indra/newview/skins/default/xui/ru/floater_script_limits.xml
new file mode 100644
index 0000000000..7805eac03b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="ИНФОРМАЦИЯ О СКРИПТАХ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_preview.xml b/indra/newview/skins/default/xui/ru/floater_script_preview.xml
new file mode 100644
index 0000000000..78cefb7aa7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_preview.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="СКРИПТ: ROTATION SCRIPT">
+ <floater.string name="Title">
+ СКРИПТ: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Описание:
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_queue.xml b/indra/newview/skins/default/xui/ru/floater_script_queue.xml
new file mode 100644
index 0000000000..4f2e389b19
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_queue.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="СБРОСИТЬ ПРОГРЕСС">
+ <floater.string name="Starting">
+ Запуск [START] объектов (объектов: [COUNT]).
+ </floater.string>
+ <floater.string name="Done">
+ Готово.
+ </floater.string>
+ <floater.string name="Resetting">
+ Сброс
+ </floater.string>
+ <floater.string name="Running">
+ Запущен
+ </floater.string>
+ <floater.string name="NotRunning">
+ Не запущен
+ </floater.string>
+ <button label="Закрыть" label_selected="Закрыть" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_search.xml b/indra/newview/skins/default/xui/ru/floater_script_search.xml
new file mode 100644
index 0000000000..fc040f6593
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_search.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script search" title="ПОИСК В СКРИПТЕ">
+ <check_box label="Без учета регистра" name="case_text"/>
+ <button label="Поиск" label_selected="Поиск" name="search_btn"/>
+ <button label="Заменить" label_selected="Заменить" name="replace_btn"/>
+ <button label="Заменить все" label_selected="Заменить все" name="replace_all_btn"/>
+ <text name="txt">
+ Поиск
+ </text>
+ <text name="txt2">
+ Заменить
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_search.xml b/indra/newview/skins/default/xui/ru/floater_search.xml
new file mode 100644
index 0000000000..405a6598ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="">
+ <floater.string name="loading_text">
+ Загрузка...
+ </floater.string>
+ <floater.string name="done_text">
+ Готово
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="browser_layout">
+ <text name="refresh_search">
+ Повторить поиск, чтобы показать текущий уровень творца
+ </text>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_select_key.xml b/indra/newview/skins/default/xui/ru/floater_select_key.xml
new file mode 100644
index 0000000000..99c2b9a2c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_select_key.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+ <text name="Save item as:">
+ Нажмите клавишу для включения/выключения речи.
+ </text>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sell_land.xml b/indra/newview/skins/default/xui/ru/floater_sell_land.xml
new file mode 100644
index 0000000000..e15f761101
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sell_land.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sell land" title="ПРОДАЖА ЗЕМЛИ">
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Участок:
+ </text>
+ <text name="info_parcel">
+ НАЗВАНИЕ УЧАСТКА
+ </text>
+ <text name="info_size_label">
+ Размер:
+ </text>
+ <text name="info_size">
+ [AREA] м²
+ </text>
+ <text name="info_action">
+ Чтобы продать этот участок:
+ </text>
+ <text name="price_label">
+ 1. Назначьте цену:
+ </text>
+ <text name="price_text">
+ Установите устраивающую вас цену.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <line_editor name="price">
+ 0
+ </line_editor>
+ <text name="price_per_m">
+ (L$[PER_METER] за м²)
+ </text>
+ <text name="sell_to_label">
+ 2. Продажа земли:
+ </text>
+ <text name="sell_to_text">
+ Укажите, кому будете продавать землю.
+ </text>
+ <combo_box name="sell_to">
+ <combo_box.item label="- выберите -" name="--selectone--"/>
+ <combo_box.item label="Все" name="Anyone"/>
+ <combo_box.item label="Конкретному жителю:" name="Specificuser:"/>
+ </combo_box>
+ <button label="Выбрать" name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ 3. Продать объекты вместе с землей?
+ </text>
+ <text name="sell_objects_text">
+ Перемещаемые объекты хозяина этой земли изменят владельца?
+ </text>
+ <radio_group name="sell_objects">
+ <radio_item label="Нет, сохранить владение объектами" name="no"/>
+ <radio_item label="Да, продать объекты вместе с землей" name="yes"/>
+ </radio_group>
+ <button label="Показать объекты" name="show_objects"/>
+ <text name="nag_message_label">
+ ПОМНИТЕ: продажи нельзя отменить.
+ </text>
+ <button label="Выставить землю на продажу" name="sell_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
new file mode 100644
index 0000000000..7db014ef53
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="НАСТРОЙКИ ОТЛАДКИ">
+ <radio_group name="boolean_combo">
+ <radio_item label="ИСТИНА" name="TRUE" value="истина"/>
+ <radio_item label="ЛОЖЬ" name="FALSE" value=""/>
+ </radio_group>
+ <color_swatch label="Цвет" 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="Сброс в стандартное значение" name="default_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_snapshot.xml b/indra/newview/skins/default/xui/ru/floater_snapshot.xml
new file mode 100644
index 0000000000..f85d602be7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_snapshot.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Snapshot" title="ПРОСМОТР СНИМКА">
+ <floater.string name="unknown">
+ неизвестно
+ </floater.string>
+ <radio_group label="Тип снимка" name="snapshot_type_radio">
+ <radio_item label="Электронная почта" name="postcard"/>
+ <radio_item label="Мой инвентарь (L$[AMOUNT])" name="texture"/>
+ <radio_item label="Сохранить на моем компьютере" name="local"/>
+ </radio_group>
+ <text name="file_size_label">
+ [SIZE] КБ
+ </text>
+ <button label="Послать" name="send_btn"/>
+ <button label="Сохранить (L$[AMOUNT])" name="upload_btn"/>
+ <flyout_button label="Сохранить" name="save_btn" tool_tip="Сохранить изображение в файл">
+ <flyout_button.item label="Сохранить" name="save_item"/>
+ <flyout_button.item label="Сохранить как..." name="saveas_item"/>
+ </flyout_button>
+ <button label="Больше" name="more_btn" tool_tip="Дополнительные параметры"/>
+ <button label="Меньше" name="less_btn" tool_tip="Дополнительные параметры"/>
+ <button label="Отмена" name="discard_btn"/>
+ <text name="type_label2">
+ Размер
+ </text>
+ <text name="format_label">
+ Формат
+ </text>
+ <combo_box label="Разрешение" name="postcard_size_combo">
+ <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="Маленький (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="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="Задать" name="Custom"/>
+ </combo_box>
+ <combo_box label="Формат" name="local_format_combo">
+ <combo_box.item label="PNG" name="PNG"/>
+ <combo_box.item label="JPEG" name="JPEG"/>
+ <combo_box.item label="BMP" name="BMP"/>
+ </combo_box>
+ <spinner label="Ширина" name="snapshot_width"/>
+ <spinner label="Высота" name="snapshot_height"/>
+ <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>
+ <check_box label="Интерфейс" name="ui_check"/>
+ <check_box label="HUD" name="hud_check"/>
+ <check_box label="Оставить окно открытым" name="keep_open_check"/>
+ <check_box label="Стоп-кадр (полноэкранный)" name="freeze_frame_check"/>
+ <check_box label="Автообновление" name="auto_snapshot_check"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
new file mode 100644
index 0000000000..fc8de858cd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_sound_devices" title="ЗВУКОВЫЕ УСТРОЙСТВА">
+ <text name="voice_label">
+ Голосовой чат
+ </text>
+ <check_box label="Включен" name="enable_voice"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_preview.xml b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml
new file mode 100644
index 0000000000..6fdb12b76b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Sound Preview" title="SOUND.WAV">
+ <text name="name_label">
+ Название:
+ </text>
+ <text name="description_label">
+ Описание:
+ </text>
+ <button label="Передать (L$[AMOUNT])" name="ok_btn"/>
+ <button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_stats.xml b/indra/newview/skins/default/xui/ru/floater_stats.xml
new file mode 100644
index 0000000000..b1f60c8029
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_stats.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="СТАТИСТИКА">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Базовая" name="basic">
+ <stat_bar label="Кадров/с" name="fps"/>
+ <stat_bar label="Ширина канала" name="bandwidth"/>
+ <stat_bar label="Потери пакетов" name="packet_loss"/>
+ <stat_bar label="Пинг" name="ping"/>
+ </stat_view>
+ <stat_view label="Дополнительно" name="advanced">
+ <stat_view label="Отрисовка" name="render">
+ <stat_bar label="Треугольников на кадр" name="ktrisframe"/>
+ <stat_bar label="Треугольников в секунду" name="ktrissec"/>
+ <stat_bar label="Всего объектов" name="objs"/>
+ <stat_bar label="Новых объектов" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Текстура" name="texture">
+ <stat_bar label="Количество" name="numimagesstat"/>
+ <stat_bar label="Необраб. изображений" name="numrawimagesstat"/>
+ <stat_bar label="Память GL" name="gltexmemstat"/>
+ <stat_bar label="Форматированная память" name="formattedmemstat"/>
+ <stat_bar label="Неформатированная память" name="rawmemstat"/>
+ <stat_bar label="Ограничение памяти" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Сеть" name="network">
+ <stat_bar label="Входящие пакеты" name="packetsinstat"/>
+ <stat_bar label="Исходящие пакеты" name="packetsoutstat"/>
+ <stat_bar label="Объекты" name="objectkbitstat"/>
+ <stat_bar label="Текстура" name="texturekbitstat"/>
+ <stat_bar label="Актив" name="assetkbitstat"/>
+ <stat_bar label="Слои" name="layerskbitstat"/>
+ <stat_bar label="Действительный ввод" name="actualinkbitstat"/>
+ <stat_bar label="Действительный вывод" name="actualoutkbitstat"/>
+ <stat_bar label="Ожидающие операции VFS" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Симулятор" name="sim">
+ <stat_bar label="Замедление времени" name="simtimedilation"/>
+ <stat_bar label="Симуляция: кадров/с" name="simfps"/>
+ <stat_bar label="Физика: кадров/с" name="simphysicsfps"/>
+ <stat_view label="Физические данные" name="physicsdetail">
+ <stat_bar label="Закрепленные объекты" name="physicspinnedtasks"/>
+ <stat_bar label="Объекты с низкой детализацией" name="physicslodtasks"/>
+ <stat_bar label="Выделенная память" name="physicsmemoryallocated"/>
+ </stat_view>
+ <stat_bar label="Обновлений агента/с" name="simagentups"/>
+ <stat_bar label="Основные агенты" name="simmainagents"/>
+ <stat_bar label="Дочерние агенты" name="simchildagents"/>
+ <stat_bar label="Объекты" name="simobjects"/>
+ <stat_bar label="Активные объекты" name="simactiveobjects"/>
+ <stat_bar label="Активные скрипты" name="simactivescripts"/>
+ <stat_bar label="События скрипта" name="simscripteps"/>
+ <stat_bar label="Входящие пакеты" name="siminpps"/>
+ <stat_bar label="Исходящие пакеты" name="simoutpps"/>
+ <stat_bar label="Отложенные загрузки" name="simpendingdownloads"/>
+ <stat_bar label="Отложенные передачи" name="simpendinguploads"/>
+ <stat_bar label="Общий нераспакованный объем (байт)" name="simtotalunackedbytes"/>
+ <stat_view label="Время (мс)" name="simperf">
+ <stat_bar label="Общее время кадра" name="simframemsec"/>
+ <stat_bar label="Чистое время" name="simnetmsec"/>
+ <stat_bar label="Время на физику" name="simsimphysicsmsec"/>
+ <stat_bar label="Время на симуляцию" name="simsimothermsec"/>
+ <stat_bar label="Время на клиент" name="simagentmsec"/>
+ <stat_bar label="Время на изображения" name="simimagesmsec"/>
+ <stat_bar label="Время на скрипт" name="simscriptmsec"/>
+ <stat_bar label="Резервное время" name="simsparemsec"/>
+ <stat_view label="Данные времени (мс)" name="timedetails">
+ <stat_bar label="Шаг физики" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Обновить физ. формы" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Физика - прочее" name="simsimphysicsothermsec"/>
+ <stat_bar label="Время сна" name="simsleepmsec"/>
+ <stat_bar label="Ввод/вывод" name="simpumpiomsec"/>
+ </stat_view>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sys_well.xml b/indra/newview/skins/default/xui/ru/floater_sys_well.xml
new file mode 100644
index 0000000000..b6975ac9ab
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="УВЕДОМЛЕНИЯ">
+ <string name="title_im_well_window">
+ ОБЩЕНИЕ
+ </string>
+ <string name="title_notification_well_window">
+ УВЕДОМЛЕНИЯ
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_telehub.xml b/indra/newview/skins/default/xui/ru/floater_telehub.xml
new file mode 100644
index 0000000000..799fd57b5b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_telehub.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Explicit left edge to avoid overlapping build tools -->
+<floater name="telehub" title="ТЕЛЕХАБ">
+ <text name="status_text_connected">
+ Телехаб подключен к объекту [OBJECT]
+ </text>
+ <text name="status_text_not_connected">
+ Телехаб не подключен.
+ </text>
+ <text name="help_text_connected">
+ Для удаления нажмите «Отключить».
+ </text>
+ <text name="help_text_not_connected">
+ Выберите объект и нажмите «Подключить телехаб».
+ </text>
+ <button label="Подключить телехаб" name="connect_btn"/>
+ <button label="Отключить" name="disconnect_btn"/>
+ <text name="spawn_points_text">
+ Точки появления (позиции, а не объекты):
+ </text>
+ <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/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
new file mode 100644
index 0000000000..d55daea836
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="texture picker" title="ВЫБРАТЬ: ТЕКСТУРУ">
+ <floater.string name="choose_picture">
+ Щелкните для выбора изображения
+ </floater.string>
+ <floater.string name="pick title">
+ Выбрать:
+ </floater.string>
+ <text name="Multiple">
+ Несколько текстур
+ </text>
+ <text name="unknown">
+ Размер: [DIMENSIONS]
+ </text>
+ <button label="По умолчанию" label_selected="По умолчанию" name="Default"/>
+ <button label="Нет" label_selected="Нет" name="None"/>
+ <button label="Очистить" label_selected="Очистить" name="Blank"/>
+ <check_box initial_value="истина" label="Применить сейчас" name="apply_immediate_check"/>
+ <filter_editor label="Фильтровать текстуры" name="inventory search editor"/>
+ <check_box initial_value="ложь" label="Показывать папки" name="show_folders_check"/>
+ <button label="ОК" label_selected="ОК" name="Select"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml
new file mode 100644
index 0000000000..eb9083f7fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_tools.xml
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="ИНСТРУМЕНТЫ ДЛЯ СТРОИТЕЛЬСТВА">
+ <floater.string name="status_rotate">
+ Перетягивайте цветные полосы для вращения объекта
+ </floater.string>
+ <floater.string name="status_scale">
+ Щелкните и перетащите для растяжения выбранной стороны
+ </floater.string>
+ <floater.string name="status_move">
+ Перемещение: перетащить, копирование: перетащить при нажатой клавише 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
+ </floater.string>
+ <floater.string name="status_place">
+ Щелкните для создания
+ </floater.string>
+ <floater.string name="status_selectland">
+ Щелкните и перетащите для выделения земли
+ </floater.string>
+ <floater.string name="status_selectcount">
+ Выбрано объектов: [OBJ_COUNT], влияние на землю [LAND_IMPACT]
+ </floater.string>
+ <floater.string name="status_remaining_capacity">
+ Остаток емкости [LAND_CAPACITY].
+ </floater.string>
+ <button name="button focus" tool_tip="Фокус"/>
+ <button name="button move" tool_tip="Переместить"/>
+ <button name="button edit" tool_tip="Изменить"/>
+ <button name="button create" tool_tip="Создать"/>
+ <button name="button land" tool_tip="Земля"/>
+ <text name="text status">
+ Перемещение: перетащить, копирование: перетащить при нажатой клавише Shift
+ </text>
+ <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_group>
+ <slider_bar initial_value="0.125" name="slider zoom"/>
+ <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_group>
+ <radio_group name="edit_radio_group">
+ <radio_item label="Переместить" name="radio position"/>
+ <radio_item label="Вращение (Ctrl)" name="radio rotate"/>
+ <radio_item label="Растяжка (Ctrl+Shift)" name="radio stretch"/>
+ <radio_item label="Выбор грани" name="radio select face"/>
+ </radio_group>
+ <check_box label="Редактировать объединенные" name="checkbox edit linked parts"/>
+ <button label="Объединить" name="link_btn"/>
+ <button label="Разъединить" name="unlink_btn"/>
+ <text label="Растяжка обеих сторон" name="checkbox uniform label">
+ Растяжка обеих сторон
+ </text>
+ <check_box initial_value="истина" label="Растягивать текстуры" name="checkbox stretch textures"/>
+ <check_box initial_value="истина" label="Привязка" name="checkbox snap to grid"/>
+ <button label="Параметры..." name="Options..." tool_tip="Дополнительные параметры сетки"/>
+ <button name="ToolCube" tool_tip="Куб"/>
+ <button name="ToolPrism" tool_tip="Призма"/>
+ <button name="ToolPyramid" tool_tip="Пирамида"/>
+ <button name="ToolTetrahedron" tool_tip="Тетраэдр"/>
+ <button name="ToolCylinder" tool_tip="Цилиндр"/>
+ <button name="ToolHemiCylinder" tool_tip="Полуцилиндр"/>
+ <button name="ToolCone" tool_tip="Конус"/>
+ <button name="ToolHemiCone" tool_tip="Полуконус"/>
+ <button name="ToolSphere" tool_tip="Сфера"/>
+ <button name="ToolHemiSphere" tool_tip="Полусфера"/>
+ <button name="ToolTorus" tool_tip="Тор"/>
+ <button name="ToolTube" tool_tip="Труба"/>
+ <button name="ToolRing" tool_tip="Кольцо"/>
+ <button name="ToolTree" tool_tip="Дерево"/>
+ <button name="ToolGrass" tool_tip="Трава"/>
+ <check_box label="Держать инструмент" name="checkbox sticky"/>
+ <check_box label="Копировать выдел." name="checkbox copy selection"/>
+ <check_box initial_value="истина" label="Центрир. копию" name="checkbox copy centers"/>
+ <check_box label="Повернуть копию" name="checkbox copy rotates"/>
+ <radio_group name="land_radio_group">
+ <radio_item label="Выбрать землю" name="radio select land"/>
+ <radio_item label="Выровнять" name="radio flatten"/>
+ <radio_item label="Поднять" name="radio raise"/>
+ <radio_item label="Ниже" name="radio lower"/>
+ <radio_item label="Гладко" name="radio smooth"/>
+ <radio_item label="Огрубить" name="radio noise"/>
+ <radio_item label="Восстановить" name="radio revert"/>
+ </radio_group>
+ <text name="Bulldozer:">
+ Бульдозер:
+ </text>
+ <text name="Dozer Size:">
+ Размер
+ </text>
+ <slider_bar initial_value="2.0" name="slider brush size"/>
+ <text name="Strength:">
+ Сила
+ </text>
+ <slider_bar initial_value="0.00" name="slider force"/>
+ <button label="Применить" label_selected="Применить" name="button apply to selection" tool_tip="Изменить выбранную землю"/>
+ <text name="selection_empty">
+ Не выбрано.
+ </text>
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Дополнительная информация]
+ </text>
+ <tab_container name="Object Info Tabs">
+ <panel label="Общие" name="General">
+ <panel.string name="text deed continued">
+ Сделка
+ </panel.string>
+ <panel.string name="text deed">
+ Сделка
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Этот объект можно изменять
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Эти объекты можно изменять
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Этот объект нельзя изменять
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Эти объекты нельзя изменять
+ </panel.string>
+ <panel.string name="text modify warning">
+ Чтобы задать права доступа, нужно выделить объект целиком
+ </panel.string>
+ <panel.string name="Cost Default">
+ Цена: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Всего: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Цена за: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Смешанная цена
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Смешанная продажа
+ </panel.string>
+ <text name="Name:">
+ Название:
+ </text>
+ <text name="Description:">
+ Описание:
+ </text>
+ <text name="Creator:">
+ Создатель:
+ </text>
+ <text name="Owner:">
+ Владелец:
+ </text>
+ <text name="Group:">
+ Группа:
+ </text>
+ <name_box initial_value="Загрузка..." name="Group Name Proxy"/>
+ <button name="button set group" tool_tip="Выберите группу для передачи ей прав доступа к объекту"/>
+ <check_box label="Поделиться" name="checkbox share with group" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
+ <button label="Сделка" label_selected="Сделка" name="button deed" tool_tip="В результате сделки объект передается группе, при этом права на него будут соответствовать правам следующего владельца. Переданный группе объект может передаваться должностным лицом группы."/>
+ <text name="label click action">
+ По щелчку:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="Коснуться (по умолчанию)" name="Touch/grab(default)"/>
+ <combo_box.item label="Сесть на объект" name="Sitonobject"/>
+ <combo_box.item label="Купить объект" name="Buyobject"/>
+ <combo_box.item label="Заплатить за объект" name="Payobject"/>
+ <combo_box.item label="Открыть" name="Open"/>
+ <combo_box.item label="Увеличение" name="Zoom"/>
+ </combo_box>
+ <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="Original"/>
+ </combo_box>
+ <spinner label="Цена: L$" name="Edit Cost"/>
+ <check_box label="Показать в поиске" name="search_check" tool_tip="Показывать объект в результатах поиска"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Этот объект можно изменять
+ </text>
+ <text name="Anyone can:">
+ Все:
+ </text>
+ <check_box label="Переместить" name="checkbox allow everyone move"/>
+ <check_box label="Копировать" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Следующий владелец:
+ </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="Следующий владелец может отдать или перепродать объект"/>
+ <text name="B:">
+ Н:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ В:
+ </text>
+ <text name="N:">
+ С:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
+ </panel>
+ <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="Temporary Checkbox Ctrl" tool_tip="Приводит к автоматическому удалению объекта через минуту после создания."/>
+ <check_box label="Фантомный" name="Phantom Checkbox Ctrl" tool_tip="Предотвращает столкновение объекта с другими объектами или аватарами."/>
+ <text name="label position">
+ Позиция (метры)
+ </text>
+ <spinner label="X" name="Pos X"/>
+ <spinner label="Y" name="Pos Y"/>
+ <spinner label="Z" name="Pos Z"/>
+ <text name="label size">
+ Размер (метры)
+ </text>
+ <spinner label="X" name="Scale X"/>
+ <spinner label="Y" name="Scale Y"/>
+ <spinner label="Z" name="Scale Z"/>
+ <text name="label rotation">
+ Поворот (градусы)
+ </text>
+ <spinner label="X" name="Rot X"/>
+ <spinner label="Y" name="Rot Y"/>
+ <spinner label="Z" name="Rot Z"/>
+ <combo_box name="comboBaseType">
+ <combo_box.item label="Коробка" name="Box"/>
+ <combo_box.item label="Цилиндр" name="Cylinder"/>
+ <combo_box.item label="Призма" name="Prism"/>
+ <combo_box.item label="Сфера" name="Sphere"/>
+ <combo_box.item label="Тор" name="Torus"/>
+ <combo_box.item label="Труба" name="Tube"/>
+ <combo_box.item label="Кольцо" name="Ring"/>
+ <combo_box.item label="Скульптурный" name="Sculpted"/>
+ </combo_box>
+ <text name="text cut">
+ Разрез (начало/конец)
+ </text>
+ <spinner label="B" name="cut begin"/>
+ <spinner label="В" name="cut end"/>
+ <text name="text hollow">
+ Полость
+ </text>
+ <text name="text skew">
+ Спираль
+ </text>
+ <text name="Hollow Shape">
+ Форма полости
+ </text>
+ <combo_box name="hole">
+ <combo_box.item label="По умолчанию" name="Default"/>
+ <combo_box.item label="Круглая" name="Circle"/>
+ <combo_box.item label="Квадратная" name="Square"/>
+ <combo_box.item label="Треугольная" name="Triangle"/>
+ </combo_box>
+ <text name="text twist">
+ Скручивание
+ </text>
+ <spinner label="С" name="Twist Begin"/>
+ <spinner label="E" name="Twist End"/>
+ <text name="scale_taper">
+ Конусный срез
+ </text>
+ <text name="scale_hole">
+ Размер отверстия
+ </text>
+ <spinner label="X" name="Taper Scale X"/>
+ <spinner label="Y" name="Taper Scale Y"/>
+ <text name="text topshear">
+ Сдвиг вершины
+ </text>
+ <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="С" name="Path Limit Begin"/>
+ <spinner label="E" name="Path Limit End"/>
+ <text name="text taper2">
+ Конусный срез
+ </text>
+ <spinner label="X" name="Taper X"/>
+ <spinner label="Y" name="Taper Y"/>
+ <text name="text radius delta">
+ Радиус
+ </text>
+ <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="Инвертировать нормали скульптурного примитива, «вывернув» его наизнанку"/>
+ <text name="label sculpt type">
+ Тип стыковки
+ </text>
+ <combo_box name="sculpt type control">
+ <combo_box.item label="По сфере" name="Sphere"/>
+ <combo_box.item label="По тору" name="Torus"/>
+ <combo_box.item label="По плоскости" name="Plane"/>
+ <combo_box.item label="По цилиндру" name="Cylinder"/>
+ </combo_box>
+ </panel>
+ <panel label="Особенности" name="Features">
+ <panel.string name="None">
+ Нет
+ </panel.string>
+ <panel.string name="Prim">
+ Примитив
+ </panel.string>
+ <panel.string name="Convex Hull">
+ Сложная оболочка
+ </panel.string>
+ <text name="select_single">
+ Выберите только один примитив для изменения особенностей.
+ </text>
+ <text name="edit_object">
+ Изменение особенностей объекта:
+ </text>
+ <check_box label="Гибкость" name="Flexible1D Checkbox Ctrl" tool_tip="Объект может изгибаться по оси Z (настройки на стороне клиента)"/>
+ <spinner label="Мягкость" name="FlexNumSections"/>
+ <spinner label="Гравитация" name="FlexGravity"/>
+ <spinner label="Парусность" name="FlexFriction"/>
+ <spinner label="Ветер" name="FlexWind"/>
+ <spinner label="Упругость" name="FlexTension"/>
+ <spinner label="X-действие" name="FlexForceX"/>
+ <spinner label="Y-действие" name="FlexForceY"/>
+ <spinner label="Z-действие" name="FlexForceZ"/>
+ <check_box label="Свет" name="Light Checkbox Ctrl" tool_tip="Объект будет излучать свет"/>
+ <color_swatch name="colorswatch" tool_tip="Щелкните для выбора цвета"/>
+ <texture_picker label="" name="light texture control" tool_tip="Щелкните для выбора проецируемого изображения (действует только с включенной отложенной отрисовкой)"/>
+ <spinner label="Интенсивность" name="Light Intensity"/>
+ <spinner label="Угол обзора" name="Light FOV"/>
+ <spinner label="Радиус" name="Light Radius"/>
+ <spinner label="Фокус" name="Light Focus"/>
+ <spinner label="Ослабление" name="Light Falloff"/>
+ <spinner label="Окружение" name="Light Ambiance"/>
+ <text name="label physicsshapetype">
+ Тип физич. формы:
+ </text>
+ <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Выберите тип физической формы"/>
+ <combo_box name="material">
+ <combo_box.item label="Камень" name="Stone"/>
+ <combo_box.item label="Металл" name="Metal"/>
+ <combo_box.item label="Стекло" name="Glass"/>
+ <combo_box.item label="Дерево" name="Wood"/>
+ <combo_box.item label="Плоть" name="Flesh"/>
+ <combo_box.item label="Пластик" name="Plastic"/>
+ <combo_box.item label="Резина" name="Rubber"/>
+ </combo_box>
+ <spinner label="Гравитация" name="Physics Gravity"/>
+ <spinner label="Трение" name="Physics Friction"/>
+ <spinner label="Плотность в 100 кг/м^3" name="Physics Density"/>
+ <spinner label="Восстанавливаемость" name="Physics Restitution"/>
+ </panel>
+ <panel label="Текстура" name="Texture">
+ <panel.string name="string repeats per meter">
+ Повторений на метр
+ </panel.string>
+ <panel.string name="string repeats per face">
+ Повторений на грань
+ </panel.string>
+ <texture_picker label="Текстура" name="texture control" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет" name="colorswatch" tool_tip="Щелкните для выбора цвета"/>
+ <text name="color trans">
+ Прозрачность %
+ </text>
+ <text name="glow label">
+ Свечение
+ </text>
+ <check_box label="Собств. яркость" name="checkbox fullbright"/>
+ <text name="tex gen">
+ Наложение
+ </text>
+ <combo_box name="combobox texgen">
+ <combo_box.item label="По умолчанию" name="Default"/>
+ <combo_box.item label="На плоскость" name="Planar"/>
+ </combo_box>
+ <text name="label shininess">
+ Блеск
+ </text>
+ <combo_box name="combobox shininess">
+ <combo_box.item label="Нет" name="None"/>
+ <combo_box.item label="Низко" name="Low"/>
+ <combo_box.item label="Средний" name="Medium"/>
+ <combo_box.item label="Высоко" name="High"/>
+ </combo_box>
+ <text name="label bumpiness">
+ Рельефность
+ </text>
+ <combo_box name="combobox bumpiness">
+ <combo_box.item label="Нет" name="None"/>
+ <combo_box.item label="Яркость" name="Brightness"/>
+ <combo_box.item label="По темному" name="Darkness"/>
+ <combo_box.item label="дерево" name="woodgrain"/>
+ <combo_box.item label="кора" name="bark"/>
+ <combo_box.item label="кирпич" name="bricks"/>
+ <combo_box.item label="шахматная доска" name="checker"/>
+ <combo_box.item label="бетон" name="concrete"/>
+ <combo_box.item label="старая плитка" name="crustytile"/>
+ <combo_box.item label="тесаный камень" name="cutstone"/>
+ <combo_box.item label="диски" name="discs"/>
+ <combo_box.item label="гравий" name="gravel"/>
+ <combo_box.item label="чашка Петри" name="petridish"/>
+ <combo_box.item label="сайдинг" name="siding"/>
+ <combo_box.item label="каменная плитка" name="stonetile"/>
+ <combo_box.item label="штукатурка" name="stucco"/>
+ <combo_box.item label="присоска" name="suction"/>
+ <combo_box.item label="переплетение" name="weave"/>
+ </combo_box>
+ <check_box initial_value="ложь" label="Согласование" name="checkbox planar align" tool_tip="Согласование текстур на всех выбранных граних по последней выбранной грани. Должно быть выбрано наложение по плоскостям."/>
+ <text name="rpt">
+ Повторов на грань
+ </text>
+ <spinner label="По горизонтали (U)" name="TexScaleU"/>
+ <check_box label="Разворот" name="checkbox flip s"/>
+ <spinner label="По вертикали (V)" name="TexScaleV"/>
+ <check_box label="Разворот" name="checkbox flip t"/>
+ <spinner label="Вращение˚" name="TexRot"/>
+ <spinner label="Повторов на метр" name="rptctrl"/>
+ <button label="Применить" label_selected="Применить" name="button apply"/>
+ <text name="tex offset">
+ Сдвиг текстуры
+ </text>
+ <spinner label="По горизонтали (U)" name="TexOffsetU"/>
+ <spinner label="По вертикали (V)" name="TexOffsetV"/>
+ <panel name="Add_Media">
+ <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="Масштабирование медиа-текстуры (сначала нужно загрузить)"/>
+ </panel>
+ </panel>
+ <panel label="Контент" name="Contents">
+ <button label="Создать скрипт" label_selected="Создать скрипт" name="button new script"/>
+ <button label="Разрешения" name="button permissions"/>
+ </panel>
+ </tab_container>
+ <panel name="land info panel">
+ <text name="label_parcel_info">
+ Даные об участке
+ </text>
+ <text name="label_area_price">
+ Цена: L$[PRICE] за [AREA] м²
+ </text>
+ <text name="label_area">
+ Площадь: [AREA] м²
+ </text>
+ <button label="О земле" label_selected="О земле" name="button about land"/>
+ <check_box label="Показать владельцев" name="checkbox show owners" tool_tip="Цвет участка в зависимости от типа владения: зеленый = ваша земля; голубой = земля вашей группы; красный = чужая земля; желтый = для продажи; фиолетовый = для аукциона; серый = общая"/>
+ <text name="label_parcel_modify">
+ Изменение участка
+ </text>
+ <button label="Разделить" label_selected="Разделить" name="button subdivide land"/>
+ <button label="Объединить" label_selected="Объединить" name="button join land"/>
+ <text name="label_parcel_trans">
+ Действия с землей
+ </text>
+ <button label="Купить землю" label_selected="Купить землю" name="button buy land"/>
+ <button label="Отказаться от земли" label_selected="Отказаться от земли" name="button abandon land"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_top_objects.xml b/indra/newview/skins/default/xui/ru/floater_top_objects.xml
new file mode 100644
index 0000000000..a6ffe5c030
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_top_objects.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="top_objects" title="Лучшие объекты">
+ <floater.string name="top_scripts_title">
+ Лучшие скрипты
+ </floater.string>
+ <floater.string name="top_scripts_text">
+ [COUNT] скриптов длительностью [TIME] мс
+ </floater.string>
+ <floater.string name="scripts_score_label">
+ Время
+ </floater.string>
+ <floater.string name="scripts_mono_time_label">
+ Время моно
+ </floater.string>
+ <floater.string name="top_colliders_title">
+ Лучшие столкновения
+ </floater.string>
+ <floater.string name="top_colliders_text">
+ Лучшие [COUNT] объектов, подвергающиеся потенциальным столкновениям
+ </floater.string>
+ <floater.string name="colliders_score_label">
+ Очки
+ </floater.string>
+ <floater.string name="none_descriptor">
+ Не найдено.
+ </floater.string>
+ <text name="title_text">
+ Загрузка...
+ </text>
+ <scroll_list name="objects_list">
+ <scroll_list.columns label="Очки" name="score"/>
+ <scroll_list.columns label="Название" name="name"/>
+ <scroll_list.columns label="Владелец" name="owner"/>
+ <scroll_list.columns label="Место" name="location"/>
+ <scroll_list.columns label="Время" name="time"/>
+ <scroll_list.columns label="Время моно" name="mono_time"/>
+ <scroll_list.columns label="URL-адреса" name="URLs"/>
+ </scroll_list>
+ <text name="id_text">
+ ID объекта:
+ </text>
+ <button label="Показать метку" name="show_beacon_btn"/>
+ <text name="obj_name_text">
+ Название объекта:
+ </text>
+ <button label="Фильтр" name="filter_object_btn"/>
+ <text name="owner_name_text">
+ Владелец:
+ </text>
+ <button label="Фильтр" name="filter_owner_btn"/>
+ <button label="Вернуть выбранное" name="return_selected_btn"/>
+ <button label="Вернуть все" name="return_all_btn"/>
+ <button label="Отключить выбранное" name="disable_selected_btn"/>
+ <button label="Отключить все" name="disable_all_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_tos.xml b/indra/newview/skins/default/xui/ru/floater_tos.xml
new file mode 100644
index 0000000000..bd72f6b308
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_tos.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+ <floater.string name="real_url">
+ http://secondlife.com/app/tos/
+ </floater.string>
+ <floater.string name="loading_url">
+ data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
+ </floater.string>
+ <button label="Продолжить" label_selected="Продолжить" name="Continue"/>
+ <button label="Отмена" label_selected="Отмена" name="Cancel"/>
+ <check_box label="Я принимаю условия Пользовательского соглашения и Политики конфиденциальности" name="agree_chk"/>
+ <text name="tos_heading">
+ Внимательно прочитайте Пользовательское соглашение и Политику конфиденциальности. Для входа в [SECOND_LIFE] вы должны согласиться с условиями соглашения.
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_toybox.xml b/indra/newview/skins/default/xui/ru/floater_toybox.xml
new file mode 100644
index 0000000000..8d7431d393
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="НАСТРОИТЬ ПАНЕЛИ ИНСТРУМЕНТОВ">
+ <text name="toybox label 1">
+ Добавьте или удалите кнопки, перетягивая их на панели инструментов или с них.
+ </text>
+ <text name="toybox label 2">
+ Кнопки будут отображены в исходном виде или в виде значков, в зависимости от настроек каждой панели инструментов.
+ </text>
+ <button label="Вернуть стандартные" label_selected="Вернуть стандартные" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_url_entry.xml b/indra/newview/skins/default/xui/ru/floater_url_entry.xml
new file mode 100644
index 0000000000..59f8dd0c31
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_url_entry.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="url_entry">
+ <text name="media_label">
+ URL-адрес мультимедийного ресурса:
+ </text>
+ <button label="ОК" name="ok_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+ <button label="Очистить" name="clear_btn"/>
+ <text name="loading_label">
+ Загрузка...
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
new file mode 100644
index 0000000000..c1fb858d48
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="УПРАВЛЕНИЕ ГОЛОСОМ">
+ <string name="title_nearby">
+ Настройки голоса
+ </string>
+ <string name="title_group">
+ Звонок группе [GROUP]
+ </string>
+ <string name="title_adhoc">
+ Конференция
+ </string>
+ <string name="title_peer_2_peer">
+ Звонок пользователю [NAME]
+ </string>
+ <string name="no_one_near">
+ Нет никого с включенным голосом
+ </string>
+ <layout_stack name="my_call_stack">
+ <layout_panel name="my_panel">
+ <text name="user_text" value="Мой аватар:"/>
+ </layout_panel>
+ <layout_panel name="leave_call_panel">
+ <layout_stack name="voice_effect_and_leave_call_stack">
+ <layout_panel name="leave_call_btn_panel">
+ <button label="Прервать звонок" name="leave_call_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
new file mode 100644
index 0000000000..d4bf615fe4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Места" name="voice_effects" title="ИЗМЕНЕНИЕ ГОЛОСА">
+ <string name="no_voice_effect">
+ (Нет изменения голоса)
+ </string>
+ <string name="active_voice_effect">
+ (Активно)
+ </string>
+ <string name="unsubscribed_voice_effect">
+ (Нет подписки)
+ </string>
+ <string name="new_voice_effect">
+ (Новый!)
+ </string>
+ <string name="effect_Arena">
+ Arena
+ </string>
+ <string name="effect_Beast">
+ Beast
+ </string>
+ <string name="effect_Buff">
+ Buff
+ </string>
+ <string name="effect_Buzz">
+ Buzz
+ </string>
+ <string name="effect_Camille">
+ Camille
+ </string>
+ <string name="effect_Creepy">
+ Creepy
+ </string>
+ <string name="effect_CreepyBot">
+ CreepyBot
+ </string>
+ <string name="effect_Cyber">
+ Cyber
+ </string>
+ <string name="effect_DeepBot">
+ DeepBot
+ </string>
+ <string name="effect_Demon">
+ Demon
+ </string>
+ <string name="effect_Flirty">
+ Flirty
+ </string>
+ <string name="effect_Foxy">
+ Foxy
+ </string>
+ <string name="effect_Halloween_2010_Bonus">
+ Бонус_за_Хэллоуин_2010
+ </string>
+ <string name="effect_Helium">
+ Helium
+ </string>
+ <string name="effect_Husky">
+ Husky
+ </string>
+ <string name="effect_Intercom">
+ Внутренняя связь
+ </string>
+ <string name="effect_Macho">
+ Macho
+ </string>
+ <string name="effect_Micro">
+ Micro
+ </string>
+ <string name="effect_Mini">
+ Mini
+ </string>
+ <string name="effect_Nano">
+ Nano
+ </string>
+ <string name="effect_Nightmare">
+ Nightmare
+ </string>
+ <string name="effect_PopBot">
+ PopBot
+ </string>
+ <string name="effect_Rachel">
+ Rachel
+ </string>
+ <string name="effect_Radio">
+ Radio
+ </string>
+ <string name="effect_Robot">
+ Robot
+ </string>
+ <string name="effect_Roxanne">
+ Roxanne
+ </string>
+ <string name="effect_Sabrina">
+ Sabrina
+ </string>
+ <string name="effect_Samantha">
+ Samantha
+ </string>
+ <string name="effect_Sexy">
+ Sexy
+ </string>
+ <string name="effect_Shorty">
+ Shorty
+ </string>
+ <string name="effect_Sneaky">
+ Sneaky
+ </string>
+ <string name="effect_Stallion">
+ Stallion
+ </string>
+ <string name="effect_Sultry">
+ Sultry
+ </string>
+ <string name="effect_Thunder">
+ Thunder
+ </string>
+ <string name="effect_Vixen">
+ Vixen
+ </string>
+ <string name="effect_WhinyBot">
+ WhinyBot
+ </string>
+ <text name="preview_text">
+ Прослушивание
+ </text>
+ <text name="status_text">
+ Запишите образец, затем щелкните, чтобы услышать, как будет звучать голос.
+ </text>
+ <button label="Запись" name="record_btn" tool_tip="Записать образец вашего голоса."/>
+ <button label="Стоп" name="record_stop_btn"/>
+ <text name="voice_morphing_link">
+ [[URL] Подписаться]
+ </text>
+ <scroll_list name="voice_effect_list" tool_tip="Запишите образец вашего голоса, затем щелкните, чтобы прослушать эффект.">
+ <scroll_list.columns label="Название голоса" name="name"/>
+ <scroll_list.columns label="Истекает" name="expires"/>
+ </scroll_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_water.xml b/indra/newview/skins/default/xui/ru/floater_water.xml
new file mode 100644
index 0000000000..5030351f5b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_water.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Water Floater" title="РАСШИРЕННЫЙ РЕДАКТОР ВОДЫ">
+ <floater.string name="WLDefaultWaterNames">
+ По умолчанию:глянец:пруд:туман:Second Plague:SNAKE!!!:Valdez
+ </floater.string>
+ <text name="KeyFramePresetsText">
+ Настройки воды:
+ </text>
+ <button label="Создать" label_selected="Создать" name="WaterNewPreset"/>
+ <button label="Сохранить" label_selected="Сохранить" name="WaterSavePreset"/>
+ <button label="Удалить" label_selected="Удалить" name="WaterDeletePreset"/>
+ <tab_container name="Water Tabs">
+ <panel label="НАСТРОЙКИ" name="Settings">
+ <text name="BHText">
+ Цвет водного тумана
+ </text>
+ <color_swatch name="WaterFogColor" tool_tip="Щелкните для выбора цвета"/>
+ <text name="WaterFogDensText">
+ Плотность тумана
+ </text>
+ <text name="WaterUnderWaterFogModText">
+ Подводный туман
+ </text>
+ <text name="BDensText">
+ Уровень отражения волн
+ </text>
+ <slider label="1" name="WaterNormalScaleX"/>
+ <slider label="2" name="WaterNormalScaleY"/>
+ <slider label="3" name="WaterNormalScaleZ"/>
+ <text name="HDText">
+ Масштаб Френеля
+ </text>
+ <text name="FresnelOffsetText">
+ Сдвиг Френеля
+ </text>
+ <text name="DensMultText">
+ Преломление над водой
+ </text>
+ <text name="WaterScaleBelowText">
+ Преломление под водой
+ </text>
+ <text name="MaxAltText">
+ Коэффициент размытия
+ </text>
+ </panel>
+ <panel label="ИЗОБРАЖЕНИЕ" name="Waves">
+ <text name="BHText">
+ Направление больших волн
+ </text>
+ <text name="WaterWave1DirXText">
+ X
+ </text>
+ <text name="WaterWave1DirYText">
+ Y
+ </text>
+ <text name="BHText2">
+ Направление маленьких волн
+ </text>
+ <text name="WaterWave2DirXText">
+ X
+ </text>
+ <text name="WaterWave2DirYText">
+ Y
+ </text>
+ <text name="BHText3">
+ Карта поверхности
+ </text>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_web_content.xml b/indra/newview/skins/default/xui/ru/floater_web_content.xml
new file mode 100644
index 0000000000..403ab0ef5d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_web_content.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_web_content" title="">
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button name="back" tool_tip="Назад"/>
+ <button name="forward" tool_tip="Вперед"/>
+ <button name="stop" tool_tip="Остановить"/>
+ <button name="reload" tool_tip="Обновить"/>
+ <combo_box name="address" tool_tip="Введите URL-адрес страницы"/>
+ <icon name="media_secure_lock_flag" tool_tip="Безопасный просмотр"/>
+ <button name="popexternal" tool_tip="Открыть текущий URL-адрес в вашем браузере"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml
new file mode 100644
index 0000000000..811a2756fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry" title="БЕЛЫЙ СПИСОК">
+ <text name="media_label">
+ Введите URL-адрес или шаблон URL-адреса для добавления в список разрешенных доменов
+ </text>
+ <line_editor name="whitelist_entry" tool_tip="Введите URL-адрес или шаблон URL-адреса в белый список"/>
+ <button label="OK" name="ok_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_windlight_options.xml b/indra/newview/skins/default/xui/ru/floater_windlight_options.xml
new file mode 100644
index 0000000000..bbb37aaaa0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_windlight_options.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="WindLight floater" title="РАСШИРЕННЫЙ РЕДАКТОР НЕБА">
+ <floater.string name="WLDefaultSkyNames">
+ A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
+ </floater.string>
+ <text name="KeyFramePresetsText">
+ Настройки неба:
+ </text>
+ <button label="Новая" label_selected="Новая" name="WLNewPreset"/>
+ <button label="Сохранить" label_selected="Сохранить" name="WLSavePreset"/>
+ <button label="Удалить" label_selected="Удалить" name="WLDeletePreset"/>
+ <button label="Редактор суточных циклов" label_selected="Редактор суточных циклов" name="WLDayCycleMenuButton"/>
+ <tab_container name="WindLight Tabs">
+ <panel label="АТМОСФЕРА" name="Atmosphere">
+ <text name="BHText">
+ Голубой горизонт
+ </text>
+ <text name="BHText2">
+ R
+ </text>
+ <text name="BHText3">
+ G
+ </text>
+ <text name="BHText4">
+ B
+ </text>
+ <text name="BHText5">
+ I
+ </text>
+ <text name="BDensText">
+ Дымка на горизонте
+ </text>
+ <text name="BDensText2">
+ Насыщенность голубого
+ </text>
+ <text name="BHText6">
+ R
+ </text>
+ <text name="BHText7">
+ G
+ </text>
+ <text name="BHText8">
+ B
+ </text>
+ <text name="BHText9">
+ I
+ </text>
+ <text name="HDText">
+ Плотность дымки
+ </text>
+ <text name="DensMultText">
+ Коэффициент плотности
+ </text>
+ <text name="WLDistanceMultText">
+ Коэффициент расстояния
+ </text>
+ <text name="MaxAltText">
+ Максимальная высота
+ </text>
+ </panel>
+ <panel label="ОСВЕЩЕНИЕ" name="Lighting">
+ <text name="SLCText">
+ Цвет солнца/луны
+ </text>
+ <text name="BHText">
+ R
+ </text>
+ <text name="BHText2">
+ G
+ </text>
+ <text name="BHText3">
+ B
+ </text>
+ <text name="BHText4">
+ I
+ </text>
+ <text name="TODText">
+ Положение солнца/луны
+ </text>
+ <text name="WLAmbientText">
+ Рассеянное
+ </text>
+ <text name="BHText5">
+ R
+ </text>
+ <text name="BHText6">
+ G
+ </text>
+ <text name="BHText7">
+ B
+ </text>
+ <text name="BHText8">
+ I
+ </text>
+ <text name="WLEastAngleText">
+ Смещение относительно востока
+ </text>
+ <text name="SunGlowText">
+ Сияние солнца
+ </text>
+ <slider label="Фокус" name="WLGlowB"/>
+ <slider label="Размер" name="WLGlowR"/>
+ <text name="SceneGammaText">
+ Гамма-коррекция сцены
+ </text>
+ <text name="WLStarText">
+ Яркость звезд
+ </text>
+ </panel>
+ <panel label="ОБЛАКА" name="Clouds">
+ <text name="WLCloudColorText">
+ Цвет
+ </text>
+ <text name="BHText">
+ R
+ </text>
+ <text name="BHText2">
+ G
+ </text>
+ <text name="BHText3">
+ B
+ </text>
+ <text name="BHText4">
+ I
+ </text>
+ <text name="WLCloudColorText2">
+ Положение и плотность
+ </text>
+ <text name="BHText5">
+ X
+ </text>
+ <text name="BHText6">
+ Y
+ </text>
+ <text name="BHText7">
+ П
+ </text>
+ <text name="WLCloudCoverageText">
+ Облачность
+ </text>
+ <text name="WLCloudScaleText">
+ Размеры
+ </text>
+ <text name="WLCloudDetailText">
+ Детализация (положение/плотность)
+ </text>
+ <text name="BHText8">
+ X
+ </text>
+ <text name="BHText9">
+ Y
+ </text>
+ <text name="BHText10">
+ П
+ </text>
+ <text name="WLCloudScrollXText">
+ Скорость по X
+ </text>
+ <check_box label="На месте" name="WLCloudLockX"/>
+ <text name="WLCloudScrollYText">
+ Скорость по Y
+ </text>
+ <check_box label="На месте" name="WLCloudLockY"/>
+ <check_box label="Создать классические облака" name="DrawClassicClouds"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_window_size.xml b/indra/newview/skins/default/xui/ru/floater_window_size.xml
new file mode 100644
index 0000000000..24865a6ba5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="РАЗМЕР ОКНА">
+ <string name="resolution_format">
+ [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"/>
+ <combo_box.item label="1024 x 768" name="item1"/>
+ <combo_box.item label="1280 x 720 (720p)" name="item2"/>
+ <combo_box.item label="1920 x 1080 (1080p)" name="item3"/>
+ </combo_box>
+ <button label="Задать" name="set_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_world_map.xml b/indra/newview/skins/default/xui/ru/floater_world_map.xml
new file mode 100644
index 0000000000..ef8dfe22ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_world_map.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="worldmap" title="КАРТА МИРА">
+ <panel name="layout_panel_1">
+ <text name="events_label">
+ Обозначения
+ </text>
+ </panel>
+ <panel name="layout_panel_2">
+ <button name="Show My Location" tool_tip="Центрировать карту на позиции моего аватара"/>
+ <text name="me_label">
+ Я
+ </text>
+ <text name="person_label">
+ Люди
+ </text>
+ <text name="infohub_label">
+ Инфохаб
+ </text>
+ <text name="land_sale_label">
+ Продажа земли
+ </text>
+ <text name="auction_label">
+ с аукциона
+ </text>
+ <text name="by_owner_label">
+ владельцем
+ </text>
+ <button name="Go Home" tool_tip="Телепортация домой"/>
+ <text name="Home_label">
+ Дом
+ </text>
+ <text name="events_label">
+ События:
+ </text>
+ <text name="pg_label">
+ Общие
+ </text>
+ <check_box initial_value="истина" name="events_mature_chk"/>
+ <text name="events_mature_label">
+ Умеренные
+ </text>
+ <text name="events_adult_label">
+ Для взрослых
+ </text>
+ </panel>
+ <panel name="layout_panel_3">
+ <text name="find_on_map_label">
+ Найти на карте
+ </text>
+ </panel>
+ <panel name="layout_panel_4">
+ <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.item label="Мои закладки" name="item1"/>
+ </combo_box>
+ <search_editor label="Название региона" name="location" tool_tip="Введите название региона"/>
+ <button label="Поиск" name="DoSearch" tool_tip="Поиск региона"/>
+ <button name="Clear" tool_tip="Очистить отслеживание и сбросить карту до стандартного вида"/>
+ <text name="events_label">
+ Место:
+ </text>
+ <button label="Телепортация" name="Teleport" tool_tip="Телепортация в выбранное место"/>
+ <button label="Копировать URL SL" name="copy_slurl" tool_tip="Копировать текущее место в виде URL-адреса SL для использования в интернете."/>
+ <button label="Показать выбранное" name="Show Destination" tool_tip="Центрировать карту на выбранном месте"/>
+ </panel>
+ <panel name="layout_panel_5">
+ <text name="zoom_label">
+ Увеличение
+ </text>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_avatar.xml b/indra/newview/skins/default/xui/ru/inspect_avatar.xml
new file mode 100644
index 0000000000..e38ae967cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_avatar.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_avatar">
+ <string name="Subtitle">
+ [AGE]
+ </string>
+ <string name="Details">
+ [SL_PROFILE]
+ </string>
+ <text name="user_subtitle" value="11 месяцев и 3 дня назад"/>
+ <text name="user_details">
+ Это мое описание Second Life и я думаю, что оно великолепно. Но почему-то из-за моей любви к долгим разговорам оно оказалось слишком длинным
+ </text>
+ <slider name="volume_slider" tool_tip="Громкость голоса" value="0.5"/>
+ <button label="Добавить в друзья" name="add_friend_btn"/>
+ <button label="IM" name="im_btn"/>
+ <button label="Профиль" name="view_profile_btn"/>
+ <panel name="moderator_panel">
+ <button label="Отключить голос" name="disable_voice"/>
+ <button label="Включить голос" name="enable_voice"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_group.xml b/indra/newview/skins/default/xui/ru/inspect_group.xml
new file mode 100644
index 0000000000..ca600b0a1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_group.xml
@@ -0,0 +1,32 @@
+<?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">
+ Частная группа
+ </string>
+ <string name="FreeToJoin">
+ Бесплатное вступление
+ </string>
+ <string name="CostToJoin">
+ L$[AMOUNT] за вступление
+ </string>
+ <string name="YouAreMember">
+ Вы участник группы
+ </string>
+ <text name="group_subtitle">
+ 123 участника
+ </text>
+ <text name="group_details">
+ Группа жителей, которые могут создавать комнату с лосем.
+Бойся лося! Бойся! И мангуста тоже!
+ </text>
+ <text name="group_cost">
+ L$123 за вступление
+ </text>
+ <button label="Вступить" name="join_btn"/>
+ <button label="Покинуть" name="leave_btn"/>
+ <button label="Смотреть профиль" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_object.xml b/indra/newview/skins/default/xui/ru/inspect_object.xml
new file mode 100644
index 0000000000..1a43357cd3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_object.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_object">
+ <string name="Creator">
+ От [CREATOR]
+ </string>
+ <string name="CreatorAndOwner">
+ От [CREATOR]
+Владелец [OWNER]
+ </string>
+ <string name="Price">
+ L$[AMOUNT]
+ </string>
+ <string name="PriceFree">
+ Бесплатно!
+ </string>
+ <string name="Touch">
+ Коснуться
+ </string>
+ <string name="Sit">
+ Сесть
+ </string>
+ <text name="object_creator">
+ от secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+владелец secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+ </text>
+ <text name="price_text">
+ L$30,000
+ </text>
+ <icon name="secure_browsing" tool_tip="Безопасный просмотр"/>
+ <text name="object_media_url">
+ http://www.superdupertest.com
+ </text>
+ <button label="Купить" name="buy_btn"/>
+ <button label="Заплатить" name="pay_btn"/>
+ <button label="Взять копию" name="take_free_copy_btn"/>
+ <button label="Коснуться" name="touch_btn"/>
+ <button label="Сесть" name="sit_btn"/>
+ <button label="Открыто" name="open_btn"/>
+ <button label="Больше" name="more_info_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_remote_object.xml b/indra/newview/skins/default/xui/ru/inspect_remote_object.xml
new file mode 100644
index 0000000000..eec4817f02
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_remote_object.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_remote_object">
+ <text name="object_name">
+ Проверка очень длинного имени объекта. О боже, поверить не могу что имя этого объекта может быть таким длинным, честно!
+ </text>
+ <text name="object_owner_label">
+ Владелец:
+ </text>
+ <text name="object_owner">
+ Длинноеимяаватара Джонсонзначитсынджона
+ </text>
+ <text name="object_slurl">
+ http://slurl.com/Ahern/50/50/50
+ </text>
+ <button label="Карта" name="map_btn"/>
+ <button label="Заблокировать" name="block_btn"/>
+ <button label="Закрыть" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml
new file mode 100644
index 0000000000..786e571527
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Add Wearable Gear Menu">
+ <menu_item_check label="Сортировать по времени" name="sort_by_most_recent"/>
+ <menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+ <menu_item_check label="Сортировать по типу" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
new file mode 100644
index 0000000000..fb1c24448b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Смотреть профиль" name="Profile..."/>
+ <menu_item_call label="В друзья" name="Add Friend"/>
+ <menu_item_call label="IM" name="Send IM..."/>
+ <menu_item_call label="Звонок" name="Call"/>
+ <menu_item_call label="Пригласить в группу" name="Invite..."/>
+ <menu_item_call label="Заблокировать" name="Avatar Mute"/>
+ <menu_item_call label="Пожаловаться" name="abuse"/>
+ <menu_item_call label="Заморозить" name="Freeze..."/>
+ <menu_item_call label="Выкинуть" name="Eject..."/>
+ <menu_item_call label="Отладка текстур" name="Debug..."/>
+ <menu_item_call label="Приблизить" name="Zoom In"/>
+ <menu_item_call label="Заплатить" name="Pay..."/>
+ <menu_item_call label="Профиль объекта" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml
new file mode 100644
index 0000000000..f241b48871
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+ <menu_item_call label="Коснуться" name="Attachment Object Touch"/>
+ <menu_item_call label="Изменить" name="Edit..."/>
+ <menu_item_call label="Отсоединить" name="Detach"/>
+ <menu_item_call label="Сесть" name="Sit Down Here"/>
+ <menu_item_call label="Встать" name="Stand Up"/>
+ <menu_item_call label="Мой внешний вид" name="Change Outfit"/>
+ <menu_item_call label="Изменить костюм" name="Edit Outfit"/>
+ <menu_item_call label="Изменить фигуру" name="Edit My Shape"/>
+ <menu_item_call label="Мои друзья" name="Friends..."/>
+ <menu_item_call label="Мои группы" name="Groups..."/>
+ <menu_item_call label="Мой профиль" name="Profile..."/>
+ <menu_item_call label="Отладка текстур" name="Debug..."/>
+ <menu_item_call label="Бросить" name="Drop"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml
new file mode 100644
index 0000000000..ac2b4be003
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Открыть профиль" name="Show Profile"/>
+ <menu_item_call label="Отправить сообщение..." name="Send IM"/>
+ <menu_item_call label="Добавить в друзья..." name="Add Friend"/>
+ <menu_item_call label="Удалить из друзей..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
new file mode 100644
index 0000000000..fb283c9d80
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Смотреть профиль" name="Profile..."/>
+ <menu_item_call label="В друзья" name="Add Friend"/>
+ <menu_item_call label="IM" name="Send IM..."/>
+ <menu_item_call label="Звонок" name="Call"/>
+ <menu_item_call label="Пригласить в группу" name="Invite..."/>
+ <menu_item_call label="Заблокировать" name="Avatar Mute"/>
+ <menu_item_call label="Пожаловаться" name="abuse"/>
+ <menu_item_call label="Заморозить" name="Freeze..."/>
+ <menu_item_call label="Выкинуть" name="Eject..."/>
+ <menu_item_call label="Отладка текстур" name="Debug..."/>
+ <menu_item_call label="Приблизить" name="Zoom In"/>
+ <menu_item_call label="Заплатить" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml
new file mode 100644
index 0000000000..b72f3dcc42
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+ <menu_item_call label="Сесть" name="Sit Down Here"/>
+ <menu_item_call label="Встать" name="Stand Up"/>
+ <context_menu label="Снять" name="Take Off &gt;">
+ <context_menu label="одежду" name="Clothes &gt;">
+ <menu_item_call label="рубашку" name="Shirt"/>
+ <menu_item_call label="брюки" name="Pants"/>
+ <menu_item_call label="юбку" name="Skirt"/>
+ <menu_item_call label="обувь" name="Shoes"/>
+ <menu_item_call label="носки" name="Socks"/>
+ <menu_item_call label="пиджак" name="Jacket"/>
+ <menu_item_call label="перчатки" name="Gloves"/>
+ <menu_item_call label="майку" name="Self Undershirt"/>
+ <menu_item_call label="трусы" name="Self Underpants"/>
+ <menu_item_call label="тату" name="Self Tattoo"/>
+ <menu_item_call label="физические данные" name="Self Physics"/>
+ <menu_item_call label="альфа-маску" name="Self Alpha"/>
+ <menu_item_call label="всю одежду" name="All Clothes"/>
+ </context_menu>
+ <context_menu label="данные в игре" name="Object Detach HUD"/>
+ <context_menu label="Отсоединить" name="Object Detach"/>
+ <menu_item_call label="Отсоединить все" name="Detach All"/>
+ </context_menu>
+ <menu_item_call label="Мой внешний вид" name="Chenge Outfit"/>
+ <menu_item_call label="Изменить костюм" name="Edit Outfit"/>
+ <menu_item_call label="Изменить фигуру" name="Edit My Shape"/>
+ <menu_item_call label="Мои друзья" name="Friends..."/>
+ <menu_item_call label="Мои группы" name="Groups..."/>
+ <menu_item_call label="Мой профиль" name="Profile..."/>
+ <menu_item_call label="Отладка текстур" name="Debug..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_bottomtray.xml b/indra/newview/skins/default/xui/ru/menu_bottomtray.xml
new file mode 100644
index 0000000000..fa3558945b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_bottomtray.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+ <menu_item_check label="Кнопка разговора" name="EnableVoiceChat"/>
+ <menu_item_check label="Кнопка жестов" name="ShowGestureButton"/>
+ <menu_item_check label="Кнопка движения" name="ShowMoveButton"/>
+ <menu_item_check label="Кнопка камеры" name="ShowCameraButton"/>
+ <menu_item_check label="Кнопка снимка" name="ShowSnapshotButton"/>
+ <menu_item_check label="Кнопка строительства" name="ShowBuildButton"/>
+ <menu_item_check label="Кнопка поиска" name="ShowSearchButton"/>
+ <menu_item_check label="Кнопка карты" name="ShowWorldMapButton"/>
+ <menu_item_check label="Кнопка миникарты" name="ShowMiniMapButton"/>
+ <menu_item_call label="Вырезать" name="NearbyChatBar_Cut"/>
+ <menu_item_call label="Копировать" name="NearbyChatBar_Copy"/>
+ <menu_item_call label="Вставить" name="NearbyChatBar_Paste"/>
+ <menu_item_call label="Удалить" name="NearbyChatBar_Delete"/>
+ <menu_item_call label="Выделить все" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
new file mode 100644
index 0000000000..72d1bc52b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Attachment">
+ <menu_item_call label="Отсоединить" name="detach"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml
new file mode 100644
index 0000000000..ee0a0c70ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Body">
+ <menu_item_call label="Заменить" name="replace"/>
+ <menu_item_call label="Изменить" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml
new file mode 100644
index 0000000000..bbdf4fd0d4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Clothing">
+ <menu_item_call label="Снять" name="take_off"/>
+ <menu_item_call label="Изменить" name="edit"/>
+ <menu_item_call label="Заменить" name="replace"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
new file mode 100644
index 0000000000..0332c03a04
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear COF">
+ <menu label="Новая одежда" name="COF.Gear.New_Clothes"/>
+ <menu label="Новые части тела" name="COF.Geear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_edit.xml b/indra/newview/skins/default/xui/ru/menu_edit.xml
new file mode 100644
index 0000000000..0dddea9c04
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_edit.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu label="Изменить" name="Edit">
+ <menu_item_call label="Отменить" name="Undo"/>
+ <menu_item_call label="Вернуть" name="Redo"/>
+ <menu_item_call label="Вырезать" name="Cut"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+ <menu_item_call label="Вставить" name="Paste"/>
+ <menu_item_call label="Удалить" name="Delete"/>
+ <menu_item_call label="Дублировать" name="Duplicate"/>
+ <menu_item_call label="Выделить все" name="Select All"/>
+ <menu_item_call label="Отменить выделение" name="Deselect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_favorites.xml b/indra/newview/skins/default/xui/ru/menu_favorites.xml
new file mode 100644
index 0000000000..074be06ba9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Телепорт" name="Teleport To Landmark"/>
+ <menu_item_call label="Смотреть/изменить закладку" name="Landmark Open"/>
+ <menu_item_call label="Копировать URL-адрес SL" name="Copy slurl"/>
+ <menu_item_call label="Показать на карте" name="Show On Map"/>
+ <menu_item_call label="Копировать" name="Landmark Copy"/>
+ <menu_item_call label="Вставить" name="Landmark Paste"/>
+ <menu_item_call label="Удалить" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
new file mode 100644
index 0000000000..d0b68cefbd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gesture_gear">
+ <menu_item_call label="Добавить в избранное/удалить" name="activate"/>
+ <menu_item_call label="Копировать" name="copy_gesture"/>
+ <menu_item_call label="Вставить" name="paste"/>
+ <menu_item_call label="Копировать UUID" name="copy_uuid"/>
+ <menu_item_call label="Сохранить в текущий костюм" name="save_to_outfit"/>
+ <menu_item_call label="Изменить" name="edit_gesture"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_group_plus.xml b/indra/newview/skins/default/xui/ru/menu_group_plus.xml
new file mode 100644
index 0000000000..edd012b964
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Присоединиться к группе..." name="item_join"/>
+ <menu_item_call label="Новая группа..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
new file mode 100644
index 0000000000..34e5f4c0e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+ <menu_item_check label="Показать панель навигации и избранного" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Показать панель избранного" name="ShowNavbarFavoritesPanel"/>
+ <menu_item_check label="Показать мини-панель местоположения" name="ShowMiniLocationPanel"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_well_button.xml b/indra/newview/skins/default/xui/ru/menu_im_well_button.xml
new file mode 100644
index 0000000000..5a5bde61b9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="IM Well Button Context Menu">
+ <menu_item_call label="Закрыть все" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml
new file mode 100644
index 0000000000..8b60a585ab
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Завершить сеанс" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml
new file mode 100644
index 0000000000..766b3847a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Информация о группе" name="Show Profile"/>
+ <menu_item_call label="Показать сеанс" name="Chat"/>
+ <menu_item_call label="Завершить сеанс" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml
new file mode 100644
index 0000000000..a33f6d5be8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Смотреть профиль" name="Show Profile"/>
+ <menu_item_call label="В друзья" name="Add Friend"/>
+ <menu_item_call label="Показать сеанс" name="Send IM"/>
+ <menu_item_call label="Завершить сеанс" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml
new file mode 100644
index 0000000000..957609a7a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+ <menu_item_call label="Смотреть профиль" name="view_profile"/>
+ <menu_item_call label="В друзья" name="add_friend"/>
+ <menu_item_call label="IM" name="im"/>
+ <menu_item_call label="Звонок" name="call"/>
+ <menu_item_call label="Телепорт" name="teleport"/>
+ <menu_item_call label="Пригласить в группу" name="invite_to_group"/>
+ <menu_item_call label="Заблокировать" name="block"/>
+ <menu_item_call label="Разблокировать" name="unblock"/>
+ <menu_item_call label="Пожаловаться" name="report"/>
+ <menu_item_call label="Заморозить" name="freeze"/>
+ <menu_item_call label="Выкинуть" name="eject"/>
+ <menu_item_call label="Выкинуть" name="kick"/>
+ <menu_item_call label="Поддержка" name="csr"/>
+ <menu_item_call label="Отладка текстур" name="debug"/>
+ <menu_item_call label="Найти на карте" name="find_on_map"/>
+ <menu_item_call label="Приблизить" name="zoom_in"/>
+ <menu_item_call label="Заплатить" name="pay"/>
+ <menu_item_call label="Поделиться" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml
new file mode 100644
index 0000000000..a72b2bef23
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+ <menu_item_call label="Коснуться" name="touch"/>
+ <menu_item_call label="Сесть" name="sit"/>
+ <menu_item_call label="Заплатить" name="pay"/>
+ <menu_item_call label="Купить" name="buy"/>
+ <menu_item_call label="Взять" name="take"/>
+ <menu_item_call label="Взять копию" name="take_copy"/>
+ <menu_item_call label="Открыть" name="open"/>
+ <menu_item_call label="Изменить" name="edit"/>
+ <menu_item_call label="Надеть" name="wear"/>
+ <menu_item_call label="Добавить" name="add"/>
+ <menu_item_call label="Пожаловаться" name="report"/>
+ <menu_item_call label="Заблокировать" name="block"/>
+ <menu_item_call label="Приблизить" name="zoom_in"/>
+ <menu_item_call label="Удалить" name="remove"/>
+ <menu_item_call label="Дополнительная информация" name="more_info"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml
new file mode 100644
index 0000000000..901bb615e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Self Pie">
+ <menu_item_call label="Сесть" name="Sit Down Here"/>
+ <menu_item_call label="Встать" name="Stand Up"/>
+ <context_menu label="Снять" name="Take Off &gt;">
+ <context_menu label="одежду" name="Clothes &gt;">
+ <menu_item_call label="рубашку" name="Shirt"/>
+ <menu_item_call label="брюки" name="Pants"/>
+ <menu_item_call label="юбку" name="Skirt"/>
+ <menu_item_call label="обувь" name="Shoes"/>
+ <menu_item_call label="носки" name="Socks"/>
+ <menu_item_call label="пиджак" name="Jacket"/>
+ <menu_item_call label="перчатки" name="Gloves"/>
+ <menu_item_call label="майку" name="Self Undershirt"/>
+ <menu_item_call label="трусы" name="Self Underpants"/>
+ <menu_item_call label="тату" name="Self Tattoo"/>
+ <menu_item_call label="альфа-маску" name="Self Alpha"/>
+ <menu_item_call label="всю одежду" name="All Clothes"/>
+ </context_menu>
+ <context_menu label="данные в игре" name="Object Detach HUD"/>
+ <context_menu label="Отсоединить" name="Object Detach"/>
+ <menu_item_call label="Отсоединить все" name="Detach All"/>
+ </context_menu>
+ <menu_item_call label="Сменить костюм" name="Chenge Outfit"/>
+ <menu_item_call label="Изменить костюм" name="Edit Outfit"/>
+ <menu_item_call label="Изменить фигуру" name="Edit My Shape"/>
+ <menu_item_call label="Мои друзья" name="Friends..."/>
+ <menu_item_call label="Мои группы" name="Groups..."/>
+ <menu_item_call label="Мой профиль" name="Profile..."/>
+ <menu_item_call label="Отладка текстур" name="Debug..."/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml
new file mode 100644
index 0000000000..95d162d7fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="InvOfferChiclet Menu">
+ <menu_item_call label="Закрыть" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml
new file mode 100644
index 0000000000..4eeb1e46c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Поделиться" name="Share"/>
+ <menu_item_call label="Купить" name="Task Buy"/>
+ <menu_item_call label="Открыть" name="Task Open"/>
+ <menu_item_call label="Воспроизвести" name="Task Play"/>
+ <menu_item_call label="Свойства" name="Task Properties"/>
+ <menu_item_call label="Переименовать" name="Task Rename"/>
+ <menu_item_call label="Удалить" name="Task Remove"/>
+ <menu_item_call label="Очистить корзину" name="Empty Trash"/>
+ <menu_item_call label="Очистить бюро находок" name="Empty Lost And Found"/>
+ <menu_item_call label="Новая папка" name="New Folder"/>
+ <menu_item_call label="Новый скрипт" name="New Script"/>
+ <menu_item_call label="Новая заметка" name="New Note"/>
+ <menu_item_call label="Новый жест" name="New Gesture"/>
+ <menu label="Новая одежда" name="New Clothes">
+ <menu_item_call label="Новая рубашка" name="New Shirt"/>
+ <menu_item_call label="Новые брюки" name="New Pants"/>
+ <menu_item_call label="Новая обувь" name="New Shoes"/>
+ <menu_item_call label="Новые носки" name="New Socks"/>
+ <menu_item_call label="Новый пиджак" name="New Jacket"/>
+ <menu_item_call label="Новая юбка" name="New Skirt"/>
+ <menu_item_call label="Новые перчатки" name="New Gloves"/>
+ <menu_item_call label="Новая майка" name="New Undershirt"/>
+ <menu_item_call label="Новые трусы" name="New Underpants"/>
+ <menu_item_call label="Новая альфа-маска" name="New Alpha Mask"/>
+ <menu_item_call label="Новое тату" name="New Tattoo"/>
+ <menu_item_call label="Новая физика" name="New Physics"/>
+ </menu>
+ <menu label="Новые части тела" name="New Body Parts">
+ <menu_item_call label="Новая фигура" name="New Shape"/>
+ <menu_item_call label="Новая кожа" name="New Skin"/>
+ <menu_item_call label="Новые волосы" name="New Hair"/>
+ <menu_item_call label="Новые глаза" name="New Eyes"/>
+ </menu>
+ <menu label="Сменить тип" name="Change Type">
+ <menu_item_call label="По умолчанию" name="Default"/>
+ <menu_item_call label="Перчатки" name="Gloves"/>
+ <menu_item_call label="Пиджак" name="Jacket"/>
+ <menu_item_call label="Брюки" name="Pants"/>
+ <menu_item_call label="Фигура" name="Shape"/>
+ <menu_item_call label="Обувь" name="Shoes"/>
+ <menu_item_call label="Рубашка" name="Shirt"/>
+ <menu_item_call label="Юбка" name="Skirt"/>
+ <menu_item_call label="Трусы" name="Underpants"/>
+ <menu_item_call label="Майка" name="Undershirt"/>
+ </menu>
+ <menu_item_call label="Телепорт" name="Landmark Open"/>
+ <menu_item_call label="Открыть" name="Animation Open"/>
+ <menu_item_call label="Открыть" name="Sound Open"/>
+ <menu_item_call label="Сменить текущий костюм" name="Replace Outfit"/>
+ <menu_item_call label="Добавить к текущему костюму" name="Add To Outfit"/>
+ <menu_item_call label="Убрать из текущего костюма" name="Remove From Outfit"/>
+ <menu_item_call label="Найти оригинал" name="Find Original"/>
+ <menu_item_call label="Удалить навсегда" name="Purge Item"/>
+ <menu_item_call label="Восстановить вещь" name="Restore Item"/>
+ <menu_item_call label="Открыть" name="Open"/>
+ <menu_item_call label="Открыть оригинал" name="Open Original"/>
+ <menu_item_call label="Свойства" name="Properties"/>
+ <menu_item_call label="Переименовать" name="Rename"/>
+ <menu_item_call label="Копировать UUID актива" name="Copy Asset UUID"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+ <menu_item_call label="Вставить" name="Paste"/>
+ <menu_item_call label="Вставить как ссылку" name="Paste As Link"/>
+ <menu_item_call label="Удалить" name="Remove Link"/>
+ <menu_item_call label="Удалить" name="Delete"/>
+ <menu_item_call label="Удалить системную папку" name="Delete System Folder"/>
+ <menu_item_call label="Начать конференцию" name="Conference Chat Folder"/>
+ <menu_item_call label="Воспроизвести" name="Sound Play"/>
+ <menu_item_call label="О закладке" name="About Landmark"/>
+ <menu_item_call label="Проиграть для всех" name="Animation Play"/>
+ <menu_item_call label="Проиграть для себя" name="Animation Audition"/>
+ <menu_item_call label="Отправить IM-сообщение" name="Send Instant Message"/>
+ <menu_item_call label="Предложить телепортацию..." name="Offer Teleport..."/>
+ <menu_item_call label="Начать конференцию" name="Conference Chat"/>
+ <menu_item_call label="Активировать" name="Activate"/>
+ <menu_item_call label="Деактивировать" name="Deactivate"/>
+ <menu_item_call label="Сохранить как" name="Save As"/>
+ <menu_item_call label="Отсоединить от себя" name="Detach From Yourself"/>
+ <menu_item_call label="Надеть" name="Wearable And Object Wear"/>
+ <menu label="Присоединить к" name="Attach To"/>
+ <menu label="Присоединить к данным в игре" name="Attach To HUD"/>
+ <menu_item_call label="Изменить" name="Wearable Edit"/>
+ <menu_item_call label="Добавить" name="Wearable Add"/>
+ <menu_item_call label="Снять" name="Take Off"/>
+ <menu_item_call label="Копировать в «Торговые исходящие»" name="Merchant Copy"/>
+ <menu_item_call label="Переместить в «Торговые исходящие»" name="Merchant Move"/>
+ <menu_item_call label="- нет действий -" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_add.xml b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml
new file mode 100644
index 0000000000..9a240c653e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+ <menu label="Передать" name="upload">
+ <menu_item_call label="Изображение (L$[COST])..." name="Upload Image"/>
+ <menu_item_call label="Звук (L$[COST])..." name="Upload Sound"/>
+ <menu_item_call label="Анимация (L$[COST])..." name="Upload Animation"/>
+ <menu_item_call label="Модель..." name="Upload Model"/>
+ <menu_item_call label="Мастер моделирования..." name="Upload Model Wizard"/>
+ <menu_item_call label="Все сразу (L$[COST] за файл)..." name="Bulk Upload"/>
+ <menu_item_call label="Установить разрешения на передачу по умолчанию" name="perm prefs"/>
+ </menu>
+ <menu_item_call label="Новая папка" name="New Folder"/>
+ <menu_item_call label="Новый скрипт" name="New Script"/>
+ <menu_item_call label="Новая заметка" name="New Note"/>
+ <menu_item_call label="Новый жест" name="New Gesture"/>
+ <menu label="Новая одежда" name="New Clothes">
+ <menu_item_call label="Новая рубашка" name="New Shirt"/>
+ <menu_item_call label="Новые брюки" name="New Pants"/>
+ <menu_item_call label="Новая обувь" name="New Shoes"/>
+ <menu_item_call label="Новые носки" name="New Socks"/>
+ <menu_item_call label="Новый пиджак" name="New Jacket"/>
+ <menu_item_call label="Новая юбка" name="New Skirt"/>
+ <menu_item_call label="Новые перчатки" name="New Gloves"/>
+ <menu_item_call label="Новая майка" name="New Undershirt"/>
+ <menu_item_call label="Новые трусы" name="New Underpants"/>
+ <menu_item_call label="Новая альфа-маска" name="New Alpha"/>
+ <menu_item_call label="Новое тату" name="New Tattoo"/>
+ <menu_item_call label="Новая физика" name="New Physics"/>
+ </menu>
+ <menu label="Новые части тела" name="New Body Parts">
+ <menu_item_call label="Новая фигура" name="New Shape"/>
+ <menu_item_call label="Новая кожа" name="New Skin"/>
+ <menu_item_call label="Новые волосы" name="New Hair"/>
+ <menu_item_call label="Новые глаза" name="New Eyes"/>
+ </menu>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
new file mode 100644
index 0000000000..9fc0b6d44e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gear_default">
+ <menu_item_call label="Новое окно инвентаря" name="new_window"/>
+ <menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+ <menu_item_check label="Сортировать по времени" name="sort_by_recent"/>
+ <menu_item_check label="Всегда сортировать папки по имени" name="sort_folders_by_name"/>
+ <menu_item_check label="Показывать системные папки вверху" name="sort_system_folders_to_top"/>
+ <menu_item_call label="Показать фильтры" name="show_filters"/>
+ <menu_item_call label="Сбросить фильтры" name="reset_filters"/>
+ <menu_item_call label="Закрыть все папки" name="close_folders"/>
+ <menu_item_call label="Очистить бюро находок" name="empty_lostnfound"/>
+ <menu_item_call label="Сохранить текстуру как" name="Save Texture As"/>
+ <menu_item_call label="Поделиться" name="Share"/>
+ <menu_item_call label="Найти оригинал" name="Find Original"/>
+ <menu_item_call label="Найти все ссылки" name="Find All Links"/>
+ <menu_item_call label="Очистить корзину" name="empty_trash"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_land.xml b/indra/newview/skins/default/xui/ru/menu_land.xml
new file mode 100644
index 0000000000..89889d7bf6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="О земле" name="Place Information..."/>
+ <menu_item_call label="Сесть здесь" name="Sit Here"/>
+ <menu_item_call label="Купить эту землю" name="Land Buy"/>
+ <menu_item_call label="Купить пропуск" name="Land Buy Pass"/>
+ <menu_item_call label="Строительство" name="Create"/>
+ <menu_item_call label="Изменить ландшафт" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_landmark.xml b/indra/newview/skins/default/xui/ru/menu_landmark.xml
new file mode 100644
index 0000000000..24b60f9d86
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Копировать URL SL" name="copy"/>
+ <menu_item_call label="Удалить" name="delete"/>
+ <menu_item_call label="Создать подборку" name="pick"/>
+ <menu_item_call label="Добавить в любимые" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml
new file mode 100644
index 0000000000..aa3570f176
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_login.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Login Menu">
+ <menu label="Я" name="File">
+ <menu_item_call label="Настройки..." name="Preferences..."/>
+ <menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
+ </menu>
+ <menu label="Справка" name="Help">
+ <menu_item_call label="Справка [SECOND_LIFE]" name="Second Life Help"/>
+ <menu_item_call label="О [APP_NAME]" name="About Second Life"/>
+ </menu>
+ <menu_item_check label="Показать меню отладки" name="Show Debug Menu"/>
+ <menu label="Отладка" name="Debug">
+ <menu_item_call label="Настройки отладки" name="Debug Settings"/>
+ <menu_item_call label="Настройки интерфейса/цвета" name="UI/Color Settings"/>
+ <menu_item_call label="Просмотр XUI" name="UI Preview Tool"/>
+ <menu label="Тест UI" name="UI Tests"/>
+ <menu_item_call label="Задать размер окна..." name="Set Window Size..."/>
+ <menu_item_call label="Показать лицензионное соглашение" name="TOS"/>
+ <menu_item_call label="Показать сообщение об ошибке" name="Critical"/>
+ <menu_item_call label="Проверка медиабраузера" name="Web Browser Test"/>
+ <menu_item_call label="Тест отладки плавающего окна с веб-контентом" name="Web Content Floater Debug Test"/>
+ <menu_item_check label="Выбор сетки" name="Show Grid Picker"/>
+ <menu_item_call label="Консоль уведомлений" name="Show Notifications Console"/>
+ </menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml
new file mode 100644
index 0000000000..d7485b02af
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="media ctrl context menu">
+ <menu_item_call label="Вырезать" name="Cut"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+ <menu_item_call label="Вставить" name="Paste"/>
+ <menu_item_call label="Открыть веб-инспектор" name="open_webinspector"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_mini_map.xml b/indra/newview/skins/default/xui/ru/menu_mini_map.xml
new file mode 100644
index 0000000000..6b3db11609
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_mini_map.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Близко" name="Zoom Close"/>
+ <menu_item_call label="Средне" name="Zoom Medium"/>
+ <menu_item_call label="Далеко" name="Zoom Far"/>
+ <menu_item_call label="Сбросить увеличение" name="Zoom Default"/>
+ <menu_item_check label="Вращать карту" name="Rotate Map"/>
+ <menu_item_check label="Автоцентрирование" name="Auto Center"/>
+ <menu_item_call label="Остановить слежение" name="Stop Tracking"/>
+ <menu_item_call label="Карта мира" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_mode_change.xml b/indra/newview/skins/default/xui/ru/menu_mode_change.xml
new file mode 100644
index 0000000000..25d6e9af27
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_mode_change.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Mode Change">
+ <menu_item_check label="Основной" name="BasicMode"/>
+ <menu_item_check label="Расширенный" name="AdvancedMode"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml
new file mode 100644
index 0000000000..5ae5e7dfbc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="model_menu_gear_default">
+ <menu_item_check label="Показать грани" name="show_edges"/>
+ <menu_item_check label="Показать физику" name="show_physics"/>
+ <menu_item_check label="Показать текстуры" name="show_textures"/>
+ <menu_item_check label="Показать вес кожи" name="show_skin_weight"/>
+ <menu_item_check label="Показать положение сочленений" name="show_joint_positions"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_navbar.xml b/indra/newview/skins/default/xui/ru/menu_navbar.xml
new file mode 100644
index 0000000000..2dd0c0df36
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+ <menu_item_check label="Показать координаты" name="Show Coordinates"/>
+ <menu_item_check label="Показать свойства участка" name="Show Parcel Properties"/>
+ <menu_item_call label="Закладка" name="Landmark"/>
+ <menu_item_call label="Вырезать" name="Cut"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+ <menu_item_call label="Вставить" name="Paste"/>
+ <menu_item_call label="Удалить" name="Delete"/>
+ <menu_item_call label="Выделить все" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml
new file mode 100644
index 0000000000..4b5346d083
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать находящихся неподалеку людей..." name="nearby_people"/>
+ <menu_item_check label="Показать блокируемый текст" name="muted_text"/>
+ <menu_item_check label="Показать значки друзей" name="show_buddy_icons"/>
+ <menu_item_check label="Показать имена" name="show_names"/>
+ <menu_item_check label="Показать значки и имена" name="show_icons_and_names"/>
+ <menu_item_call label="Размер шрифта" name="font_size"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml
new file mode 100644
index 0000000000..4d067e232a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification Well Button Context Menu">
+ <menu_item_call label="Закрыть все" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_object.xml b/indra/newview/skins/default/xui/ru/menu_object.xml
new file mode 100644
index 0000000000..d6abfd12a2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_object.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+ <menu_item_call label="Коснуться" name="Object Touch"/>
+ <menu_item_call label="Изменить" name="Edit..."/>
+ <menu_item_call label="Строительство" name="Build"/>
+ <menu_item_call label="Открыто" name="Open"/>
+ <menu_item_call label="Сесть здесь" name="Object Sit"/>
+ <menu_item_call label="Встать" name="Object Stand Up"/>
+ <menu_item_call label="Профиль объекта" name="Object Inspect"/>
+ <menu_item_call label="Приблизить" name="Zoom In"/>
+ <context_menu label="Надеть" name="Put On">
+ <menu_item_call label="Надеть" name="Wear"/>
+ <menu_item_call label="Добавить" name="Add"/>
+ <context_menu label="Присоединить" name="Object Attach"/>
+ <context_menu label="Присоединить HUD" name="Object Attach HUD"/>
+ </context_menu>
+ <context_menu label="Управление" name="Remove">
+ <menu_item_call label="Жалоба" name="Report Abuse..."/>
+ <menu_item_call label="Заблокировать" name="Object Mute"/>
+ <menu_item_call label="Возврат" name="Return..."/>
+ </context_menu>
+ <menu_item_call label="Взять" name="Pie Object Take"/>
+ <menu_item_call label="Взять копию" name="Take Copy"/>
+ <menu_item_call label="Заплатить" name="Pay..."/>
+ <menu_item_call label="Купить" name="Buy..."/>
+ <menu_item_call label="Удалить" name="Delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
new file mode 100644
index 0000000000..6229b2e72f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Профиль объекта..." name="Object Profile"/>
+ <menu_item_call label="Блокировать..." name="Block"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
new file mode 100644
index 0000000000..93dbd7d6a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Outfit">
+ <menu_item_call label="Надеть – Заменить текущий костюм" name="wear"/>
+ <menu_item_call label="Надеть – Добавить к текущему костюму" name="wear_add"/>
+ <menu_item_call label="Снять – Убрать из текущего костюма" name="take_off"/>
+ <menu label="Новая одежда" name="New Clothes">
+ <menu_item_call label="Новая рубашка" name="New Shirt"/>
+ <menu_item_call label="Новые брюки" name="New Pants"/>
+ <menu_item_call label="Новая обувь" name="New Shoes"/>
+ <menu_item_call label="Новые носки" name="New Socks"/>
+ <menu_item_call label="Новый пиджак" name="New Jacket"/>
+ <menu_item_call label="Новая юбка" name="New Skirt"/>
+ <menu_item_call label="Новые перчатки" name="New Gloves"/>
+ <menu_item_call label="Новая майка" name="New Undershirt"/>
+ <menu_item_call label="Новые трусы" name="New Underpants"/>
+ <menu_item_call label="Новая альфа-маска" name="New Alpha"/>
+ <menu_item_call label="Новая физика" name="New Physics"/>
+ <menu_item_call label="Новое тату" name="New Tattoo"/>
+ </menu>
+ <menu label="Новые части тела" name="New Body Parts">
+ <menu_item_call label="Новая фигура" name="New Shape"/>
+ <menu_item_call label="Новая кожа" name="New Skin"/>
+ <menu_item_call label="Новые волосы" name="New Hair"/>
+ <menu_item_call label="Новые глаза" name="New Eyes"/>
+ </menu>
+ <menu_item_call label="Переименовать костюм" name="rename"/>
+ <menu_item_call label="Удалить костюм" name="delete_outfit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml
new file mode 100644
index 0000000000..46404195b9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit">
+ <menu_item_call label="Надеть – Заменить текущий костюм" name="wear_replace"/>
+ <menu_item_call label="Надеть – Добавить к текущему костюму" name="wear_add"/>
+ <menu_item_call label="Снять – Убрать из текущего костюма" name="take_off"/>
+ <menu_item_call label="Изменить костюм" name="edit"/>
+ <menu_item_call label="Переименовать костюм" name="rename"/>
+ <menu_item_call label="Удалить костюм" name="delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_participant_list.xml b/indra/newview/skins/default/xui/ru/menu_participant_list.xml
new file mode 100644
index 0000000000..932ad5bacf
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_participant_list.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+ <menu_item_check label="Сортировать по имени" name="SortByName"/>
+ <menu_item_check label="Сортировать по недавно говорившим" name="SortByRecentSpeakers"/>
+ <menu_item_call label="Открыть профиль" name="View Profile"/>
+ <menu_item_call label="Добавить в друзья" name="Add Friend"/>
+ <menu_item_call label="IM" name="IM"/>
+ <menu_item_call label="Звонок" name="Call"/>
+ <menu_item_call label="Поделиться" name="Share"/>
+ <menu_item_call label="Заплатить" name="Pay"/>
+ <menu_item_check label="Показывать значки участников" name="View Icons"/>
+ <menu_item_check label="Блокировать голос" name="Block/Unblock"/>
+ <menu_item_check label="Блокировать текст" name="MuteText"/>
+ <context_menu label="Параметры модератора" name="Moderator Options">
+ <menu_item_check label="Разрешить текстовый чат" name="AllowTextChat"/>
+ <menu_item_call label="Заглушить этого участника" name="ModerateVoiceMuteSelected"/>
+ <menu_item_call label="Позволить говорить этому участнику" name="ModerateVoiceUnMuteSelected"/>
+ <menu_item_call label="Заглушить всех" name="ModerateVoiceMute"/>
+ <menu_item_call label="Позволить говорить всем" name="ModerateVoiceUnmute"/>
+ </context_menu>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml
new file mode 100644
index 0000000000..0fa252aa99
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Сортировать по имени" name="sort_name"/>
+ <menu_item_check label="Сортировать по статусу" name="sort_status"/>
+ <menu_item_check label="Показывать значки" name="view_icons"/>
+ <menu_item_check label="Показывать разрешенные действия" name="view_permissions"/>
+ <menu_item_call label="Показать черный список" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
new file mode 100644
index 0000000000..e734a83ef0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+ <menu_item_call label="Информация" name="View Info"/>
+ <menu_item_call label="Чат" name="Chat"/>
+ <menu_item_call label="Звонок" name="Call"/>
+ <menu_item_call label="Активация" name="Activate"/>
+ <menu_item_call label="Покинуть" name="Leave"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml
new file mode 100644
index 0000000000..0358068db9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Показывать значки группы" name="Display Group Icons"/>
+ <menu_item_call label="Покинуть выбранную группу" name="Leave Selected Group"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
new file mode 100644
index 0000000000..ebce959044
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Avatar Context Menu">
+ <menu_item_call label="Смотреть профиль" name="View Profile"/>
+ <menu_item_call label="В друзья" name="Add Friend"/>
+ <menu_item_call label="Удалить из друзей" name="Remove Friend"/>
+ <menu_item_call label="IM" name="IM"/>
+ <menu_item_call label="Звонок" name="Call"/>
+ <menu_item_call label="Карта" name="Map"/>
+ <menu_item_call label="Поделиться" name="Share"/>
+ <menu_item_call label="Заплатить" name="Pay"/>
+ <menu_item_check label="Черный список" name="Block/Unblock"/>
+ <menu_item_call label="Предложить телепорт" name="teleport"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
new file mode 100644
index 0000000000..0e8e0d4053
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Multi-Selected People Context Menu">
+ <menu_item_call label="Добавить в друзья" name="Add Friends"/>
+ <menu_item_call label="Удалить из друзей" name="Remove Friend"/>
+ <menu_item_call label="IM" name="IM"/>
+ <menu_item_call label="Звонок" name="Call"/>
+ <menu_item_call label="Поделиться" name="Share"/>
+ <menu_item_call label="Заплатить" name="Pay"/>
+ <menu_item_call label="Предложить телепорт" name="teleport"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml
new file mode 100644
index 0000000000..4589815f6b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Сортировать по недавно говорившим" name="sort_by_recent_speakers"/>
+ <menu_item_check label="Сортировать по имени" name="sort_name"/>
+ <menu_item_check label="Сортировать по расстоянию" name="sort_distance"/>
+ <menu_item_check label="Показывать значки участников" name="view_icons"/>
+ <menu_item_check label="Смотреть карту" name="view_map"/>
+ <menu_item_call label="Показать черный список жителей и объектов" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml
new file mode 100644
index 0000000000..2ac83ffe52
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Сортировать по времени" name="sort_most"/>
+ <menu_item_check label="Сортировать по имени" name="sort_name"/>
+ <menu_item_check label="Показывать значки людей" name="view_icons"/>
+ <menu_item_call label="Показать черный список" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_picks.xml b/indra/newview/skins/default/xui/ru/menu_picks.xml
new file mode 100644
index 0000000000..839c7411a6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+ <menu_item_call label="Данные" name="pick_info"/>
+ <menu_item_call label="Изменить" name="pick_edit"/>
+ <menu_item_call label="Телепорт" name="pick_teleport"/>
+ <menu_item_call label="Карта" name="pick_map"/>
+ <menu_item_call label="Удалить" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_picks_plus.xml b/indra/newview/skins/default/xui/ru/menu_picks_plus.xml
new file mode 100644
index 0000000000..1bc4078179
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Новая подборка" name="create_pick"/>
+ <menu_item_call label="Новая реклама" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_place.xml b/indra/newview/skins/default/xui/ru/menu_place.xml
new file mode 100644
index 0000000000..ee8878c131
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_place.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+ <menu_item_call label="Поставить закладку" name="landmark"/>
+ <menu_item_call label="Создать подборку" name="pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_place_add_button.xml b/indra/newview/skins/default/xui/ru/menu_place_add_button.xml
new file mode 100644
index 0000000000..b1a38fb9eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Добавить папку" name="add_folder"/>
+ <menu_item_call label="Добавить закладку" name="add_landmark"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml
new file mode 100644
index 0000000000..25df8c5d19
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_folder_gear">
+ <menu_item_call label="Добавить закладку" name="add_landmark"/>
+ <menu_item_call label="Добавить папку" name="add_folder"/>
+ <menu_item_call label="Восстановить предмет" name="restore_item"/>
+ <menu_item_call label="Вырезать" name="cut"/>
+ <menu_item_call label="Копировать" name="copy_folder"/>
+ <menu_item_call label="Вставить" name="paste"/>
+ <menu_item_call label="Переименовать" name="rename"/>
+ <menu_item_call label="Удалить" name="delete"/>
+ <menu_item_call label="Открыть" name="expand"/>
+ <menu_item_call label="Закрыть" name="collapse"/>
+ <menu_item_call label="Открыть все папки" name="expand_all"/>
+ <menu_item_call label="Закрыть все папки" name="collapse_all"/>
+ <menu_item_check label="Сортировать по дате" name="sort_by_date"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml
new file mode 100644
index 0000000000..b1ebd4af83
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_ladmark_gear">
+ <menu_item_call label="Телепорт" name="teleport"/>
+ <menu_item_call label="Подробнее" name="more_info"/>
+ <menu_item_call label="Показать на карте" name="show_on_map"/>
+ <menu_item_call label="Добавить закладку" name="add_landmark"/>
+ <menu_item_call label="Добавить папку" name="add_folder"/>
+ <menu_item_call label="Восстановить вещь" name="restore_item"/>
+ <menu_item_call label="Вырезать" name="cut"/>
+ <menu_item_call label="Копировать закладку" name="copy_landmark"/>
+ <menu_item_call label="Копировать URL SL" name="copy_slurl"/>
+ <menu_item_call label="Вставить" name="paste"/>
+ <menu_item_call label="Переименовать" name="rename"/>
+ <menu_item_call label="Удалить" name="delete"/>
+ <menu_item_call label="Развернуть все папки" name="expand_all"/>
+ <menu_item_call label="Свернуть все папки" name="collapse_all"/>
+ <menu_item_check label="Сортировать по дате" name="sort_by_date"/>
+ <menu_item_call label="Создать подборку" name="create_pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml
new file mode 100644
index 0000000000..1865fead7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+ <menu_item_call label="Карта" name="show_on_map"/>
+ <menu_item_call label="Заплатить" name="pay"/>
+ <menu_item_call label="Поделиться" name="share"/>
+ <menu_item_call label="Заблокировать" name="block"/>
+ <menu_item_call label="Разблокировать" name="unblock"/>
+ <menu_item_call label="Выкинуть" name="kick"/>
+ <menu_item_call label="Заморозить" name="freeze"/>
+ <menu_item_call label="Разморозить" name="unfreeze"/>
+ <menu_item_call label="CSR" name="csr"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_save_outfit.xml b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml
new file mode 100644
index 0000000000..88947e1433
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="save_outfit_menu">
+ <menu_item_call label="Сохранить" name="save_outfit"/>
+ <menu_item_call label="Сохранить как" name="save_as_new_outfit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml
new file mode 100644
index 0000000000..6cacff3870
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="ScriptChiclet Menu">
+ <menu_item_call label="Закрыть" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_slurl.xml b/indra/newview/skins/default/xui/ru/menu_slurl.xml
new file mode 100644
index 0000000000..f02549055c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_slurl.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="О ссылке" name="about_url"/>
+ <menu_item_call label="Телепортироваться по ссылке" name="teleport_to_url"/>
+ <menu_item_call label="Карта" name="show_on_map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml
new file mode 100644
index 0000000000..332f2784b9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Teleport History Gear Context Menu">
+ <menu_item_call label="Открыть все папки" name="Expand all folders"/>
+ <menu_item_call label="Закрыть все папки" name="Collapse all folders"/>
+ <menu_item_call label="Очистить историю телепортаций" name="Clear Teleport History"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml
new file mode 100644
index 0000000000..6a22fd00dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Телепорт" name="Teleport"/>
+ <menu_item_call label="Информация" name="More Information"/>
+ <menu_item_call label="Копировать в буфер обмена" name="CopyToClipboard"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml
new file mode 100644
index 0000000000..9b2434a310
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Открыть" name="TabOpen"/>
+ <menu_item_call label="Закрыть" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_text_editor.xml b/indra/newview/skins/default/xui/ru/menu_text_editor.xml
new file mode 100644
index 0000000000..113dd85318
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Вырезать" name="Cut"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+ <menu_item_call label="Вставить" name="Paste"/>
+ <menu_item_call label="Удалить" name="Delete"/>
+ <menu_item_call label="Выделить все" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_toolbars.xml b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
new file mode 100644
index 0000000000..e04a9ee57d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Выбор кнопок..." name="Chose Buttons"/>
+ <menu_item_check label="Значки и подписи" name="icons_with_text"/>
+ <menu_item_check label="Только значки" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_topinfobar.xml b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml
new file mode 100644
index 0000000000..76cadbe5a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_topinfobar">
+ <menu_item_check label="Показать координаты" name="Show Coordinates"/>
+ <menu_item_check label="Показать свойства участка" name="Show Parcel Properties"/>
+ <menu_item_call label="Закладка" name="Landmark"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
new file mode 100644
index 0000000000..0ba3ee152a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать профиль жителя" name="show_agent"/>
+ <menu_item_call label="Копировать название в буфер обмена" name="url_copy_label"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_group.xml b/indra/newview/skins/default/xui/ru/menu_url_group.xml
new file mode 100644
index 0000000000..f25e2a7eb8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать информацию группы" name="show_group"/>
+ <menu_item_call label="Копировать группу в буфер обмена" name="url_copy_label"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_http.xml b/indra/newview/skins/default/xui/ru/menu_url_http.xml
new file mode 100644
index 0000000000..781211b16f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Открыть веб-страницу" name="url_open"/>
+ <menu_item_call label="Открыть во внутреннем браузере" name="url_open_internal"/>
+ <menu_item_call label="Открыть во внешнем браузере" name="url_open_external"/>
+ <menu_item_call label="Копировать URL-адрес в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_inventory.xml b/indra/newview/skins/default/xui/ru/menu_url_inventory.xml
new file mode 100644
index 0000000000..6127bf9868
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать вещь из инвентаря" name="show_item"/>
+ <menu_item_call label="Копировать название в буфер обмена" name="url_copy_label"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_map.xml b/indra/newview/skins/default/xui/ru/menu_url_map.xml
new file mode 100644
index 0000000000..bbf64f20e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать на карте" name="show_on_map"/>
+ <menu_item_call label="Телепорт в местоположение" name="teleport_to_location"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
new file mode 100644
index 0000000000..6e7800d3f5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать информацию об объекте" name="show_object"/>
+ <menu_item_call label="Показать на карте" name="show_on_map"/>
+ <menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
+ <menu_item_call label="Копировать название объекта в буфер обмена" name="url_copy_label"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_parcel.xml b/indra/newview/skins/default/xui/ru/menu_url_parcel.xml
new file mode 100644
index 0000000000..84a679703a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать информацию об участке" name="show_parcel"/>
+ <menu_item_call label="Показать на карте" name="show_on_map"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_slapp.xml b/indra/newview/skins/default/xui/ru/menu_url_slapp.xml
new file mode 100644
index 0000000000..3d582ea2c5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Выполнить команду" name="run_slapp"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_slurl.xml b/indra/newview/skins/default/xui/ru/menu_url_slurl.xml
new file mode 100644
index 0000000000..cbceafea21
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Показать информацию о месте" name="show_place"/>
+ <menu_item_call label="Показать на карте" name="show_on_map"/>
+ <menu_item_call label="Телепорт в местоположение" name="teleport_to_location"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_teleport.xml b/indra/newview/skins/default/xui/ru/menu_url_teleport.xml
new file mode 100644
index 0000000000..2ecde09383
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Телепортация в это место" name="teleport"/>
+ <menu_item_call label="Показать на карте" name="show_on_map"/>
+ <menu_item_call label="Копировать URL-адрес SL в буфер" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
new file mode 100644
index 0000000000..b9f403c04b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Main Menu">
+ <menu label="Я" name="Me">
+ <menu_item_call label="Информационная панель..." name="Manage My Account"/>
+ <menu_item_call label="Профиль…" name="Profile"/>
+ <menu_item_call label="Внешность..." name="ChangeOutfit"/>
+ <menu_item_check label="Инвентарь..." name="Inventory"/>
+ <menu_item_check label="Жесты..." name="Gestures"/>
+ <menu_item_check label="Голос..." name="ShowVoice"/>
+ <menu label="Движение" name="Movement">
+ <menu_item_call label="Сесть" name="Sit Down Here"/>
+ <menu_item_check label="Полет" name="Fly"/>
+ <menu_item_check label="Всегда бегать" name="Always Run"/>
+ <menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/>
+ </menu>
+ <menu label="Статус" name="Status">
+ <menu_item_call label="Нет на месте" name="Set Away"/>
+ <menu_item_call label="Не беспокоить" name="Set Busy"/>
+ </menu>
+ <menu_item_call label="Запрос статуса администратора" name="Request Admin Options"/>
+ <menu_item_call label="Выход из статуса администратора" name="Leave Admin Options"/>
+ <menu_item_call label="Купить L$" name="Buy and Sell L$"/>
+ <menu_item_call label="Настройки..." name="Preferences"/>
+ <menu_item_call label="Панели инструментов..." name="Toolbars"/>
+ <menu_item_call label="Скрыть все элементы управления" name="Hide UI"/>
+ <menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
+ </menu>
+ <menu label="Общение" name="Communicate">
+ <menu_item_call label="Мои друзья" name="My Friends"/>
+ <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 Voice"/>
+ </menu>
+ <menu label="Мир" name="World">
+ <menu_item_check label="Миникарта" name="Mini-Map"/>
+ <menu_item_check label="Карта мира" name="World Map"/>
+ <menu_item_check label="Поиск" name="Search"/>
+ <menu_item_call label="Снимок" name="Take Snapshot"/>
+ <menu_item_call label="Добавить закладку на это место" name="Create Landmark Here"/>
+ <menu label="Профиль места" name="Land">
+ <menu_item_call label="Профиль места" name="Place Profile"/>
+ <menu_item_call label="О земле" name="About Land"/>
+ <menu_item_call label="Регион/землевладение" name="Region/Estate"/>
+ </menu>
+ <menu_item_call label="Купить эту землю" name="Buy Land"/>
+ <menu_item_call label="Моя земля" name="My Land"/>
+ <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_item_check label="Координаты" name="Coordinates"/>
+ <menu_item_check label="Свойства участка" name="Parcel Properties"/>
+ <menu_item_check label="Меню «Дополнительно»" name="Show Advanced Menu"/>
+ </menu>
+ <menu_item_call label="Телепортироваться домой" name="Teleport Home"/>
+ <menu_item_call label="Установить дом здесь" name="Set Home to Here"/>
+ <menu label="Солнце" name="Environment Settings">
+ <menu_item_call label="Восход" name="Sunrise"/>
+ <menu_item_call label="Полдень" name="Noon"/>
+ <menu_item_call label="Закат" name="Sunset"/>
+ <menu_item_call label="Полночь" name="Midnight"/>
+ </menu>
+ <menu label="Редактор среды" name="Enviroment Editor">
+ <menu_item_call label="Настройки среды..." name="Enviroment Settings"/>
+ <menu label="Настройки воды" name="Water Presets">
+ <menu_item_call label="Создать настройку..." name="new_water_preset"/>
+ <menu_item_call label="Изменить настройку..." name="edit_water_preset"/>
+ <menu_item_call label="Удалить настройку..." name="delete_water_preset"/>
+ </menu>
+ <menu label="Настройки неба" name="Sky Presets">
+ <menu_item_call label="Создать настройку..." name="new_sky_preset"/>
+ <menu_item_call label="Изменить настройку..." name="edit_sky_preset"/>
+ <menu_item_call label="Удалить настройку..." name="delete_sky_preset"/>
+ </menu>
+ <menu label="Суточные настройки" name="Day Presets">
+ <menu_item_call label="Создать настройку..." name="new_day_preset"/>
+ <menu_item_call label="Изменить настройку..." name="edit_day_preset"/>
+ <menu_item_call label="Удалить настройку..." name="delete_day_preset"/>
+ </menu>
+ </menu>
+ </menu>
+ <menu label="Строительство" name="BuildTools">
+ <menu_item_check label="Строительство" name="Show Build Tools"/>
+ <menu label="Выбрать инструменты" name="Select Tool">
+ <menu_item_call label="Фокус" name="Focus"/>
+ <menu_item_call label="Перемещение" name="Move"/>
+ <menu_item_call label="Редактирование" name="Edit"/>
+ <menu_item_call label="Создание" name="Create"/>
+ <menu_item_call label="Земля" name="Land"/>
+ </menu>
+ <menu_item_call label="Объединить" name="Link"/>
+ <menu_item_call label="Разъединить" name="Unlink"/>
+ <menu_item_check label="Редактировать объединенные части" name="Edit Linked Parts"/>
+ <menu label="Выбрать объединенные части" name="Select Linked Parts">
+ <menu_item_call label="Выбрать следующую" name="Select Next Part"/>
+ <menu_item_call label="Выбрать предыдущую" name="Select Previous Part"/>
+ <menu_item_call label="Включить следующую" name="Include Next Part"/>
+ <menu_item_call label="Включить предыдущую" name="Include Previous Part"/>
+ </menu>
+ <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 Buy"/>
+ <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 Object Contents"/>
+ <menu_item_call label="Вернуть объект" name="Return Object back to Owner"/>
+ </menu>
+ <menu label="Скрипты" name="Scripts">
+ <menu_item_call label="Перекомпилировать скрипты (Mono)" name="Mono"/>
+ <menu_item_call label="Перекомпилировать скрипты (LSL)" name="LSL"/>
+ <menu_item_call label="Сброс скриптов" name="Reset Scripts"/>
+ <menu_item_call label="Запустить скрипты" name="Set Scripts to Running"/>
+ <menu_item_call label="Остановить скрипты" name="Set Scripts to Not Running"/>
+ </menu>
+ <menu label="Параметры" name="Options">
+ <menu_item_check label="Показать расширенные разрешения" name="DebugPermissions"/>
+ <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 Selection Outlines"/>
+ <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="Upload">
+ <menu_item_call label="Изображение (L$[COST])..." name="Upload Image"/>
+ <menu_item_call label="Звук (L$[COST])..." name="Upload Sound"/>
+ <menu_item_call label="Анимация (L$[COST])..." name="Upload Animation"/>
+ <menu_item_call label="Модель..." name="Upload Model"/>
+ <menu_item_call label="Все сразу (L$[COST] за файл)..." name="Bulk Upload"/>
+ <menu_item_call label="Установить разрешения на передачу по умолчанию" name="perm prefs"/>
+ </menu>
+ <menu_item_call label="Отменить" name="Undo"/>
+ <menu_item_call label="Вернуть" name="Redo"/>
+ </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="О [APP_NAME]" name="About Second Life"/>
+ </menu>
+ <menu label="Дополнительно" name="Advanced">
+ <menu_item_call label="Обновить текстуры" name="Rebake Texture"/>
+ <menu_item_call label="Сбросить размер интерфейса" name="Set UI Size to Default"/>
+ <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"/>
+ <menu_item_check label="Тихое создание снимка" name="QuietSnapshotsToDisk"/>
+ <menu label="Производительность" name="Performance Tools">
+ <menu_item_call label="Запаздывание" name="Lag Meter"/>
+ <menu_item_check label="Статистика" name="Statistics Bar"/>
+ <menu_item_check label="Показать вес отрисовки для аватаров" name="Avatar Rendering Cost"/>
+ </menu>
+ <menu label="Подсветка и видимость" name="Highlighting and Visibility">
+ <menu_item_check label="Мигающий маяк" name="Cheesy Beacon"/>
+ <menu_item_check label="Скрыть частицы" name="Hide Particles"/>
+ <menu_item_check label="Скрыть выбранное" name="Hide Selected"/>
+ <menu_item_check label="Подсветка прозрачного" name="Highlight Transparent"/>
+ <menu_item_check label="Показывать присоединения HUD" name="Show HUD Attachments"/>
+ <menu_item_check label="Показывать прицел при обзоре мышью" name="ShowCrosshairs"/>
+ </menu>
+ <menu label="Типы визуализации" name="Rendering Types">
+ <menu_item_check label="Обычная" name="Simple"/>
+ <menu_item_check label="Альфа" name="Alpha"/>
+ <menu_item_check label="Дерево" name="Tree"/>
+ <menu_item_check label="Аватары" name="Character"/>
+ <menu_item_check label="Исправление поверхности" name="Surface Patch"/>
+ <menu_item_check label="Небо" name="Sky"/>
+ <menu_item_check label="Вода" name="Water"/>
+ <menu_item_check label="Земля" name="Ground"/>
+ <menu_item_check label="Объем" name="Volume"/>
+ <menu_item_check label="Трава" name="Grass"/>
+ <menu_item_check label="Облака" name="Clouds"/>
+ <menu_item_check label="Частицы" name="Particles"/>
+ <menu_item_check label="Рельефное" name="Bump"/>
+ </menu>
+ <menu label="Функции визуализации" name="Rendering Features">
+ <menu_item_check label="Интерфейс пользователя" name="UI"/>
+ <menu_item_check label="Выбрано" name="Selected"/>
+ <menu_item_check label="Выделено" name="Highlighted"/>
+ <menu_item_check label="Динамические текстуры" name="Dynamic Textures"/>
+ <menu_item_check label="Тени от ног" name="Foot Shadows"/>
+ <menu_item_check label="Туман" name="Fog"/>
+ <menu_item_check label="Проверить данные FR" name="Test FRInfo"/>
+ <menu_item_check label="Гибкие объекты" name="Flexible Objects"/>
+ </menu>
+ <menu_item_check label="Использовать поток для чтения подключаемых модулей" name="Use Plugin Read Thread"/>
+ <menu_item_call label="Очистить кэш группы" name="ClearGroupCache"/>
+ <menu_item_check label="Сглаживание мышью" name="Mouse Smoothing"/>
+ <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="Сбросить размер интерфейса" name="Set UI Size to Default"/>
+ <menu_item_check label="Показать меню «Дополнительно» - старое сочетание клавиш" name="Show Advanced Menu - legacy shortcut"/>
+ <menu_item_call label="Закрыть окно" name="Close Window"/>
+ <menu_item_call label="Закрыть все окна" name="Close All Windows"/>
+ <menu_item_call label="Сохранить снимок на диске" name="Snapshot to Disk"/>
+ <menu_item_call label="Обзор мышью" name="Mouselook"/>
+ <menu_item_check label="Обзор джойстиком" name="Joystick Flycam"/>
+ <menu_item_call label="Сброс обзора" name="Reset View"/>
+ <menu_item_call label="Смотреть на последнего говорившего" name="Look at Last Chatter"/>
+ <menu label="Выбрать инструменты" name="Select Tool">
+ <menu_item_call label="Фокус" name="Focus"/>
+ <menu_item_call label="Перемещение" name="Move"/>
+ <menu_item_call label="Редактирование" name="Edit"/>
+ <menu_item_call label="Создание" name="Create"/>
+ <menu_item_call label="Земля" name="Land"/>
+ </menu>
+ <menu_item_call label="Приблизить" name="Zoom In"/>
+ <menu_item_call label="Стандартный масштаб" name="Zoom Default"/>
+ <menu_item_call label="Отодвинуть" name="Zoom Out"/>
+ </menu>
+ <menu_item_call label="Отладочные настройки" name="Debug Settings"/>
+ <menu_item_check label="Показать меню разработчика" name="Debug Mode"/>
+ </menu>
+ <menu label="Разработка" name="Develop">
+ <menu label="Консоли" name="Consoles">
+ <menu_item_check label="Консоль текстур" name="Texture Console"/>
+ <menu_item_check label="Консоль отладки" name="Debug Console"/>
+ <menu_item_call label="Консоль уведомлений" name="Notifications"/>
+ <menu_item_check label="Консоль размера текстуры" name="Texture Size"/>
+ <menu_item_check label="Консоль категории текстуры" name="Texture Category"/>
+ <menu_item_check label="Оперативные таймеры" name="Fast Timers"/>
+ <menu_item_check label="Память" name="Memory"/>
+ <menu_item_check label="Статистика по сцене" name="Scene Statistics"/>
+ <menu_item_call label="Данные о регионе на консоль отладки" name="Region Info to Debug Console"/>
+ <menu_item_call label="Данны о группе на консоль отладки" name="Group Info to Debug Console"/>
+ <menu_item_call label="Данные о способностях на консоль отладки" name="Capabilities Info to Debug Console"/>
+ <menu_item_check label="Камера" name="Camera"/>
+ <menu_item_check label="Ветер" name="Wind"/>
+ <menu_item_check label="Угол обзора" name="FOV"/>
+ <menu_item_check label="Значок" name="Badge"/>
+ </menu>
+ <menu label="Показать данные" name="Display Info">
+ <menu_item_check label="Показать время" name="Show Time"/>
+ <menu_item_check label="Показывать цену передачи" name="Show Upload Cost"/>
+ <menu_item_check label="Показать данные по отрисовке" name="Show Render Info"/>
+ <menu_item_check label="Показать данные о текстурах" name="Show Texture Info"/>
+ <menu_item_check label="Показать матрицы" name="Show Matrices"/>
+ <menu_item_check label="Показать цвет под курсором" name="Show Color Under Cursor"/>
+ <menu_item_check label="Показать память" name="Show Memory"/>
+ <menu_item_check label="Показать закрытые данные о памяти" name="Show Private Mem Info"/>
+ <menu_item_check label="Показать изменения объектов" name="Show Updates"/>
+ </menu>
+ <menu label="Принудительно вызвать ошибку" name="Force Errors">
+ <menu_item_call label="Принудительно перейти в точку останова" name="Force Breakpoint"/>
+ <menu_item_call label="Принудительно вызвать ошибку LL и сбой" name="Force LLError And Crash"/>
+ <menu_item_call label="Принудительный неправильный доступ к памяти" name="Force Bad Memory Access"/>
+ <menu_item_call label="Принудительное зацикливание" name="Force Infinite Loop"/>
+ <menu_item_call label="Принудительный сбой драйвера" name="Force Driver Carsh"/>
+ <menu_item_call label="Принудительное исключение" name="Force Software Exception"/>
+ <menu_item_call label="Принудительно отключить клиент" name="Force Disconnect Viewer"/>
+ <menu_item_call label="Имитировать утечку памяти" name="Memory Leaking Simulation"/>
+ </menu>
+ <menu label="Тесты визуализации" name="Render Tests">
+ <menu_item_check label="Сдвиг камеры" name="Camera Offset"/>
+ <menu_item_check label="Случайная частота кадров" name="Randomize Framerate"/>
+ <menu_item_check label="Периодическое замедление кадров" name="Periodic Slow Frame"/>
+ <menu_item_check label="Тест кадров" name="Frame Test"/>
+ </menu>
+ <menu label="Визуализировать метаданные" name="Render Metadata">
+ <menu_item_check label="Рамки" name="Bounding Boxes"/>
+ <menu_item_check label="Нормали" name="Normals"/>
+ <menu_item_check label="Октадерево" name="Octree"/>
+ <menu_item_check label="Тень от усеченной пирамиды" name="Shadow Frusta"/>
+ <menu_item_check label="Физические формы" name="Physics Shapes"/>
+ <menu_item_check label="Смыкание" name="Occlusion"/>
+ <menu_item_check label="Визуализация порциями" name="Render Batches"/>
+ <menu_item_check label="Тип обновления" name="Update Type"/>
+ <menu_item_check label="Анимация текстуры" name="Texture Anim"/>
+ <menu_item_check label="Приоритет текстуры" name="Texture Priority"/>
+ <menu_item_check label="Площадь текстуры" name="Texture Area"/>
+ <menu_item_check label="Площадь грани" name="Face Area"/>
+ <menu_item_check label="Данные об уровнях детализации" name="LOD Info"/>
+ <menu_item_check label="Очередь построителя" name="Build Queue"/>
+ <menu_item_check label="Освещение" name="Lights"/>
+ <menu_item_check label="Каркас столкновений" name="Collision Skeleton"/>
+ <menu_item_check label="Лучи" name="Raycast"/>
+ <menu_item_check label="Сложность визуализации" name="rendercomplexity"/>
+ <menu_item_check label="Лепка" name="Sculpt"/>
+ </menu>
+ <menu label="Визуализация" name="Rendering">
+ <menu_item_check label="Оси" name="Axes"/>
+ <menu_item_check label="Касательный базис" name="Tangent Basis"/>
+ <menu_item_call label="Выбранная текстура в основе" name="Selected Texture Info Basis"/>
+ <menu_item_check label="Каркас" name="Wireframe"/>
+ <menu_item_check label="Смыкание объектов" name="Object-Object Occlusion"/>
+ <menu_item_check label="Освещение и тени" name="Lighting and Shadows"/>
+ <menu_item_check label="Тени от солнца, луны и прожекторов" name="Shadows from Sun/Moon/Projectors"/>
+ <menu_item_check label="SSAO и сглаживание теней" name="SSAO and Shadow Smoothing"/>
+ <menu_item_check label="Повсеместное освещение (экспериментальное)" name="Global Illumination"/>
+ <menu_item_check label="Отладка GL" name="Debug GL"/>
+ <menu_item_check label="Отладка конвейера" name="Debug Pipeline"/>
+ <menu_item_check label="Автоматические альфа-маски (отложенные)" name="Automatic Alpha Masks (deferred)"/>
+ <menu_item_check label="Автоматические альфа-маски (не отложенные)" name="Automatic Alpha Masks (non-deferred)"/>
+ <menu_item_check label="Текстуры анимаций" name="Animation Textures"/>
+ <menu_item_check label="Отключить текстуры" name="Disable Textures"/>
+ <menu_item_check label="Текстуры в полном разрешении" name="Rull Res Textures"/>
+ <menu_item_check label="Проверить текстуры" name="Audit Textures"/>
+ <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="Парящие светящиеся объекты" name="Hover Glow Objects"/>
+ </menu>
+ <menu label="Сеть" name="Network">
+ <menu_item_check label="Приостановить клиент" name="AgentPause"/>
+ <menu_item_call label="Включить журнал сообщений" name="Enable Message Log"/>
+ <menu_item_call label="Отключить журнал сообщений" name="Disable Message Log"/>
+ <menu_item_check label="Скорость интерполяции объектов" name="Velocity Interpolate Objects"/>
+ <menu_item_check label="Прикрепить объекты для интерполяции" name="Ping Interpolate Object Positions"/>
+ <menu_item_call label="Опустить пакет" name="Drop a Packet"/>
+ </menu>
+ <menu_item_call label="Дамп камеры со скриптами" name="Dump Scripted Camera"/>
+ <menu_item_call label="Столкновения, толчки и удары" name="Bumps, Pushes &amp;amp; Hits"/>
+ <menu label="Диктофон" name="Recorder">
+ <menu_item_call label="Начать воспроизведение" name="Start Playback"/>
+ <menu_item_call label="Остановить воспроизведение" name="Stop Playback"/>
+ <menu_item_check label="Зациклить воспроизведение" name="Loop Playback"/>
+ <menu_item_call label="Начать запись" name="Start Record"/>
+ <menu_item_call label="Остановить запись" name="Stop Record"/>
+ </menu>
+ <menu label="Мир" name="World">
+ <menu_item_check label="Перекрытие солнца в симуляторе" name="Sim Sun Override"/>
+ <menu_item_check label="Мигающий маяк" name="Cheesy Beacon"/>
+ <menu_item_check label="Неизменная погода" name="Fixed Weather"/>
+ <menu_item_call label="Вывод кэша региональных объектов" name="Dump Region Object Cache"/>
+ </menu>
+ <menu label="Интерфейс пользователя" name="UI">
+ <menu_item_call label="Проверка медиабраузера" name="Web Browser Test"/>
+ <menu_item_call label="Браузер для просмотра веб-контента" name="Web Content Browser"/>
+ <menu_item_call label="Вывод SelectMgr" name="Dump SelectMgr"/>
+ <menu_item_call label="Вывод инвентаря" name="Dump Inventory"/>
+ <menu_item_call label="Вывод таймеров" name="Dump Timers"/>
+ <menu_item_call label="Вывод средства фокусировки" name="Dump Focus Holder"/>
+ <menu_item_call label="Печать информации о выбранных объектах" name="Print Selected Object Info"/>
+ <menu_item_call label="Печать информации об агенте" name="Print Agent Info"/>
+ <menu_item_call label="Статистическая информация о памяти" name="Memory Stats"/>
+ <menu_item_check label="Консоль отладки региона" name="Region Debug Console"/>
+ <menu_item_check label="Отладка SelectMgr" name="Debug SelectMgr"/>
+ <menu_item_check label="Отладка щелчков мышью" name="Debug Clicks"/>
+ <menu_item_check label="Отладка обзора" name="Debug Views"/>
+ <menu_item_check label="Отладка контекстных окон к названиям" name="Debug Name Tooltips"/>
+ <menu_item_check label="Отладка выполняемых с помощью мыши действий" name="Debug Mouse Events"/>
+ <menu_item_check label="Отладка клавиш" name="Debug Keys"/>
+ <menu_item_check label="Отладка WindowProc" name="Debug WindowProc"/>
+ </menu>
+ <menu label="XUI" name="XUI">
+ <menu_item_call label="Обновить настройки цветов" name="Reload Color Settings"/>
+ <menu_item_call label="Показать проверку шрифтов" name="Show Font Test"/>
+ <menu_item_check label="Показать имена XUI" name="Show XUI Names"/>
+ <menu_item_call label="Отправить тестовое сообщение" name="Send Test IMs"/>
+ <menu_item_call label="Очистить кэши имен" name="Flush Names Caches"/>
+ </menu>
+ <menu label="Аватар" name="Character">
+ <menu label="Захват запеченных текстур" name="Grab Baked Texture">
+ <menu_item_call label="Радужка" name="Iris"/>
+ <menu_item_call label="Голова" name="Head"/>
+ <menu_item_call label="Верхняя часть тела" name="Upper Body"/>
+ <menu_item_call label="Нижняя часть тела" name="Lower Body"/>
+ <menu_item_call label="Юбка" name="Skirt"/>
+ </menu>
+ <menu label="Проверка персонажа" name="Character Tests">
+ <menu_item_call label="Внешний вид в XML" name="Appearance To XML"/>
+ <menu_item_call label="Активировать геометрию персонажа" name="Toggle Character Geometry"/>
+ <menu_item_call label="Проверка мужчины" name="Test Male"/>
+ <menu_item_call label="Проверка женщины" name="Test Female"/>
+ <menu_item_call label="Активировать PG-контент" name="Toggle PG"/>
+ <menu_item_check label="Разрешить выбор аватара" name="Allow Select Avatar"/>
+ </menu>
+ <menu_item_call label="Скинуть параметры" name="Force Params to Default"/>
+ <menu_item_check label="Данные об анимации" name="Animation Info"/>
+ <menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
+ <menu_item_check label="Показать взгляд" name="Show Look At"/>
+ <menu_item_check label="Показать указание" name="Show Point At"/>
+ <menu_item_check label="Отладка обновленных движений суставов" name="Debug Joint Updates"/>
+ <menu_item_check label="Отключить детализацию" name="Disable LOD"/>
+ <menu_item_check label="Отладка видимости персонажа" name="Debug Character Vis"/>
+ <menu_item_check label="Показать скелет" name="Show Collision Skeleton"/>
+ <menu_item_check label="Отобразить действие агента" name="Display Agent Target"/>
+ --&gt;
+ <menu_item_call label="Вывод присоединений" name="Dump Attachments"/>
+ <menu_item_call label="Отладка текстур аватара" name="Debug Avatar Textures"/>
+ <menu_item_call label="Вывод локальных текстур" name="Dump Local Textures"/>
+ </menu>
+ <menu_item_check label="Текстуры HTTP" name="HTTP Textures"/>
+ <menu_item_check label="Инвентарь HTTP" name="HTTP Inventory"/>
+ <menu_item_call label="Сжатие изображений" name="Compress Images"/>
+ <menu_item_check label="Вывод минидампа при отладке" name="Output Debug Minidump"/>
+ <menu_item_check label="Окно консоли при следующем запуске" name="Console Window"/>
+ <menu_item_call label="Запрос статуса администратора" name="Request Admin Options"/>
+ <menu_item_call label="Выход из статуса администратора" name="Leave Admin Options"/>
+ <menu_item_check label="Показать меню администратора" name="View Admin Options"/>
+ </menu>
+ <menu label="Администратор" name="Admin">
+ <menu label="Object">
+ <menu_item_call label="Взять копию" name="Take Copy"/>
+ <menu_item_call label="Назначить себя владельцем" name="Force Owner To Me"/>
+ <menu_item_call label="Назначить полноправным владельцем" name="Force Owner Permissive"/>
+ <menu_item_call label="Удалить" name="Delete"/>
+ <menu_item_call label="На месте" name="Lock"/>
+ <menu_item_call label="Получить ID активов" name="Get Assets IDs"/>
+ </menu>
+ <menu label="Участок" name="Parcel">
+ <menu_item_call label="Назначить себя владельцем" name="Owner To Me"/>
+ <menu_item_call label="Задать для контента Linden" name="Set to Linden Content"/>
+ <menu_item_call label="Претензия на публичную землю" name="Claim Public Land"/>
+ </menu>
+ <menu label="Регион" name="Region">
+ <menu_item_call label="Вывод временных данных актива" name="Dump Temp Asset Data"/>
+ <menu_item_call label="Сохранить состояние региона" name="Save Region State"/>
+ </menu>
+ <menu_item_call label="Инструменты творца" name="God Tools"/>
+ </menu>
+ <menu label="Администратор" name="Deprecated">
+ <menu label="Присоединить объект" name="Attach Object"/>
+ <menu label="Отсоединить объект" name="Detach Object"/>
+ <menu label="Снять одежду" name="Take Off Clothing">
+ <menu_item_call label="Рубашка" name="Shirt"/>
+ <menu_item_call label="Брюки" name="Pants"/>
+ <menu_item_call label="Обувь" name="Shoes"/>
+ <menu_item_call label="Носки" name="Socks"/>
+ <menu_item_call label="Пиджак" name="Jacket"/>
+ <menu_item_call label="Перчатки" name="Gloves"/>
+ <menu_item_call label="Майка" name="Menu Undershirt"/>
+ <menu_item_call label="Трусы" name="Menu Underpants"/>
+ <menu_item_call label="Юбка" name="Skirt"/>
+ <menu_item_call label="Альфа" name="Alpha"/>
+ <menu_item_call label="Тату" name="Tattoo"/>
+ <menu_item_call label="Физика" name="Physics"/>
+ <menu_item_call label="Вся одежда" name="All Clothes"/>
+ </menu>
+ <menu label="Справка" name="Help">
+ <menu_item_call label="Официальный блог Linden" name="Official Linden Blog"/>
+ <menu_item_call label="Портал скриптов" name="Scripting Portal"/>
+ <menu label="Сообщение об ошибке" name="Bug Reporting">
+ <menu_item_call label="Общедоступное средство отслеживания проблем" name="Public Issue Tracker"/>
+ <menu_item_call label="Справка по общедоступному средству отслеживания проблем" name="Publc Issue Tracker Help"/>
+ <menu_item_call label="Сообщение об ошибке 101" name="Bug Reporing 101"/>
+ <menu_item_call label="Проблемы безопасности" name="Security Issues"/>
+ <menu_item_call label="QA Wiki" name="QA Wiki"/>
+ </menu>
+ </menu>
+ </menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml
new file mode 100644
index 0000000000..2832e17b7d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit Wearable Context Menu">
+ <menu_item_call label="Заменить" name="wear_replace"/>
+ <menu_item_call label="Надеть" name="wear_wear"/>
+ <menu_item_call label="Добавить" name="wear_add"/>
+ <menu_item_call label="Снять / отсоединить" name="take_off_or_detach"/>
+ <menu_item_call label="Отсоединить" name="detach"/>
+ <context_menu label="Присоединить" name="wearable_attach_to"/>
+ <context_menu label="Присоединить к данным в игре" name="wearable_attach_to_hud"/>
+ <menu_item_call label="Снять" name="take_off"/>
+ <menu_item_call label="Изменить" name="edit"/>
+ <menu_item_call label="Профиль объекта" name="object_profile"/>
+ <menu_item_call label="Показать оригинал" name="show_original"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
new file mode 100644
index 0000000000..c2351fbfff
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Wearing">
+ <menu_item_call label="Изменить костюм" name="edit"/>
+ <menu_item_call label="Снять" name="takeoff"/>
+ <menu_item_call label="Копировать список костюмов в буфер обмена" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
new file mode 100644
index 0000000000..f178b39c77
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Wearing">
+ <menu_item_call label="Снять" name="take_off"/>
+ <menu_item_call label="Отсоединить" name="detach"/>
+ <menu_item_call label="Изменить костюм" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/mime_types.xml b/indra/newview/skins/default/xui/ru/mime_types.xml
new file mode 100644
index 0000000000..7ed23b5d53
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/mime_types.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Веб-контент
+ </label>
+ <tooltip name="web_tooltip">
+ В этом месте есть веб-контент
+ </tooltip>
+ <playtip name="web_playtip">
+ Показать веб-контент
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Видео
+ </label>
+ <tooltip name="movie_tooltip">
+ Здесь есть видео
+ </tooltip>
+ <playtip name="movie_playtip">
+ Показать видео
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Картинка
+ </label>
+ <tooltip name="image_tooltip">
+ В этом месте есть картинка
+ </tooltip>
+ <playtip name="image_playtip">
+ Показать картинку для этого места
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Звук
+ </label>
+ <tooltip name="audio_tooltip">
+ В этом месте есть звук
+ </tooltip>
+ <playtip name="audio_playtip">
+ Воспроизвести звук для этого места
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Поток RealTime
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Ничего -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Ничего -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Звук
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Видео
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Картинка
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Видео (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
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Документ PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Документ Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Документ RTF
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Документ SMIL
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Веб-страница (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">
+ Звук (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Звук (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Звук (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Звук (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Изображение (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Изображение (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Изображение (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Изображение (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Изображение (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Изображение (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Веб-страница
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Текст
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Видео (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Видео (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Видео (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Видео (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Видео (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Видео (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ru/mime_types_linux.xml b/indra/newview/skins/default/xui/ru/mime_types_linux.xml
new file mode 100644
index 0000000000..a42b0bb9cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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">
+ Веб-контент
+ </label>
+ <tooltip name="web_tooltip">
+ В этом месте есть веб-контент
+ </tooltip>
+ <playtip name="web_playtip">
+ Показать веб-контент
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Видео
+ </label>
+ <tooltip name="movie_tooltip">
+ Здесь есть видео
+ </tooltip>
+ <playtip name="movie_playtip">
+ Показать видео
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Изображение
+ </label>
+ <tooltip name="image_tooltip">
+ В этом месте есть картинка
+ </tooltip>
+ <playtip name="image_playtip">
+ Показать картинку для этого места
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Звук
+ </label>
+ <tooltip name="audio_tooltip">
+ В этом месте есть звук
+ </tooltip>
+ <playtip name="audio_playtip">
+ Воспроизвести звук для этого места
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Поток RealTime
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Ничего -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Ничего -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Звук
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Видео
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Изображение
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Видео (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
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Документ PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Документ Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Документ RTF
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Документ SMIL
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Веб-страница (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">
+ Звук (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Звук (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Звук (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Звук (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Изображение (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Изображение (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Изображение (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Изображение (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Изображение (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Изображение (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Веб-страница
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Текст
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Видео (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Видео (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Видео (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Видео (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Видео (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Видео (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ru/mime_types_mac.xml b/indra/newview/skins/default/xui/ru/mime_types_mac.xml
new file mode 100644
index 0000000000..7ed23b5d53
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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">
+ Веб-контент
+ </label>
+ <tooltip name="web_tooltip">
+ В этом месте есть веб-контент
+ </tooltip>
+ <playtip name="web_playtip">
+ Показать веб-контент
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Видео
+ </label>
+ <tooltip name="movie_tooltip">
+ Здесь есть видео
+ </tooltip>
+ <playtip name="movie_playtip">
+ Показать видео
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Картинка
+ </label>
+ <tooltip name="image_tooltip">
+ В этом месте есть картинка
+ </tooltip>
+ <playtip name="image_playtip">
+ Показать картинку для этого места
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Звук
+ </label>
+ <tooltip name="audio_tooltip">
+ В этом месте есть звук
+ </tooltip>
+ <playtip name="audio_playtip">
+ Воспроизвести звук для этого места
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Поток RealTime
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Ничего -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Ничего -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Звук
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Видео
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Картинка
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Видео (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
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Документ PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Документ Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Документ RTF
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Документ SMIL
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Веб-страница (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">
+ Звук (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Звук (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Звук (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Звук (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Изображение (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Изображение (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Изображение (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Изображение (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Изображение (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Изображение (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Веб-страница
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Текст
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Видео (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Видео (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Видео (QuickTime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Видео (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Видео (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Видео (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
new file mode 100644
index 0000000000..1be14160ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -0,0 +1,3076 @@
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+ <global name="skipnexttime">
+ Больше не показывать
+ </global>
+ <global name="alwayschoose">
+ Всегда выбирать эту опцию
+ </global>
+ <global name="implicitclosebutton">
+ Закрыть
+ </global>
+ <template name="okbutton">
+ <form>
+ <button name="OK_okbutton" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore">
+ <form>
+ <button name="OK_okignore" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="OK_okcancelbuttons" text="$yestext"/>
+ <button name="Cancel_okcancelbuttons" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore">
+ <form>
+ <button name="OK_okcancelignore" text="$yestext"/>
+ <button name="Cancel_okcancelignore" text="$notext"/>
+ </form>
+ </template>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="OK_okhelpbuttons" text="$yestext"/>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
+ </form>
+ </template>
+ <notification label="Неизвестное уведомление" name="MissingAlert">
+ Ваша версия [APP_NAME] не знает, как отобразить полученное уведомление. Убедитесь, что у вас установлена последняя версия клиента.
+
+Подробности ошибки: уведомление под названием «[_NAME]» не было найдено в notifications.xml.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="FloaterNotFound">
+ Ошибка окна: не найдены следующие элементы управления:
+
+[CONTROLS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TutorialNotFound">
+ Сейчас нет доступных учебников.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GenericAlert">
+ [MESSAGE]
+ </notification>
+ <notification name="GenericAlertYesCancel">
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/>
+ </notification>
+ <notification name="BadInstallation">
+ Произошла ошибка при обновлении [APP_NAME]. [http://get.secondlife.com Загрузите последнюю версию] клиента.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LoginFailedNoNetwork">
+ Не удалось подключиться к [SECOND_LIFE_GRID].
+ «[DIAGNOSTIC]»
+Убедитесь, что подключение к интернету работает нормально.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MessageTemplateNotFound">
+ Шаблон сообщения [PATH] не найден.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="WearableSave">
+ Сохранить изменения теперешней одежды/части тела?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/>
+ </notification>
+ <notification name="ConfirmNoCopyToOutbox">
+ У вас нет прав для копирования этого элемента в исходящую папку магазина. Вы действительно хотите переместить следующий элемент?
+ [ITEM_NAME]
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="OutboxUploadComplete">
+ Передача магазина завершена.
+ <usetemplate name="okbutton" yestext="Ура!"/>
+ </notification>
+ <notification name="OutboxUploadHadErrors">
+ Передача магазина выполнена с ошибками! Устраните проблемы в исходящей папке и повторите передачу. Спасибо!
+ <usetemplate name="okbutton" yestext="Бу-у-у!"/>
+ </notification>
+ <notification name="CompileQueueSaveText">
+ Ошибка при передаче текста скрипта по следующей причине: [REASON]. Повторите попытку позже.
+ </notification>
+ <notification name="CompileQueueSaveBytecode">
+ Ошибка при передаче скомпилированного скрипта по следующей причине: [REASON]. Повторите попытку позже.
+ </notification>
+ <notification name="WriteAnimationFail">
+ Ошибка при записи данных анимации. Повторите попытку позже.
+ </notification>
+ <notification name="UploadAuctionSnapshotFail">
+ Ошибка при передаче снимка аукциона по следующей причине: [REASON]
+ </notification>
+ <notification name="UnableToViewContentsMoreThanOne">
+ Невозможно просмотреть содержимое нескольких объектов одновременно.
+Выберите один объект и повторите попытку.
+ </notification>
+ <notification name="SaveClothingBodyChanges">
+ Сохранить все изменения в одежде/частях тела?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить все"/>
+ </notification>
+ <notification name="FriendsAndGroupsOnly">
+ Жители, которые не являются вашими друзьями, не будут знать, что вы игнорируете их звонки и сообщения.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="FavoritesOnLogin">
+ Примечание. После включения этой опции все пользователи данного компьютера смогут увидеть список ваших избранных мест.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GrantModifyRights">
+ Предоставление другому жителю прав на изменение позволит ему изменять, удалять или брать ЛЮБЫЕ ваши объекты. Будьте ОЧЕНЬ осторожны с предоставлением такого разрешения.
+Дать пользователю [NAME] права на изменение?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="GrantModifyRightsMultiple">
+ Предоставление другому жителю прав на изменение позволит ему изменять ЛЮБЫЕ ваши объекты. Будьте ОЧЕНЬ осторожны с предоставлением такого разрешения.
+Дать права на изменение выбранным жителям?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="RevokeModifyRights">
+ Отобрать у пользователя [NAME] права на изменение?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="RevokeModifyRightsMultiple">
+ Отобрать у выбранных жителей права на изменение?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="UnableToCreateGroup">
+ Невозможно создать группу.
+[MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PanelGroupApply">
+ [NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Игнорировать изменения" yestext="Применить изменения"/>
+ </notification>
+ <notification name="MustSpecifyGroupNoticeSubject">
+ Необходимо указать тему для отправки группового уведомления.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AddGroupOwnerWarning">
+ Вы собираетесь добавить участников группы в роль [ROLE_NAME].
+Удалить участников из этой роли нельзя.
+Участники сами должны отказаться от нее.
+Продолжить?
+ <usetemplate ignoretext="Подтверждать перед добавлением нового владельца группы" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="AssignDangerousActionWarning">
+ Вы собираетесь добавить способность «[ACTION_NAME]» к роли «[ROLE_NAME]».
+
+ *ПРЕДУПРЕЖДЕНИЕ*
+ Все участники роли с этой способностью могут присваивать себе и всем другим участникам более высокие роли, чем у них сейчас есть, и даже подниматься до уровня владельца. Прежде чем назначить эту способность, убедитесь в целесообразности этого.
+
+Добавить эту способность к роли «[ROLE_NAME]»?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="AssignDangerousAbilityWarning">
+ Вы собираетесь добавить способность «[ACTION_NAME]» к роли «[ROLE_NAME]».
+
+ *ПРЕДУПРЕЖДЕНИЕ*
+ Все участники роли с этой способностью могут присваивать себе и всем другим участникам все способности и даже подниматься до уровня владельца.
+
+Добавить эту способность к роли «[ROLE_NAME]»?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="AttachmentDrop">
+ Вы собираетесь сбросить свое присоединение.
+ Продолжить?
+ <usetemplate ignoretext="Подтверждать перед сбросом присоединений" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="JoinGroupCanAfford">
+ Вступление в эту группу стоит L$[COST].
+Продолжить?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Вступить"/>
+ </notification>
+ <notification name="JoinGroupNoCost">
+ Вы вступаете в группу [NAME].
+Продолжить?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Вступить"/>
+ </notification>
+ <notification name="JoinGroupCannotAfford">
+ Вступление в эту группу стоит L$[COST].
+У вас не хватает L$ для вступления.
+ </notification>
+ <notification name="CreateGroupCost">
+ Создание этой группы стоит L$100.
+В группе должно быть более одного участника, иначе она будет удалена.
+Пригласите участников в ближайшие 48 часов.
+ <usetemplate canceltext="Отмена" name="okcancelbuttons" notext="Отмена" yestext="Создать группу за L$100"/>
+ </notification>
+ <notification name="LandBuyPass">
+ За L$[COST] вы можете находиться на этой земле («[PARCEL_NAME]») в течение [TIME] часов. Купить пропуск?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="SalePriceRestriction">
+ При продаже любому пользователю цена продажи должна быть больше L$0.
+Выберите пользователя, чтобы продать ему за L$0.
+ </notification>
+ <notification name="ConfirmLandSaleChange">
+ Выбранные [LAND_SIZE] м² земли выставляются на продажу.
+Ваша цена продажи: $[SALE_PRICE], разрешена продажа для [NAME].
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmLandSaleToAnyoneChange">
+ ВНИМАНИЕ! При выборе «продавать кому угодно» ваша земля станет доступной всему сообществу [SECOND_LIFE], даже тем, кто находится не в этом регионе.
+
+Выбранные [LAND_SIZE] м² земли выставляются на продажу.
+Ваша цена продажи: $[SALE_PRICE], разрешена продажа для [NAME].
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsDeededToGroup">
+ Вы действительно хотите вернуть все объекты, переданные группе «[NAME]» на этом земельном участке, обратно в инвентарь их прежних владельцев?
+
+*ПРЕДУПРЕЖДЕНИЕ* Все непереносимые объекты, предоставленные этой группе, будут удалены!
+
+Объекты: [N]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedByUser">
+ Вы действительно хотите вернуть все объекты, принадлежащие жителю «[NAME]» на этом земельном участке, в его инвентарь?
+
+Объекты: [N]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedBySelf">
+ Вы действительно хотите вернуть все принадлежащие вам объекты на этом земельном участке в свой инвентарь?
+
+Объекты: [N]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedBySelf">
+ Вы действительно хотите вернуть все НЕ принадлежащие вам объекты на этом участке в инвентарь их владельцев?
+Переносимые объекты, предоставленные группе, будут возвращены прежним владельцам.
+
+*ПРЕДУПРЕЖДЕНИЕ* Все непереносимые объекты, предоставленные этой группе, будут удалены!
+
+Объекты: [N]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByUser">
+ Вы действительно хотите вернуть все объекты, НЕ принадлежащие пользователю [NAME], на этом земельном участке, обратно в инвентарь их владельцев?
+Переносимые объекты, предоставленные группе, будут возвращены прежним владельцам.
+
+*ПРЕДУПРЕЖДЕНИЕ* Все непереносимые объекты, предоставленные этой группе, будут удалены!
+
+Объекты: [N]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnAllTopObjects">
+ Вы действительно хотите вернуть все объекты из списка в инвентарь их владельцев?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="DisableAllTopObjects">
+ Вы действительно хотите отключить все объекты в этом регионе?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByGroup">
+ Вернуть все объекты на этом земельном участке, НЕ переданные группе «[NAME]», их владельцам?
+
+Объекты: [N]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="UnableToDisableOutsideScripts">
+ Нельзя отключить скрипты.
+Во всем этом регионе включены боевые повреждения.
+Чтобы оружие действовало, скрипты должны выполняться.
+ </notification>
+ <notification name="MultipleFacesSelected">
+ Выбрано несколько граней.
+Если продолжить это действие, на каждой выбранной грани объекта будет размещено по отдельному экземпляру медиа.
+Чтобы поместить медиа только на одну грань, выберите команду «Выбор грани» и щелкните нужную грань объекта, затем нажмите «Добавить».
+ <usetemplate ignoretext="Медиа будет помещено на несколько выбранных граней" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="MustBeInParcel">
+ Чтобы установить точку телепортации, вы должны находиться на участке.
+ </notification>
+ <notification name="PromptRecipientEmail">
+ Введите правильный адрес email получателя.
+ </notification>
+ <notification name="PromptSelfEmail">
+ Введите свой адрес email.
+ </notification>
+ <notification name="PromptMissingSubjMsg">
+ Отправить снимок с темой или сообщением по умолчанию?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ErrorProcessingSnapshot">
+ Ошибка при обработке данных снимка
+ </notification>
+ <notification name="ErrorEncodingSnapshot">
+ Ошибка при кодировке снимка.
+ </notification>
+ <notification name="ErrorUploadingPostcard">
+ Ошибка при отправке снимка по следующей причине: [REASON]
+ </notification>
+ <notification name="ErrorUploadingReportScreenshot">
+ Ошибка при передаче снимка отчета по следующей причине: [REASON]
+ </notification>
+ <notification name="MustAgreeToLogIn">
+ Для входа в [SECOND_LIFE] вы должны принять условия Пользовательского соглашения.
+ </notification>
+ <notification name="CouldNotPutOnOutfit">
+ Не удалось надеть костюм.
+Папка костюмов не содержит одежды, частей тела или присоединений.
+ </notification>
+ <notification name="CannotWearTrash">
+ Нельзя надеть одежду или часть тела, если они находятся в корзине
+ </notification>
+ <notification name="MaxAttachmentsOnOutfit">
+ Не удалось присоединить объект.
+Превышен лимит присоединений ([MAX_ATTACHMENTS] объектов). Сначала отсоедините другой объект.
+ </notification>
+ <notification name="CannotWearInfoNotComplete">
+ Нельзя надеть эту вещь, так как она еще не загружена. Повторите попытку через минуту.
+ </notification>
+ <notification name="MustHaveAccountToLogIn">
+ Ай-яй-яй! Что-то осталось незаполненным.
+Необходимо ввести имя пользователя для вашего аватара.
+
+Для входа в [SECOND_LIFE] нужен аккаунт. Создать его?
+ <url name="url">
+ http://join.secondlife.com/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Повторить попытку" yestext="Создать новый аккаунт"/>
+ </notification>
+ <notification name="InvalidCredentialFormat">
+ Введите имя пользователя или имя и фамилию вашего аватара в поле «Имя пользователя», затем снова войдите в программу.
+ </notification>
+ <notification name="DeleteClassified">
+ Удалить рекламу «[NAME]»?
+Плата за нее не будет возвращена.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="DeleteMedia">
+ Вы собираетесь удалить медиа, связанное с этой гранью.
+Продолжить?
+ <usetemplate ignoretext="Подтверждать перед удалением медиа из объекта" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="ClassifiedSave">
+ Сохранить изменения в рекламе [NAME]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/>
+ </notification>
+ <notification name="ClassifiedInsufficientFunds">
+ Недостаточно денег для создания рекламы.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="DeleteAvatarPick">
+ Удалить подборку &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="DeleteOutfits">
+ Удалить выбранный костюм?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="PromptGoToEventsPage">
+ Перейти на веб-страницу событий [SECOND_LIFE]?
+ <url name="url">
+ http://secondlife.com/events/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="SelectProposalToView">
+ Выберите предложение для просмотра.
+ </notification>
+ <notification name="SelectHistoryItemToView">
+ Выберите пункт журнала для просмотра.
+ </notification>
+ <notification name="CacheWillClear">
+ Кэш будет очищен после перезапуска [APP_NAME].
+ </notification>
+ <notification name="CacheWillBeMoved">
+ Кэш будет перемещен после перезапуска [APP_NAME].
+Примечание. При этом кэш будет очищен.
+ </notification>
+ <notification name="ChangeConnectionPort">
+ Настройки порта начнут действовать после перезапуска [APP_NAME].
+ </notification>
+ <notification name="ChangeSkin">
+ Новая кожа будет видна после перезапуска [APP_NAME].
+ </notification>
+ <notification name="ChangeLanguage">
+ Смена языка вступит в силу после перезапуска [APP_NAME].
+ </notification>
+ <notification name="GoToAuctionPage">
+ Перейти на веб-страницу [SECOND_LIFE], чтобы посмотреть подробности аукциона или сделать ставку?
+ <url name="url">
+ http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="SaveChanges">
+ Сохранить изменения?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/>
+ </notification>
+ <notification name="GestureSaveFailedTooManySteps">
+ Не удалось сохранить жест.
+Жест содержит слишком много этапов.
+Попробуйте удалить некоторые этапы и повторите сохранение.
+ </notification>
+ <notification name="GestureSaveFailedTryAgain">
+ Не удалось сохранить жест. Повторите попытку через минуту.
+ </notification>
+ <notification name="GestureSaveFailedObjectNotFound">
+ Не удалось сохранить жест: не найден объект или связанный с ним инвентарь.
+Возможно, объект находится вне допустимого диапазона или удален.
+ </notification>
+ <notification name="GestureSaveFailedReason">
+ Ошибка при сохранении жеста по следующей причине: [REASON]. Попробуйте сохранить жест через некоторое время.
+ </notification>
+ <notification name="SaveNotecardFailObjectNotFound">
+ Не удалось сохранить заметку: не найден объект или связанный с ним инвентарь.
+Возможно, объект находится вне допустимого диапазона или удален.
+ </notification>
+ <notification name="SaveNotecardFailReason">
+ Ошибка при сохранении заметки по следующей причине: [REASON]. Попробуйте сохранить заметку через некоторое время.
+ </notification>
+ <notification name="ScriptCannotUndo">
+ Не удалось отменить все изменения в вашей версии скрипта.
+Загрузить последнюю сохраненную на сервере версию?
+(**Предупреждение** Эту операцию нельзя отменить.)
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="SaveScriptFailReason">
+ Ошибка при сохранении скрипта по следующей причине: [REASON]. Попробуйте сохранить скрипт через некоторое время.
+ </notification>
+ <notification name="SaveScriptFailObjectNotFound">
+ Не удалось сохранить скрипт: не найден объект, в котором он находится.
+Возможно, объект находится вне допустимого диапазона или удален.
+ </notification>
+ <notification name="SaveBytecodeFailReason">
+ Ошибка при сохранении скомпилированного скрипта по следующей причине: [REASON]. Попробуйте сохранить скрипт через некоторое время.
+ </notification>
+ <notification name="StartRegionEmpty">
+ Ай-яй-яй, ваш стартовый регион не определен.
+Введите название региона в поле «Место старта» или выберите в качестве места старта «Мое последнее местоположение» или «Мой дом».
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CouldNotStartStopScript">
+ Не удается запустить или остановить скрипт: не найден объект, в котором он находится.
+Возможно, объект находится вне допустимого диапазона или удален.
+ </notification>
+ <notification name="CannotDownloadFile">
+ Невозможно загрузить файл
+ </notification>
+ <notification name="CannotWriteFile">
+ Невозможно записать файл [[FILE]]
+ </notification>
+ <notification name="UnsupportedHardware">
+ К вашему сведению: ваш компьютер не соответствует минимальным системным требованиям [APP_NAME]. Это может привести к снижению производительности. К сожалению, [SUPPORT_SITE] не оказывает техническую поддержку для неподдерживаемых конфигураций систем.
+
+Найти более подробную информацию на [_URL]?
+ <url name="url">
+ http://www.secondlife.com/corporate/sysreqs.php
+ </url>
+ <usetemplate ignoretext="Оборудование моего компьютера не поддерживается" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="UnknownGPU">
+ В вашей системе установлена графическая карта, которую [APP_NAME] не может распознать.
+Так часто бывает, если новое оборудование еще не было проверено на работу с [APP_NAME]. Скорее всего, оно будет работать нормально, но, возможно, придется отрегулировать параметры графики.
+(Я &gt; Настройки &gt; Графика).
+ <form name="form">
+ <ignore name="ignore" text="Не удается определить мою графическую карту"/>
+ </form>
+ </notification>
+ <notification name="DisplaySettingsNoShaders">
+ Произошел сбой [APP_NAME] при инициализации графического драйвера.
+Будет установлено низкое качество графики, чтобы избежать некоторых распространенных ошибок графики. При этом некоторые графические функции не будут работать.
+Рекомендуем обновить драйверы графической карты.
+Повысить качество графики можно в меню «Настройки &gt; Графика».
+ </notification>
+ <notification name="RegionNoTerraforming">
+ В регионе [REGION] не разрешен терраформинг.
+ </notification>
+ <notification name="CannotCopyWarning">
+ У вас нет разрешения на копирование следующих предметов:
+[ITEMS]
+Если вы отдадите эти вещи, их больше не будет в вашем инвентаре. Вы действительно хотите предложить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="CannotGiveItem">
+ Невозможно отдать предмет из инвентаря.
+ </notification>
+ <notification name="TransactionCancelled">
+ Сделка отменена.
+ </notification>
+ <notification name="TooManyItems">
+ Нельзя передать более 42 предметов за одну пересылку.
+ </notification>
+ <notification name="NoItems">
+ У вас нет разрешения на передачу выбранных предметов.
+ </notification>
+ <notification name="CannotCopyCountItems">
+ У вас нет разрешения на копирование [COUNT] выбранных предметов. Эти предметы исчезнут из вашего инвентаря.
+Вы действительно хотите отдать их?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="CannotGiveCategory">
+ У вас нет разрешения на передачу выбранной папки.
+ </notification>
+ <notification name="FreezeAvatar">
+ Заморозить этот аватар?
+У него временно исчезнет способность перемещаться, говорить и взаимодействовать с миром.
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Разморозить" yestext="Заморозить"/>
+ </notification>
+ <notification name="FreezeAvatarFullname">
+ Заморозить [AVATAR_NAME]?
+У него временно исчезнет способность перемещаться, говорить и взаимодействовать с миром.
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Разморозить" yestext="Заморозить"/>
+ </notification>
+ <notification name="EjectAvatarFullname">
+ Выкинуть [AVATAR_NAME] с вашей земли?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Выкинуть и запретить доступ" yestext="Выкинуть"/>
+ </notification>
+ <notification name="EjectAvatarNoBan">
+ Выкинуть этот аватар с вашей земли?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выкинуть"/>
+ </notification>
+ <notification name="EjectAvatarFullnameNoBan">
+ Выкинуть [AVATAR_NAME] с вашей земли?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выкинуть"/>
+ </notification>
+ <notification name="EjectAvatarFromGroup">
+ Вы исключили аватар [AVATAR_NAME] из группы [GROUP_NAME]
+ </notification>
+ <notification name="AcquireErrorTooManyObjects">
+ ОШИБКА ПРИОБРЕТЕНИЯ: выбрано слишком много объектов.
+ </notification>
+ <notification name="AcquireErrorObjectSpan">
+ ОШИБКА ПРИОБРЕТЕНИЯ: объекты охватывают более одного региона.
+Переместите все приобретаемые объекты в один регион.
+ </notification>
+ <notification name="PromptGoToCurrencyPage">
+ [EXTRA]
+
+Найти информацию по покупке L$ на [_URL]?
+ <url name="url">
+ http://secondlife.com/app/currency/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="UnableToLinkObjects">
+ Невозможно объединить эти [COUNT] объектов.
+Можно объединять не более [MAX] объектов.
+ </notification>
+ <notification name="CannotLinkIncompleteSet">
+ Можно объединять только полные наборы объектов, и для этого следует выбрать более одного объекта.
+ </notification>
+ <notification name="CannotLinkModify">
+ Невозможно объединить объекты: у вас нет прав на изменение всех объектов.
+
+Убедитесь, что все объекты разблокированы и что вы владеете всеми ими.
+ </notification>
+ <notification name="CannotLinkDifferentOwners">
+ Невозможно объединить объекты: не у всех объектов один владелец.
+
+Убедитесь, что вы владеете всеми выбранными объектами.
+ </notification>
+ <notification name="NoFileExtension">
+ У файла отсутствует расширение: «[FILE]»
+
+Убедитесь, что файл имеет правильное расширение.
+ </notification>
+ <notification name="InvalidFileExtension">
+ Неверное расширение файла [EXTENSION]
+Ожидается [VALIDS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotUploadSoundFile">
+ Не удалось открыть для чтения загруженный звуковой файл:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotRIFF">
+ По-видимому, это не файл RIFF WAVE:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotPCM">
+ По-видимому, это не звуковой файл PCM WAVE:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChannelCount">
+ В файле неправильное количество каналов (должно быть моно или стерео):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidSampleRate">
+ По-видимому, файл не имеет поддерживаемой частоты дискретизации (должна быть 44,1 кГц):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidWordSize">
+ По-видимому, в файле используется неподдерживаемый размер слова (должен быть 8 или 16 бит):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidHeader">
+ Не найден фрагмент «data» в заголовке WAV-файла:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChunkSize">
+ Неправильный размер фрагмента в WAV-файле:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidTooLong">
+ Аудиофайл слишком длинный (максимум 10 секунд):
+[FILE]
+ </notification>
+ <notification name="ProblemWithFile">
+ Проблема с файлом [FILE]:
+
+[ERROR]
+ </notification>
+ <notification name="CannotOpenTemporarySoundFile">
+ Не удалось открыть для записи временно сжатый звуковой файл: [FILE]
+ </notification>
+ <notification name="UnknownVorbisEncodeFailure">
+ Неизвестная ошибка кодировки Vorbis в файле: [FILE]
+ </notification>
+ <notification name="CannotEncodeFile">
+ Невозможно закодировать файл: [FILE]
+ </notification>
+ <notification name="CorruptedProtectedDataStore">
+ Невозможно ввести ваши имя пользователя и пароль. Возможно, вы изменили настройки сети.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CorruptResourceFile">
+ Поврежден файл ресурсов: [FILE]
+ </notification>
+ <notification name="UnknownResourceFileVersion">
+ Неизвестная версия файла ресурсов Linden: [FILE]
+ </notification>
+ <notification name="UnableToCreateOutputFile">
+ Невозможно создать выходной файл: [FILE]
+ </notification>
+ <notification name="DoNotSupportBulkAnimationUpload">
+ [APP_NAME] пока не поддерживает массовую передачу файлов анимации.
+ </notification>
+ <notification name="CannotUploadReason">
+ Невозможно передать [FILE] по следующей причине: [REASON]
+Повторите попытку позже.
+ </notification>
+ <notification name="LandmarkCreated">
+ Вы добавили закладку «[LANDMARK_NAME]» в свою папку [FOLDER_NAME].
+ </notification>
+ <notification name="LandmarkAlreadyExists">
+ На это место уже поставлена закладка.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotCreateLandmarkNotOwner">
+ Вы не можете поставить здесь закладку: владелец земли не разрешает этого.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoScripts">
+ Невозможно произвести перекомпиляцию.
+Выберите объект со сценарием.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoPermission">
+ Невозможно произвести перекомпиляцию.
+
+Выберите объекты со сценариями, которые вам разрешено изменять.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoScripts">
+ Невозможно произвести сброс.
+
+Выберите объекты со сценариями.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoPermission">
+ Невозможно произвести сброс.
+
+Выберите объекты со сценариями, которые вам разрешено изменять.
+ </notification>
+ <notification name="CannotOpenScriptObjectNoMod">
+ Невозможно открыть скрипт в объекте с запрещенным изменением.
+ </notification>
+ <notification name="CannotSetRunningSelectObjectsNoScripts">
+ Невозможно запустить скрипты.
+
+Выберите объекты со сценариями.
+ </notification>
+ <notification name="CannotSetRunningNotSelectObjectsNoScripts">
+ Невозможно остановить скрипты.
+
+Выберите объекты со сценариями.
+ </notification>
+ <notification name="NoFrontmostFloater">
+ Нет самого переднего окна для сохранения.
+ </notification>
+ <notification name="SeachFilteredOnShortWords">
+ Ваш поисковый запрос был изменен, и слишком короткие слова были удалены.
+
+Выполнен поиск: [FINALQUERY]
+ </notification>
+ <notification name="SeachFilteredOnShortWordsEmpty">
+ Ваша поисковая фраза была слишком короткой. Поиск не был выполнен.
+ </notification>
+ <notification name="CouldNotTeleportReason">
+ Ошибка телепортации.
+[REASON]
+ </notification>
+ <notification name="invalid_tport">
+ При запросе телепортации возникла проблема. Возможно, для телепортации придется повторить вход в программу.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+ </notification>
+ <notification name="invalid_region_handoff">
+ При пересечении границы региона возникла проблема. Возможно, для пересечения границы придется повторить вход в программу.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+ </notification>
+ <notification name="blocked_tport">
+ Телепортация сейчас заблокирована. Повторите попытку позже. Если все равно не удается телепортироваться, выйдите из программы и войдите снова, чтобы устранить проблему.
+ </notification>
+ <notification name="nolandmark_tport">
+ Системе не удалось определить пункт назначения закладки.
+ </notification>
+ <notification name="timeout_tport">
+ Системе не удалось выполнить подключение телепорта. Повторите попытку позже.
+ </notification>
+ <notification name="noaccess_tport">
+ У вас нет доступа в пункт назначения этого телепорта.
+ </notification>
+ <notification name="missing_attach_tport">
+ Ваши присоединения еще не доставлены. Подождите несколько секунд либо выйдите из программы и войдите снова, прежде чем повторить попытку телепортации.
+ </notification>
+ <notification name="too_many_uploads_tport">
+ Очередь активов в данном регионе заполнена, поэтому ваш запрос на телепортацию не будет выполнен своевременно. Повторите попытку через несколько минут или перейдите в менее загруженный регион.
+ </notification>
+ <notification name="expired_tport">
+ Системе не удалось своевременно выполнить ваш запрос на телепортацию. Повторите попытку через несколько минут.
+ </notification>
+ <notification name="expired_region_handoff">
+ Системе не удалось своевременно выполнить ваше пересечение границы. Повторите попытку через несколько минут.
+ </notification>
+ <notification name="no_host">
+ Не удалось найти точку назначения телепорта. Возможно, пункт назначения временно недоступен или уже не существует. Повторите попытку через несколько минут.
+ </notification>
+ <notification name="no_inventory_host">
+ Система инвентаря сейчас недоступна.
+ </notification>
+ <notification name="CannotSetLandOwnerNothingSelected">
+ Невозможно назначить владельца земли:
+Участок не выбран.
+ </notification>
+ <notification name="CannotSetLandOwnerMultipleRegions">
+ Невозможно установить владение над землей, потому что выделение захватывает несколько регионов. Выберите меньшую область и повторите попытку.
+ </notification>
+ <notification name="ForceOwnerAuctionWarning">
+ Этот участок выставлен на аукцион. При попытке завладеть землей аукцион будет отменен и, возможно, некоторые жители понесут ущерб, если ставки уже были сделаны.
+Завладеть?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="CannotContentifyNothingSelected">
+ Невозможно удовлетворить требование:
+Участок не выбран.
+ </notification>
+ <notification name="CannotContentifyNoRegion">
+ Невозможно удовлетворить требование:
+Регион не выбран.
+ </notification>
+ <notification name="CannotReleaseLandNothingSelected">
+ Невозможно отказаться от земли:
+Участок не выбран.
+ </notification>
+ <notification name="CannotReleaseLandNoRegion">
+ Невозможно отказаться от земли:
+Регион не найден.
+ </notification>
+ <notification name="CannotBuyLandNothingSelected">
+ Невозможно купить землю:
+Участок не выбран.
+ </notification>
+ <notification name="CannotBuyLandNoRegion">
+ Невозможно купить землю:
+Не удается найти регион, в котором находится эта земля.
+ </notification>
+ <notification name="CannotCloseFloaterBuyLand">
+ Нельзя закрыть окно покупки земли, пока [APP_NAME] определяет стоимость этой транзакции.
+ </notification>
+ <notification name="CannotDeedLandNothingSelected">
+ Невозможно передать землю:
+Участок не выбран.
+ </notification>
+ <notification name="CannotDeedLandNoGroup">
+ Невозможно передать землю:
+Группа не выбрана.
+ </notification>
+ <notification name="CannotDeedLandNoRegion">
+ Невозможно передать землю:
+Не удается найти регион, в котором находится эта земля.
+ </notification>
+ <notification name="CannotDeedLandMultipleSelected">
+ Невозможно передать землю:
+Выбрано несколько участков.
+
+Попробуйте выбрать один участок.
+ </notification>
+ <notification name="CannotDeedLandWaitingForServer">
+ Невозможно передать землю:
+Ожидание, пока сервер сообщит о владении.
+
+Повторите попытку.
+ </notification>
+ <notification name="CannotDeedLandNoTransfer">
+ Невозможно передать землю:
+В регионе [REGION] не разрешена передача земли.
+ </notification>
+ <notification name="CannotReleaseLandWatingForServer">
+ Невозможно отказаться от земли:
+Ожидание, пока сервер обновит информацию об участке.
+
+Повторите попытку через несколько секунд.
+ </notification>
+ <notification name="CannotReleaseLandSelected">
+ Невозможно отказаться от земли:
+Вы не владеете всеми выбранными участками.
+
+Выберите один участок.
+ </notification>
+ <notification name="CannotReleaseLandDontOwn">
+ Невозможно отказаться от земли:
+У вас нет прав на освобождение этого участка.
+Участки, которыми вы владеете, показаны зеленым цветом.
+ </notification>
+ <notification name="CannotReleaseLandRegionNotFound">
+ Невозможно отказаться от земли:
+Не удается найти регион, в котором находится эта земля.
+ </notification>
+ <notification name="CannotReleaseLandNoTransfer">
+ Невозможно отказаться от земли:
+В регионе [REGION] не разрешена передача земли.
+ </notification>
+ <notification name="CannotReleaseLandPartialSelection">
+ Невозможно отказаться от земли:
+Чтобы освободить участок, нужно выбрать его целиком.
+
+Выберите весь участок или сначала разделите его.
+ </notification>
+ <notification name="ReleaseLandWarning">
+ Вы собираетесь отказаться от [AREA] м² земли.
+При освобождении этого участка он будет исключен из ваших владений, но не принесет вам L$.
+
+Освободить эту землю?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNothingSelected">
+ Невозможно разделить землю:
+
+Участки не выбраны.
+ </notification>
+ <notification name="CannotDivideLandPartialSelection">
+ Невозможно разделить землю:
+
+Выбран весь участок.
+Попробуйте выбрать часть участка.
+ </notification>
+ <notification name="LandDivideWarning">
+ Разделение этой земли приведет к разделению участка надвое, и для каждого участка можно будет задать отдельные настройки. Некоторые настройки после разделения будут возвращены к значениям по умолчанию.
+
+Разделить землю?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNoRegion">
+ Невозможно разделить землю:
+Не удается найти регион, в котором находится эта земля.
+ </notification>
+ <notification name="CannotJoinLandNoRegion">
+ Невозможно объединить землю:
+Не удается найти регион, в котором находится эта земля.
+ </notification>
+ <notification name="CannotJoinLandNothingSelected">
+ Невозможно объединить землю:
+Участки не выбраны.
+ </notification>
+ <notification name="CannotJoinLandEntireParcelSelected">
+ Невозможно объединить землю:
+Выбран только один участок.
+
+Выберите землю на обоих участках.
+ </notification>
+ <notification name="CannotJoinLandSelection">
+ Невозможно объединить землю:
+Следует выбрать более одного участка.
+
+Выберите землю на обоих участках.
+ </notification>
+ <notification name="JoinLandWarning">
+ Объединение земли приведет к созданию одного большого участка изо всех участков, пересекающих выбранный прямоугольник.
+Потребуется сбросить имя и настройки нового участка.
+
+Объединить землю?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmNotecardSave">
+ Эта заметка должна быть сохранена до того, как предмет сможет быть скопирован или просмотрен. Сохранить заметку?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmItemCopy">
+ Копировать этот предмет в ваш инвентарь?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Копировать"/>
+ </notification>
+ <notification name="ResolutionSwitchFail">
+ Не удалось сменить разрешение на [RESX] х [RESY]
+ </notification>
+ <notification name="ErrorUndefinedGrasses">
+ Ошибка. Не определена трава: [SPECIES]
+ </notification>
+ <notification name="ErrorUndefinedTrees">
+ Ошибка. Не определены деревья: [SPECIES]
+ </notification>
+ <notification name="CannotSaveWearableOutOfSpace">
+ Невозможно сохранить «[NAME]» в файл одежды. Освободите место на компьютере и сохраните одежду снова.
+ </notification>
+ <notification name="CannotSaveToAssetStore">
+ Невозможно сохранить «[NAME]» в центральном хранилище активов.
+Обычно это временная неполадка. Исправьте настройки и сохраните одежду снова через несколько минут.
+ </notification>
+ <notification name="YouHaveBeenLoggedOut">
+ Черт! Вас выкинуло из [SECOND_LIFE]
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="Выйти" yestext="Просмотреть IM и чат"/>
+ </notification>
+ <notification name="OnlyOfficerCanBuyLand">
+ Невозможно купить землю для группы:
+У вас нет прав на покупку земли для вашей активной группы.
+ </notification>
+ <notification label="Добавить друга" name="AddFriendWithMessage">
+ Друзья могут давать разрешения для отслеживания своего положения на карте и приема обновлений статуса в сети.
+
+Предложить дружбу жителю [NAME]?
+ <form name="form">
+ <input name="message">
+ Хочешь быть моим другом?
+ </input>
+ <button name="Offer" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="Сохранить костюм" name="SaveOutfitAs">
+ Сохранить текущую одежду как новый костюм:
+ <form name="form">
+ <input name="message">
+ [DESC] (новый)
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="Сохранить одежду?" name="SaveWearableAs">
+ Сохранить предмет в инвентаре как:
+ <form name="form">
+ <input name="message">
+ [DESC] (новый)
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="Переименовать костюм" name="RenameOutfit">
+ Новое название костюма:
+ <form name="form">
+ <input name="new_name">
+ [NAME]
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="RemoveFromFriends">
+ Удалить жителя &lt;nolink&gt;[NAME]&lt;/nolink&gt; из вашего списка друзей?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="RemoveMultipleFromFriends">
+ Удалить нескольких жителей из вашего списка друзей?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedPublicObjectsByUser">
+ Вы действительно хотите удалить все скриптовые объекты, принадлежащие
+** [AVATAR_NAME] **
+на всей остальной земле в этом симуляторе?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedObjectsByUser">
+ Вы действительно хотите УДАЛИТЬ ВСЕ скриптовые объекты, принадлежащие
+** [AVATAR_NAME] **
+на ВСЕЙ ЗЕМЛЕ в этом симуляторе?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllObjectsByUser">
+ Вы действительно хотите УДАЛИТЬ ВСЕ объекты (скриптовые и прочие), принадлежащие
+** [AVATAR_NAME] **
+на ВСЕЙ ЗЕМЛЕ в этом симуляторе?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BlankClassifiedName">
+ Необходимо указать имя для вашей рекламы.
+ </notification>
+ <notification name="MinClassifiedPrice">
+ Стоимость размещения рекламы должна быть как минимум L$[MIN_PRICE].
+
+Введите более высокую цену.
+ </notification>
+ <notification name="ConfirmItemDeleteHasLinks">
+ Имеется ссылка, указывающая как минимум на один из выбранных вами предметов. Если удалить этот предмет, его ссылки перестанут работать. Настоятельно рекомендуется сначала удалить ссылки.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLock">
+ Как минимум один из выбранных вами предметов является фиксированным.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopy">
+ Как минимум один из выбранных вами предметов не является копируемым.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoOwn">
+ Как минимум один из выбранных вами предметов не принадлежит вам.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopy">
+ Как минимум один объект фиксирован.
+Как минимум один объект не копируемый.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoOwn">
+ Как минимум один объект фиксирован.
+Вы не владеете по крайней мере одним объектом.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopyNoOwn">
+ Как минимум один объект не копируемый.
+Вы не владеете по крайней мере одним объектом.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+ Как минимум один объект фиксирован.
+Как минимум один объект не копируемый.
+Вы не владеете по крайней мере одним объектом.
+
+Действительно удалить эти предметы?
+ <usetemplate name="okcancelbuttons" notext="отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLock">
+ Как минимум один объект фиксирован.
+
+Действительно взять эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeNoOwn">
+ Вы не являетесь владельцем всех объектов, которые собираетесь взять.
+Если продолжить, будут применены разрешения следующего владельца, которые могут ограничить вашу способность изменять или копировать эти объекты.
+
+Действительно взять эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLockNoOwn">
+ Как минимум один объект фиксирован.
+Вы не являетесь владельцем всех объектов, которые собираетесь взять.
+Если продолжить, будут применены разрешения следующего владельца, которые могут ограничить вашу способность изменять или копировать эти объекты.
+В то же время вы можете взять объекты, выбранные сейчас.
+
+Действительно взять эти предметы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="CantBuyLandAcrossMultipleRegions">
+ Невозможно купить землю, потому что выделение охватывает несколько регионов.
+
+Выберите меньшую область и повторите попытку.
+ </notification>
+ <notification name="DeedLandToGroup">
+ После передачи этого участка группе потребуется достаточное количество финансов для поддержки данной земли.
+Стоимость покупки земли не возвращается владельцу. Если переданный участок продается, выручка за нее равномерно распределяется между участниками группы.
+
+Передать эти [AREA] м² земли группе «[GROUP_NAME]»?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="DeedLandToGroupWithContribution">
+ После передачи этого участка группе потребуется достаточное количество финансов для поддержки данной земли.
+Передача будет включать одновременный земельный взнос в группу от жителя «[NAME]».
+Стоимость покупки земли не возвращается владельцу. Если переданный участок продается, выручка за нее равномерно распределяется между участниками группы.
+
+Передать эти [AREA] м² земли группе «[GROUP_NAME]»?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="DisplaySetToSafe">
+ Установлен безопасный уровень настроек отображения, так как указан параметр -safe.
+ </notification>
+ <notification name="DisplaySetToRecommended">
+ Установлен рекомендуемый уровень настроек отображения в соответствии с вашей системной конфигурацией.
+ </notification>
+ <notification name="ErrorMessage">
+ [ERROR_MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AvatarMovedDesired">
+ Требуемое вами местоположение сейчас недоступно.
+Вы перемещены в соседний регион.
+ </notification>
+ <notification name="AvatarMovedLast">
+ Ваше последнее местоположение сейчас недоступно.
+Вы перемещены в соседний регион.
+ </notification>
+ <notification name="AvatarMovedHome">
+ Ваше домашнее местоположение сейчас недоступно.
+Вы перемещены в соседний регион.
+Возможно, потребуется задать новое домашнее местоположение.
+ </notification>
+ <notification name="ClothingLoading">
+ Ваша одежда все еще загружается.
+Вы можете использовать [SECOND_LIFE] как обычно, другие пользователи будут видеть вас нормально.
+ <form name="form">
+ <ignore name="ignore" text="Загрузка одежды занимает значительное время"/>
+ </form>
+ </notification>
+ <notification name="FirstRun">
+ Установка [APP_NAME] завершена.
+
+Если вы используете [SECOND_LIFE] впервые, для входа в программу вам потребуется создать аккаунт.
+Вернуться на [http://join.secondlife.com secondlife.com] для создания аккаунта?
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Создать аккаунт..."/>
+ </notification>
+ <notification name="LoginPacketNeverReceived">
+ Возникли неполадки при подключении. Возможно, проблема с вашим подключением к интернету или [SECOND_LIFE_GRID].
+
+Варианты ваших действий: проверьте подключение к интернету и повторите попытку через несколько минут, нажмите кнопку «Справка» для перехода к [SUPPORT_SITE] или кнопку «Телепортация», чтобы телепортироваться домой.
+ <url name="url">
+ http://secondlife.com/support/
+ </url>
+ <form name="form">
+ <button name="OK" text="OK"/>
+ <button name="Help" text="Справка"/>
+ <button name="Teleport" text="Телепортация"/>
+ </form>
+ </notification>
+ <notification name="WelcomeChooseSex">
+ Ваш персонаж появится через мгновение.
+
+Для ходьбы нажимайте клавиши со стрелками.
+В любой момент можно нажать клавишу F1 для получения справки или информации о [SECOND_LIFE].
+Выберите мужской или женский аватар. Этот выбор затем можно будет изменить.
+ <usetemplate name="okcancelbuttons" notext="Женщина" yestext="Мужчина"/>
+ </notification>
+ <notification name="CantTeleportToGrid">
+ Не удалось телепортироваться в [SLURL]: это место находится на другой сетке ([GRID]), а не на текущей ([CURRENT_GRID]). Закройте программу и попробуйте еще раз.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GeneralCertificateError">
+ Не удалось подключиться к серверу.
+[REASON]
+
+Тема: [SUBJECT_NAME_STRING]
+Издатель: [ISSUER_NAME_STRING]
+Действительно с: [VALID_FROM]
+Действительно по: [VALID_TO]
+Отпечаток MD5: [SHA1_DIGEST]
+Отпечаток SHA1: [MD5_DIGEST]
+Использование ключа: [KEYUSAGE]
+Расширенное использование ключа: [EXTENDEDKEYUSAGE]
+Идентификатор ключа темы: [SUBJECTKEYIDENTIFIER]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TrustCertificateError">
+ Центр сертификации для этого сервера неизвестен.
+
+Сведения о сертификате:
+Тема: [SUBJECT_NAME_STRING]
+Издатель: [ISSUER_NAME_STRING]
+Действительно с: [VALID_FROM]
+Действительно по: [VALID_TO]
+Отпечаток MD5: [SHA1_DIGEST]
+Отпечаток SHA1: [MD5_DIGEST]
+Использование ключа: [KEYUSAGE]
+Расширенное использование ключа: [EXTENDEDKEYUSAGE]
+Идентификатор ключа темы: [SUBJECTKEYIDENTIFIER]
+
+Доверять этому центру сертификации?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Доверять"/>
+ </notification>
+ <notification name="NotEnoughCurrency">
+ [NAME] L$ [PRICE] У вас недостаточно L$ для этого.
+ </notification>
+ <notification name="GrantedModifyRights">
+ [NAME] дал(а) вам разрешение на редактирование своих объектов.
+ </notification>
+ <notification name="RevokedModifyRights">
+ Ваше право на изменение объектов [NAME] отозвано
+ </notification>
+ <notification name="FlushMapVisibilityCaches">
+ Кэши карт данного региона будут очищены.
+Это полезно только для целей отладки.
+(В рабочей версии надо подождать 5 минут, затем карта каждого пользователя будет обновлена после входа в программу.)
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BuyOneObjectOnly">
+ Нельзя купить несколько объектов одновременно. Выберите один объект и повторите попытку.
+ </notification>
+ <notification name="OnlyCopyContentsOfSingleItem">
+ Нельзя копировать содержимое нескольких объектов одновременно.
+Выберите один объект и повторите попытку.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="KickUsersFromRegion">
+ Телепортировать всех жителей в этом регионе домой?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="EstateObjectReturn">
+ Вы действительно хотите вернуть объекты, принадлежащие [USER_NAME]?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="InvalidTerrainBitDepth">
+ Не удалось задать текстуры региона:
+у текстуры [TEXTURE_NUM] неправильная битовая глубина [TEXTURE_BIT_DEPTH].
+
+Замените текстуру [TEXTURE_NUM] на 24-битное изображение размером 512x512 или меньше и снова нажмите кнопку «Применить».
+ </notification>
+ <notification name="InvalidTerrainSize">
+ Не удалось задать текстуры региона:
+у текстуры [TEXTURE_NUM] слишком большой размер [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
+
+Замените текстуру [TEXTURE_NUM] на 24-битное изображение размером 512x512 или меньше и снова нажмите кнопку «Применить».
+ </notification>
+ <notification name="RawUploadStarted">
+ Началась передача. Она может занять до двух минут, в зависимости от скорости соединения.
+ </notification>
+ <notification name="ConfirmBakeTerrain">
+ Вы действительно хотите зафиксировать текущий ландшафт, сделать его высоту средней точкой для верхней и нижней точек ландшафта и принять по умолчанию для функции «Вернуть»?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="MaxAllowedAgentOnRegion">
+ У вас может быть не более [MAX_AGENTS] допущенных жителей.
+ </notification>
+ <notification name="MaxBannedAgentsOnRegion">
+ У вас может быть не более [MAX_BANNED] забаненных жителей.
+ </notification>
+ <notification name="MaxAgentOnRegionBatch">
+ Не удалось добавить [NUM_ADDED] агентов:
+превышен лимит [MAX_AGENTS] [LIST_TYPE] на [NUM_EXCESS].
+ </notification>
+ <notification name="MaxAllowedGroupsOnRegion">
+ У вас может быть не более [MAX_GROUPS] допущенных групп.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Зафиксировать"/>
+ </notification>
+ <notification name="MaxManagersOnRegion">
+ У вас может быть не более [MAX_MANAGER] менеджеров землевладения.
+ </notification>
+ <notification name="OwnerCanNotBeDenied">
+ Нельзя добавить землевладельца в список забаненных жителей его же земли.
+ </notification>
+ <notification name="CanNotChangeAppearanceUntilLoaded">
+ Нельзя изменять внешность, пока загружаются одежда и фигура.
+ </notification>
+ <notification name="ClassifiedMustBeAlphanumeric">
+ Название вашей рекламы должно начинаться с буквы A - Z или цифры. Использовать знаки препинания не разрешено.
+ </notification>
+ <notification name="CantSetBuyObject">
+ Невозможно задать покупку объекта, потому что этот объект не для продажи.
+Задайте продажу объекта и повторите попытку.
+ </notification>
+ <notification name="FinishedRawDownload">
+ Завершена загрузка файла ландшафта:
+[DOWNLOAD_PATH].
+ </notification>
+ <notification name="DownloadWindowsMandatory">
+ Появилась новая версия [APP_NAME].
+[MESSAGE]
+Это обновление необходимо загрузить для использования [APP_NAME].
+ <usetemplate name="okcancelbuttons" notext="Выйти" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadWindows">
+ Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadWindowsReleaseForDownload">
+ Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadLinuxMandatory">
+ Появилась новая версия [APP_NAME].
+[MESSAGE]
+Это обновление необходимо загрузить для использования [APP_NAME].
+ <usetemplate name="okcancelbuttons" notext="Выйти" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadLinux">
+ Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadMacMandatory">
+ Появилась новая версия [APP_NAME].
+[MESSAGE]
+Это обновление необходимо загрузить для использования [APP_NAME].
+
+Загрузить его в папку приложений?
+ <usetemplate name="okcancelbuttons" notext="Выйти" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadMac">
+ Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+
+Загрузить его в папку приложений?
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+ </notification>
+ <notification name="DownloadMacReleaseForDownload">
+ Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+
+Загрузить его в папку приложений?
+ <usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+ </notification>
+ <notification name="FailedUpdateInstall">
+ Произошла ошибка при установке обновления.
+Загрузите новую версию программы на сайте
+http://secondlife.com/download.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="FailedRequiredUpdateInstall">
+ Не удалось установить обязательное обновление.
+Вы не сможете войти в [APP_NAME], пока обновление не будет установлено.
+
+Загрузите новую версию программы на сайте
+http://secondlife.com/download.
+ <usetemplate name="okbutton" yestext="Выйти"/>
+ </notification>
+ <notification name="UpdaterServiceNotRunning">
+ Появились обязательные обновления для вашей версии Second Life.
+
+Загрузите это обновление на сайте http://www.secondlife.com/downloads
+или установите его сейчас.
+ <usetemplate name="okcancelbuttons" notext="Выйти из Second Life" yestext="Загрузить и установить сейчас"/>
+ </notification>
+ <notification name="DownloadBackgroundTip">
+ Загружено обновление для вашей версии [APP_NAME].
+Версия [VERSION]. [[RELEASE_NOTES_FULL_URL] Сведения об этом обновлении]
+ <usetemplate name="okcancelbuttons" notext="Позже..." yestext="Установите обновление и перезапустите [APP_NAME]"/>
+ </notification>
+ <notification name="DownloadBackgroundDialog">
+ Загружено обновление для вашей версии [APP_NAME].
+Версия [VERSION]. [[RELEASE_NOTES_FULL_URL] Сведения об этом обновлении]
+ <usetemplate name="okcancelbuttons" notext="Позже..." yestext="Установите обновление и перезапустите [APP_NAME]"/>
+ </notification>
+ <notification name="RequiredUpdateDownloadedVerboseDialog">
+ Загружено обязательное обновление.
+Версия [VERSION]
+
+Необходимо перезапустить [APP_NAME] для установки обновления.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RequiredUpdateDownloadedDialog">
+ Необходимо перезапустить [APP_NAME] для установки обновления.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="DeedObjectToGroup">
+ В результате передачи этого объекта группа:
+* Получит L$ в уплату за объект
+ <usetemplate ignoretext="Подтверждать перед передачей объекта группе" name="okcancelignore" notext="Отмена" yestext="Передать"/>
+ </notification>
+ <notification name="WebLaunchExternalTarget">
+ Открыть браузер для просмотра этого контента?
+ <usetemplate ignoretext="Запустить браузер для просмотра веб-страницы" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchJoinNow">
+ Перейти на [http://secondlife.com/account/ информационную панель] для управления вашим аккаунтом?
+ <usetemplate ignoretext="Запустить браузер для управления аккаунтом" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchSecurityIssues">
+ Прочитайте на вики-странице [SECOND_LIFE] о том, как сообщить о проблеме с безопасностью.
+ <usetemplate ignoretext="Запустить браузер для просмотра инструкций в случае проблем с безопасностью" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchQAWiki">
+ Посетите вики-страницу вопросов и ответов по [SECOND_LIFE].
+ <usetemplate ignoretext="Запустить браузер для просмотра вики-страницы вопросов и ответов" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchPublicIssue">
+ Посетите страницу общедоступного средства исследования проблем [SECOND_LIFE], на котором можно сообщить об ошибках и других проблемах.
+ <usetemplate ignoretext="Запустить браузер для использования общедоступного средства исследования проблем" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
+ </notification>
+ <notification name="WebLaunchSupportWiki">
+ Перейти на официальный блог Linden для просмотра свежих новостей и прочей информации.
+ <usetemplate ignoretext="Запустить браузер для просмотра блога" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLGuide">
+ Открыть руководство по скриптам для получения справки?
+ <usetemplate ignoretext="Запустить браузер для просмотра руководства по скриптам" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLWiki">
+ Посетить портал LSL для получения справки по скриптам?
+ <usetemplate ignoretext="Запустить браузер для просмотра портала LSL" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
+ </notification>
+ <notification name="ReturnToOwner">
+ Вы действительно хотите вернуть выбранные объекты их владельцам? Переносимые переданные объекты будут возвращены прежним владельцам.
+
+*ПРЕДУПРЕЖДЕНИЕ* Непереносимые переданные объекты будут удалены!
+ <usetemplate ignoretext="Подтверждать перед возвратом объектов владельцам" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="GroupLeaveConfirmMember">
+ Вы являетесь участником группы [GROUP].
+Хотите покинуть группу?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmKick">
+ Вы ДЕЙСТВИТЕЛЬНО хотите выбросить всех жителей с сетки?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выбросить всех жителей"/>
+ </notification>
+ <notification name="MuteLinden">
+ Заблокировать Linden нельзя.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotStartAuctionAlreadyForSale">
+ Нельзя выставить на аукцион участок, который уже продается. Отмените продажу участка, если действительно хотите начать аукцион.
+ </notification>
+ <notification label="Не удалось блокировать объект по имени" name="MuteByNameFailed">
+ Вы уже внесли это имя в черный список.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RemoveItemWarn">
+ Удаление содержимого, хотя это и разрешено, может повредить объект. Хотите удалить этот предмет?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferCallingCard">
+ Сейчас невозможно предложить визитку. Повторите попытку через минуту.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferFriendship">
+ Сейчас невозможно предложить дружбу. Повторите попытку через минуту.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="BusyModeSet">
+ Установлен режим «Занят».
+Сообщения чата и IM будут скрыты. На IM-сообщения будет возвращаться заданный ответ в режиме «Занят». Все предложения телепортации будут отклоняться. Все предложения инвентаря будут направлены в корзину.
+ <usetemplate ignoretext="Смена моего статуса на режим «Занят»" name="okignore" yestext="OK"/>
+ </notification>
+ <notification name="JoinedTooManyGroupsMember">
+ Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту, или отклоните предложение.
+[NAME] пригласил(а) вас в группу.
+ <usetemplate name="okcancelbuttons" notext="Отклонить" yestext="Вступить"/>
+ </notification>
+ <notification name="JoinedTooManyGroups">
+ Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту или создавать новую группу.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="KickUser">
+ Выбросить этого жителя с таким сообщением?
+ <form name="form">
+ <input name="message">
+ Администратор вывел вас из программы.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="KickAllUsers">
+ Выбросить всех жителей, которые сейчас есть на сетке, с таким сообщением?
+ <form name="form">
+ <input name="message">
+ Администратор вывел вас из программы.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="FreezeUser">
+ Заморозить этого жителя с таким сообщением?
+ <form name="form">
+ <input name="message">
+ Вы заморожены. Вы не можете двигаться и беседовать в чате. Администратор свяжется с вами в сеансе мгновенных сообщений (IM).
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="UnFreezeUser">
+ Разморозить этого жителя с таким сообщением?
+ <form name="form">
+ <input name="message">
+ Вы больше не заморожены.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="SetDisplayNameSuccess">
+ Привет, [DISPLAY_NAME]!
+
+Как и в реальной жизни, должно пройти какое-то время, прежде чем все узнают ваше новое имя. Подождите несколько дней, пока [http://wiki.secondlife.com/wiki/Setting_your_display_name ваше имя не будет обновлено] в объектах, скриптах, поиске и т.д.
+ </notification>
+ <notification name="SetDisplayNameBlocked">
+ Вы не можете сменить свое экранное имя. Если вы считаете, что это ошибка, обратитесь в службу поддержки.
+ </notification>
+ <notification name="SetDisplayNameFailedLength">
+ Это имя слишком длинное. Экранное имя может содержать не более [LENGTH] символов.
+
+Сократите имя.
+ </notification>
+ <notification name="SetDisplayNameFailedGeneric">
+ Не удалось сменить ваше экранное имя. Повторите попытку позже.
+ </notification>
+ <notification name="SetDisplayNameMismatch">
+ Введенные экранные имена не совпадают. Введите их еще раз.
+ </notification>
+ <notification name="AgentDisplayNameUpdateThresholdExceeded">
+ Вам надо подождать, прежде чем вы сможете сменить свое экранное имя.
+
+См. http://wiki.secondlife.com/wiki/Setting_your_display_name
+
+Повторите попытку позже.
+ </notification>
+ <notification name="AgentDisplayNameSetBlocked">
+ Нельзя задать указанное вами имя. Оно содержит запрещенное слово.
+
+ Попробуйте указать другое имя.
+ </notification>
+ <notification name="AgentDisplayNameSetInvalidUnicode">
+ Выбранное вами экранное имя содержит недопустимые символы.
+ </notification>
+ <notification name="AgentDisplayNameSetOnlyPunctuation">
+ Ваше экранное имя кроме знаков препинания должно содержать буквы.
+ </notification>
+ <notification name="DisplayNameUpdate">
+ [OLD_NAME] ([SLID]) теперь носит имя [NEW_NAME].
+ </notification>
+ <notification name="OfferTeleport">
+ Предложить телепортацию к вам с отправкой сообщения?
+ <form name="form">
+ <input name="message">
+ Присоединиться ко мне в [REGION]
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="TooManyTeleportOffers">
+ Попытка сделать [OFFERS] предложений телепортации, что больше лимита ([LIMIT]).
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="OfferTeleportFromGod">
+ Творец вызывает жителя к вам?
+ <form name="form">
+ <input name="message">
+ Присоединиться ко мне в [REGION]
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="TeleportFromLandmark">
+ Вы действительно хотите телепортироваться в &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
+ <usetemplate ignoretext="Подтверждать телепортацию на закладку" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+ </notification>
+ <notification name="TeleportToPick">
+ Телепортироваться в [PICK]?
+ <usetemplate ignoretext="Подтверждать телепортацию на место в подборке" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+ </notification>
+ <notification name="TeleportToClassified">
+ Телепортироваться в [CLASSIFIED]?
+ <usetemplate ignoretext="Подтверждать телепортацию на место в рекламном объявлении" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+ </notification>
+ <notification name="TeleportToHistoryEntry">
+ Телепортироваться в [HISTORY_ENTRY]?
+ <usetemplate ignoretext="Подтверждать телепортацию на место в журнале" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+ </notification>
+ <notification label="Сообщение всем в моем землевладении" name="MessageEstate">
+ Введите краткое объявление для всех жителей, которые сейчас находятся в вашем землевладении.
+ <form name="form">
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="Изменить землевладение Linden" name="ChangeLindenEstate">
+ Вы собираетесь изменить землевладение, которое принадлежит компании Linden (материк, сетку для подростков, ориентацию и т.д.).
+
+Это ОЧЕНЬ ОПАСНО, так как серьезно повлияет на огромное количество жителей. Ваше изменение распространится на тысячи регионов материка и вызовет сбой сервера.
+
+Начать?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification label="Изменить доступ к землевладению Linden" name="ChangeLindenAccess">
+ Вы собираетесь изменить список доступа к землевладению, которое принадлежит компании Linden (материк, сетка для подростков, ориентация и т.д.).
+
+Это действие ОПАСНО и допускается только для устранения нарушения, которое позволяет вводить и выводить объекты и L$ из сетки.
+Ваше изменение распространится на тысячи регионов и вызовет сбой сервера.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateAllowedAgentAdd">
+ Внести в список допущенных только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateAllowedAgentRemove">
+ Удалить из списка допущенных только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateAllowedGroupAdd">
+ Внести в групповой список допущенных только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateAllowedGroupRemove">
+ Удалить из группового списка допущенных только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateBannedAgentAdd">
+ Запретить доступ только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateBannedAgentRemove">
+ Удалить этого жителя из списка запрета доступа только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateManagerAdd">
+ Добавить менеджера только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Выбрать землевладение" name="EstateManagerRemove">
+ Удалить менеджера только для этого землевладения или для [ALL_ESTATES]?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+ </notification>
+ <notification label="Подтвердить выбрасывание" name="EstateKickUser">
+ Выбросить пользователя [EVIL_USER] из этого землевладения?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="EstateChangeCovenant">
+ Вы действительно хотите изменить соглашение по землевладению?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked">
+ Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости. Возможно, это результат недостатка информации, подтверждающей ваш возраст.
+
+Убедитесь, что у вас установлена последняя версия клиента, и прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_KB">
+ Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости.
+
+Перейти в Базу знаний и ознакомиться с рейтингами зрелости?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+ </url>
+ <usetemplate ignoretext="Я не могу войти в этот регион из-за ограничений по рейтингу зрелости" name="okcancelignore" notext="Закрыть" yestext="Перейти в Базу знаний"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Notify">
+ Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости.
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Change">
+ Вам нельзя быть в этом регионе из-за вашей настройки рейтинга зрелости.
+
+Для входа в желаемый регион измените настройку рейтинга зрелости. После этого вам будет разрешено искать и просматривать контент [REGIONMATURITY]. Для отмены изменений выберите команды «Я &gt; Настройки &gt; Общие».
+ <form name="form">
+ <button name="OK" text="Изменить настройку"/>
+ <button name="Cancel" text="Закрыть"/>
+ <ignore name="ignore" text="Выбранная мной настройка рейтинга запрещает мне вход в регион"/>
+ </form>
+ </notification>
+ <notification name="PreferredMaturityChanged">
+ Теперь ваша настройка рейтинга зрелости: [RATING].
+ </notification>
+ <notification name="LandClaimAccessBlocked">
+ Вы не можете претендовать на эту землю из-за вашего рейтинга зрелости. Возможно, это результат недостатка информации, подтверждающей ваш возраст.
+
+Убедитесь, что у вас установлена последняя версия клиента, и прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_KB">
+ Вы не можете претендовать на эту землю из-за вашего рейтинга зрелости.
+
+Перейти в Базу знаний и ознакомиться с рейтингами зрелости?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+ </url>
+ <usetemplate ignoretext="Я не могу претендовать на эту землю из-за ограничений по рейтингу зрелости" name="okcancelignore" notext="Закрыть" yestext="Перейти в Базу знаний"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_Notify">
+ Вы не можете претендовать на эту землю из-за вашего рейтинга зрелости.
+ </notification>
+ <notification name="LandClaimAccessBlocked_Change">
+ Вы не можете претендовать на эту землю из-за вашей настройки рейтинга зрелости.
+
+Нажмите кнопку «Изменить настройку», чтобы повысить свой рейтинг зрелости. После этого вам будет разрешено искать и просматривать контент [REGIONMATURITY]. Если в будущем понадобится отменить это изменение, выберите команды «Я &gt; Настройки &gt; Общие».
+ <usetemplate ignoretext="Выбранная мной настройка рейтинга запрещает мне претендовать на землю" name="okcancelignore" notext="Закрыть" yestext="Изменить настройку"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked">
+ Вы не можете купить эту землю из-за вашего рейтинга зрелости. Возможно, это результат недостатка информации, подтверждающей ваш возраст.
+
+Убедитесь, что у вас установлена последняя версия клиента, и прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_KB">
+ Вы не можете купить эту землю из-за вашего рейтинга зрелости.
+
+Перейти в Базу знаний и ознакомиться с рейтингами зрелости?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+ </url>
+ <usetemplate ignoretext="Я не могу купить эту землю из-за ограничений по рейтингу зрелости" name="okcancelignore" notext="Закрыть" yestext="Перейти в Базу знаний"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_Notify">
+ Вы не можете купить эту землю из-за вашего рейтинга зрелости.
+ </notification>
+ <notification name="LandBuyAccessBlocked_Change">
+ Вы не можете купить эту землю из-за выбранного вами рейтинга зрелости.
+
+Нажмите кнопку «Изменить настройку», чтобы повысить свой рейтинг зрелости. После этого вам будет разрешено искать и просматривать контент [REGIONMATURITY]. Если в будущем понадобится отменить это изменение, выберите команды «Я &gt; Настройки &gt; Общие».
+ <usetemplate ignoretext="Выбранная мной настройка рейтинга запрещает мне покупать землю" name="okcancelignore" notext="Закрыть" yestext="Изменить настройку"/>
+ </notification>
+ <notification name="TooManyPrimsSelected">
+ Выбрано слишком много примитивов. Выберите [MAX_PRIM_COUNT] или меньше примитивов и повторите попытку.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemImportingEstateCovenant">
+ Проблема при импорте соглашения о землевладении.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemAddingEstateManager">
+ Проблема при добавлении нового менеджера землевладения. Возможно, в одном или нескольких землевладениях список менеджеров уже заполнен.
+ </notification>
+ <notification name="ProblemAddingEstateGeneric">
+ Проблема при добавлении в этот список землевладения. Возможно, в одном или нескольких землевладениях список уже заполнен.
+ </notification>
+ <notification name="UnableToLoadNotecardAsset">
+ Сейчас невозможно загрузить актив заметки.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="NotAllowedToViewNotecard">
+ Недостаточно прав для просмотра заметки, связанной с требуемым идентификатором актива.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MissingNotecardAssetID">
+ Идентификатор актива для заметки отсутствует в базе данных.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PublishClassified">
+ Помните, что плата за рекламу не возвращается.
+
+Опубликовать это рекламное объявление за L$[AMOUNT]?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="SetClassifiedMature">
+ Содержит ли эта реклама умеренный контент?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="SetGroupMature">
+ Содержит ли эта группа умеренный контент?
+ <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification label="Подтвердить перезапуск" name="ConfirmRestart">
+ Вы действительно хотите перезапустить этот регион через 2 минуты?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification label="Сообщение для всех в этом регионе" name="MessageRegion">
+ Введите краткое объявление для всех жителей в этом регионе.
+ <form name="form">
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="Изменен рейтинг зрелости региона" name="RegionMaturityChange">
+ Рейтинг зрелости для этого региона будет обновлен.
+Отображение этого изменения на карте может занять некоторое время.
+
+Для входа в регионы для взрослых у жителя должен быть подтвержденный аккаунт: либо с подтверждением возраста, либо с подтверждением оплаты.
+ </notification>
+ <notification label="Несоответствие версии голоса" name="VoiceVersionMismatch">
+ Данная версия [APP_NAME] несовместима с функцией голосового чата в этом регионе. Для правильной работы голосового чата необходимо обновить [APP_NAME].
+ </notification>
+ <notification label="Нельзя купить объекты" name="BuyObjectOneOwner">
+ Нельзя купить объекты одновременно у разных владельцев.
+Выберите один объект и повторите попытку.
+ </notification>
+ <notification label="Нельзя купить содержимое" name="BuyContentsOneOnly">
+ Нельзя купить содержимое нескольких объектов одновременно.
+Выберите один объект и повторите попытку.
+ </notification>
+ <notification label="Нельзя купить содержимое" name="BuyContentsOneOwner">
+ Нельзя купить объекты одновременно у разных владельцев.
+Выберите один объект и повторите попытку.
+ </notification>
+ <notification name="BuyOriginal">
+ Купить оригинальный объект от [OWNER] за L$[PRICE]?
+Вы станете владельцем этого объекта.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BuyOriginalNoOwner">
+ Купить оригинальный объект за L$[PRICE]?
+Вы станете владельцем этого объекта.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopy">
+ Купить копию от [OWNER] за L$[PRICE]?
+Объект будет скопирован в ваш инвентарь.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopyNoOwner">
+ Купить копию за L$[PRICE]?
+Объект будет скопирован в ваш инвентарь.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BuyContents">
+ Купить содержимое от [OWNER] за L$[PRICE]?
+Оно будет скопировано в ваш инвентарь.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BuyContentsNoOwner">
+ Купить содержимое за L$[PRICE]?
+Оно будет скопировано в ваш инвентарь.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchase">
+ Действие этой транзакции:
+[ACTION]
+
+Действительно совершить эту покупку?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchasePassword">
+ Действие этой транзакции:
+[ACTION]
+
+Действительно совершить эту покупку?
+Введите свой пароль и нажмите «OK».
+ <form name="form">
+ <button name="ConfirmPurchase" text="OK"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="SetPickLocation">
+ Примечание.
+Вы изменили местоположение этой подборки, но остальные данные сохранили прежние значения.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromObject">
+ Вы выбрали «не копируемые» предметы.
+Они будут перемещены в ваш инвентарь, а не скопированы.
+
+Переместить предмет(ы)?
+ <usetemplate ignoretext="Предупреждать перед перемещением «не копируемых» предметов из объекта" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromScriptedObject">
+ Вы выбрали «не копируемые» предметы. Они будут перемещены в ваш инвентарь, а не скопированы.
+Так как объект является скриптовым, перемещение предметов в ваш инвентарий может вызвать ошибки скрипта.
+
+Переместить предмет(ы)?
+ <usetemplate ignoretext="Предупреждать перед перемещением «не копируемых» предметов, которые могут повредить скриптовый объект" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ClickActionNotPayable">
+ Предупреждение. Задано действие по щелчку «Заплатить за объект», но оно будет работать, только если добавлен скрипт с событием money().
+ <form name="form">
+ <ignore name="ignore" text="Установлено действие «Заплатить за объект» при построении объекта без скрипта money()"/>
+ </form>
+ </notification>
+ <notification name="OpenObjectCannotCopy">
+ В этом объекте нет вещей, которые вам разрешено копировать.
+ </notification>
+ <notification name="WebLaunchAccountHistory">
+ Перейти на [http://secondlife.com/account/ информационную панель], чтобы увидеть историю аккаунта?
+ <usetemplate ignoretext="Запустить браузер для просмотра истории аккаунта" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
+ </notification>
+ <notification name="ConfirmQuit">
+ Выйти из программы?
+ <usetemplate ignoretext="Подтверждать перед выходом" name="okcancelignore" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification name="ConfirmRestoreToybox">
+ Вы действительно хотите восстановить принятые по умолчанию кнопки и панели инструментов?
+
+Это действие нельзя отменить.
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="DeleteItems">
+ [QUESTION]
+ <usetemplate ignoretext="Подтверждать перед удалением предметов" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="HelpReportAbuseEmailLL">
+ Этот инструмент служит для уведомления о нарушениях [http://secondlife.com/corporate/tos.php Пользовательского соглашения] и [http://secondlife.com/corporate/cs.php стандартов сообщества].
+
+Все нарушения, о которых поступили такие уведомления, расследуются и устраняются.
+ </notification>
+ <notification name="HelpReportAbuseSelectCategory">
+ Выберите категорию для этого уведомления о нарушении.
+Категории облегчают регистрацию и обработку уведомлений.
+ </notification>
+ <notification name="HelpReportAbuseAbuserNameEmpty">
+ Введите имя нарушителя.
+Точность указания облегчает регистрацию и обработку уведомлений.
+ </notification>
+ <notification name="HelpReportAbuseAbuserLocationEmpty">
+ Укажите место, в котором произошло нарушение.
+Точность указания облегчает регистрацию и обработку уведомлений.
+ </notification>
+ <notification name="HelpReportAbuseSummaryEmpty">
+ Введите краткое описание нарушения.
+Точность описания облегчает регистрацию и обработку уведомлений.
+ </notification>
+ <notification name="HelpReportAbuseDetailsEmpty">
+ Введите подробное описание нарушения.
+Укажите как можно больше конкретных деталей, включая имена и подробности происшествия, о котором вы сообщаете.
+Точность описания облегчает регистрацию и обработку уведомлений.
+ </notification>
+ <notification name="HelpReportAbuseContainsCopyright">
+ Уважаемый житель!
+
+Вы уведомляете о нарушении прав интеллектуальной собственности. Убедитесь, что ваше уведомление составлено правильно:
+
+(1) Процесс регистрации нарушения. Вы можете отправить уведомление о нарушении, если считаете, что какой-либо житель злоупотребляет системой разрешений [SECOND_LIFE], например, с помощью CopyBot или аналогичных инструментов копирования, и нарушает таким образом права интеллектуальной собственности. Наш отдел борьбы с нарушениями расследует такие случаи и принимает соответствующие дисциплинарные меры к нарушителям [http://secondlife.com/corporate/tos.php Пользовательского соглашения] или [http://secondlife.com/corporate/cs.php стандартов сообщества] [SECOND_LIFE] . Однако отдел борьбы с нарушениями не рассматривает просьбы об удалении контента из мира [SECOND_LIFE] и не отвечает на них.
+
+(2) Процесс DMCA или удаления контента. Для запроса об удалении контента из [SECOND_LIFE] следует ОБЯЗАТЕЛЬНО представить действительное уведомление о нарушении в соответствии с требованиями нашей [http://secondlife.com/corporate/dmca.php политики DMCA].
+
+Если вы все же хотите продолжить процесс регистрации нарушения, закройте это окно, составьте уведомление и отправьте его. При необходимости выберите категорию «CopyBot или нарушение разрешений».
+
+С уважением,
+
+компания Linden Lab
+ </notification>
+ <notification name="FailedRequirementsCheck">
+ [FLOATER] не содержит следующих обязательных компонентов:
+[COMPONENTS]
+ </notification>
+ <notification label="Замена существующего присоединения" name="ReplaceAttachment">
+ К этой точке вашего тела уже присоединен другой объект.
+Заменить его выбранным объектом?
+ <form name="form">
+ <ignore name="ignore" text="Замена существующего присоединения выбранным предметом"/>
+ <button ignore="Заменять автоматически" name="Yes" text="OK"/>
+ <button ignore="Не заменять" name="No" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="Предупреждение о режиме «Занят»" name="BusyModePay">
+ У вас включен режим «Занят», поэтому вы не получите никаких предметов, предлагаемых в обмен на этот платеж.
+
+Хотите отключить режим «Занят» до завершения этой транзакции?
+ <form name="form">
+ <ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Занят»"/>
+ <button ignore="Всегда отключать режим «Занят»" name="Yes" text="OK"/>
+ <button ignore="Не отключать режим «Занят»" name="No" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="ConfirmDeleteProtectedCategory">
+ Папка «[FOLDERNAME]» является системной. Удаление системных папок может привести к нестабильности. Действительно удалить эту папку?
+ <usetemplate ignoretext="Подтверждать перед удалением системной папки" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmEmptyTrash">
+ Вы действительно хотите необратимо удалить содержимое корзины?
+ <usetemplate ignoretext="Подтверждать перед опорожнением корзины инвентаря" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearBrowserCache">
+ Вы действительно хотите удалить журнал своих перемещений, веб-страниц и поиска?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearCache">
+ Вы действительно хотите очистить кэш программы?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearCookies">
+ Вы действительно хотите удалить файлы cookie?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/>
+ </notification>
+ <notification name="ConfirmClearMediaUrlList">
+ Вы действительно хотите очистить список сохраненных URL-адресов?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/>
+ </notification>
+ <notification name="ConfirmEmptyLostAndFound">
+ Вы действительно хотите необратимо удалить содержимое Бюро находок?
+ <usetemplate ignoretext="Подтверждать перед опорожнением Бюро находок инвентаря" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="CopySLURL">
+ Данный SLurl был скопирован в буфер обмена:
+ [SLURL]
+
+Создайте ссылку на него на веб-странице для облегчения доступа к этому месту или самостоятельно вставьте его в адресную строку любого браузера.
+ <form name="form">
+ <ignore name="ignore" text="SLurl скопирован в буфер обмена"/>
+ </form>
+ </notification>
+ <notification name="WLSavePresetAlert">
+ Хотите заменить сохраненные настройки?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="WLNoEditDefault">
+ Вы не можете редактировать или удалять настройку по умолчанию.
+ </notification>
+ <notification name="WLMissingSky">
+ Этот файл суточного цикла ссылается на отсутствующий файл неба: [SKY].
+ </notification>
+ <notification name="WLRegionApplyFail">
+ Не удалось применить настройки к региону. Попробуйте покинуть регион, а затем вернуться в него. Причина неполадки: [FAIL_REASON]
+ </notification>
+ <notification name="EnvCannotDeleteLastDayCycleKey">
+ Невозможно удалить последний ключ в этом суточном цикле: пустой суточный цикл не разрешен. Следует изменить последний оставшийся ключ, а не удалять его и создавать новый.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="DayCycleTooManyKeyframes">
+ В этот суточный цикл больше нельзя добавлять ключевые кадры. Суточные циклы области [SCOPE] могут содержать не больше [MAX] ключевых кадров.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="EnvUpdateRate">
+ Настройки окружающей среды региона можно обновлять не чаще, чем раз в [WAIT] секунд. Подождите это время или дольше и повторите попытку.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PPSaveEffectAlert">
+ Существует эффект пост-процессинга. Заменить его?
+ <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="ChatterBoxSessionStartError">
+ Невозможно начать новый сеанс чата с [RECIPIENT].
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ChatterBoxSessionEventError">
+ [EVENT]
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ForceCloseChatterBoxSession">
+ Ваш сеанс чата с [NAME] будет закрыт.
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="Cannot_Purchase_an_Attachment">
+ Вы не можете купить объект, пока он присоединен.
+ </notification>
+ <notification label="О запросах на разрешение дебетования" name="DebitPermissionDetails">
+ Принятие этого запроса дает скрипту постоянное разрешение на снятие Linden-долларов (L$) с вашего счета. Для отзыва этого разрешения владелец объекта должен удалить объект или сбросить скрипты в нем.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AutoWearNewClothing">
+ Вы хотите автоматически надевать создаваемую вами одежду?
+ <usetemplate ignoretext="Надевать одежду, создаваемую при редактировании моей внешности" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="NotAgeVerified">
+ Доступ к контенту и областям для взрослых в Second Life разрешен только с 18 лет. Посетите нашу страницу проверки возраста и подтвердите, что вам уже исполнилось 18.
+Страница будет открыта в браузере.
+
+[_URL]
+ <url name="url">
+ https://secondlife.com/my/account/verification.php
+ </url>
+ <usetemplate ignoretext="Мой возраст не подтвержден" name="okcancelignore" notext="Отмена" yestext="Перейти к проверке возраста"/>
+ </notification>
+ <notification name="Cannot enter parcel: no payment info on file">
+ Для посещения этой области необходимо зарегистрировать платеж. Перейти на веб-сайт [SECOND_LIFE] и ввести эту информацию?
+
+[_URL]
+ <url name="url">
+ https://secondlife.com/account/
+ </url>
+ <usetemplate ignoretext="У меня не зарегистрирована информация о платежах" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="MissingString">
+ Строка [STRING_NAME] отсутствует в strings.xml
+ </notification>
+ <notification name="SystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="IMSystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="Cancelled">
+ Отменено
+ </notification>
+ <notification name="CancelledSit">
+ Отмененная посадка
+ </notification>
+ <notification name="CancelledAttach">
+ Отмененное присоединение
+ </notification>
+ <notification name="ReplacedMissingWearable">
+ Отсутствующая одежда/часть тела заменена вещью по умолчанию.
+ </notification>
+ <notification name="GroupNotice">
+ Раздел: [SUBJECT], сообщение: [MESSAGE]
+ </notification>
+ <notification name="FriendOnline">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; в сети
+ </notification>
+ <notification name="FriendOffline">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; не в сети
+ </notification>
+ <notification name="AddSelfFriend">
+ Вы лучше всех, но нельзя добавить в друзья себя самого.
+ </notification>
+ <notification name="UploadingAuctionSnapshot">
+ Передача снимков мира и веб-сайта...
+(Занимает около 5 мин.)
+ </notification>
+ <notification name="UploadPayment">
+ Вы заплатили L$[AMOUNT] за передачу.
+ </notification>
+ <notification name="UploadWebSnapshotDone">
+ Передача снимка веб-сайта завершена.
+ </notification>
+ <notification name="UploadSnapshotDone">
+ Передача снимка мира завершена.
+ </notification>
+ <notification name="TerrainDownloaded">
+ Загрузка Terrain.raw завершена
+ </notification>
+ <notification name="GestureMissing">
+ Жеста [NAME] нет в базе данных.
+ </notification>
+ <notification name="UnableToLoadGesture">
+ Невозможно загрузить жест [NAME].
+ </notification>
+ <notification name="LandmarkMissing">
+ Закладки нет в базе данных.
+ </notification>
+ <notification name="UnableToLoadLandmark">
+ Невозможно загрузить закладку. Повторите попытку.
+ </notification>
+ <notification name="CapsKeyOn">
+ Включен режим CAPS LOCK.
+Пароль может быть введен неправильно.
+ </notification>
+ <notification name="NotecardMissing">
+ Заметки нет в базе данных.
+ </notification>
+ <notification name="NotecardNoPermissions">
+ У вас нет прав для просмотра этой заметки.
+ </notification>
+ <notification name="RezItemNoPermissions">
+ Недостаточно разрешений для выкладывания объекта.
+ </notification>
+ <notification name="IMAcrossParentEstates">
+ Невозможно отправить сообщение из одного родительского землевладения в другое.
+ </notification>
+ <notification name="TransferInventoryAcrossParentEstates">
+ Невозможно перенести инвентарь из одного родительского землевладения в другое.
+ </notification>
+ <notification name="UnableToLoadNotecard">
+ Невозможно загрузить заметку.
+Повторите попытку.
+ </notification>
+ <notification name="ScriptMissing">
+ Скрипта нет в базе данных.
+ </notification>
+ <notification name="ScriptNoPermissions">
+ Недостаточно разрешений для просмотра скрипта.
+ </notification>
+ <notification name="UnableToLoadScript">
+ Невозможно загрузить скрипт. Повторите попытку.
+ </notification>
+ <notification name="IncompleteInventory">
+ Все предлагаемое вами содержимое еще не доступно в данном месте. Попробуйте вновь предложить эти вещи через минуту.
+ </notification>
+ <notification name="CannotModifyProtectedCategories">
+ Защищенные категории нельзя изменять.
+ </notification>
+ <notification name="CannotRemoveProtectedCategories">
+ Защищенные категории нельзя удалять.
+ </notification>
+ <notification name="UnableToBuyWhileDownloading">
+ Покупка во время загрузки данных объекта невозможна.
+Повторите попытку.
+ </notification>
+ <notification name="UnableToLinkWhileDownloading">
+ Создание связи во время загрузки данных объекта невозможно.
+Повторите попытку.
+ </notification>
+ <notification name="CannotBuyObjectsFromDifferentOwners">
+ Можно купить объекты за один раз только у одного владельца.
+Выберите один объект.
+ </notification>
+ <notification name="ObjectNotForSale">
+ Этот объект не для продажи.
+ </notification>
+ <notification name="EnteringGodMode">
+ Переход в режим творца, уровень [LEVEL]
+ </notification>
+ <notification name="LeavingGodMode">
+ Переход из режима творца, уровень [LEVEL]
+ </notification>
+ <notification name="CopyFailed">
+ У вас нет прав на копирование этого предмета.
+ </notification>
+ <notification name="InventoryAccepted">
+ [NAME] получил(а) ваше предложение инвентаря.
+ </notification>
+ <notification name="InventoryDeclined">
+ [NAME] отклонил(а) ваше предложение инвентаря.
+ </notification>
+ <notification name="ObjectMessage">
+ [NAME]: [MESSAGE]
+ </notification>
+ <notification name="CallingCardAccepted">
+ Ваша визитка принята.
+ </notification>
+ <notification name="CallingCardDeclined">
+ Ваша визитка отклонена.
+ </notification>
+ <notification name="TeleportToLandmark">
+ Вы можете телепортироваться в такие места, как «[NAME]», открыв панель «Места» в правой части экрана и выбрав вкладку «Закладки».
+Щелкните любую закладку, чтобы выбрать ее, а затем нажмите кнопку «Телепортация» внизу панели.
+(Также можно дважды щелкнуть закладку или щелкнуть ее правой кнопкой мыши и выбрать команду «Телепортация».)
+ </notification>
+ <notification name="TeleportToPerson">
+ Вы можете общаться с такими жителями, как «[NAME]», открыв панель «Люди» в правой части экрана.
+Выберите в списке нужного жителя, а затем нажмите кнопку «IM» внизу панели.
+(Также можно дважды щелкнуть имя жителя в списке или щелкнуть ее правой кнопкой мыши и выбрать команду «IM».)
+ </notification>
+ <notification name="CantSelectLandFromMultipleRegions">
+ Нельзя выбрать землю с обеих сторон границы между серверами.
+Попробуйте выбрать участок поменьше.
+ </notification>
+ <notification name="SearchWordBanned">
+ Некоторые слова исключены из вашего поискового запроса из-за ограничений контента, установленных в стандартах сообщества.
+ </notification>
+ <notification name="NoContentToSearch">
+ Выберите хотя бы один тип контента для поиска («Общий», «Умеренный» или «Для взрослых»).
+ </notification>
+ <notification name="SystemMessage">
+ [MESSAGE]
+ </notification>
+ <notification name="PaymentReceived">
+ [MESSAGE]
+ </notification>
+ <notification name="PaymentSent">
+ [MESSAGE]
+ </notification>
+ <notification name="EventNotification">
+ Уведомление о событии:
+
+[NAME]
+[DATE]
+ <form name="form">
+ <button name="Details" text="Подробности"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="TransferObjectsHighlighted">
+ Все объекты на этом участке, которые будут переданы его покупателю, выделены цветом.
+
+* Передаваемые деревья и трава не выделяются.
+ <form name="form">
+ <button name="Done" text="Готово"/>
+ </form>
+ </notification>
+ <notification name="DeactivatedGesturesTrigger">
+ Деактивированные жесты с тем же триггером:
+[NAMES]
+ </notification>
+ <notification name="NoQuickTime">
+ В вашей системе не установлено программное обеспечение Apple QuickTime.
+Для просмотра потокового медиа на участках, которые поддерживают его, перейдите на сайт [http://www.apple.com/quicktime QuickTime] и установите QuickTime Player.
+ </notification>
+ <notification name="NoPlugin">
+ Не найден медиа-плагин для обработки данных типа MIME «[MIME_TYPE]». Медиа этого типа будет недоступно.
+ </notification>
+ <notification name="MediaPluginFailed">
+ Ошибка следующего медиа-плагина:
+ [PLUGIN]
+
+Переустановите плагин или обратитесь к его разработчику, если ошибки возникают снова.
+ <form name="form">
+ <ignore name="ignore" text="Не удалось запустить медиа-плагин"/>
+ </form>
+ </notification>
+ <notification name="OwnedObjectsReturned">
+ Принадлежащие вам объекты на выбранном земельном участке возвращены в ваш инвентарь.
+ </notification>
+ <notification name="OtherObjectsReturned">
+ Принадлежащие [NAME] объекты на выбранном земельном участке возвращены в его инвентарь.
+ </notification>
+ <notification name="OtherObjectsReturned2">
+ Принадлежащие жителю «[NAME]» объекты на выбранном земельном участке возвращены владельцу.
+ </notification>
+ <notification name="GroupObjectsReturned">
+ Переданные группе [GROUPNAME] объекты на выбранном земельном участке возвращены в инвентарь владельцев.
+Переносимые переданные объекты возвращены прежним владельцам.
+Непереносимые объекты, переданные группе, удалены.
+ </notification>
+ <notification name="UnOwnedObjectsReturned">
+ Объекты на выбранном земельном участке, НЕ принадлежащие вам, возвращены владельцам.
+ </notification>
+ <notification name="ServerObjectMessage">
+ Сообщение от [NAME]:
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
+ </notification>
+ <notification name="NotSafe">
+ На этой земле разрешены повреждения.
+Здесь вы можете пострадать. Если вы умрете, вы будете телепортированы в ваше домашнее местоположение.
+ </notification>
+ <notification name="NoFly">
+ В этой области запрещены полеты.
+Вы не сможете здесь летать.
+ </notification>
+ <notification name="PushRestricted">
+ В этой области запрещено толкаться. Здесь вы не можете никого толкать, только если не являетесь владельцем земли.
+ </notification>
+ <notification name="NoVoice">
+ В этой области запрещен голосовой чат. Здесь вы не услышите ничью речь.
+ </notification>
+ <notification name="NoBuild">
+ В этой области запрещено строительство. Здесь вы не сможете строить или выкладывать объекты.
+ </notification>
+ <notification name="SeeAvatars">
+ На этом участке аватары и текстовый чат скрыты от другого участка. Жителей за пределами этого участка не будет видно, а они не будут видеть вас. Обычный текстовый чат на канале 0 также блокируется.
+ </notification>
+ <notification name="ScriptsStopped">
+ Администратор временно остановил все скрипты в этом регионе.
+ </notification>
+ <notification name="ScriptsNotRunning">
+ В этом регионе не работают любые скрипты.
+ </notification>
+ <notification name="NoOutsideScripts">
+ На этой земле запрещены внешние скрипты.
+
+Здесь будут работать только скрипты, принадлежащие владельцу земли.
+ </notification>
+ <notification name="ClaimPublicLand">
+ Вы можете претендовать на публичную землю только в регионе, в котором вы находитесь.
+ </notification>
+ <notification name="RegionTPAccessBlocked">
+ Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости. Подтвердите свой возраст и/или установите последнюю версию клиента.
+
+Прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+ </notification>
+ <notification name="URBannedFromRegion">
+ Вы забанены в регионе.
+ </notification>
+ <notification name="NoTeenGridAccess">
+ Ваш аккаунт не может подключиться к этому региону сетки для подростков.
+ </notification>
+ <notification name="ImproperPaymentStatus">
+ У вас нет необходимого статуса оплаты для входа в этот регион.
+ </notification>
+ <notification name="MustGetAgeRgion">
+ Для входа в этот регион необходимо подтверждение возраста.
+ </notification>
+ <notification name="MustGetAgeParcel">
+ Для входа на этот участок необходимо подтверждение возраста.
+ </notification>
+ <notification name="NoDestRegion">
+ Не найден регион назначения.
+ </notification>
+ <notification name="NotAllowedInDest">
+ Вам не разрешен доступ в пункт назначения.
+ </notification>
+ <notification name="RegionParcelBan">
+ Нельзя пересечь границу региона по пути на забаненный участок. Выберите другой путь.
+ </notification>
+ <notification name="TelehubRedirect">
+ Вы перенаправлены на телехаб.
+ </notification>
+ <notification name="CouldntTPCloser">
+ Не удалось телепортироваться ближе к пункту назначения.
+ </notification>
+ <notification name="TPCancelled">
+ Телепортация отменена.
+ </notification>
+ <notification name="FullRegionTryAgain">
+ Попытка входа в регион, который сейчас заполнен.
+Повторите попытку через несколько минут.
+ </notification>
+ <notification name="GeneralFailure">
+ Общий сбой.
+ </notification>
+ <notification name="RoutedWrongRegion">
+ Направление в неверный регион. Повторите попытку.
+ </notification>
+ <notification name="NoValidAgentID">
+ Нет подходящего идентификатора агента.
+ </notification>
+ <notification name="NoValidSession">
+ Нет подходящего идентификатора сеанса.
+ </notification>
+ <notification name="NoValidCircuit">
+ Нет подходящего кода канала.
+ </notification>
+ <notification name="NoValidTimestamp">
+ Нет подходящей метки времени.
+ </notification>
+ <notification name="NoPendingConnection">
+ Невозможно создать отложенное соединение.
+ </notification>
+ <notification name="InternalUsherError">
+ Внутренняя ошибка при попытке подключить агента-провожатого.
+ </notification>
+ <notification name="NoGoodTPDestination">
+ Не удалось найти подходящую точку назначения телепорта в этом регионе.
+ </notification>
+ <notification name="InternalErrorRegionResolver">
+ Внутренняя ошибка при попытке активировать распознавателя региона.
+ </notification>
+ <notification name="NoValidLanding">
+ Не удалось найти подходящую точку приземления.
+ </notification>
+ <notification name="NoValidParcel">
+ Не удалось найти подходящий участок.
+ </notification>
+ <notification name="ObjectGiveItem">
+ Объект &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, которым владеет [NAME_SLURL], дал вам этот [OBJECTTYPE]:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+ <form name="form">
+ <button name="Keep" text="Оставить"/>
+ <button name="Discard" text="Удалить"/>
+ <button name="Mute" text="Блокировать владельца"/>
+ </form>
+ </notification>
+ <notification name="OwnObjectGiveItem">
+ Ваш объект &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; дал вам этот [OBJECTTYPE]:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+ <form name="form">
+ <button name="Keep" text="Оставить"/>
+ <button name="Discard" text="Удалить"/>
+ </form>
+ </notification>
+ <notification name="UserGiveItem">
+ [NAME_SLURL] дал(а) вам этот [OBJECTTYPE]:
+[ITEM_SLURL]
+ <form name="form">
+ <button name="Show" text="Показать"/>
+ <button name="Discard" text="Удалить"/>
+ <button name="Mute" text="Заблокировать"/>
+ </form>
+ </notification>
+ <notification name="GodMessage">
+ [NAME]
+
+[MESSAGE]
+ </notification>
+ <notification name="JoinGroup">
+ [MESSAGE]
+ <form name="form">
+ <button name="Join" text="Вступить"/>
+ <button name="Decline" text="Отклонить"/>
+ <button name="Info" text="Информация"/>
+ </form>
+ </notification>
+ <notification name="TeleportOffered">
+ [NAME_SLURL] предложил(а) телепортировать вас к себе:
+
+[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
+ <form name="form">
+ <button name="Teleport" text="Телепортация"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="TeleportOfferSent">
+ Предложение телепортации отправлено [TO_NAME]
+ </notification>
+ <notification name="GotoURL">
+ [MESSAGE]
+[URL]
+ <form name="form">
+ <button name="Later" text="Позже"/>
+ <button name="GoNow..." text="Перейти сейчас..."/>
+ </form>
+ </notification>
+ <notification name="OfferFriendship">
+ [NAME_SLURL] предлагает дружить.
+
+[MESSAGE]
+
+(По умолчанию вы будете видеть статус друг друга.)
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ </form>
+ </notification>
+ <notification name="FriendshipOffered">
+ Вы предложили дружить пользователю [TO_NAME]
+ </notification>
+ <notification name="OfferFriendshipNoMessage">
+ [NAME_SLURL] предлагает дружить.
+
+(По умолчанию вы будете видеть статус друг друга.)
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ </form>
+ </notification>
+ <notification name="FriendshipAccepted">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; принял(а) ваше предложение дружить.
+ </notification>
+ <notification name="FriendshipDeclined">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; отклонил(а) ваше предложение дружить.
+ </notification>
+ <notification name="FriendshipAcceptedByMe">
+ Предложение дружить принято.
+ </notification>
+ <notification name="FriendshipDeclinedByMe">
+ Предложение дружить отклонено.
+ </notification>
+ <notification name="OfferCallingCard">
+ [NAME] предлагает свою визитку.
+При этом в вашем инвентаре появится закладка для быстрой связи с этим жителем.
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ </form>
+ </notification>
+ <notification name="RegionRestartMinutes">
+ Этот регион будет перезапущен через [MINUTES] мин.
+Если вы останетесь в этом регионе, вы выйдете из программы.
+ </notification>
+ <notification name="RegionRestartSeconds">
+ Этот регион будет перезапущен через [SECONDS] сек.
+Если вы останетесь в этом регионе, вы выйдете из программы.
+ </notification>
+ <notification name="LoadWebPage">
+ Загрузить веб-страницу [URL]?
+
+[MESSAGE]
+
+Из объекта: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, владелец: [NAME]?
+ <form name="form">
+ <button name="Gotopage" text="Перейти на страницу"/>
+ <button name="Cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification name="FailedToFindWearableUnnamed">
+ Не удалось найти [TYPE] в базе данных.
+ </notification>
+ <notification name="FailedToFindWearable">
+ Не удалось найти [TYPE] с именем [DESC] в базе данных.
+ </notification>
+ <notification name="InvalidWearable">
+ Попытка надеть предмет, функцию которого программа не может распознать. Обновите свою версию [APP_NAME] для пользования этим предметом.
+ </notification>
+ <notification name="ScriptQuestion">
+ Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;», владелец которого – «[NAME]», желает:
+
+[QUESTIONS]
+Это правильно?
+ <form name="form">
+ <button name="Yes" text="Да"/>
+ <button name="No" text="Нет"/>
+ <button name="Mute" text="Заблокировать"/>
+ </form>
+ </notification>
+ <notification name="ScriptQuestionCaution">
+ Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;», владелец которого – «[NAME]», желает:
+
+[QUESTIONS]
+Если вы не доверяете этому объекту или его создателю, отклоните запрос.
+
+Принять этот запрос?
+ <form name="form">
+ <button name="Grant" text="Принять"/>
+ <button name="Deny" text="Отклонить"/>
+ <button name="Details" text="Подробности..."/>
+ </form>
+ </notification>
+ <notification name="ScriptDialog">
+ [NAME] – «&lt;nolink&gt;[TITLE]&lt;/nolink&gt;»
+[MESSAGE]
+ <form name="form">
+ <button name="Mute" text="Блокировать"/>
+ <button name="Ignore" text="Игнорировать"/>
+ </form>
+ </notification>
+ <notification name="ScriptDialogGroup">
+ [GROUPNAME] – «&lt;nolink&gt;[TITLE]&lt;/nolink&gt;»
+[MESSAGE]
+ <form name="form">
+ <button name="Mute" text="Блокировать"/>
+ <button name="Ignore" text="Игнорировать"/>
+ </form>
+ </notification>
+ <notification name="BuyLindenDollarSuccess">
+ Благодарим за оплату!
+
+По окончании обработки баланс вашего счета в L$ будет обновлен. Если обработка займет более 20 мин, ваша транзакция может быть отменена. В этом случае сумма платежа будет записана на ваш баланс в долларах США.
+
+Состояние ваших платежей можно проверить на странице «Журнал транзакций» на вашей [http://secondlife.com/account/ информационной панели].
+ </notification>
+ <notification name="FirstOverrideKeys">
+ Ваши клавиши перемещения теперь обрабатываются объектом.
+Попробуйте использовать клавиши со стрелками или AWSD.
+Для использования некоторых объектов (например, оружия) необходимо перейти в режим обзора мышью.
+Для этого нажмите клавишу «M».
+ </notification>
+ <notification name="FirstSandbox">
+ Это область-песочница, в которой жители учатся строительству.
+
+Построенные вами предметы удаляются при вашем выходе из песочницы, поэтому не забывайте щелкать их правой кнопкой мыши и выбирать команду «Взять» для переноса ваших творений в инвентарь.
+ </notification>
+ <notification name="MaxListSelectMessage">
+ В этом списке можно выбрать не более [MAX_SELECT] пунктов.
+ </notification>
+ <notification name="VoiceInviteP2P">
+ [NAME] приглашает вас в голосовой чат.
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ <button name="Mute" text="Заблокировать"/>
+ </form>
+ </notification>
+ <notification name="AutoUnmuteByIM">
+ [NAME] отправил(а) вам мгновенное сообщение и был(а) автоматически разблокирован(а).
+ </notification>
+ <notification name="AutoUnmuteByMoney">
+ [NAME] получил(а) деньги и был(а) автоматически разблокирован(а).
+ </notification>
+ <notification name="AutoUnmuteByInventory">
+ [NAME] предложил(а) инвентарь и был(а) автоматически разблокирован(а).
+ </notification>
+ <notification name="VoiceInviteGroup">
+ [NAME] вступил(а) в голосовой чат с группой [GROUP].
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ <button name="Mute" text="Заблокировать"/>
+ </form>
+ </notification>
+ <notification name="VoiceInviteAdHoc">
+ [NAME] вступил(а) в голосовой чат с конференцией.
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ <button name="Mute" text="Заблокировать"/>
+ </form>
+ </notification>
+ <notification name="InviteAdHoc">
+ [NAME] приглашает вас в чат с конференцией.
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+ <form name="form">
+ <button name="Accept" text="Принять"/>
+ <button name="Decline" text="Отклонить"/>
+ <button name="Mute" text="Заблокировать"/>
+ </form>
+ </notification>
+ <notification name="VoiceChannelFull">
+ Вы пытаетесь подключиться к голосовому чату [VOICE_CHANNEL_NAME], в котором уже достигнута максимальная емкость. Повторите попытку позже.
+ </notification>
+ <notification name="ProximalVoiceChannelFull">
+ Приносим извинения. В этой области уже достигнута максимальная емкость голосовых чатов. Попробуйте использовать голос в другой области.
+ </notification>
+ <notification name="VoiceChannelDisconnected">
+ Вы были отключены от [VOICE_CHANNEL_NAME]. Будет установлено подключение к локальному голосовому чату.
+ </notification>
+ <notification name="VoiceChannelDisconnectedP2P">
+ [VOICE_CHANNEL_NAME] завершил вызов. Будет установлено подключение к локальному голосовому чату.
+ </notification>
+ <notification name="P2PCallDeclined">
+ [VOICE_CHANNEL_NAME] отклонил ваш вызов. Будет установлено подключение к локальному голосовому чату.
+ </notification>
+ <notification name="P2PCallNoAnswer">
+ [VOICE_CHANNEL_NAME] не может принять ваш вызов. Будет установлено подключение к локальному голосовому чату.
+ </notification>
+ <notification name="VoiceChannelJoinFailed">
+ Не удалось подключиться к [VOICE_CHANNEL_NAME], повторите попытку позже. Будет установлено подключение к локальному голосовому чату.
+ </notification>
+ <notification name="VoiceLoginRetry">
+ Создается голосовой канал для вас. Создание займет не больше минуты.
+ </notification>
+ <notification name="VoiceEffectsExpired">
+ Истек срок действия одного или нескольких типов изменения голоса, на которые вы подписаны.
+[[URL] Щелкните здесь], чтобы обновить подписку.
+ </notification>
+ <notification name="VoiceEffectsExpiredInUse">
+ Истек срок действия активного типа изменения голоса, применены настройки вашего обычного голоса.
+[[URL] Щелкните здесь], чтобы обновить подписку.
+ </notification>
+ <notification name="VoiceEffectsWillExpire">
+ Срок действия одного или нескольких ваших типов изменения голоса истекает через [INTERVAL] дней или раньше.
+[[URL] Щелкните здесь], чтобы обновить подписку.
+ </notification>
+ <notification name="VoiceEffectsNew">
+ Появились новые типы изменения голоса!
+ </notification>
+ <notification name="Cannot enter parcel: not a group member">
+ Эту область могут посещать только участники определенной группы.
+ </notification>
+ <notification name="Cannot enter parcel: banned">
+ Нельзя войти на участок, вы забанены.
+ </notification>
+ <notification name="Cannot enter parcel: not on access list">
+ Нельзя войти на участок, вас нет в списке доступа.
+ </notification>
+ <notification name="VoiceNotAllowed">
+ У вас нет разрешения на подключение к голосовому чату для [VOICE_CHANNEL_NAME].
+ </notification>
+ <notification name="VoiceCallGenericError">
+ Ошибка при попытке подключения к голосовому чату для [VOICE_CHANNEL_NAME]. Повторите попытку позже.
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ Щелчок на неподдерживаемом SLurl.
+ </notification>
+ <notification name="BlockedSLURL">
+ SLurl получен от ненадежного браузера и заблокирован по соображениям безопасности.
+ </notification>
+ <notification name="ThrottledSLURL">
+ Несколько SLurl получены от ненадежного браузера за короткое время.
+Для безопасности они будут заблокированы на несколько секунд.
+ </notification>
+ <notification name="IMToast">
+ [MESSAGE]
+ <form name="form">
+ <button name="respondbutton" text="Ответить"/>
+ </form>
+ </notification>
+ <notification name="ConfirmCloseAll">
+ Вы действительно хотите закрыть все окна IM?
+ <usetemplate ignoretext="Подтверждать перед закрытием всех окон IM" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="AttachmentSaved">
+ Присоединение сохранено.
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ Невозможно найти раздел справки для этого элемента.
+ </notification>
+ <notification name="ObjectMediaFailure">
+ Ошибка сервера: обновление или ошибка медиа.
+«[ERROR]»
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TextChatIsMutedByModerator">
+ Ваш текстовый чат заглушен модератором.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="VoiceIsMutedByModerator">
+ Ваш голос заглушен модератором.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="UploadCostConfirmation">
+ Эта передача будет стоить L$[PRICE]. Продолжить передачу?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Передать"/>
+ </notification>
+ <notification name="ConfirmClearTeleportHistory">
+ Вы действительно хотите удалить свой журнал телепортаций?
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+ </notification>
+ <notification name="BottomTrayButtonCanNotBeShown">
+ Выбранная кнопка не может быть показана сейчас.
+Кнопка появится, когда для нее будет достаточно места.
+ </notification>
+ <notification name="ShareNotification">
+ Выберите жителей, чтобы поделиться с ними.
+ </notification>
+ <notification name="MeshUploadError">
+ Не удалось передать [LABEL]: [MESSAGE] [IDENTIFIER]
+
+Подробности см. в файле журнала.
+ </notification>
+ <notification name="MeshUploadPermError">
+ Ошибка при запросе разрешений на передачу меша.
+ </notification>
+ <notification name="RegionCapabilityRequestError">
+ Не удается получить возможность региона &apos;[CAPABILITY]&apos;.
+ </notification>
+ <notification name="ShareItemsConfirmation">
+ Вы действительно хотите поделиться предметами:
+
+&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
+
+Со следующими жителями:
+
+[RESIDENTS]
+ <usetemplate name="okcancelbuttons" notext="Отмена" yestext="ОК"/>
+ </notification>
+ <notification name="ItemsShared">
+ Предметы успешно розданы.
+ </notification>
+ <notification name="DeedToGroupFail">
+ Передача группе не удалась.
+ </notification>
+ <notification name="ReleaseLandThrottled">
+ Сейчас нельзя отказаться от участка «[PARCEL_NAME]».
+ </notification>
+ <notification name="ReleasedLandWithReclaim">
+ Земельный участок «[PARCEL_NAME]» площадью [AREA] м² освобожден.
+
+У вас есть [RECLAIM_PERIOD] ч, чтобы вернуть его за L$0. После этого участок будет выставлен на свободную продажу.
+ </notification>
+ <notification name="ReleasedLandNoReclaim">
+ Земельный участок «[PARCEL_NAME]» площадью [AREA] м² освобожден.
+
+Теперь его может купить кто угодно.
+ </notification>
+ <notification name="AvatarRezNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» стал виден через [TIME] сек.
+ </notification>
+ <notification name="AvatarRezSelfBakedDoneNotification">
+ ( [EXISTENCE] сек. жизни )
+Вы закончили приготовление своего костюма через [TIME] сек.
+ </notification>
+ <notification name="AvatarRezSelfBakedUpdateNotification">
+ ( [EXISTENCE] сек. жизни )
+Вы отправили обновление своей внешности через [TIME] сек.
+[STATUS]
+ </notification>
+ <notification name="AvatarRezCloudNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» стал облаком.
+ </notification>
+ <notification name="AvatarRezArrivedNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» появился.
+ </notification>
+ <notification name="AvatarRezLeftCloudNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» стал облаком через [TIME] сек.
+ </notification>
+ <notification name="AvatarRezEnteredAppearanceNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» перешел в режим внешности.
+ </notification>
+ <notification name="AvatarRezLeftAppearanceNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» вышел из режима внешности.
+ </notification>
+ <notification name="NoConnect">
+ Возникли проблемы соединения при использовании [PROTOCOL] [HOSTID].
+Проверьте настройки сети и брандмауэра.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="NoVoiceConnect">
+ Возникли проблемы соединения с голосовым сервером:
+
+[HOSTID]
+
+Голосовая связь будет недоступна.
+Проверьте настройки сети и брандмауэра.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AvatarRezLeftNotification">
+ ( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» полностью загружен.
+ </notification>
+ <notification name="AvatarRezSelfBakedTextureUploadNotification">
+ ( [EXISTENCE] сек. жизни )
+Вы передали готовую текстуру [RESOLUTION] для «[BODYREGION]» через [TIME] сек.
+ </notification>
+ <notification name="AvatarRezSelfBakedTextureUpdateNotification">
+ ( [EXISTENCE] сек. жизни )
+Вы локально обновили готовую текстуру [RESOLUTION] для «[BODYREGION]» через [TIME] сек.
+ </notification>
+ <notification name="ConfirmLeaveCall">
+ Действительно покинуть этот разговор?
+ <usetemplate ignoretext="Подтверждать перед выходом из разговора" name="okcancelignore" notext="Нет" yestext="Да"/>
+ </notification>
+ <notification name="ConfirmMuteAll">
+ Вы решили заглушить всех участников группового разговора.
+В результате будут заглушены также все жители, которые присоединились к разговору
+позже, даже после того, как вы покинули разговор.
+
+Заглушить всех?
+ <usetemplate ignoretext="Подтверждать перед заглушением всех участников группового разговора" name="okcancelignore" notext="Отмена" yestext="ОК"/>
+ </notification>
+ <notification label="Чат" name="HintChat">
+ Чтобы присоединиться к чату, введите слова в поле чата ниже.
+ </notification>
+ <notification label="Встать" name="HintSit">
+ Чтобы встать на ноги и покинуть сидячее положение, нажмите кнопку «Встать».
+ </notification>
+ <notification label="Говорить" name="HintSpeak">
+ Нажмите кнопку «Говорить», чтобы включить или выключить микрофон.
+
+Щелкните направленную вверх стрелку, чтобы открыть панель управления голосом.
+
+При скрытии кнопки «Говорить» голосовая функция отключается.
+ </notification>
+ <notification label="Исследование мира" name="HintDestinationGuide">
+ Путеводитель по пунктам назначения содержит тысячи новых мест, в которых вы можете побывать. Выберите место и нажмите кнопку «Телепортация», чтобы начать исследование.
+ </notification>
+ <notification label="Боковая панель" name="HintSidePanel">
+ Быстрый доступ к вашему инвентарю, костюмам, профилю и многому другому открывается на боковой панели.
+ </notification>
+ <notification label="Перемещение" name="HintMove">
+ Чтобы пойти или побежать, откройте панель перемещения и используйте кнопки со стрелками. Также можно нажимать клавиши со стрелками на клавиатуре.
+ </notification>
+ <notification label="" name="HintMoveClick">
+ 1. Щелкните для перехода
+Щелкните какую-нибудь точку на земле, чтобы перейти в это место.
+
+2. Щелкните и перетащите для поворота поля зрения
+Щелкните любую точку в мире и перетащите ее мышью, чтобы повернуть поле зрения.
+ </notification>
+ <notification label="Экранное имя" name="HintDisplayName">
+ Задайте здесь свое экранное имя. Это имя можно изменять, в отличие от вашего уникального имени пользователя. Отображение для вас имен других людей можно изменить в ваших настройках.
+ </notification>
+ <notification label="Камера" name="HintView">
+ Для изменения вида из камеры используйте инструменты «Вращение» и «Сдвиг». При нажатии клавиши Esc или переходе вид из камеры возвращается к исходному состоянию.
+ </notification>
+ <notification label="Инвентарь" name="HintInventory">
+ В вашем инвентаре можно искать разнообразные вещи. Самые новые вещи представлены на вкладке «Недавние».
+ </notification>
+ <notification label="Вы получили Linden-доллары!" name="HintLindenDollar">
+ Вот ваш текущий баланс в L$. Чтобы купить еще Linden-долларов, щелкните «Купить L$».
+ </notification>
+ <notification name="LowMemory">
+ Недостаточный размер пула памяти. Некоторые функции Second Life отключены во избежание сбоя приложения. Закройте другие приложения. Если неполадка не исчезнет, перезапустите SL.
+ </notification>
+ <notification name="ForceQuitDueToLowMemory">
+ Через 30 секунд Second Life завершит работу: нехватка памяти.
+ </notification>
+ <notification name="PopupAttempt">
+ Всплывающее окно нельзя открыть.
+ <form name="form">
+ <ignore name="ignore" text="Разрешить все всплывающие окна"/>
+ <button name="open" text="Открыть всплывающее окно"/>
+ </form>
+ </notification>
+ <notification name="SOCKS_NOT_PERMITTED">
+ Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил попытку подключения; не разрешено набором правил.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_CONNECT_ERROR">
+ Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил попытку подключения; не удалось открыть канал TCP.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_NOT_ACCEPTABLE">
+ Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил выбранную систему проверки подлинности.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_AUTH_FAIL">
+ Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; сообщает, что ваши учетные данные неверны.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_UDP_FWD_NOT_GRANTED">
+ Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил запрос объединения UDP.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_HOST_CONNECT_FAILED">
+ Не удалось подключиться к прокси-серверу SOCKS 5 &quot;[HOST]:[PORT]&quot;.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_UNKNOWN_STATUS">
+ Неизвестная ошибка прокси с сервером &quot;[HOST]:[PORT]&quot;.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_INVALID_HOST">
+ Неверный адрес прокси SOCKS или порт &quot;[HOST]:[PORT]&quot;.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="SOCKS_BAD_CREDS">
+ Неверное имя пользователя или пароль SOCKS 5.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PROXY_INVALID_HTTP_HOST">
+ Неверный адрес прокси HTTP или порт &quot;[HOST]:[PORT]&quot;.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PROXY_INVALID_SOCKS_HOST">
+ Неверный адрес прокси SOCKS или порт &quot;[HOST]:[PORT]&quot;.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ChangeProxySettings">
+ Настройки прокси начнут действовать после перезапуска [APP_NAME].
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AuthRequest">
+ Сайт по адресу «&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;» в царстве «in realm &apos;[REALM]» требует имени пользователя и пароля.
+ <form name="form">
+ <input name="username" text="Имя пользователя"/>
+ <input name="password" text="Пароль"/>
+ <button name="ok" text="Отослать"/>
+ <button name="cancel" text="Отмена"/>
+ </form>
+ </notification>
+ <notification label="" name="NoClassifieds">
+ Создание и редактирование рекламы доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoGroupInfo">
+ Создание и редактирование групп доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoPlaceInfo">
+ Просмотр профиля места доступен только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+ </notification>
+ <notification label="" name="NoPicks">
+ Создание и редактирование подборки доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoWorldMap">
+ Просмотр карты мира доступен только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoVoiceCall">
+ Голосовые вызовы доступны только в расширенном режиме. Выйти из программы и сменить режим?
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoAvatarShare">
+ Общее пользование доступно только в расширенном режиме. Выйти из программы и сменить режим?
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoAvatarPay">
+ Платежи другим жителям доступны только в расширенном режиме. Выйти из программы и сменить режим?
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+ </notification>
+ <notification label="" name="NoInventory">
+ Просмотр инвентаря доступен только в расширенном режиме. Выйти из программы и сменить режим?
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+ </notification>
+ <notification label="" name="NoAppearance">
+ Редактор внешнего вида доступен только в расширенном режиме. Выйти из программы и сменить режим?
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+ </notification>
+ <notification label="" name="NoSearch">
+ Поиск доступен только в расширенном режиме. Выйти из программы и сменить режим?
+ <usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+ </notification>
+ <notification label="" name="ConfirmHideUI">
+ Это действие приведет к скрытию всех меню и кнопок. Чтобы вернуть их, щелкните [SHORTCUT] снова.
+ <usetemplate ignoretext="Подтверждать перед скрытием интерфейса" name="okcancelignore" notext="Отмена" yestext="OK"/>
+ </notification>
+ <global name="UnsupportedGLRequirements">
+ По-видимому, ваше оборудование не удовлетворяет требованиям [APP_NAME]. Для работы [APP_NAME] необходима графическая карта OpenGL с поддержкой мультитекстур. Если у вас есть такая карта, убедитесь, что установлены новейшие версии драйверов для нее и пакеты обновлений и исправления для операционной системы.
+
+Если неполадки продолжаются, посетите сайт [SUPPORT_SITE].
+ </global>
+ <global name="UnsupportedCPUAmount">
+ 796
+ </global>
+ <global name="UnsupportedRAMAmount">
+ 510
+ </global>
+ <global name="UnsupportedGPU">
+ - Графическая карта вашего компьютера не удовлетворяет минимальным требованиям.
+ </global>
+ <global name="UnsupportedRAM">
+ - Системная память вашего компьютера не удовлетворяет минимальным требованиям.
+ </global>
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ Если у вас есть участок земли, вы можете сделать его своим домом (домашним местоположением).
+Если нет, посмотрите на карту и найдите места, подписанные «Инфохаб».
+ </global>
+ <global name="You died and have been teleported to your home location">
+ Вы умерли и были телепортированы в ваше домашнее местоположение.
+ </global>
+</notifications>
diff --git a/indra/newview/skins/default/xui/ru/panel_active_object_row.xml b/indra/newview/skins/default/xui/ru/panel_active_object_row.xml
new file mode 100644
index 0000000000..825f9a6229
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_active_object_row.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+ <text name="object_name">
+ Объект без имени
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml
new file mode 100644
index 0000000000..ae2240593d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <layout_stack name="vertical_stack">
+ <layout_panel name="call_btn_panel">
+ <button label="Звонок" name="call_btn"/>
+ </layout_panel>
+ <layout_panel name="end_call_btn_panel">
+ <button label="Прервать звонок" name="end_call_btn"/>
+ </layout_panel>
+ <layout_panel name="voice_ctrls_btn_panel">
+ <button label="Управление голосом" name="voice_ctrls_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
new file mode 100644
index 0000000000..75e396222f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+ <string name="FormatSeconds">
+ [COUNT] с
+ </string>
+ <string name="FormatMinutes">
+ [COUNT] мин
+ </string>
+ <string name="FormatHours">
+ [COUNT] ч
+ </string>
+ <string name="FormatDays">
+ [COUNT] д
+ </string>
+ <string name="FormatWeeks">
+ [COUNT] нед
+ </string>
+ <string name="FormatMonths">
+ [COUNT] мес
+ </string>
+ <string name="FormatYears">
+ [COUNT] г
+ </string>
+ <text name="avatar_name" value="(загрузка)"/>
+ <text name="last_interaction" value="0 с"/>
+ <icon name="permission_edit_theirs_icon" tool_tip="Вы можете изменять объекты этого друга"/>
+ <icon name="permission_edit_mine_icon" tool_tip="Этот друг может изменять, удалять или брать ваши объекты"/>
+ <icon name="permission_map_icon" tool_tip="Этот друг может видеть вас на карте"/>
+ <icon name="permission_online_icon" tool_tip="Этот друг может видеть ваш статус в сети"/>
+ <button name="profile_btn" tool_tip="Смотреть профиль"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml
new file mode 100644
index 0000000000..03c164affd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_tag_notification">
+ <panel name="msg_caption">
+ <text name="sender_tag_name">
+ Тестер Анжела
+ </text>
+ <text name="tag_time" value="23:30"/>
+ </panel>
+ <text_editor name="msg_text">
+ Шустрый бурый лис перепрыгивает через ленивого пса.
+ </text_editor>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
new file mode 100644
index 0000000000..214ca8bf3a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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">
+ Черный список
+ </text>
+ <scroll_list name="blocked" tool_tip="Список заблокированных жителей"/>
+ <button label="Заблокировать жителя" name="Block resident..." tool_tip="Выберите жителя для блокировки"/>
+ <button label="Блокировать объект по имени" name="Block object by name..." tool_tip="Выберите объект для блокировки по имени"/>
+ <button label="Разблокировать" name="Unblock" tool_tip="Удалить объект или жителя из списка заблокированных"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml
new file mode 100644
index 0000000000..20a99500b6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+ <text name="item_name" value="..."/>
+ <panel name="btn_lock" tool_tip="У вас нет прав для изменения"/>
+ <panel name="btn_edit_panel">
+ <button name="btn_edit" tool_tip="Изменить фигуру"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml
new file mode 100644
index 0000000000..f7d31813f9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+ <button label="Перейти" name="switch_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_bottomtray.xml b/indra/newview/skins/default/xui/ru/panel_bottomtray.xml
new file mode 100644
index 0000000000..ebf6c4264b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_bottomtray.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+ <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
+ <string name="SpeakBtnToolTip" value="Включить/выключить микрофон"/>
+ <string name="VoiceControlBtnToolTip" value="Показать/скрыть панель управления голосом"/>
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="speak_panel">
+ <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>
+ <layout_panel name="movement_panel">
+ <bottomtray_button label="Перемещение" name="movement_btn" tool_tip="Показать/скрыть панель управления движением"/>
+ </layout_panel>
+ <layout_panel name="cam_panel">
+ <bottomtray_button label="Камера" name="camera_btn" tool_tip="Показать/скрыть управление камерой"/>
+ </layout_panel>
+ <layout_panel name="snapshot_panel">
+ <bottomtray_button name="snapshots" tool_tip="Сделать снимок"/>
+ </layout_panel>
+ <layout_panel name="build_btn_panel">
+ <bottomtray_button label="Строительство" name="build_btn" tool_tip="Показать/скрыть инструменты"/>
+ </layout_panel>
+ <layout_panel name="search_btn_panel">
+ <bottomtray_button label="Поиск" name="search_btn" tool_tip="Показать/скрыть поиск"/>
+ </layout_panel>
+ <layout_panel name="world_map_btn_panel">
+ <bottomtray_button label="Карта" name="world_map_btn" tool_tip="Показать/скрыть карту мира"/>
+ </layout_panel>
+ <layout_panel name="mini_map_btn_panel">
+ <bottomtray_button label="Миникарта" name="mini_map_btn" tool_tip="Показать/скрыть миникарту"/>
+ </layout_panel>
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Общение"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Уведомления"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000..bcdff112c5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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/ru/panel_chat_header.xml b/indra/newview/skins/default/xui/ru/panel_chat_header.xml
new file mode 100644
index 0000000000..7916bf5155
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_chat_header.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_header" name="im_header">
+ <text name="time_box" value="23:30"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..f203ecde4b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Разговоры"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Уведомления"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_classified_info.xml b/indra/newview/skins/default/xui/ru/panel_classified_info.xml
new file mode 100644
index 0000000000..c7fd0ad42f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_classified_info.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+ <panel.string name="type_mature">
+ Moderate-контент
+ </panel.string>
+ <panel.string name="type_pg">
+ General-контент
+ </panel.string>
+ <panel.string name="l$_price">
+ L$[PRICE]
+ </panel.string>
+ <panel.string name="click_through_text_fmt">
+ Телепорт [TELEPORT], карта [MAP], профиль [PROFILE]
+ </panel.string>
+ <panel.string name="date_fmt">
+ [day,datetime,slt].[mthnum,datetime,slt].[year,datetime,slt]
+ </panel.string>
+ <panel.string name="auto_renew_on">
+ Включено
+ </panel.string>
+ <panel.string name="auto_renew_off">
+ Выключено
+ </panel.string>
+ <text name="title" value="Информация о рекламе"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text_editor name="classified_name" value="[название]"/>
+ <text name="classified_location_label" value="Место:"/>
+ <text_editor name="classified_location" value="[загрузка...]"/>
+ <text name="content_type_label" value="Тип контента:"/>
+ <text_editor name="content_type" value="[тип контента]"/>
+ <text name="category_label" value="Категория:"/>
+ <text_editor name="category" value="[категория]"/>
+ <text name="creation_date_label" value="Дата создания:"/>
+ <text_editor name="creation_date" tool_tip="Дата создания" value="[дата]"/>
+ <text name="price_for_listing_label" value="Стоимость размещения:"/>
+ <text_editor name="price_for_listing" tool_tip="Стоимость размещения." value="[цена]"/>
+ <layout_stack name="descr_stack">
+ <layout_panel name="clickthrough_layout_panel">
+ <text name="click_through_label" value="Переходы:"/>
+ <text_editor name="click_through_text" tool_tip="Информация о переходах" value="[переходы]"/>
+ </layout_panel>
+ <layout_panel name="price_layout_panel">
+ <text name="auto_renew_label" value="Автооплата:"/>
+ <text name="auto_renew" value="Включено"/>
+ </layout_panel>
+ <layout_panel name="descr_layout_panel">
+ <text name="classified_desc_label" value="Описание:"/>
+ <text_editor name="classified_desc" value="[описание]"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <layout_stack name="layout_stack1">
+ <layout_panel name="layout_panel1">
+ <button label="Телепортация" name="teleport_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Карта" name="show_on_map_btn"/>
+ </layout_panel>
+ <layout_panel name="edit_btn_lp">
+ <button label="Изменить" name="edit_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml
new file mode 100644
index 0000000000..cc3f7feb83
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+ <button label="Добавить +" name="add_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml
new file mode 100644
index 0000000000..98d4fd8b47
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+ <button name="btn_delete" tool_tip="Убрать из костюма"/>
+ <text name="item_name" value="..."/>
+ <panel name="btn_lock" tool_tip="У вас нет прав для изменения"/>
+ <panel name="btn_edit_panel">
+ <button name="btn_edit" tool_tip="Изменить предметы одежды"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml
new file mode 100644
index 0000000000..9e1bc4b5c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="cof_wearables">
+ <accordion name="cof_wearables_accordion">
+ <accordion_tab name="tab_clothing" title="Одежда"/>
+ <accordion_tab name="tab_attachments" title="Присоединения"/>
+ <accordion_tab name="tab_body_parts" title="Части тела"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml
new file mode 100644
index 0000000000..762baa2052
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="deletable_wearable_item">
+ <button name="btn_delete" tool_tip="Убрать из костюма"/>
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml
new file mode 100644
index 0000000000..dc9d678edd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="dummy_clothing_item">
+ <text name="item_name" value="..."/>
+ <panel name="btn_add_panel">
+ <button name="btn_add" tool_tip="Добавить другие вещи этого типа"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml
new file mode 100644
index 0000000000..7cde4099ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+ <scroll_container name="avatar_alpha_color_panel_scroll">
+ <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="Альфа глаз" name="Eye Alpha" tool_tip="Щелкните для выбора изображения"/>
+ <texture_picker label="Альфа волос" name="Hair Alpha" tool_tip="Щелкните для выбора изображения"/>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_classified.xml b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml
new file mode 100644
index 0000000000..a2f06dbadf
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Изменить рекламу" name="panel_edit_classified">
+ <panel.string name="location_notice">
+ (будет обновлено после сохранения)
+ </panel.string>
+ <string name="publish_label">
+ Опубликовать
+ </string>
+ <string name="save_label">
+ Сохранить
+ </string>
+ <text name="title">
+ Изменить рекламу
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="snapshot_panel">
+ <icon label="" name="edit_icon" tool_tip="Щелкните для выбора изображения"/>
+ </panel>
+ <text name="Name:">
+ Название:
+ </text>
+ <text name="description_label">
+ Описание:
+ </text>
+ <text name="location_label">
+ Место:
+ </text>
+ <text name="classified_location">
+ загрузка...
+ </text>
+ <button label="Использовать текущее место" name="set_to_curr_location_btn"/>
+ <text name="category_label" value="Категория:"/>
+ <text name="content_type_label" value="Тип контента:"/>
+ <icons_combo_box label="General-контент" name="content_type">
+ <icons_combo_box.item label="Moderate-контент" name="mature_ci" value="Mature-контент"/>
+ <icons_combo_box.item label="General-контент" name="pg_ci" value="PG-контент"/>
+ </icons_combo_box>
+ <check_box label="Автоматическая оплата каждую неделю" name="auto_renew"/>
+ <text name="price_for_listing_label" value="Стоимость размещения:"/>
+ <spinner label="L$" name="price_for_listing" tool_tip="Стоимость размещения." value="50"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <layout_stack name="bottom_panel_ls">
+ <layout_panel name="save_changes_btn_lp">
+ <button label="[LABEL]" name="save_changes_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Отмена" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml
new file mode 100644
index 0000000000..84e1204b5d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+ <panel name="avatar_eye_color_panel">
+ <texture_picker label="Радужка" name="Iris" tool_tip="Щелкните для выбора изображения"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="eyes_main_tab" title="Глаза"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml
new file mode 100644
index 0000000000..561777745e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+ <panel name="avatar_gloves_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="gloves_main_tab" title="Перчатки"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_hair.xml b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml
new file mode 100644
index 0000000000..d5e67ddf87
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+ <panel name="avatar_hair_color_panel">
+ <texture_picker label="Текстура" name="Texture" tool_tip="Щелкните для выбора изображения"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="hair_color_tab" title="Цвет"/>
+ <accordion_tab name="hair_style_tab" title="Стиль"/>
+ <accordion_tab name="hair_eyebrows_tab" title="Брови"/>
+ <accordion_tab name="hair_facial_tab" title="Волосы на лице"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml
new file mode 100644
index 0000000000..2f5a437e69
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+ <panel name="avatar_jacket_color_panel">
+ <texture_picker label="Текстура верха" name="Upper Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <texture_picker label="Текстура низа" name="Lower Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="jacket_main_tab" title="Пиджак"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pants.xml b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml
new file mode 100644
index 0000000000..4970c93801
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+ <panel name="avatar_pants_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="pants_main_tab" title="Брюки"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_physics.xml b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml
new file mode 100644
index 0000000000..da4ebb154d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_physics_panel">
+ <panel label="" name="accordion_panel">
+ <accordion name="physics_accordion">
+ <accordion_tab name="physics_breasts_updown_tab" title="Груди прыгают"/>
+ <accordion_tab name="physics_breasts_inout_tab" title="Ложбинка между грудей"/>
+ <accordion_tab name="physics_breasts_leftright_tab" title="Груди покачиваются"/>
+ <accordion_tab name="physics_belly_tab" title="Живот прыгает"/>
+ <accordion_tab name="physics_butt_tab" title="Ягодицы прыгают"/>
+ <accordion_tab name="physics_butt_leftright_tab" title="Ягодицы покачиваются"/>
+ <accordion_tab name="physics_advanced_tab" title="Дополнительные параметры"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pick.xml b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml
new file mode 100644
index 0000000000..6be1448ac5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Изменить подборку" name="panel_edit_pick">
+ <panel.string name="location_notice">
+ (будет обновлено после сохранения)
+ </panel.string>
+ <text name="title">
+ Изменить подборку
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Щелкните для выбора изображения"/>
+ <text name="Name:">
+ Название:
+ </text>
+ <text name="description_label">
+ Описание:
+ </text>
+ <text name="location_label">
+ Место:
+ </text>
+ <text name="pick_location">
+ загрузка…
+ </text>
+ <button label="Поставить текущее место" name="set_to_curr_location_btn"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <layout_stack name="layout_stack1">
+ <layout_panel name="layout_panel1">
+ <button label="Сохранить подборку" name="save_changes_btn"/>
+ </layout_panel>
+ <layout_panel name="layout_panel2">
+ <button label="Отмена" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_profile.xml b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml
new file mode 100644
index 0000000000..e9a6a781db
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Редактирование профиля" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE]
+[PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <string name="AcctTypeResident" value="Житель"/>
+ <string name="AcctTypeTrial" value="Гость"/>
+ <string name="AcctTypeCharterMember" value="Учредитель"/>
+ <string name="AcctTypeEmployee" value="Сотрудник Linden Lab"/>
+ <string name="PaymentInfoUsed" value="Использована информация о платежах"/>
+ <string name="PaymentInfoOnFile" value="Зарегистрирована информация о платежах"/>
+ <string name="NoPaymentInfoOnFile" value="Не зарегистрирована информация о платежах"/>
+ <string name="AgeVerified" value="Возраст проверен"/>
+ <string name="NotAgeVerified" value="Возраст не проверен"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=en
+ </string>
+ <string name="my_account_link_url">
+ http://secondlife.com/my
+ </string>
+ <string name="no_partner_text" value="Нет"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <text name="display_name_label" value="Экранное имя:"/>
+ <text name="solo_username_label" value="Имя пользователя:"/>
+ <button name="set_name" tool_tip="Задать экранное имя"/>
+ <text name="user_label" value="Имя пользователя:"/>
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/>
+ </panel>
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Щелкните для выбора изображения"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="real_world_photo_title_text" value="Реальный мир:"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="Щелкните для выбора изображения"/>
+ <text name="title_homepage_text">
+ Домашняя страница:
+ </text>
+ <line_editor name="homepage_edit" value="http://"/>
+ <text name="title_acc_status_text" value="Мой аккаунт:"/>
+ <text_editor name="acc_status_text" value="Житель. В файле нет информации о платежах."/>
+ <text name="my_account_link" value="[[URL] Перейти на информационную панель]"/>
+ <text name="title_partner_text" value="Мой партнер:"/>
+ <panel name="partner_data_panel">
+ <text initial_value="(получение информации)" name="partner_text"/>
+ </panel>
+ <text name="partner_edit_link" value="[[URL] Редактировать]"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <layout_stack name="bottom_panel_ls">
+ <layout_panel name="save_changes_btn_lp">
+ <button label="Сохранить изменения" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Отмена" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shape.xml b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml
new file mode 100644
index 0000000000..312ad593a1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+ <string name="meters">
+ м
+ </string>
+ <string name="feet">
+ футов
+ </string>
+ <string name="height">
+ Рост:
+ </string>
+ <panel label="Рубашка" name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shape_body_tab" title="Тело"/>
+ <accordion_tab name="shape_head_tab" title="Голова"/>
+ <accordion_tab name="shape_eyes_tab" title="Глаза"/>
+ <accordion_tab name="shape_ears_tab" title="Уши"/>
+ <accordion_tab name="shape_nose_tab" title="Нос"/>
+ <accordion_tab name="shape_mouth_tab" title="Рот"/>
+ <accordion_tab name="shape_chin_tab" title="Подбородок"/>
+ <accordion_tab name="shape_torso_tab" title="Торс"/>
+ <accordion_tab name="shape_legs_tab" title="Ноги"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml
new file mode 100644
index 0000000000..d576a2cd2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+ <panel name="avatar_shirt_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shirt_main_tab" title="Рубашка"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml
new file mode 100644
index 0000000000..f6d7029108
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+ <panel name="avatar_shoes_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shoes_main_tab" title="Обувь"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skin.xml b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml
new file mode 100644
index 0000000000..ac7e74316e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+ <panel name="avatar_skin_color_panel">
+ <texture_picker label="Тату на голове" name="Head Tattoos" tool_tip="Щелкните для выбора изображения"/>
+ <texture_picker label="Тату на верхних частях тела" name="Upper Tattoos" tool_tip="Щелкните для выбора изображения"/>
+ <texture_picker label="Тату на нижних частях тела" name="Lower Tattoos" tool_tip="Щелкните для выбора изображения"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skin_color_tab" title="Цвет кожи"/>
+ <accordion_tab name="skin_face_tab" title="Особенности лица"/>
+ <accordion_tab name="skin_makeup_tab" title="Макияж"/>
+ <accordion_tab name="skin_body_tab" title="Особенности тела"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml
new file mode 100644
index 0000000000..909946e577
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+ <panel name="avatar_skirt_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skirt_main_tab" title="Юбка"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_socks.xml b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml
new file mode 100644
index 0000000000..2827fbc028
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+ <panel name="avatar_socks_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="socks_main_tab" title="Носки"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml
new file mode 100644
index 0000000000..874d5f8bc4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml
@@ -0,0 +1,9 @@
+<?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="Щелкните картинку, чтобы выбрать ее"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml
new file mode 100644
index 0000000000..f2f6e5e516
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+ <panel name="avatar_underpants_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="underpants_main_tab" title="Трусы"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml
new file mode 100644
index 0000000000..6f84c6cec2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+ <panel name="avatar_undershirt_color_panel">
+ <texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+ <color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="undershirt_main_tab" title="Майка"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml
new file mode 100644
index 0000000000..79130a9c80
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Можно надеть" name="panel_edit_wearable">
+ <string name="edit_shape_title">
+ Изменение фигуры
+ </string>
+ <string name="edit_skin_title">
+ Изменение кожи
+ </string>
+ <string name="edit_hair_title">
+ Изменение волос
+ </string>
+ <string name="edit_eyes_title">
+ Изменение глаз
+ </string>
+ <string name="edit_shirt_title">
+ Изменение рубашки
+ </string>
+ <string name="edit_pants_title">
+ Изменение брюк
+ </string>
+ <string name="edit_shoes_title">
+ Изменение обуви
+ </string>
+ <string name="edit_socks_title">
+ Изменение носков
+ </string>
+ <string name="edit_jacket_title">
+ Изменение пиджака
+ </string>
+ <string name="edit_skirt_title">
+ Изменение юбки
+ </string>
+ <string name="edit_gloves_title">
+ Изменение перчаток
+ </string>
+ <string name="edit_undershirt_title">
+ Изменение майки
+ </string>
+ <string name="edit_underpants_title">
+ Изменение трусов
+ </string>
+ <string name="edit_alpha_title">
+ Изменение альфа-маски
+ </string>
+ <string name="edit_tattoo_title">
+ Изменение тату
+ </string>
+ <string name="edit_physics_title">
+ Изменение физики
+ </string>
+ <string name="shape_desc_text">
+ Фигура:
+ </string>
+ <string name="skin_desc_text">
+ Кожа:
+ </string>
+ <string name="hair_desc_text">
+ Волосы:
+ </string>
+ <string name="eyes_desc_text">
+ Глаза:
+ </string>
+ <string name="shirt_desc_text">
+ Рубашка:
+ </string>
+ <string name="pants_desc_text">
+ Брюки:
+ </string>
+ <string name="shoes_desc_text">
+ Обувь:
+ </string>
+ <string name="socks_desc_text">
+ Носки:
+ </string>
+ <string name="jacket_desc_text">
+ Пиджак:
+ </string>
+ <string name="skirt_desc_text">
+ Юбка:
+ </string>
+ <string name="gloves_desc_text">
+ Перчатки:
+ </string>
+ <string name="undershirt_desc_text">
+ Майка:
+ </string>
+ <string name="underpants_desc_text">
+ Трусы:
+ </string>
+ <string name="alpha_desc_text">
+ Альфа-маска:
+ </string>
+ <string name="tattoo_desc_text">
+ Тату:
+ </string>
+ <string name="physics_desc_text">
+ Физика:
+ </string>
+ <labeled_back_button label="Сохранить" name="back_btn" tool_tip="Вернуться к изменению костюма"/>
+ <text name="edit_wearable_title" value="Изменение фигуры"/>
+ <panel label="Рубашка" name="wearable_type_panel">
+ <text name="description_text" value="Фигура:"/>
+ <radio_group name="sex_radio">
+ <radio_item label="" name="sex_male" tool_tip="Мужчина" value="1"/>
+ <radio_item label="" name="sex_female" tool_tip="Женщина" value="0"/>
+ </radio_group>
+ <icon name="male_icon" tool_tip="Мужчина"/>
+ <icon name="female_icon" tool_tip="Женщина"/>
+ </panel>
+ <panel name="button_panel">
+ <layout_stack name="button_panel_ls">
+ <layout_panel name="save_as_btn_lp">
+ <button label="Сохранить как" name="save_as_button"/>
+ </layout_panel>
+ <layout_panel name="revert_btn_lp">
+ <button label="Отменить изменения" name="revert_button"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml
new file mode 100644
index 0000000000..2e6f3502b6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <layout_stack name="vertical_stack">
+ <layout_panel name="group_info_btn_panel">
+ <button label="Профиль группы" name="group_info_btn"/>
+ </layout_panel>
+ <layout_panel name="call_btn_panel">
+ <button label="Звонок группе" name="call_btn"/>
+ </layout_panel>
+ <layout_panel name="end_call_btn_panel">
+ <button label="Прервать звонок" name="end_call_btn"/>
+ </layout_panel>
+ <layout_panel name="voice_ctrls_btn_panel">
+ <button label="Открыть голосовое управление" name="voice_ctrls_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_general.xml b/indra/newview/skins/default/xui/ru/panel_group_general.xml
new file mode 100644
index 0000000000..4d7e1c9fff
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_general.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Общие" name="general_tab">
+ <panel.string name="help_text">
+ Вкладка «Общие» содержит общие сведения о данной группе, список участников, общие настройки группы и параметры участников.
+Чтобы получить справку, наведите курсор мыши на параметр.
+ </panel.string>
+ <panel.string name="group_info_unchanged">
+ Общая информация о группе изменена
+ </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>
+ <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">
+ <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="Новые участники должны будут оплатить взнос, если регистрация платная."/>
+ <combo_box name="group_mature_check" tool_tip="Устанавливает, содержит ли группа информацию категории умеренной дозволенности">
+ <combo_item name="select_mature">
+ - Выберите рейтинг зрелости -
+ </combo_item>
+ <combo_box.item label="Умеренный контент" name="mature"/>
+ <combo_box.item label="Общий контент" name="pg"/>
+ </combo_box>
+ <check_box initial_value="истина" label="Показать в поиске" name="show_in_group_list" tool_tip="Позволить людям видеть эту группу в результатах поиска"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml
new file mode 100644
index 0000000000..d8cf1b4756
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml
@@ -0,0 +1,41 @@
+<?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">
+ Вы хотите сохранить эти изменения?
+ </panel.string>
+ <panel.string name="group_join_btn">
+ Присоединиться (L$[AMOUNT])
+ </panel.string>
+ <panel.string name="group_join_free">
+ Бесплатно
+ </panel.string>
+ <panel name="group_info_top">
+ <text_editor 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_stack>
+ <layout_stack name="button_row_ls">
+ <layout_panel name="btn_chat_lp">
+ <button label="Чат" name="btn_chat"/>
+ </layout_panel>
+ <layout_panel name="call_btn_lp">
+ <button label="Звонок группе" name="btn_call" tool_tip="Звонок этой группе"/>
+ </layout_panel>
+ <layout_panel name="btn_apply_lp">
+ <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/ru/panel_group_invite.xml b/indra/newview/skins/default/xui/ru/panel_group_invite.xml
new file mode 100644
index 0000000000..3041046041
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_invite.xml
@@ -0,0 +1,27 @@
+<?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">
+ (загрузка…)
+ </panel.string>
+ <panel.string name="already_in_group">
+ Несколько выбранных жителей уже состоят в группе. Им приглашения не были отправлены.
+ </panel.string>
+ <text name="help_text">
+ Можно выбрать несколько жителей для приглашения в группу. Чтобы начать, щелкните «Выбрать жителей».
+ </text>
+ <button label="Выбрать жителей" name="add_button"/>
+ <name_list name="invitee_list" tool_tip="Чтобы выбрать несколько жителей, нажмите и удерживайте клавишу CTRL, а затем щелкните их имена"/>
+ <button label="Удалить выбранных из списка" name="remove_button" tool_tip="Удаление выбранных жителей из списка приглашенных"/>
+ <text name="role_text">
+ Выберите назначаемую им роль:
+ </text>
+ <combo_box name="role_name" tool_tip="Выберите в списке роли, которые вы можете назначать участникам"/>
+ <button label="Отправить приглашения" name="ok_button"/>
+ <button label="Отмена" name="cancel_button"/>
+ <string name="GroupInvitation">
+ Групповое приглашение
+ </string>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_land_money.xml b/indra/newview/skins/default/xui/ru/panel_group_land_money.xml
new file mode 100644
index 0000000000..9235aa2f69
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_land_money.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Земля и L$" name="land_money_tab">
+ <panel.string name="help_text">
+ Если общее количество использованной земли не превышает общий взнос, отобразится предупреждение.
+ </panel.string>
+ <panel.string name="cant_view_group_land_text">
+ У вас нет прав для просмотра принадлежащей группе земли
+ </panel.string>
+ <panel.string name="epmty_view_group_land_text">
+ Нет данных
+ </panel.string>
+ <panel.string name="cant_view_group_accounting_text">
+ У вас нет прав для просмотра информации о счетах группы.
+ </panel.string>
+ <panel.string name="loading_txt">
+ Загрузка...
+ </panel.string>
+ <panel.string name="land_contrib_error">
+ Не удается задать ваш земельный взнос
+ </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.columns label="Скрыто" name="hidden"/>
+ </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">
+ Загрузка...
+ </text_editor>
+ </panel>
+ <panel label="ДАННЫЕ" name="group_money_details_tab">
+ <text_editor name="group_money_details_text">
+ Загрузка...
+ </text_editor>
+ <button name="earlier_details_button" tool_tip="Назад"/>
+ <button name="later_details_button" tool_tip="Далее"/>
+ </panel>
+ <panel label="ПРОДАЖИ" name="group_money_sales_tab">
+ <text_editor name="group_money_sales_text">
+ Загрузка...
+ </text_editor>
+ <button name="earlier_sales_button" tool_tip="Назад"/>
+ <button name="later_sales_button" tool_tip="Далее"/>
+ </panel>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
new file mode 100644
index 0000000000..7f000fb5a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+ <text name="group_name" value="Неизвестно"/>
+ <button name="profile_btn" tool_tip="Смотреть профиль"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_notices.xml b/indra/newview/skins/default/xui/ru/panel_group_notices.xml
new file mode 100644
index 0000000000..8d20c4a96b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_notices.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Уведомления" name="notices_tab">
+ <panel.string name="help_text">
+ Уведомления позволяют отправлять сообщения и вложенные объекты.
+Уведомления получают только участники групп с ролями, которые дают право на получение уведомлений.
+Вы можете отключить получение уведомлений на вкладке «Общие».
+ </panel.string>
+ <panel.string name="no_notices_text">
+ Нет старых уведомлений
+ </panel.string>
+ <text name="lbl2">
+ Уведомления хранятся 14 дней.
+Максимум 200 уведомлений ежедневно
+ </text>
+ <scroll_list name="notice_list">
+ <scroll_list.columns label="Тема" name="subject"/>
+ <scroll_list.columns label="От кого" name="from"/>
+ <scroll_list.columns label="Дата" name="date"/>
+ </scroll_list>
+ <text name="notice_list_none_found">
+ Не найдено
+ </text>
+ <button label="Новое уведомление" name="create_new_notice" tool_tip="Создать уведомление"/>
+ <button name="refresh_notices" tool_tip="Обновить список уведомлений"/>
+ <panel label="Создать уведомление" name="panel_create_new_notice">
+ <text name="lbl">
+ Создать уведомление
+ </text>
+ <text name="lbl3">
+ Тема:
+ </text>
+ <text name="lbl4">
+ Сообщение:
+ </text>
+ <text name="lbl5">
+ Вложение:
+ </text>
+ <text name="string">
+ Перетащите сюда предмет, чтобы вложить его:
+ </text>
+ <button label="Инвентарь" name="open_inventory" tool_tip="Открыть инвентарь"/>
+ <button name="remove_attachment" tool_tip="Удалить вложение из уведомления"/>
+ <button label="Послать" label_selected="Послать" name="send_notice"/>
+ <group_drop_target name="drop_target" tool_tip="Перетащите из инвентаря на эту панель предмет, чтобы отправить его вместе с сообщением. У вас должно быть разрешение на копирование и передачу этого предмета."/>
+ </panel>
+ <panel label="Смотреть старые уведомления" name="panel_view_past_notice">
+ <text name="lbl">
+ Архивные уведомления
+ </text>
+ <text name="lbl2">
+ Чтобы послать новое уведомление, нажмите кнопку +
+ </text>
+ <text name="lbl3">
+ Тема:
+ </text>
+ <text name="lbl4">
+ Сообщение:
+ </text>
+ <button label="Открыть вложение" name="open_attachment"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_notify.xml b/indra/newview/skins/default/xui/ru/panel_group_notify.xml
new file mode 100644
index 0000000000..1aee7a7f61
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_notify.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+ <string name="message_max_lines_count" value="7"/>
+ <string name="subject_font" value="SANSSERIF_BIG"/>
+ <string name="date_font" value="SANSSERIF"/>
+ <panel label="заголовок" name="header">
+ <text name="title" value="Имя отправителя/название группы"/>
+ </panel>
+ <text_editor name="message" value="сообщение"/>
+ <text name="attachment" value="Вложение"/>
+ <button label="ОК" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_roles.xml b/indra/newview/skins/default/xui/ru/panel_group_roles.xml
new file mode 100644
index 0000000000..c57f21679f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_roles.xml
@@ -0,0 +1,95 @@
+<?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">
+ Хотите сохранить изменения?
+ </panel.string>
+ <tab_container name="roles_tab_container">
+ <panel label="УЧАСТНИКИ" name="members_sub_tab" tool_tip="Участники">
+ <panel.string name="help_text">
+ Можно добавлять или удалять роли, назначенные участникам.
+Чтобы выбрать несколько участников, удерживайте клавишу CTRL и
+щелкайте нужные имена.
+ </panel.string>
+ <panel.string name="donation_area">
+ [AREA] м²
+ </panel.string>
+ <filter_editor label="Фильтр участников" name="filter_input"/>
+ <name_list name="member_list">
+ <name_list.columns label="Участник" name="name"/>
+ <name_list.columns label="Вклад" name="donated"/>
+ <name_list.columns label="Статус" name="online"/>
+ </name_list>
+ <button label="Пригласить" name="member_invite"/>
+ <button label="Выкинуть" name="member_eject"/>
+ </panel>
+ <panel label="РОЛИ" name="roles_sub_tab">
+ <panel.string name="help_text">
+ У ролей есть название и список способностей,
+доступных участникам. У участников может быть
+одна или несколько ролей. У группы может быть до 10 ролей,
+в том числе роли «Все» и «Владелец».
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ Роли «Все» и «Владелец» являются особыми и не могут быть удалены.
+ </panel.string>
+ <filter_editor label="Фильтр ролей" name="filter_input"/>
+ <scroll_list name="role_list">
+ <scroll_list.columns label="Роль" name="name"/>
+ <scroll_list.columns label="Название" name="title"/>
+ <scroll_list.columns label="#" name="members"/>
+ </scroll_list>
+ <button label="Создать роль" name="role_create"/>
+ <button label="Удалить роль" name="role_delete"/>
+ </panel>
+ <panel label="СПОСОБНОСТИ" name="actions_sub_tab" tool_tip="Можно просмотреть описание способности, а также какие участники и роли ею обладают.">
+ <panel.string name="help_text">
+ Способности позволяют участникам, которым назначены соответствующие роли, выполнять особые
+действия в группе. Имеется широкий выбор способностей.
+ </panel.string>
+ <filter_editor label="Фильтр способностей" name="filter_input"/>
+ <scroll_list name="action_list" tool_tip="Выберите способность, чтобы просмотреть данные о ней"/>
+ </panel>
+ </tab_container>
+ <panel name="members_footer">
+ <text name="static">
+ Назначенные роли
+ </text>
+ <text name="static2">
+ Доступные способности
+ </text>
+ <scroll_list name="member_allowed_actions" tool_tip="Данные о каждой доступной способности см. на вкладке «Способности»"/>
+ </panel>
+ <panel name="roles_footer">
+ <text name="static">
+ Имя роли
+ </text>
+ <text name="static3">
+ Название роли
+ </text>
+ <text name="static2">
+ Описание
+ </text>
+ <text name="static4">
+ Назначенные участники
+ </text>
+ <check_box label="Показывать участников" name="role_visible_in_list" tool_tip="Определяет, будут ли участники этой роли видны на вкладке «Основные» жителям, которые не входят в группу."/>
+ <text name="static5">
+ Доступные способности
+ </text>
+ <scroll_list name="role_allowed_actions" tool_tip="Данные о каждой доступной способности см. на вкладке «Способности»"/>
+ </panel>
+ <panel name="actions_footer">
+ <text_editor name="action_description">
+ Это способность «Исключать участников из группы». Владельца может исключить только другой владелец.
+ </text_editor>
+ <text name="static2">
+ Роли с этой способностью
+ </text>
+ <text name="static3">
+ Участники с этой способностью
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml
new file mode 100644
index 0000000000..2a23cdb800
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <layout_stack name="button_stack">
+ <layout_panel name="view_profile_btn_panel">
+ <button label="Профиль" name="view_profile_btn"/>
+ </layout_panel>
+ <layout_panel name="add_friend_btn_panel">
+ <button label="Добавить в друзья" name="add_friend_btn"/>
+ </layout_panel>
+ <layout_panel name="teleport_btn_panel">
+ <button label="Телепортация" name="teleport_btn" tool_tip="Предложить телепортацию этому жителю"/>
+ </layout_panel>
+ <layout_panel name="share_btn_panel">
+ <button label="Поделиться" name="share_btn"/>
+ </layout_panel>
+ <layout_panel name="pay_btn_panel">
+ <button label="Заплатить" name="pay_btn"/>
+ </layout_panel>
+ <layout_panel name="call_btn_panel">
+ <button label="Звонок" name="call_btn"/>
+ </layout_panel>
+ <layout_panel name="end_call_btn_panel">
+ <button label="Завершить звонок" name="end_call_btn"/>
+ </layout_panel>
+ <layout_panel name="voice_ctrls_btn_panel">
+ <button label="Управление голосом" name="voice_ctrls_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_instant_message.xml b/indra/newview/skins/default/xui/ru/panel_instant_message.xml
new file mode 100644
index 0000000000..cf9bc7fccb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_instant_message.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_panel" name="im_panel">
+ <string name="message_max_lines_count">
+ 6
+ </string>
+ <panel label="im_header" name="im_header">
+ <text name="time_box" value="23:30"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_inventory_item.xml b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml
new file mode 100644
index 0000000000..d18047fbcf
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="inventory_item">
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
new file mode 100644
index 0000000000..f4febd49cd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+ <string name="title_create_landmark" value="Создать закладку"/>
+ <string name="title_edit_landmark" value="Изменить закладку"/>
+ <string name="title_landmark" value="Закладка"/>
+ <string name="not_available" value="(неизвестно)"/>
+ <string name="unknown" value="(неизвестно)"/>
+ <string name="public" value="(публичное)"/>
+ <string name="server_update_text">
+ Необходимо обновление сервера, чтобы информация стала доступна.
+ </string>
+ <string name="server_error_text">
+ Информация об этом месте сейчас недоступна. Повторите попытку позже.
+ </string>
+ <string name="server_forbidden_text">
+ Информация об этом месте недоступна, поскольку у вас нет прав на ее просмотр. Узнайте о своих правах, связавшись с владельцем участка.
+ </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>
+ <button name="back_btn" tool_tip="Назад"/>
+ <text name="title" value="Профиль места"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="region_title" value="Образец_региона"/>
+ <text name="parcel_title" value="Пример участка, длина имени (145, 228, 26)"/>
+ <expandable_text name="description" value="Du waltz die spritz"/>
+ <text name="maturity_value" value="неизвестно"/>
+ <panel name="landmark_info_panel">
+ <text name="owner_label" value="Владелец:"/>
+ <text name="creator_label" value="Создатель:"/>
+ <text name="created_label" value="Создано:"/>
+ </panel>
+ <panel name="landmark_edit_panel">
+ <text name="title_label" value="Название:"/>
+ <text name="notes_label" value="Мои заметки:"/>
+ <text name="folder_label" value="Расположение закладки:"/>
+ </panel>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_landmarks.xml b/indra/newview/skins/default/xui/ru/panel_landmarks.xml
new file mode 100644
index 0000000000..7d684cd479
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_landmarks.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+ <accordion name="landmarks_accordion">
+ <accordion_tab name="tab_favorites" title="Избранное"/>
+ <accordion_tab name="tab_landmarks" title="Мои закладки"/>
+ <accordion_tab name="tab_inventory" title="Мой инвентарь"/>
+ <accordion_tab name="tab_library" title="Библиотека"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Добавить новую закладку"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="trash_btn" tool_tip="Удалить выбранную закладку"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_login.xml b/indra/newview/skins/default/xui/ru/panel_login.xml
new file mode 100644
index 0000000000..7928191fa6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_login.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <panel.string name="create_account_url">
+ http://join.secondlife.com/
+ </panel.string>
+ <panel.string name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </panel.string>
+ <layout_stack name="login_widgets">
+ <layout_panel name="login">
+ <text name="username_text">
+ Имя пользователя:
+ </text>
+ <combo_box name="username_combo" tool_tip="Имя пользователя, которое вы выбрали при регистрации, например, «bobsmith12» или «Steller Sunshine»"/>
+ <text name="password_text">
+ Пароль:
+ </text>
+ <check_box label="Запомнить пароль" name="remember_check"/>
+ <button label="Войти" name="connect_btn"/>
+ <text name="mode_selection_text">
+ Режим:
+ </text>
+ <combo_box name="mode_combo" tool_tip="Выберите режим. Основной – для быстрого и простого ознакомления с игрой, а также общения. Расширенный – для доступа к более широким возможностям.">
+ <combo_box.item label="Основной" name="Basic"/>
+ <combo_box.item label="Расширенный" name="Advanced"/>
+ </combo_box>
+ <text name="start_location_text">
+ Место старта:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Последнее местоположение" name="MyLastLocation"/>
+ <combo_box.item label="Мой дом" name="MyHome"/>
+ <combo_box.item label="&lt;Введите название региона&gt;" name="Typeregionname"/>
+ </combo_box>
+ </layout_panel>
+ <layout_panel name="links">
+ <text name="create_new_account_text">
+ Регистрация
+ </text>
+ <text name="forgot_password_text">
+ Забыли имя или пароль?
+ </text>
+ <text name="login_help">
+ Нужна помощь при входе?
+ </text>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_main_inventory.xml b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml
new file mode 100644
index 0000000000..80a67371af
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Вещи" name="main inventory panel">
+ <panel.string name="ItemcountFetching">
+ Обнаружено [ITEM_COUNT] вещей... [FILTER]
+ </panel.string>
+ <panel.string name="ItemcountCompleted">
+ [ITEM_COUNT] вещей [FILTER]
+ </panel.string>
+ <text name="ItemcountText">
+ Вещи:
+ </text>
+ <filter_editor label="Фильтр для инвентаря" name="inventory search editor"/>
+ <tab_container name="inventory filter tabs">
+ <inventory_panel label="МОЙ ИНВЕНТАРЬ" name="All Items"/>
+ <recent_inventory_panel label="НЕДАВНИЕ" name="Recent Items"/>
+ </tab_container>
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Добавить новую вещь"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="trash_btn" tool_tip="Удалить выбранную вещь"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_me.xml b/indra/newview/skins/default/xui/ru/panel_me.xml
new file mode 100644
index 0000000000..21a125af87
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_me.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Мой профиль" name="panel_me">
+ <panel label="МОЯ ПОДБОРКА" name="panel_picks"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
new file mode 100644
index 0000000000..6dc435db20
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Общие" name="Media Settings General">
+ <text name="home_label">
+ Домашняя страница:
+ </text>
+ <text name="home_fails_whitelist_label">
+ (Эта страница не определена в белом списке)
+ </text>
+ <line_editor name="home_url" tool_tip="Домашняя страница для этого медиа-источника"/>
+ <text name="preview_label">
+ Предварительный просмотр
+ </text>
+ <text name="current_url_label">
+ Текущая страница:
+ </text>
+ <text name="current_url" tool_tip="Текущая страница для этого медиа-источника" value=""/>
+ <button label="Сброс" name="current_url_reset_btn"/>
+ <check_box initial_value="ложь" label="Автоматическое зацикливание" name="auto_loop"/>
+ <check_box initial_value="ложь" label="Реакция на первый щелчок" name="first_click_interact"/>
+ <check_box initial_value="ложь" label="Автоувеличение" name="auto_zoom"/>
+ <check_box initial_value="ложь" label="Автоматическое проигрывание" name="auto_play"/>
+ <text name="media_setting_note">
+ Примечание. Жители могут переопределять эту настройку.
+ </text>
+ <check_box initial_value="ложь" label="Автомасштабирование на объекте" name="auto_scale"/>
+ <text name="size_label">
+ Размер:
+ </text>
+ <text name="X_label">
+ X
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
new file mode 100644
index 0000000000..680cba9c14
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Настроить" name="Media settings for controls">
+ <text name="controls_label">
+ Элементы управления:
+ </text>
+ <combo_box name="controls">
+ <combo_item name="Standard">
+ Стандарт
+ </combo_item>
+ <combo_item name="Mini">
+ Минимум
+ </combo_item>
+ </combo_box>
+ <text name="owner_label">
+ Владелец
+ </text>
+ <check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_owner_interact"/>
+ <check_box initial_value="ложь" label="Панель управления видна" name="perms_owner_control"/>
+ <text name="group_label">
+ Группа:
+ </text>
+ <check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_group_interact"/>
+ <check_box initial_value="ложь" label="Панель управления видна" name="perms_group_control"/>
+ <text name="anyone_label">
+ всем
+ </text>
+ <check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_anyone_interact"/>
+ <check_box initial_value="ложь" label="Панель управления видна" name="perms_anyone_control"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
new file mode 100644
index 0000000000..6b30dc799c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Безопасность" name="Media Settings Security">
+ <check_box initial_value="ложь" label="Разрешить доступ к ссылкам только по шаблону" 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/ru/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
new file mode 100644
index 0000000000..5e3de180f9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Вернуться в предыдущее место"/>
+ <pull_button name="forward_btn" tool_tip="Перейти в следующее место"/>
+ <button name="home_btn" tool_tip="Телепортация домой"/>
+ <location_input label="Место" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
+ <label name="favorites_bar_label" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
+ Избранное
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Показать больше избранного">
+ Больше ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
new file mode 100644
index 0000000000..1d26eecf87
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Перевод чата" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
new file mode 100644
index 0000000000..804ba7def7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <line_editor label="Щелкните здесь для общения" name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
+ <button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_media.xml b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml
new file mode 100644
index 0000000000..3b23fc78f5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml
@@ -0,0 +1,70 @@
+<?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_btn" tool_tip="Дополнительное управление"/>
+ </panel>
+ <panel name="nearby_media_panel">
+ <text name="nearby_media_title">
+ Ближайшее медиа
+ </text>
+ <text name="show_text">
+ Показать:
+ </text>
+ <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.item label="На других аватарах" name="OnOthers"/>
+ </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 name="media_controls_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/ru/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
new file mode 100644
index 0000000000..1ac88a01b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_notify_textbox">
+ <string name="message_max_lines_count" value="7"/>
+ <panel label="info_panel" name="info_panel">
+ <text_editor name="message" value="сообщение"/>
+ </panel>
+ <panel label="control_panel" name="control_panel">
+ <button label="Отослать" name="btn_submit"/>
+ <button label="Игнорировать" name="ignore_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml b/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml
new file mode 100644
index 0000000000..fdc489f375
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_online_status_toast.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/ru/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml
new file mode 100644
index 0000000000..0095d48af9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<outbox_inventory_panel name="inventory_outbox" tool_tip="Перетащите вещи сюда, чтобы подготовить их для размещения на витрине вашего магазина"/>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml
new file mode 100644
index 0000000000..91c03342a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray Outfit Edit panel -->
+<panel name="outfit_edit">
+ <string name="No Outfit" value="Нет костюма"/>
+ <string name="unsaved_changes" value="Несохраненные изменения"/>
+ <string name="now_editing" value="Сейчас редактируется"/>
+ <panel.string name="not_available">
+ (нет)
+ </panel.string>
+ <panel.string name="unknown">
+ (неизвестно)
+ </panel.string>
+ <string name="Filter.All" value="Все"/>
+ <string name="Filter.Clothes/Body" value="Одежда/тело"/>
+ <string name="Filter.Objects" value="Объекты"/>
+ <string name="Filter.Clothing" value="Одежда"/>
+ <string name="Filter.Bodyparts" value="Части тела"/>
+ <string name="replace_body_part" value="Щелкните для замены текущей фигуры"/>
+ <text name="title" value="Изменить костюм"/>
+ <panel name="header_panel">
+ <panel name="outfit_name_and_status">
+ <text name="status" value="Сейчас редактируется…"/>
+ <text name="curr_outfit_name" value="[Текущий костюм]"/>
+ </panel>
+ </panel>
+ <layout_stack name="im_panels">
+ <layout_panel name="outfit_wearables_panel">
+ <layout_stack name="filter_panels">
+ <layout_panel name="add_button_and_combobox">
+ <button label="Добавить…" name="show_add_wearables_btn" tool_tip="Открыть/закрыть"/>
+ </layout_panel>
+ <layout_panel name="filter_panel">
+ <filter_editor label="Фильтр для носимого инвентаря" name="look_item_filter"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="add_wearables_panel">
+ <button label="Носимая вещь" name="plus_btn"/>
+ </layout_panel>
+ </layout_stack>
+ <panel name="no_add_wearables_button_bar">
+ <button name="shop_btn_1" tool_tip="Посетите магазин Second Life. Также можно выбрать предмет надетой одежды и щелкнуть здесь, чтобы найти что-то похожее"/>
+ </panel>
+ <panel name="add_wearables_button_bar">
+ <button name="shop_btn_2" tool_tip="Посетите магазин Second Life. Также можно выбрать предмет надетой одежды и щелкнуть здесь, чтобы найти что-то похожее"/>
+ </panel>
+ <panel name="save_revert_button_bar">
+ <layout_stack name="button_bar_ls">
+ <layout_panel name="save_btn_lp">
+ <button label="Сохранить" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="revert_btn_lp">
+ <button label="Отменить изменения" name="revert_btn" tool_tip="Вернуться к последней сохраненной версии"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml
new file mode 100644
index 0000000000..4d0e13fca2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Вещи" name="Outfits">
+ <panel.string name="wear_outfit_tooltip">
+ Надеть выбранный костюм
+ </panel.string>
+ <panel.string name="wear_items_tooltip">
+ Надеть выбранные вещи
+ </panel.string>
+ <tab_container name="appearance_tabs">
+ <panel label="МОИ КОСТЮМЫ" name="outfitslist_tab"/>
+ <panel label="НАДЕТО" name="cof_tab"/>
+ </tab_container>
+ <panel name="bottom_panel">
+ <layout_stack name="bottom_panel_ls">
+ <layout_panel name="save_btn_lp">
+ <button label="Сохранить как" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="wear_btn_lp">
+ <button label="Надеть" name="wear_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml
new file mode 100644
index 0000000000..96f4b4a893
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+ <menu_item_call label="Сменить текущий костюм" name="wear"/>
+ <menu_item_call label="Убрать из текущего костюма" name="remove"/>
+ <menu_item_call label="Переименовать" name="rename"/>
+ <menu_item_call label="Удалить ссылку" name="remove_link"/>
+ <menu_item_call label="Удалить костюм" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_list.xml b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml
new file mode 100644
index 0000000000..74551e4274
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+ <accordion name="outfits_accordion">
+ <no_matched_tabs_text name="no_matched_outfits_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/all/[SEARCH_TERM] поиском]."/>
+ <no_visible_tabs_text name="no_outfits_msg" value="У вас пока нет никаких костюмов. Воспользуйтесь [secondlife:///app/search/all/ поиском]."/>
+ </accordion>
+ <panel name="bottom_panel">
+ <menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/>
+ <button name="trash_btn" tool_tip="Удалить выбранный костюм"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml
new file mode 100644
index 0000000000..7ed6bf35c0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Wearing">
+ <panel name="bottom_panel">
+ <menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml
new file mode 100644
index 0000000000..607921f2d6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_people.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="Люди" name="people_panel">
+ <string name="no_recent_people" value="Нет людей, говоривших недавно. Ищете, с кем пообщаться? Воспользуйтесь [secondlife:///app/search/people поиском] или [secondlife:///app/worldmap картой мира]."/>
+ <string name="no_filtered_recent_people" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском]."/>
+ <string name="no_one_near" value="Никого нет рядом. Ищете, с кем пообщаться? Воспользуйтесь [secondlife:///app/search/people поиском] или [secondlife:///app/worldmap картой мира]."/>
+ <string name="no_one_filtered_near" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском]."/>
+ <string name="no_friends_online" value="Нет друзей онлайн"/>
+ <string name="no_friends" value="Нет друзей"/>
+ <string name="no_friends_msg">
+ Найдите друзей с помощью [secondlife:///app/search/people поиска] или добавьте жителей в друзья с помощью правой кнопки мыши.
+Ищете, с кем пообщаться? Воспользуйтесь [secondlife:///app/worldmap картой мира].
+ </string>
+ <string name="no_filtered_friends_msg">
+ Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском].
+ </string>
+ <string name="people_filter_label" value="Фильтр для людей"/>
+ <string name="groups_filter_label" value="Фильтр для групп"/>
+ <string name="no_filtered_groups_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/groups/[SEARCH_TERM] поиском]."/>
+ <string name="no_groups_msg" value="Ищете группу, чтобы присоединиться к ней? Воспользуйтесь [secondlife:///app/search/groups поиском]."/>
+ <string name="MiniMapToolTipMsg" value="[REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)"/>
+ <string name="AltMiniMapToolTipMsg" value="[REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)"/>
+ <filter_editor label="Фильтр" name="filter_input"/>
+ <tab_container name="tabs">
+ <panel label="РЯДОМ" name="nearby_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="nearby_view_sort_btn" tool_tip="Опции"/>
+ <button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+ </panel>
+ </panel>
+ <panel label="МОИ ДРУЗЬЯ" name="friends_panel">
+ <accordion name="friends_accordion">
+ <accordion_tab name="tab_online" title="Онлайн"/>
+ <accordion_tab name="tab_all" title="Все"/>
+ </accordion>
+ <panel label="bottom_panel" name="bottom_panel">
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <menu_button name="friends_viewsort_btn" tool_tip="Показать дополнительные параметры"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Предложить жителю дружбу"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="del_btn" tool_tip="Удалить выбранного жителя из списка друзей"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+ <panel label="МОИ ГРУППЫ" name="groups_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="groups_viewsort_btn" tool_tip="Опции"/>
+ <button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
+ <button name="activate_btn" tool_tip="Активировать выбранную группу"/>
+ </panel>
+ </panel>
+ <panel label="НЕДАВНИЕ" name="recent_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="recent_viewsort_btn" tool_tip="Опции"/>
+ <button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+ </panel>
+ </panel>
+ </tab_container>
+ <panel name="button_bar">
+ <layout_stack name="bottom_bar_ls">
+ <layout_panel name="view_profile_btn_lp">
+ <button label="Профиль" name="view_profile_btn" tool_tip="Показать изображение, группы и прочую информацию о жителе"/>
+ </layout_panel>
+ <layout_panel name="im_btn_lp">
+ <button label="IM" name="im_btn" tool_tip="Начать сеанс IM"/>
+ </layout_panel>
+ <layout_panel name="call_btn_lp">
+ <button label="Звонок" name="call_btn" tool_tip="Позвонить этому жителю"/>
+ </layout_panel>
+ <layout_panel name="share_btn_lp">
+ <button label="Поделиться" name="share_btn" tool_tip="Поделиться объектом из инвентаря"/>
+ </layout_panel>
+ <layout_panel name="teleport_btn_lp">
+ <button label="Телепортация" name="teleport_btn" tool_tip="Предложить телепортацию"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_ls1">
+ <layout_panel name="group_info_btn_lp">
+ <button label="Профиль группы" name="group_info_btn" tool_tip="Показать информацию о группе"/>
+ </layout_panel>
+ <layout_panel name="chat_btn_lp">
+ <button label="Групповой чат" name="chat_btn" tool_tip="Открыть сеанс чата"/>
+ </layout_panel>
+ <layout_panel name="group_call_btn_lp">
+ <button label="Звонок группе" name="group_call_btn" tool_tip="Позвонить этой группе"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_pick_info.xml b/indra/newview/skins/default/xui/ru/panel_pick_info.xml
new file mode 100644
index 0000000000..373cf211fb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_pick_info.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="О подборке"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text_editor name="pick_name" value="[название]"/>
+ <text_editor name="pick_location" value="[загрузка...]"/>
+ <text_editor name="pick_desc" value="[описание]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <layout_stack name="layout_stack1">
+ <layout_panel name="layout_panel1">
+ <button label="Телепорт" name="teleport_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Карта" name="show_on_map_btn"/>
+ </layout_panel>
+ <layout_panel name="edit_btn_lp">
+ <button label="Изменить" name="edit_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_picks.xml b/indra/newview/skins/default/xui/ru/panel_picks.xml
new file mode 100644
index 0000000000..d6770e0eeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_picks.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Подборка" name="panel_picks">
+ <string name="no_picks" value="Нет подборки"/>
+ <string name="no_classifieds" value="Нет рекламы"/>
+ <accordion name="accordion">
+ <accordion_tab name="tab_picks" title="Подборка"/>
+ <accordion_tab name="tab_classifieds" title="Реклама"/>
+ </accordion>
+ <panel label="bottom_panel" name="edit_panel">
+ <layout_stack name="edit_panel_ls">
+ <layout_panel name="gear_menu_btn">
+ <button name="new_btn" tool_tip="Создать подборку или рекламу на этом месте"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ <panel name="buttons_cucks">
+ <layout_stack name="buttons_cucks_ls">
+ <layout_panel name="info_btn_lp">
+ <button label="Данные" name="info_btn" tool_tip="Показать данные о подборке"/>
+ </layout_panel>
+ <layout_panel name="teleport_btn_lp">
+ <button label="Телепортироваться" name="teleport_btn" tool_tip="Телепортация в соответствующую область"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Карта" name="show_on_map_btn" tool_tip="Показать соответствующую область на карте мира"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_place_profile.xml b/indra/newview/skins/default/xui/ru/panel_place_profile.xml
new file mode 100644
index 0000000000..b486b918ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_place_profile.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+ <string name="on" value="Вкл."/>
+ <string name="off" value="Выкл."/>
+ <string name="anyone" value="Все"/>
+ <string name="available" value="доступно"/>
+ <string name="allocated" value="расположено"/>
+ <string name="title_place" value="Профиль места"/>
+ <string name="title_teleport_history" value="История телепортов"/>
+ <string name="not_available" value="(нет)"/>
+ <string name="unknown" value="(неизвестно)"/>
+ <string name="public" value="(публичное)"/>
+ <string name="none_text" value="(нет)"/>
+ <string name="sale_pending_text" value="(Ожидание продажи)"/>
+ <string name="group_owned_text" value="(Собственность группы)"/>
+ <string name="price_text" value="L$"/>
+ <string name="area_text" value="м²"/>
+ <string name="all_residents_text" value="Все жители"/>
+ <string name="group_text" value="Группа"/>
+ <string name="can_resell">
+ Приобретенная в этом регионе земля может быть перепродана.
+ </string>
+ <string name="can_not_resell">
+ Приобретенная в этом регионе земля не может быть перепродана.
+ </string>
+ <string name="can_change">
+ Приобретенная в этом регионе земля может быть объединена или разделена.
+ </string>
+ <string name="can_not_change">
+ Приобретенная в этом регионе земля не может быть объединена или разделена.
+ </string>
+ <string name="server_update_text">
+ Информация о месте недоступна без обновления сервера.
+ </string>
+ <string name="server_error_text">
+ Информация об этом месте сейчас недоступна. Повторите попытку позже.
+ </string>
+ <string name="server_forbidden_text">
+ Информация об этом месте недоступна из-за ограничений доступа. Согласуйте свой уровень доступа с владельцем участка.
+ </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>
+ <button name="back_btn" tool_tip="Назад"/>
+ <text name="title" value="Профиль места"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="region_title" value="Образец_региона"/>
+ <text name="parcel_title" value="Образец_участка, название Long (145, 228, 26)"/>
+ <expandable_text name="description" value="Du waltz die spritz"/>
+ <text name="owner_label" value="Владелец:"/>
+ <text name="owner_value" value="Алексей Сверхдлинноеимянов"/>
+ <text name="maturity_value" value="неизвестен"/>
+ <accordion name="advanced_info_accordion">
+ <accordion_tab name="parcel_characteristics_tab" title="Участок">
+ <panel name="parcel_characteristics_panel">
+ <text name="rating_label" value="Рейтинг:"/>
+ <text name="rating_value" value="неизвестен"/>
+ <text name="voice_label" value="Голос:"/>
+ <text name="voice_value" value="Вкл."/>
+ <text name="fly_label" value="Полет:"/>
+ <text name="fly_value" value="Вкл."/>
+ <text name="push_label" value="Толкание:"/>
+ <text name="push_value" value="Выкл."/>
+ <text name="build_label" value="Строительство:"/>
+ <text name="build_value" value="Вкл."/>
+ <text name="scripts_label" value="Скрипты:"/>
+ <text name="scripts_value" value="Вкл."/>
+ <text name="damage_label" value="Повреждения:"/>
+ <text name="damage_value" value="Выкл."/>
+ <text name="see_avatars_label" value="Видеть аватары:"/>
+ <text name="see_avatars_value" value="Выкл."/>
+ <button label="О земле" name="about_land_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="region_information_tab" title="Регион">
+ <panel name="region_information_panel">
+ <text name="region_name_label" value="Регион:"/>
+ <text name="region_name" value="Лососево"/>
+ <text name="region_type_label" value="Тип:"/>
+ <text name="region_type" value="Лосось"/>
+ <text name="region_rating_label" value="Рейтинг:"/>
+ <text name="region_rating" value="Взрослый"/>
+ <text name="region_owner_label" value="Владелец:"/>
+ <text name="region_owner" value="лосось Ван Лосось очень длинное имя лосось"/>
+ <text name="region_group_label" value="Группа:"/>
+ <text name="region_group">
+ Крепкий лосось из Лососево под Усть-Лососинском
+ </text>
+ <button label="Регион/землевладение" name="region_info_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="estate_information_tab" title="Землевладение">
+ <panel name="estate_information_panel">
+ <text name="estate_name_label" value="Землевладение:"/>
+ <text name="estate_rating_label" value="Рейтинг:"/>
+ <text name="estate_owner_label" value="Владелец:"/>
+ <text name="estate_owner" value="Длина имени владельца теста (длинное имя)"/>
+ <text name="covenant_label" value="Соглашение:"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="sales_tab" title="Для продажи">
+ <panel name="sales_panel">
+ <text name="sales_price_label" value="Цена:"/>
+ <text name="area_label" value="Площадь:"/>
+ <text name="traffic_label" value="Посещаемость:"/>
+ <text name="primitives_label" value="Примитивы:"/>
+ <text name="parcel_scripts_label" value="Скрипты:"/>
+ <text name="terraform_limits_label" value="Терраформирование:"/>
+ <text name="subdivide_label" value="Способность разделения/объединения:"/>
+ <text name="resale_label" value="Способность перепродажи:"/>
+ <text name="sale_to_label" value="Продажа для:"/>
+ </panel>
+ </accordion_tab>
+ </accordion>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_places.xml b/indra/newview/skins/default/xui/ru/panel_places.xml
new file mode 100644
index 0000000000..54837d3c0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_places.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Места" name="places panel">
+ <string name="landmarks_tab_title" value="МОИ ЗАКЛАДКИ"/>
+ <string name="teleport_history_tab_title" value="ИСТОРИЯ ТЕЛЕПОРТАЦИЙ"/>
+ <filter_editor label="Фильтр для закладок" name="Filter"/>
+ <panel name="button_panel">
+ <layout_stack name="bottom_bar_ls0">
+ <layout_panel name="lp1">
+ <layout_stack name="bottom_bar_ls1">
+ <layout_panel name="teleport_btn_lp">
+ <button label="Телепортация" name="teleport_btn" tool_tip="Телепортироваться в выбранную область"/>
+ </layout_panel>
+ <layout_panel name="chat_btn_lp">
+ <button label="Карта" name="map_btn" tool_tip="Показать соответствующую область на карте мира"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="lp2">
+ <layout_stack name="bottom_bar_ls3">
+ <layout_panel name="edit_btn_lp">
+ <button label="Изменить" name="edit_btn" tool_tip="Редактировать информацию о закладке"/>
+ </layout_panel>
+ <layout_panel name="overflow_btn_lp">
+ <menu_button name="overflow_btn" tool_tip="Показать дополнительные параметры"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_profile_ls">
+ <layout_panel name="profile_btn_lp">
+ <button label="Профиль" name="profile_btn" tool_tip="Показать профиль места"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_close_ls3">
+ <layout_panel name="close_btn_lp">
+ <button label="Закрыть" name="close_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_ls2">
+ <layout_panel name="save_btn_lp">
+ <button label="Сохранить" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="cancel_btn_lp">
+ <button label="Отмена" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml
new file mode 100644
index 0000000000..7d8ee96924
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Дополнительно" name="advanced">
+ <panel.string name="aspect_ratio_text">
+ [NUM]:[DEN]
+ </panel.string>
+ <text name="Cache:">
+ Кэш:
+ </text>
+ <spinner label="Размер кэша (64 - 9984 МБ)" name="cachesizespinner"/>
+ <text name="text_box5">
+ МБ
+ </text>
+ <button label="Очистить кэш" label_selected="Очистить кэш" name="clear_cache"/>
+ <text name="Cache location">
+ Расположение кэша:
+ </text>
+ <button label="Обзор" label_selected="Обзор" name="set_cache"/>
+ <button label="Расположение по умолчанию" label_selected="Расположение по умолчанию" name="default_cache_location"/>
+ <text name="UI Size:">
+ Интерфейс:
+ </text>
+ <check_box label="Показывать ошибки скрипта в:" name="show_script_errors"/>
+ <radio_group name="show_location">
+ <radio_item label="локальном чате" name="0"/>
+ <radio_item label="отдельном окне" name="1"/>
+ </radio_group>
+ <check_box label="Разрешить работу нескольких клиентов" name="allow_multiple_viewer_check"/>
+ <check_box label="Выбор сетки при входе" name="show_grid_selection_check"/>
+ <check_box label="Показывать расширенное меню" name="show_advanced_menu_check"/>
+ <check_box label="Показывать меню разработчика" name="show_develop_menu_check"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml
new file mode 100644
index 0000000000..9d7ae546fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Всплывающие окна" name="popups">
+ <text name="tell_me_label">
+ Сообщать мне:
+ </text>
+ <check_box label="о расходах и доходах" name="notify_money_change_checkbox"/>
+ <check_box label="о входе и выходе моих друзей" name="friends_online_notify_checkbox"/>
+ <text name="show_label">
+ Всегда показывать:
+ </text>
+ <text name="dont_show_label">
+ Никогда не показывать:
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
new file mode 100644
index 0000000000..a3ee5b7815
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Текстовый чат" name="chat">
+ <text name="font_size">
+ Размер шрифта:
+ </text>
+ <radio_group name="chat_font_size">
+ <radio_item label="Мелкий" name="radio" value="0"/>
+ <radio_item label="Средний" name="radio2" value="1"/>
+ <radio_item label="Крупный" name="radio3" value="2"/>
+ </radio_group>
+ <check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
+ <check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
+ <check_box label="Вести журнал текстового IM и чата" name="plain_text_chat_history"/>
+ <check_box label="Чат в пузырьках" name="bubble_text_chat"/>
+ <text name="show_ims_in_label">
+ Показывать сообщения:
+ </text>
+ <text name="requires_restart_label">
+ (требуется перезапуск)
+ </text>
+ <radio_group name="chat_window" tool_tip="Показывать IM-сообщения в отдельных окнах или же в одном окне с несколькими вкладками (требуется перезапуск)">
+ <radio_item label="В отдельных окнах" name="radio" value="0"/>
+ <radio_item label="На вкладках" name="radio2" value="1"/>
+ </radio_group>
+ <text name="disable_toast_label">
+ Включить всплывающие сообщения с новыми репликами в чате:
+ </text>
+ <check_box label="Групповой чат" name="EnableGroupChatPopups" tool_tip="Отображать всплывающие уведомления при появлении сообщений в групповом чате"/>
+ <check_box label="Текстовые чаты" name="EnableIMChatPopups" tool_tip="Отображать всплывающие уведомления при получении IM-сообщений"/>
+ <spinner label="Время отображения всплывающих реплик:" name="nearby_toasts_lifetime"/>
+ <spinner label="Время затухания всплывающих реплик:" name="nearby_toasts_fadingtime"/>
+ <text name="translate_chb_label">
+ Использовать машинный перевод при общении
+ </text>
+ <text name="translate_language_text">
+ Переводить чат на:
+ </text>
+ <combo_box name="translate_language_combobox">
+ <combo_box.item label="Язык системы" name="System Default Language"/>
+ <combo_box.item label="English" name="English"/>
+ <combo_box.item label="Dansk" name="Danish"/>
+ <combo_box.item label="Deutsch" name="German"/>
+ <combo_box.item label="Español" name="Spanish"/>
+ <combo_box.item label="Français" name="French"/>
+ <combo_box.item label="Italiano" name="Italian"/>
+ <combo_box.item label="Magyar" name="Hungarian"/>
+ <combo_box.item label="Nederlands" name="Dutch"/>
+ <combo_box.item label="Polski" name="Polish"/>
+ <combo_box.item label="Português" name="Portugese"/>
+ <combo_box.item label="Русский" name="Russian"/>
+ <combo_box.item label="Türkçe" name="Turkish"/>
+ <combo_box.item label="Українська" name="Ukrainian"/>
+ <combo_box.item label="中文 (简体) (китайский)" name="Chinese"/>
+ <combo_box.item label="日本語 (Japanese)" name="Japanese"/>
+ <combo_box.item label="한국어 (Korean)" name="Korean"/>
+ </combo_box>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
new file mode 100644
index 0000000000..48c34fcbb2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Цвета" name="colors_panel">
+ <text name="effects_color_textbox">
+ Мои эффекты (луч выбора):
+ </text>
+ <color_swatch name="effect_color_swatch" tool_tip="Щелкните для выбора цвета"/>
+ <text name="font_colors">
+ Цвета шрифтов чата:
+ </text>
+ <text name="text_box1">
+ Я
+ </text>
+ <text name="text_box2">
+ Другие
+ </text>
+ <text name="text_box3">
+ Объекты
+ </text>
+ <text name="text_box4">
+ Система
+ </text>
+ <text name="text_box5">
+ Ошибки
+ </text>
+ <text name="text_box10">
+ Прямо
+ </text>
+ <text name="text_box7">
+ Владелец
+ </text>
+ <text name="text_box9">
+ URL-адреса
+ </text>
+ <text name="bubble_chat">
+ Цвет фона тегов имен (также для чата в пузырьках):
+ </text>
+ <color_swatch name="background" tool_tip="Выберите цвет для тегов имен"/>
+ <slider label="Видимость:" name="bubble_chat_opacity" tool_tip="Задайте непрозрачность тегов имен"/>
+ <text name="floater_opacity">
+ Непрозрачность окон:
+ </text>
+ <slider label="Активные:" name="active"/>
+ <slider label="Неактивные:" name="inactive"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
new file mode 100644
index 0000000000..49f743a6ba
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Общие" name="general_panel">
+ <text name="language_textbox">
+ Язык:
+ </text>
+ <combo_box name="language_combobox">
+ <combo_box.item label="Язык системы" name="System Default Language"/>
+ <combo_box.item label="English - Английский" name="English"/>
+ <combo_box.item label="Dansk – датский (бета-версия)" name="Danish"/>
+ <combo_box.item label="Deutsch – немецкий (бета-версия)" name="Deutsch(German)"/>
+ <combo_box.item label="Español – испанский (бета-версия)" name="Spanish"/>
+ <combo_box.item label="Français – французский (бета-версия)" name="French"/>
+ <combo_box.item label="Italiano – итальянский (бета-версия)" name="Italian"/>
+ <combo_box.item label="Polski – польский (бета-версия)" name="Polish"/>
+ <combo_box.item label="Português – португальский (бета-версия)" name="Portugese"/>
+ <combo_box.item label="Русский (бета-версия)" name="Russian"/>
+ <combo_box.item label="Türkçe - турецкий (бета-версия)" name="Turkish"/>
+ <combo_box.item label="日本語 – японский (бета-версия)" name="(Japanese)"/>
+ <combo_box.item label="正體中文 - китайский, традиционное письмо (бета-версия)" name="Traditional Chinese"/>
+ </combo_box>
+ <text name="language_textbox2">
+ (Требуется перезапуск)
+ </text>
+ <text name="maturity_desired_prompt">
+ Показывать контент:
+ </text>
+ <combo_box name="maturity_desired_combobox">
+ <combo_box.item label="Общий, умеренный, для взрослых" name="Desired_Adult"/>
+ <combo_box.item label="Общий и умеренный" name="Desired_Mature"/>
+ <combo_box.item label="Общий" name="Desired_PG"/>
+ </combo_box>
+ <text name="start_location_textbox">
+ Место старта:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Мое последнее место" name="MyLastLocation"/>
+ <combo_box.item label="Мой дом" name="MyHome"/>
+ </combo_box>
+ <check_box initial_value="истина" label="Показывать на экране входа" name="show_location_checkbox"/>
+ <text name="name_tags_textbox">
+ Теги имен:
+ </text>
+ <radio_group name="Name_Tag_Preference">
+ <radio_item label="Выкл." name="radio" value="0"/>
+ <radio_item label="Вкл." name="radio2" value="1"/>
+ <radio_item label="Временный показ" name="radio3" value="2"/>
+ </radio_group>
+ <check_box label="Мое имя" name="show_my_name_checkbox1"/>
+ <check_box label="Имена пользователей" name="show_slids" tool_tip="Показывать имя пользователя, например, bobsmith123"/>
+ <check_box label="Титулы групп" name="show_all_title_checkbox1" tool_tip="Показывать титулы групп, например, Officer или Member"/>
+ <check_box label="Подсветка друзей" name="show_friends" tool_tip="Подсвечивать теги имен ваших друзей"/>
+ <check_box label="Экранные имена" name="display_names_check" tool_tip="Показывать экранные имена в чате, IM, тегах имен и пр."/>
+ <text name="inworld_typing_rg_label">
+ Нажатие клавиш с буквами:
+ </text>
+ <radio_group name="inworld_typing_preference">
+ <radio_item label="Начинает локальный чат" name="radio_start_chat" value="1"/>
+ <radio_item label="Приводит к перемещению (т. е. WASD)" name="radio_move" value="0"/>
+ </radio_group>
+ <text name="title_afk_text">
+ Задержка режима «Отошел»:
+ </text>
+ <combo_box label="Задержка режима «Отошел»:" name="afk">
+ <combo_box.item label="2 мин" name="item0"/>
+ <combo_box.item label="5 мин" name="item1"/>
+ <combo_box.item label="10 мин" name="item2"/>
+ <combo_box.item label="30 мин" name="item3"/>
+ <combo_box.item label="никогда" name="item4"/>
+ </combo_box>
+ <text name="text_box3">
+ Ответ в режиме «Занят»:
+ </text>
+ <text_editor name="busy_response">
+ log_in_to_change
+ </text_editor>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
new file mode 100644
index 0000000000..a7e826f5fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Графика" name="Display panel">
+ <text name="QualitySpeed">
+ Качество и скорость:
+ </text>
+ <text name="FasterText">
+ Быстрее
+ </text>
+ <text name="BetterText">
+ Качественней
+ </text>
+ <text name="ShadersPrefText">
+ Низко
+ </text>
+ <text name="ShadersPrefText2">
+ Средне
+ </text>
+ <text name="ShadersPrefText3">
+ Высоко
+ </text>
+ <text name="ShadersPrefText4">
+ Ультра
+ </text>
+ <panel label="Выбор графики" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Шейдеры:
+ </text>
+ <check_box initial_value="истина" label="Прозрачность воды" name="TransparentWater"/>
+ <check_box initial_value="истина" label="Рельефность и сияние" name="BumpShiny"/>
+ <check_box initial_value="истина" label="Локальный свет" name="LocalLights"/>
+ <check_box initial_value="истина" label="Базовые шейдеры" name="BasicShaders" tool_tip="Отключение этого параметра может предотвратить зависание некоторых видеокарт"/>
+ <check_box initial_value="истина" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="истина" label="Освещение и тени" name="UseLightShaders"/>
+ <check_box initial_value="истина" label="Объемный свет" name="UseSSAO"/>
+ <check_box initial_value="истина" label="Глубина поля" name="UseDoF"/>
+ <text name="shadows_label">
+ Тени:
+ </text>
+ <combo_box name="ShadowDetail">
+ <combo_box.item label="Нет" name="0"/>
+ <combo_box.item label="Солнце/луна" name="1"/>
+ <combo_box.item label="Солнце/луна + осветители" name="2"/>
+ </combo_box>
+ <text name="reflection_label">
+ Вода отражает:
+ </text>
+ <combo_box name="Reflections">
+ <combo_box.item label="Минимум" name="0"/>
+ <combo_box.item label="Ландшафт и деревья" name="1"/>
+ <combo_box.item label="Все статичные объекты" name="2"/>
+ <combo_box.item label="Все аватары и объекты" name="3"/>
+ <combo_box.item label="Все" name="4"/>
+ </combo_box>
+ <slider label="Физика аватара:" name="AvatarPhysicsDetail"/>
+ <text name="AvatarPhysicsDetailText">
+ Низко
+ </text>
+ <slider label="Дальность отрисовки:" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ м
+ </text>
+ <slider label="Макс. количество частиц:" name="MaxParticleCount"/>
+ <slider label="Макс. количество 3D-аватаров:" name="MaxNumberAvatarDrawn"/>
+ <slider label="Качество постобработки:" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ Детализация меша:
+ </text>
+ <slider label="Объекты:" name="ObjectMeshDetail"/>
+ <slider label="Гибкие примитивы:" name="FlexibleMeshDetail"/>
+ <slider label="Деревья:" name="TreeMeshDetail"/>
+ <slider label="Аватары:" name="AvatarMeshDetail"/>
+ <slider label="Ландшафт:" name="TerrainMeshDetail"/>
+ <slider label="Небо:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Низко
+ </text>
+ <text name="ObjectMeshDetailText">
+ Низко
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Низко
+ </text>
+ <text name="TreeMeshDetailText">
+ Низко
+ </text>
+ <text name="AvatarMeshDetailText">
+ Низко
+ </text>
+ <text name="TerrainMeshDetailText">
+ Низко
+ </text>
+ <text name="SkyMeshDetailText">
+ Низко
+ </text>
+ <text name="AvatarRenderingText">
+ Отрисовка аватара:
+ </text>
+ <check_box initial_value="истина" label="Плоские аватары" name="AvatarImpostors"/>
+ <check_box initial_value="истина" label="Аппаратная отрисовка" name="AvatarVertexProgram"/>
+ <check_box initial_value="истина" label="Одежда аватара" name="AvatarCloth"/>
+ <text name="TerrainDetailText">
+ Ландшафт:
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item label="Грубо" name="0"/>
+ <radio_item label="Детально" name="2"/>
+ </radio_group>
+ --&gt;
+ </panel>
+ <button label="Применить" label_selected="Применить" name="Apply"/>
+ <button label="Сброс" name="Defaults"/>
+ <button label="Дополнительно" name="Advanced"/>
+ <button label="Аппаратура" label_selected="Аппаратура" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
new file mode 100644
index 0000000000..a6e9b00f2a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Перемещение" name="move_panel">
+ <slider label="Угол обзора" name="camera_fov"/>
+ <slider label="Расстояние" name="camera_offset_scale"/>
+ <text name="heading2">
+ Автоматическая установка позиции для:
+ </text>
+ <check_box label="создания/редактирования" name="edit_camera_movement" tool_tip="Автоматическое позиционирование камеры при входе в режим редактирования и выходе из него"/>
+ <check_box label="внешности" name="appearance_camera_movement" tool_tip="Автоматическое позиционирование камеры в режиме редактирования"/>
+ <text name="keyboard_lbl">
+ Клавиатура:
+ </text>
+ <check_box label="Клавиши со стрелками всегда перемещают меня" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Бег после двойного нажатия клавиши" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ Мышь:
+ </text>
+ <check_box label="Показывать меня при обзоре мышью" name="first_person_avatar_visible"/>
+ <text name=" Mouse Sensitivity">
+ Чувствительность мыши:
+ </text>
+ <check_box label="Инвертировать" name="invert_mouse"/>
+ <text name="single_click_action_lbl">
+ Один щелчок на земле:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Без действия" name="0"/>
+ <combo_box.item label="Перемещение в точку щелчка" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Двойной щелчок на земле:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Без действия" name="0"/>
+ <combo_box.item label="Перемещение в точку щелчка" name="1"/>
+ <combo_box.item label="Телепортация в точку щелчка" name="2"/>
+ </combo_box>
+ <button label="Другие устройства" name="joystick_setup_button"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
new file mode 100644
index 0000000000..20bb839eed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Коммуникация" name="im">
+ <panel.string name="log_in_to_change">
+ войти для редактирования
+ </panel.string>
+ <button label="Очистить журнал" name="clear_cache" tool_tip="Удалить картинку при входе, последнее местоположение, журнал телепортаций, кэш веб-документов и текстур"/>
+ <text name="cache_size_label_l">
+ (Места, картинки, страницы, журнал поиска)
+ </text>
+ <check_box label="Показывать меня в результатах поиска" name="online_searchresults"/>
+ <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="Показывать любимые закладки при входе (в меню «Место старта»)" name="favorites_on_login_check"/>
+ <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="logfile_name_datestamp"/>
+ <text name="log_path_desc">
+ Папка журналов:
+ </text>
+ <button label="Обзор" label_selected="Обзор" name="log_path_button"/>
+ <button label="Черный список" name="block_list"/>
+ <text name="block_list_label">
+ (Люди и (или) объекты, заблокированные вами)
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
new file mode 100644
index 0000000000..db88189169
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Конфигурация" name="Input panel">
+ <text name="Network:">
+ Сеть:
+ </text>
+ <text name="Maximum bandwidth">
+ Макс. ширина канала
+ </text>
+ <text name="text_box2">
+ Кбит/с
+ </text>
+ <check_box label="Выбор порта" name="connection_port_enabled"/>
+ <spinner label="Номер порта:" name="connection_port"/>
+ <text name="Web:">
+ Браузер:
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="Использовать мой браузер (IE, Firefox, Safari)" name="external" tool_tip="Будет использоваться браузер, заданный в системе по умолчанию. Не рекомендуется, если [APP_NAME] работает в полноэкранном режиме." value="1"/>
+ <radio_item label="Использовать встроенный браузер" name="internal" tool_tip="Для просмотра справки, ссылок на веб-страницы и т. д. будет использоваться встроенный браузер. Этот браузер открывается как новое окно в [APP_NAME]." value=""/>
+ </radio_group>
+ <check_box initial_value="истина" label="Разрешить плагины" name="browser_plugins_enabled"/>
+ <check_box initial_value="истина" label="Принимать файлы cookie" name="cookies_enabled"/>
+ <check_box initial_value="истина" label="Разрешить Javascript" name="browser_javascript_enabled"/>
+ <check_box initial_value="ложь" label="Разрешить всплывающие окна" name="media_popup_enabled"/>
+ <text name="Software updates:">
+ Обновления ПО:
+ </text>
+ <combo_box name="updater_service_combobox">
+ <combo_box.item label="Устанавливать автоматически" name="Install_automatically"/>
+ <combo_box.item label="Загружать и устанавливать обновления вручную" name="Install_manual"/>
+ </combo_box>
+ <text name="Proxy Settings:">
+ Настройки прокси-сервера:
+ </text>
+ <button label="Задать настройки" label_selected="Обзор" name="set_proxy"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
new file mode 100644
index 0000000000..bf673750d2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Звуки" name="Preference Media panel">
+ <panel.string name="middle_mouse">
+ среднюю кнопку мыши
+ </panel.string>
+ <slider label="Общая громкость" name="System Volume"/>
+ <check_box initial_value="истина" name="mute_when_minimized"/>
+ <text name="mute_chb_label">
+ Заглушать, когда свернуто
+ </text>
+ <slider label="Кнопки" name="UI Volume"/>
+ <slider label="Окружение" name="Wind Volume"/>
+ <slider label="Звуковые эффекты" name="SFX Volume"/>
+ <slider label="Потоковая музыка" name="Music Volume"/>
+ <check_box label="Включено" name="enable_music"/>
+ <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="истина"/>
+ <check_box label="Воспроизводить медиа, присоединенные к другому аватару" name="media_show_on_others_btn" tool_tip="Снятие флажка скроет медиа, присоединенные к другому аватару" value="истина"/>
+ <check_box label="Сопровождать жесты звуками" name="gesture_audio_play_btn" tool_tip="Установите флажок, чтобы слышать звуки при жестах" value="истина"/>
+ <text name="voice_chat_settings">
+ Настройки голосового чата
+ </text>
+ <text name="Listen from">
+ Слушать с:
+ </text>
+ <radio_group name="ear_location">
+ <radio_item label="Камеры" name="0"/>
+ <radio_item label="Аватара" name="1"/>
+ </radio_group>
+ <check_box label="Губы аватара двигаются при разговоре" name="enable_lip_sync"/>
+ <check_box label="Включать/выключать микрофон, когда я нажимаю:" name="push_to_talk_toggle_check" tool_tip="В режиме переключения ОДНОКРАТНОЕ нажатие и отпускание данной клавиши включает/выключает микрофон. Если режим переключения отключен, то микрофон передает голос, только когда клавиша нажата."/>
+ <line_editor label="Триггер Push-to-Speak" name="modifier_combo"/>
+ <button label="Задать клавишу" name="set_voice_hotkey_button"/>
+ <button name="set_voice_middlemouse_button" tool_tip="Сброс на среднюю кнопку мыши"/>
+ <button label="Устройства ввода-вывода" name="device_settings_btn"/>
+ <panel label="Настройки устройства" name="device_settings_panel"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml
new file mode 100644
index 0000000000..76bb6518e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+ <string name="control_background_image_name">
+ Inspector_Background
+ </string>
+ <string name="skip_step">
+ 0.2
+ </string>
+ <string name="min_width">
+ 300
+ </string>
+ <string name="min_height">
+ 75
+ </string>
+ <string name="zoom_near_padding">
+ 1.0
+ </string>
+ <string name="zoom_medium_padding">
+ 1.1
+ </string>
+ <string name="zoom_far_padding">
+ 1.5
+ </string>
+ <string name="top_world_view_avoid_zone">
+ 50
+ </string>
+ <layout_stack name="progress_indicator_area">
+ <layout_panel name="media_progress_indicator">
+ <progress_bar name="media_progress_bar" tool_tip="Медиа загружается"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="media_controls">
+ <layout_panel name="back">
+ <button name="back_btn" tool_tip="Назад"/>
+ </layout_panel>
+ <layout_panel name="fwd">
+ <button name="fwd_btn" tool_tip="Вперед"/>
+ </layout_panel>
+ <layout_panel name="home">
+ <button name="home_btn" tool_tip="Домашняя страница"/>
+ </layout_panel>
+ <layout_panel name="media_stop">
+ <button name="media_stop_btn" tool_tip="Остановить медиа"/>
+ </layout_panel>
+ <layout_panel name="reload">
+ <button name="reload_btn" tool_tip="Обновить"/>
+ </layout_panel>
+ <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="media_address">
+ <line_editor name="media_address_url" tool_tip="Ссылка на медиа"/>
+ <layout_stack name="media_address_url_icons">
+ <layout_panel>
+ <icon name="media_whitelist_flag" tool_tip="Включен белый список"/>
+ </layout_panel>
+ <layout_panel>
+ <icon name="media_secure_lock_flag" tool_tip="Безопасный просмотр"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="media_play_position">
+ <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Выполнение просмотра видео"/>
+ </layout_panel>
+ <layout_panel name="skip_back">
+ <button name="skip_back_btn" tool_tip="Шаг назад"/>
+ </layout_panel>
+ <layout_panel name="skip_forward">
+ <button name="skip_forward_btn" tool_tip="Шаг вперед"/>
+ </layout_panel>
+ <layout_panel name="media_volume">
+ <button name="media_mute_button" tool_tip="Приглушить медиа"/>
+ <slider name="volume_slider" tool_tip="Громкость медиа"/>
+ </layout_panel>
+ <layout_panel name="zoom_frame">
+ <button name="zoom_frame_btn" tool_tip="Приблизить к медиа"/>
+ </layout_panel>
+ <layout_panel name="close">
+ <button name="close_btn" tool_tip="Отодвинуть назад"/>
+ </layout_panel>
+ <layout_panel name="new_window">
+ <button name="new_window_btn" tool_tip="Открыть ссылку в браузере"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_covenant.xml b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml
new file mode 100644
index 0000000000..706a38f110
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Соглашение" name="Covenant">
+ <panel.string name="can_resell">
+ Приобретенная в этом регионе земля может быть перепродана.
+ </panel.string>
+ <panel.string name="can_not_resell">
+ Приобретенная в этом регионе земля не может быть перепродана.
+ </panel.string>
+ <panel.string name="can_change">
+ Приобретенная в этом регионе земля может быть объединена или разделена.
+ </panel.string>
+ <panel.string name="can_not_change">
+ Приобретенная в этом регионе земля не может быть объединена или разделена.
+ </panel.string>
+ <text name="estate_section_lbl">
+ Землевладение
+ </text>
+ <text name="estate_name_lbl">
+ Название:
+ </text>
+ <text name="estate_name_text">
+ материк
+ </text>
+ <text name="estate_owner_lbl">
+ Владелец:
+ </text>
+ <text name="estate_owner_text">
+ (нет)
+ </text>
+ <text name="estate_cov_lbl">
+ Соглашение:
+ </text>
+ <text name="covenant_timestamp_text">
+ Последнее изменение: 31 декабря 1969 г., среда, 16:00:00
+ </text>
+ <text_editor name="covenant_editor">
+ Нет соглашения для этого землевладения.
+ </text_editor>
+ <button label="Сброс" name="reset_covenant"/>
+ <text name="covenant_help_text">
+ Изменения в соглашении будут показаны на всех участках этого землевладения.
+ </text>
+ <text name="covenant_instructions">
+ Перетащите сюда заметку, чтобы изменить соглашение для этого землевладения.
+ </text>
+ <text name="region_section_lbl">
+ Регион
+ </text>
+ <text name="region_name_lbl">
+ Название:
+ </text>
+ <text name="region_name_text">
+ Эрика
+ </text>
+ <text name="region_landtype_lbl">
+ Тип:
+ </text>
+ <text name="region_landtype_text">
+ Материк/поместье
+ </text>
+ <text name="region_maturity_lbl">
+ Рейтинг:
+ </text>
+ <text name="region_maturity_text">
+ Для взрослых
+ </text>
+ <text name="resellable_lbl">
+ Перепродажа:
+ </text>
+ <text name="resellable_clause">
+ Земля в этом регионе не может быть перепродана.
+ </text>
+ <text name="changeable_lbl">
+ Разделение:
+ </text>
+ <text name="changeable_clause">
+ Земля в этом регионе не может быть объединена или разделена.
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_debug.xml b/indra/newview/skins/default/xui/ru/panel_region_debug.xml
new file mode 100644
index 0000000000..c21d2d7051
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_debug.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Отладка" name="Debug">
+ <text name="region_text_lbl">
+ Регион:
+ </text>
+ <text name="region_text">
+ неизвестно
+ </text>
+ <check_box label="Отключить скрипты" name="disable_scripts_check" tool_tip="Отключить все скрипты в этом регионе"/>
+ <check_box label="Отключить столкновения" name="disable_collisions_check" tool_tip="Отключить столкновения не-аватаров в этом регионе"/>
+ <check_box label="Отключить физику" name="disable_physics_check" tool_tip="Выключить всю физику в этом регионе"/>
+ <button label="Применить" name="apply_btn"/>
+ <text name="objret_text_lbl">
+ Возврат объектов
+ </text>
+ <text name="resident_text_lbl">
+ Житель:
+ </text>
+ <line_editor name="target_avatar_name">
+ (нет)
+ </line_editor>
+ <button label="Выбор" name="choose_avatar_btn"/>
+ <text name="options_text_lbl">
+ Параметры:
+ </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="Возвращаются объекты со всех регионов, образующих это землевладение"/>
+ <button label="Возврат" name="return_btn"/>
+ <button label="Самые активные участники столкновений..." name="top_colliders_btn" tool_tip="Список объектов, для которых столкновения наиболее вероятны"/>
+ <button label="Список лучших скриптов..." name="top_scripts_btn" tool_tip="Объекты, в которых скрипты выполняются дольше всего"/>
+ <button label="Перезагрузить регион" name="restart_btn" tool_tip="Отсчитать 2 минуты и перезагрузить регион"/>
+ <button label="Отложить перезагрузку" name="cancel_restart_btn" tool_tip="Отложить перезагрузку региона на час"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_environment.xml b/indra/newview/skins/default/xui/ru/panel_region_environment.xml
new file mode 100644
index 0000000000..85be8f63bd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Среда" name="panel_env_info">
+ <text name="water_settings_title">
+ Настройки воды и неба/суточного цикла определяют, каким посетители увидят ваш регион. Дополнительно
+ </text>
+ <radio_group name="region_settings_radio_group">
+ <radio_item label="Использовать настройки Second Life по умолчанию" name="use_sl_default_settings"/>
+ <radio_item label="Использовать следующие настройки" name="use_my_settings"/>
+ </radio_group>
+ <panel name="user_environment_settings">
+ <text name="water_settings_title">
+ Настройка воды
+ </text>
+ <combo_box name="water_settings_preset_combo">
+ <combo_box.item label="-Выбор настройки-" name="item0"/>
+ </combo_box>
+ <text name="sky_dayc_settings_title">
+ Небо/суточный цикл
+ </text>
+ <radio_group name="sky_dayc_settings_radio_group">
+ <radio_item label="Небо не меняется" name="my_sky_settings"/>
+ <radio_item label="Суточный цикл" name="my_dayc_settings"/>
+ </radio_group>
+ <combo_box name="sky_settings_preset_combo">
+ <combo_box.item label="-Выбор настройки-" name="item0"/>
+ </combo_box>
+ <combo_box name="dayc_settings_preset_combo">
+ <combo_box.item label="-Выбор настройки-" name="item0"/>
+ </combo_box>
+ </panel>
+ <button label="Применить" name="apply_btn"/>
+ <button label="Отмена" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_estate.xml b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
new file mode 100644
index 0000000000..27ec10b323
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Землевладение" name="Estate">
+ <text name="estate_help_text">
+ Изменение параметров на этой вкладке повлияет на все регионы этого землевладения.
+ </text>
+ <text name="estate_text">
+ Землевладение:
+ </text>
+ <text name="estate_name">
+ (неизвестно)
+ </text>
+ <text name="owner_text">
+ Землевладелец:
+ </text>
+ <text name="estate_owner">
+ (неизвестно)
+ </text>
+ <check_box label="Глобальное время" name="use_global_time_check"/>
+ <check_box label="Фиксированное" name="fixed_sun_check"/>
+ <slider label="Фаза" name="sun_hour_slider"/>
+ <check_box label="Разрешить общий доступ" name="externally_visible_check"/>
+ <text name="Only Allow">
+ Разрешить доступ только аккаунтам с подтверждением:
+ </text>
+ <check_box label="Информации об оплате в файле" name="limit_payment" tool_tip="Банить нераспознанных жителей"/>
+ <check_box label="Проверка возраста" name="limit_age_verified" tool_tip="Банить жителей, не прошедших проверку возраста. Более подробная информация находится здесь: [SUPPORT_SITE]."/>
+ <check_box label="Разрешить голосовое общение" name="voice_chat_check"/>
+ <check_box label="Разрешить прямой телепорт" name="allow_direct_teleport"/>
+ <button label="Применить" name="apply_btn"/>
+ <button label="Сообщение в землевладение..." name="message_estate_btn"/>
+ <button label="Выкинуть жителя с землевладения..." name="kick_user_from_estate_btn"/>
+ <text name="estate_manager_label">
+ Менеджеры землевладения:
+ </text>
+ <button label="Удалить..." name="remove_estate_manager_btn"/>
+ <button label="Добавить..." name="add_estate_manager_btn"/>
+ <text name="allow_resident_label">
+ Допущенные жители:
+ </text>
+ <button label="Удалить..." name="remove_allowed_avatar_btn"/>
+ <button label="Добавить..." name="add_allowed_avatar_btn"/>
+ <text name="allow_group_label">
+ Допущенные группы:
+ </text>
+ <button label="Удалить..." name="remove_allowed_group_btn"/>
+ <button label="Добавить..." name="add_allowed_group_btn"/>
+ <text name="ban_resident_label">
+ Забаненные жители:
+ </text>
+ <button label="Удалить..." name="remove_banned_avatar_btn"/>
+ <button label="Добавить..." name="add_banned_avatar_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_general.xml b/indra/newview/skins/default/xui/ru/panel_region_general.xml
new file mode 100644
index 0000000000..8559be6c9e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_general.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Регион" name="General">
+ <text name="region_text_lbl">
+ Регион:
+ </text>
+ <text name="region_text">
+ неизвестно
+ </text>
+ <text name="version_channel_text_lbl">
+ Версия:
+ </text>
+ <text name="version_channel_text">
+ неизвестно
+ </text>
+ <text name="region_type_lbl">
+ Тип:
+ </text>
+ <text name="region_type">
+ неизвестно
+ </text>
+ <check_box label="Запретить терраформирование" name="block_terraform_check"/>
+ <check_box label="Запретить полеты" name="block_fly_check"/>
+ <check_box label="Разрешить повреждения" name="allow_damage_check"/>
+ <check_box label="Запретить толкание" name="restrict_pushobject"/>
+ <check_box label="Разрешить перепродажу земли" name="allow_land_resell_check"/>
+ <check_box label="Разрешить объединение/разделение земли" name="allow_parcel_changes_check"/>
+ <check_box label="Не показывать землю в поиске" name="block_parcel_search_check" tool_tip="Отображать регион и его участки в результатах поиска"/>
+ <check_box label="Разрешить меши-объекты" name="mesh_rez_enabled_check" tool_tip="Разрешить жителям выкладывать меши в этом регионе"/>
+ <spinner label="Лимит агентов" name="agent_limit_spin"/>
+ <spinner label="Льгота для объекта" name="object_bonus_spin"/>
+ <text label="Дозволенность" name="access_text">
+ Категория:
+ </text>
+ <icons_combo_box label="Умеренный" name="access_combo">
+ <icons_combo_box.item label="Для взрослых" name="Adult" value="42"/>
+ <icons_combo_box.item label="Умеренный" name="Mature" value="21"/>
+ <icons_combo_box.item label="Общий" name="PG" value="13"/>
+ </icons_combo_box>
+ <button label="Применить" name="apply_btn"/>
+ <button label="Телепортировать домой одного жителя..." 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/ru/panel_region_terrain.xml b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml
new file mode 100644
index 0000000000..af25565226
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ландшафт" name="Terrain">
+ <text name="region_text_lbl">
+ Регион:
+ </text>
+ <text name="region_text">
+ неизвестен
+ </text>
+ <spinner label="Уровень воды" name="water_height_spin"/>
+ <spinner label="Верх. точка ландшафта" name="terrain_raise_spin"/>
+ <spinner label="Ниж. точка ландшафта" name="terrain_lower_spin"/>
+ <text name="detail_texture_text">
+ Текстуры ландшафта (требования: 512x512, 24-битные, TGA)
+ </text>
+ <text name="height_text_lbl">
+ 1 (Низ)
+ </text>
+ <text name="height_text_lbl2">
+ 2
+ </text>
+ <text name="height_text_lbl3">
+ 3
+ </text>
+ <text name="height_text_lbl4">
+ 4 (Верх)
+ </text>
+ <text name="height_text_lbl5">
+ Диапазон высот текстур
+ </text>
+ <text name="height_text_lbl10">
+ Эти значения определяют степень смешивания наложенных текстур.
+ </text>
+ <text name="height_text_lbl11">
+ Измеряются в метрах. Значение «Низ» – это МАКСИМАЛЬНАЯ высота текстуры №1, а значение «Верх» – это МИНИМАЛЬНАЯ высота текстуры №4.
+ </text>
+ <text name="height_text_lbl6">
+ Северо-запад
+ </text>
+ <text name="height_text_lbl7">
+ Северо-восток
+ </text>
+ <spinner label="Низ" name="height_start_spin_1"/>
+ <spinner label="Низ" name="height_start_spin_3"/>
+ <spinner label="Верх" name="height_range_spin_1"/>
+ <spinner label="Верх" name="height_range_spin_3"/>
+ <text name="height_text_lbl8">
+ Юго-запад
+ </text>
+ <text name="height_text_lbl9">
+ Юго-восток
+ </text>
+ <spinner label="Низ" name="height_start_spin_0"/>
+ <spinner label="Низ" name="height_start_spin_2"/>
+ <spinner label="Верх" name="height_range_spin_0"/>
+ <spinner label="Верх" name="height_range_spin_2"/>
+ <button label="Загрузить ландшафт RAW..." name="download_raw_btn" tool_tip="Доступно только землевладельцам, не менеджерам"/>
+ <button label="Передать ландшафт RAW..." name="upload_raw_btn" tool_tip="Доступно только землевладельцам, не менеджерам"/>
+ <button label="Зафиксировать пределы" name="bake_terrain_btn" tool_tip="Установить высоту ландшафта по средней точке между верхней и нижней точками"/>
+ <button label="Применить" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_texture.xml b/indra/newview/skins/default/xui/ru/panel_region_texture.xml
new file mode 100644
index 0000000000..c4b35a536d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_texture.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Текстуры земли" name="Textures">
+ <text name="region_text_lbl">
+ Регион:
+ </text>
+ <text name="region_text">
+ неизвестен
+ </text>
+ <text name="detail_texture_text">
+ Текстуры ландшафта (требования: 512x512, 24-битные TGA-файлы)
+ </text>
+ <text name="height_text_lbl">
+ 1 (низ)
+ </text>
+ <text name="height_text_lbl2">
+ 2
+ </text>
+ <text name="height_text_lbl3">
+ 3
+ </text>
+ <text name="height_text_lbl4">
+ 4 (верх)
+ </text>
+ <text name="height_text_lbl5">
+ Диапазон высот текстур
+ </text>
+ <text name="height_text_lbl6">
+ Северо-запад
+ </text>
+ <text name="height_text_lbl7">
+ Северо-восток
+ </text>
+ <spinner label="Низ" name="height_start_spin_1"/>
+ <spinner label="Низ" name="height_start_spin_3"/>
+ <spinner label="Верх" name="height_range_spin_1"/>
+ <spinner label="Верх" name="height_range_spin_3"/>
+ <text name="height_text_lbl8">
+ Юго-запад
+ </text>
+ <text name="height_text_lbl9">
+ Юго-восток
+ </text>
+ <spinner label="Низ" name="height_start_spin_0"/>
+ <spinner label="Низ" name="height_start_spin_2"/>
+ <spinner label="Верх" name="height_range_spin_0"/>
+ <spinner label="Верх" name="height_range_spin_2"/>
+ <text name="height_text_lbl10">
+ Эти значения отображают диапазон перекрытия вышеуказанных текстур.
+ </text>
+ <text name="height_text_lbl11">
+ Измеряется в метрах, значение «Низ» – это МАКСИМАЛЬНАЯ высота текстуры №1, значение «Верх» – это МИНИМАЛЬНАЯ высота текстуры №4.
+ </text>
+ <button label="Применить" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_script_ed.xml b/indra/newview/skins/default/xui/ru/panel_script_ed.xml
new file mode 100644
index 0000000000..1a9c512147
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_script_ed.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ Загрузка...
+ </panel.string>
+ <panel.string name="can_not_view">
+ Вы не можете просматривать и изменять этот скрипт, поскольку для него выбрана категория «не копируемые». Для просмотра или изменения скрипта в объекте нужны полные права доступа.
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ Общедоступные объекты не могут запускать скрипты
+ </panel.string>
+ <panel.string name="script_running">
+ Выполняется
+ </panel.string>
+ <panel.string name="Title">
+ Скрипт: [NAME]
+ </panel.string>
+ <panel.string name="external_editor_not_set">
+ Выберите редактор, задав переменную среды LL_SCRIPT_EDITOR или параметр ExternalEditor.
+ </panel.string>
+ <menu_bar name="script_menu">
+ <menu label="Файл" name="File">
+ <menu_item_call label="Сохранить" name="Save"/>
+ <menu_item_call label="Отменить все изменения" name="Revert All Changes"/>
+ </menu>
+ <menu label="Изменить" name="Edit">
+ <menu_item_call label="Отменить" name="Undo"/>
+ <menu_item_call label="Вернуть" name="Redo"/>
+ <menu_item_call label="Вырезать" name="Cut"/>
+ <menu_item_call label="Копировать" name="Copy"/>
+ <menu_item_call label="Вставить" name="Paste"/>
+ <menu_item_call label="Выделить все" name="Select All"/>
+ <menu_item_call label="Снять выделение" name="Deselect"/>
+ <menu_item_call label="Поиск и замена..." name="Search / Replace..."/>
+ </menu>
+ <menu label="Справка" name="Help">
+ <menu_item_call label="Справка..." name="Help..."/>
+ <menu_item_call label="Справка по ключевым словам..." name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+ <text_editor name="Script Editor">
+ Загрузка...
+ </text_editor>
+ <combo_box label="Вставить..." name="Insert..."/>
+ <button label="Сохранить" label_selected="Сохранить" name="Save_btn"/>
+ <button label="Изменить..." name="Edit_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml
new file mode 100644
index 0000000000..a06c465a2b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml
@@ -0,0 +1,16 @@
+<?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="Размер (КБ)" name="size"/>
+ <scroll_list.columns label="URL-адреса" name="urls"/>
+ <scroll_list.columns label="Название объекта" name="name"/>
+ <scroll_list.columns label="Место" name="location"/>
+ </scroll_list>
+ <button label="Обновить список" name="refresh_list_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml
new file mode 100644
index 0000000000..189e21fd2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="ПАМЯТЬ РЕГИОНА" name="script_limits_region_memory_panel">
+ <text name="script_memory">
+ Память под скрипты на участке
+ </text>
+ <text name="loading_text">
+ Загрузка...
+ </text>
+ <scroll_list name="scripts_list">
+ <scroll_list.columns label="Размер (Кб)" name="size"/>
+ <scroll_list.columns label="URL-адреса" name="urls"/>
+ <scroll_list.columns label="Название объекта" name="name"/>
+ <scroll_list.columns label="Владелец объекта" name="owner"/>
+ <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"/>
+ <button label="Возврат" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml
new file mode 100644
index 0000000000..c25f92cb8d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParam">
+ <text name="Loading...">
+ Загрузка...
+ </text>
+ <text name="Loading...2">
+ Загрузка...
+ </text>
+ <slider label="[DESC]" name="param slider"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml
new file mode 100644
index 0000000000..fa659040ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParamBase">
+ <slider label="[DESC]" name="param slider"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_side_tray.xml b/indra/newview/skins/default/xui/ru/panel_side_tray.xml
new file mode 100644
index 0000000000..10c5775291
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_side_tray.xml
@@ -0,0 +1,29 @@
+<?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="Открыть/закрыть боковую панель" 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" tab_title="Мой профиль">
+ <panel_container name="panel_container">
+ <panel label="Я" name="panel_me"/>
+ </panel_container>
+ </sidetray_tab>
+ <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" tab_title="Места">
+ <panel label="Места" name="panel_places"/>
+ </sidetray_tab>
+ <sidetray_tab description="Просмотрите свой инвентарь." name="sidebar_inventory" tab_title="Мой инвентарь">
+ <panel label="Изменить инвентарь" name="sidepanel_inventory"/>
+ </sidetray_tab>
+ <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/ru/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml
new file mode 100644
index 0000000000..1a260dc31f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+ <text name="sidetray_tab_title" value="Боковая панель"/>
+ <button name="undock" tool_tip="Отсоединить"/>
+ <button name="dock" tool_tip="Присоединить"/>
+ <button name="show_help" tool_tip="Показать справку"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml
new file mode 100644
index 0000000000..98dab288a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Настройки устройства" name="device_settings_panel">
+ <panel.string name="default_text">
+ По умолчанию
+ </panel.string>
+ <string name="name_no_device">
+ Нет устройства
+ </string>
+ <string name="name_default_system_device">
+ Системное устройство по умолчанию
+ </string>
+ <text name="Input">
+ Вход
+ </text>
+ <text name="Output">
+ Выход
+ </text>
+ <text name="My volume label">
+ Моя громкость:
+ </text>
+ <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Измените значение, используя ползунок"/>
+ <text name="wait_text">
+ Подождите
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml
new file mode 100644
index 0000000000..81a2175fc3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/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="Встать" name="stand_btn" tool_tip="Щелкните здесь, чтобы встать."/>
+ <button label="Прекратить полет" name="stop_fly_btn" tool_tip="Прекратить полет"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_status_bar.xml b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
new file mode 100644
index 0000000000..6822244196
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+ <panel.string name="packet_loss_tooltip">
+ Потери пакетов
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
+ Ширина канала
+ </panel.string>
+ <panel.string name="time">
+ [hour, datetime, slt]:[min, datetime, slt] [timezone,datetime, slt]
+ </panel.string>
+ <panel.string name="timeTooltip">
+ [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+ </panel.string>
+ <panel.string name="buycurrencylabel">
+ L$ [AMT]
+ </panel.string>
+ <panel name="balance_bg">
+ <text name="balance" tool_tip="Щелкните для обновления вашего баланса L$" value="L$20"/>
+ <button label="Купить L$" name="buyL" tool_tip="Щелкните для покупки L$"/>
+ <button label="Торговый центр" name="goShop" tool_tip="Открыть торговый центр Second Life"/>
+ </panel>
+ <text name="TimeText" tool_tip="Текущее время (тихоокеанское)">
+ 00:00 (тихоокеанское время)
+ </text>
+ <button name="media_toggle_btn" tool_tip="Запуск/остановка всех медиа (музыка, видео, веб-страницы)"/>
+ <button name="volume_btn" tool_tip="Регулятор громкости"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml
new file mode 100644
index 0000000000..c457bc2269
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+ <accordion name="history_accordion">
+ <no_matched_tabs_text name="no_matched_teleports_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/places/[SEARCH_TERM] поиском]."/>
+ <no_visible_tabs_text name="no_teleports_msg" value="История телепортов пуста. Воспользуйтесь [secondlife:///app/search/places/ поиском]."/>
+ <accordion_tab name="today" title="Сегодня"/>
+ <accordion_tab name="yesterday" title="Вчера"/>
+ <accordion_tab name="2_days_ago" title="2 дня назад"/>
+ <accordion_tab name="3_days_ago" title="3 дня назад"/>
+ <accordion_tab name="4_days_ago" title="4 дня назад"/>
+ <accordion_tab name="5_days_ago" title="5 дней назад"/>
+ <accordion_tab name="6_days_and_older" title="6 дней назад и раньше"/>
+ <accordion_tab name="1_month_and_older" title="1 месяц назад и раньше"/>
+ <accordion_tab name="6_months_and_older" title="6 месяцев назад и раньше"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <menu_button name="gear_btn" tool_tip="Показать дополнительные параметры"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml
new file mode 100644
index 0000000000..90fb720068
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="teleport_history_item">
+ <text name="region" value="..."/>
+ <button name="profile_btn" tool_tip="Показать информацию"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
new file mode 100644
index 0000000000..de0b38198f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_voice_effect">
+ <string name="no_voice_effect">
+ Изменение голоса отключено
+ </string>
+ <string name="preview_voice_effects">
+ Прослушать изменение голоса ▶
+ </string>
+ <string name="get_voice_effects">
+ Приобрести изменение голоса ▶
+ </string>
+ <combo_box name="voice_effect" tool_tip="Выбор типа изменения для своего голоса">
+ <combo_box.item label="Изменение голоса отключено" name="no_voice_effect"/>
+ </combo_box>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_world_map.xml b/indra/newview/skins/default/xui/ru/panel_world_map.xml
new file mode 100644
index 0000000000..0ab8720185
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_world_map.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+ <panel.string name="Loading">
+ Загрузка...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Неправильное место
+ </panel.string>
+ <panel.string name="world_map_north">
+ С
+ </panel.string>
+ <panel.string name="world_map_east">
+ В
+ </panel.string>
+ <panel.string name="world_map_west">
+ З
+ </panel.string>
+ <panel.string name="world_map_south">
+ Ю
+ </panel.string>
+ <panel.string name="world_map_southeast">
+ ЮВ
+ </panel.string>
+ <panel.string name="world_map_northeast">
+ СВ
+ </panel.string>
+ <panel.string name="world_map_southwest">
+ ЮЗ
+ </panel.string>
+ <panel.string name="world_map_northwest">
+ СЗ
+ </panel.string>
+ <panel.string name="world_map_person">
+ 1 человек
+ </panel.string>
+ <panel.string name="world_map_people">
+ Людей: [NUMBER]
+ </panel.string>
+ <text label="С" name="floater_map_north">
+ С
+ </text>
+ <text label="В" name="floater_map_east">
+ В
+ </text>
+ <text label="З" name="floater_map_west">
+ З
+ </text>
+ <text label="Ю" name="floater_map_south">
+ Ю
+ </text>
+ <text label="ЮВ" name="floater_map_southeast">
+ ЮВ
+ </text>
+ <text label="СВ" name="floater_map_northeast">
+ СВ
+ </text>
+ <text label="ЮЗ" name="floater_map_southwest">
+ ЮЗ
+ </text>
+ <text label="СЗ" name="floater_map_northwest">
+ СЗ
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/role_actions.xml b/indra/newview/skins/default/xui/ru/role_actions.xml
new file mode 100644
index 0000000000..b6ba818abd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/role_actions.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<role_actions>
+ <action_set description="Эти способности позволяют добавлять и удалять участников группы, а также вступать в группы без приглашения." name="Membership">
+ <action description="Приглашение людей в эту группу" longdescription="Пригласите людей в группу с помощью кнопки «Пригласить» в разделе «Роли» на вкладке «Участники»." name="member invite" value="1"/>
+ <action description="Удаление участников из группы" longdescription="Удалите участников из группы с помощью кнопки «Выкинуть» в разделе «Роли» на вкладке «Участники». Владелец может удалять всех, кроме другого владельца. Если вы не владелец, то удалить участника из группы можно только в том случае, если ему назначена ТОЛЬКО роль «Все». Чтобы удалять участников из ролей, необходима способность «Удаление участников из ролей»." name="member eject" value="2"/>
+ <action description="Включение-отключение свободного вступления и изменение платы за вступление" longdescription="Включение-отключение свободного вступления, что обеспечит вступление новых участников без приглашения, а также изменение платы за вступление в разделе «Общие»." name="member options" value="3"/>
+ </action_set>
+ <action_set description="Эти способности позволяют добавлять, удалять и изменять роли группы, добавлять и удалять участников ролей, а также назначать ролям способности." name="Roles">
+ <action description="Создание ролей" longdescription="Создавайте новые роли в разделе «Роли» на вкладке «Роли»." name="role create" value="4"/>
+ <action description="Удаление ролей" longdescription="Удаляйте роли в разделе «Роли» на вкладке «Роли»." name="role delete" value="5"/>
+ <action description="Изменение названий, титулов, описаний ролей, а также настройка публичности их участников" longdescription="Изменение названий, титулов, описаний ролей, а также настройка публичности их участников. Это можно сделать в разделе «Роли», в нижней части вкладки «Роли» для выбранной роли." 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="Изменение устава, символа и параметра «Показать в поиске»" 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 set sale info" value="14"/>
+ <action description="Разделение и объединение участков" longdescription="Разделение и объединение участков. Необходимо щелкнуть землю правой кнопкой мыши, выбрать пункт «Изменить ландшафт» и переместить курсор на выбираемую землю. Чтобы выполнить разделение, выберите разделяемый участок и щелкните «Разделить». Чтобы выполнить объединение, выберите несколько граничащих участков и щелкните «Объединить»." name="land divide join" value="15"/>
+ </action_set>
+ <action_set description="К этим способностям относится изменение названия участка и публикация настроек, поиск видимых каталогов, а также настройки точек и вариантов телепортации." name="Parcel Identity">
+ <action description="Включение-отключение показа места в результатах поиска и настройка категории" longdescription="Включить-отключить показ места в результатах поиска и настроить категорию участка можно в окне «О земле» на вкладке «Параметры»." name="land find places" value="17"/>
+ <action description="Изменение названия или описания участка, настройки «Показать место в поиске»" longdescription="Изменение названия или описания участка, настройки «Показать место в поиске». Это можно выполнить в окне «О земле» на вкладке «Параметры»." name="land change identity" value="18"/>
+ <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="Включение-отключение изменения ландшафта. *ПРЕДУПРЕЖДЕНИЕ* Выбрав параметры «О земле» &gt; вкладка «Параметры» &gt; «Изменить ландшафт», любой пользователь может изменить форму земли, а также размещать или перемещать растения Linden. Прежде чем назначить эту способность, убедитесь в целесообразности этого. Изменить ландшафт можно в окне «О земле» на вкладке «Параметры»." name="land edit" value="21"/>
+ <action description="Включение-отключение различных настроек «О земле &gt; Параметры»" longdescription="В окне «О земле» на вкладке «Параметры» можно включить-отключить параметр «Безопасно (нет повреждений)», «Полет» и разрешить другим жителям изменять ландшафт, строительство, создавать закладки и запускать скрипты для земли группы." name="land options" value="22"/>
+ </action_set>
+ <action_set description="К этим способностям относится разрешение участникам обходить ограничения на участках группы." name="Parcel Powers">
+ <action description="Всегда разрешено изменение ландшафта" longdescription="Участники роли с этой способностью могут изменять ландшафт участка группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow edit land" value="23"/>
+ <action description="Всегда разрешен полет" longdescription="Участники роли с этой способностью могут летать над участком группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow fly" value="24"/>
+ <action description="Всегда разрешено создавать объекты" longdescription="Участники роли с этой способностью могут создавать объекты на участке группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow create" value="25"/>
+ <action description="Всегда разрешено создавать закладки" longdescription="Участники роли с этой способностью могут поместить закладку на участке группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow landmark" value="26"/>
+ <action description="Разрешено установить дом на земле группы" longdescription="Участники роли с такой способностью могут использовать меню «Мир &gt; Закладки &gt; Установить дом здесь» для участка, переданного этой группе." name="land allow set home" value="28"/>
+ <action description="Разрешена орагнизация событий на земле группы" longdescription="Участники роли с этой способностью могут выбрать участки группы в качестве любимого места при организации события." name="land allow host event" value="41"/>
+ </action_set>
+ <action_set description="К этим способностям относится разрешение или ограничение доступа к участкам группы, в т ч. заморозка и выбрасывание жителей." name="Parcel Access">
+ <action description="Управление списками доступа к участку" longdescription="Управлять списками доступа к участку можно в окне «О земле» на вкладке «Доступ»." name="land manage allowed" value="29"/>
+ <action description="Управление списками запрета доступа к участку" longdescription="Управлять списками запрета доступа к участку можно в окне «О земле» на вкладке «Доступ»." name="land manage banned" value="30"/>
+ <action description="Изменение настроек продажи пропусков на участок" longdescription="Изменить настройки продажи пропусков на участок можно в окне «О земле» на вкладке «Доступ»." name="land manage passes" value="31"/>
+ <action description="Выбрасывание и заморозка жителей на участках" longdescription="Участники роли с этой способностью могут оперировать нежелательными жителями на участке группы, выбрав их правой кнопкой мыши и щелкнув «Выкинуть» или «Заморозить»." name="land admin" value="32"/>
+ </action_set>
+ <action_set description="К этим способностям относится разрешение участникам возвращать объекты, размещать и перемещать растения Linden. Это удобно при уборке разбросанных объектов и формировании ландшафта, но следует соблюдать осторожность, так как возврат объектов не отменяется." 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="Способность формировать ландшафт и перемещать деревья, растения и траву Linden. Эти вещи находятся в папке инвентаря «Библиотека &gt; Объекты», либо их можно создать с помощью меню «Строительство»." name="land gardening" value="35"/>
+ </action_set>
+ <action_set description="К этим способностям относится передача, изменение и продажа объектов группы. Для изменения используется вкладка «Общие» в группе «Инструменты для строительства». Чтобы просмотреть настройки, щелкните объект правой кнопкой и выберите пункт «Изменить»." name="Object Management">
+ <action description="Передача объектов группе" longdescription="Передать объекты группе можно на вкладке «Общие» в группе «Инструменты для строительства»." name="object deed" value="36"/>
+ <action description="Оперирование (перемещение, копирование, изменение) объектами группы" longdescription="Оперировать (перемещать, копировать, изменять) объекты группы можно на вкладке «Общие» в группе «Инструменты для строительства»." name="object manipulate" value="38"/>
+ <action description="Выбор объектов группы на продажу" longdescription="Выбрать объекты группы на продажу можно на вкладке «Общие» в группе «Инструменты для строительства»." name="object set sale" value="39"/>
+ </action_set>
+ <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"/>
+ <action description="Получение новых и просмотр старых уведомлений" longdescription="Участники роли с этой способностью могут получать новые и просматривать старые уведомления, выбрав «Группа» &gt; раздел «Уведомления»." name="notices receive" value="43"/>
+ </action_set>
+ <action_set description="К этим способностям относится разрешение или ограничение доступа к сеансам чата и голосовому чату группы." name="Chat">
+ <action description="Присоединение к чату группы" longdescription="Участники роли с этой способностью могут присоединяться к сеансам чата группы (текстового и голосового)." name="join group chat" value="16"/>
+ <action description="Присоединение к голосовому чату группы" longdescription="Участники роли с этой способностью могут присоединяться к сеансам голосового чата группы. ПРИМЕЧАНИЕ. Способность «Присоединение к чату группы» необходима для доступа к сеансам голосового чата." name="join voice chat" value="27"/>
+ <action description="Moderate-чат группы" longdescription="Участники роли с этой способностью могут контролировать доступ и участие в сеансах текстового и голосового чата группы." name="moderate group chat" value="37"/>
+ </action_set>
+</role_actions>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml
new file mode 100644
index 0000000000..a23f6134f2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Костюмы" name="appearance panel">
+ <string name="No Outfit" value="Нет костюма"/>
+ <string name="Unsaved Changes" value="Не сохраненные изменения"/>
+ <string name="Now Wearing" value="Сейчас надето..."/>
+ <string name="Changing outfits" value="Смена костюмов"/>
+ <panel name="panel_currentlook">
+ <button label="E" name="editappearance_btn"/>
+ <button label="O" name="openoutfit_btn"/>
+ <text name="currentlook_status">
+ (Статус)
+ </text>
+ <text name="currentlook_name">
+ Мой костюм с очень длинным названием, например, ЛОСОСЬ
+ </text>
+ <button label="" name="edit_outfit_btn" tool_tip="Изменить костюм"/>
+ </panel>
+ <filter_editor label="Фильтр для костюмов" name="Filter"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml
new file mode 100644
index 0000000000..a4150f6e2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Вещи" name="objects panel">
+ <panel label="" name="sidepanel__inventory_panel">
+ <layout_stack name="inventory_layout_stack">
+ <layout_panel name="inbox_outbox_layout_panel">
+ <layout_stack name="inbox_outbox_layout_stack">
+ <layout_panel name="inbox_layout_panel">
+ <panel label="" name="marketplace_inbox">
+ <string name="InboxLabelWithArg">
+ Полученные вещи ([NUM])
+ </string>
+ <string name="InboxLabelNoArg">
+ Полученные вещи
+ </string>
+ <button label="Полученные вещи" name="inbox_btn"/>
+ <text name="inbox_fresh_new_count">
+ Новых: [NUM]
+ </text>
+ <panel tool_tip="Drag and drop items to your inventory to manage and use them">
+ <text name="inbox_inventory_placeholder">
+ Покупки из торгового центра будут доставлены сюда.
+ </text>
+ </panel>
+ </panel>
+ </layout_panel>
+ <layout_panel name="outbox_layout_panel">
+ <panel label="" name="marketplace_outbox">
+ <string name="OutboxLabelWithArg">
+ Торговые исходящие ([NUM])
+ </string>
+ <string name="OutboxLabelNoArg">
+ Торговые исходящие
+ </string>
+ <button label="Торговые исходящие" name="outbox_btn"/>
+ <button label="" name="outbox_sync_btn" tool_tip="Выставить на витрину моего магазина"/>
+ <panel>
+ <panel name="outbox_inventory_placeholder_panel">
+ <text name="outbox_inventory_placeholder_title">
+ Загрузка...
+ </text>
+ </panel>
+ </panel>
+ </panel>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ </layout_stack>
+ <panel name="button_panel">
+ <layout_stack name="button_panel_ls">
+ <layout_panel name="info_btn_lp">
+ <button label="Профиль" name="info_btn" tool_tip="Показать профиль объекта"/>
+ </layout_panel>
+ <layout_panel name="share_btn_lp">
+ <button label="Поделиться" name="share_btn" tool_tip="Поделиться вещью из инвентаря"/>
+ </layout_panel>
+ <layout_panel name="shop_btn_lp">
+ <button label="Торговый центр" name="shop_btn" tool_tip="Открыть страницу торгового центра"/>
+ <button label="Надеть" name="wear_btn" tool_tip="Надеть выбранный костюм"/>
+ <button label="Проиграть" name="play_btn"/>
+ <button label="Телепорт" name="teleport_btn" tool_tip="Телепортироваться в выбранную область"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
new file mode 100644
index 0000000000..62095acbaf
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Профиль объекта">
+ <panel.string name="unknown">
+ (неизвестно)
+ </panel.string>
+ <panel.string name="public">
+ (публичное)
+ </panel.string>
+ <panel.string name="you_can">
+ Вы можете:
+ </panel.string>
+ <panel.string name="owner_can">
+ Владелец может:
+ </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>
+ <panel.string name="origin_inventory">
+ (инвентарь)
+ </panel.string>
+ <panel.string name="origin_inworld">
+ (в мире)
+ </panel.string>
+ <text name="title" value="Профиль объекта"/>
+ <text name="origin" value="(инвентарь)"/>
+ <scroll_container name="item_profile_scroll">
+ <panel label="" name="item_profile">
+ <text name="LabelItemNameTitle">
+ Название:
+ </text>
+ <text name="LabelItemDescTitle">
+ Описание:
+ </text>
+ <text name="LabelCreatorTitle">
+ Создатель:
+ </text>
+ <text name="LabelOwnerTitle">
+ Владелец:
+ </text>
+ <text name="LabelAcquiredTitle">
+ Приобретено:
+ </text>
+ <panel name="perms_inv">
+ <text name="perm_modify">
+ Вы можете:
+ </text>
+ <check_box label="Изменять" name="CheckOwnerModify"/>
+ <check_box label="Копировать" name="CheckOwnerCopy"/>
+ <check_box label="Передать" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Все:
+ </text>
+ <check_box label="Копировать" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Группа:
+ </text>
+ <check_box label="Поделиться" name="CheckShareWithGroup" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
+ <text name="NextOwnerLabel">
+ Следующий владелец:
+ </text>
+ <check_box label="Изменять" name="CheckNextOwnerModify"/>
+ <check_box label="Копировать" name="CheckNextOwnerCopy"/>
+ <check_box label="Передать" name="CheckNextOwnerTransfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+ </panel>
+ <check_box label="Для продажи" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Копировать" name="Copy"/>
+ <combo_box.item label="Оригинал" name="Original"/>
+ </combo_box>
+ <spinner label="Цена: L$" name="Edit Cost"/>
+ </panel>
+ </scroll_container>
+ <panel name="button_panel">
+ <button label="Отмена" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
new file mode 100644
index 0000000000..8e56dd80c0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Профиль объекта">
+ <panel.string name="text deed continued">
+ Сделка
+ </panel.string>
+ <panel.string name="text deed">
+ Сделка
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Этот объект можно изменять
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Эти объекты можно изменять
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Этот объект нельзя изменять
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Эти объекты нельзя изменять
+ </panel.string>
+ <panel.string name="text modify warning">
+ Этот объект содержит объединенные части
+ </panel.string>
+ <panel.string name="Cost Default">
+ Цена: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Всего: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Цена за: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Смешанная цена
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Смешанная продажа
+ </panel.string>
+ <text name="title" value="Профиль объекта"/>
+ <text name="where" value="(в мире)"/>
+ <panel label="" name="properties_panel">
+ <text name="Name:">
+ Название:
+ </text>
+ <text name="Description:">
+ Описание:
+ </text>
+ <text name="CreatorNameLabel">
+ Создатель:
+ </text>
+ <text name="Owner:">
+ Владелец:
+ </text>
+ <text name="Group_label">
+ Группа:
+ </text>
+ <button name="button set group" tool_tip="Выберите группу для передачи ей прав доступа к объекту"/>
+ <name_box initial_value="Загрузка..." name="Group Name Proxy"/>
+ <button label="Сделка" label_selected="Сделка" name="button deed" tool_tip="В результате сделки объект передается группе, при этом права на него будут соответствовать правам следующего владельца. Переданный группе объект может передаваться должностным лицом группы."/>
+ <text name="label click action">
+ Действие по щелчку:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="Коснуться (по умолчанию)" name="Touch/grab(default)"/>
+ <combo_box.item label="Сесть на объект" name="Sitonobject"/>
+ <combo_box.item label="Купить объект" name="Buyobject"/>
+ <combo_box.item label="Заплатить за объект" name="Payobject"/>
+ <combo_box.item label="Открыть" name="Open"/>
+ </combo_box>
+ <panel name="perms_inv">
+ <text name="perm_modify">
+ Этот объект можно изменять
+ </text>
+ <text name="Anyone can:">
+ Все:
+ </text>
+ <check_box label="Копировать" name="checkbox allow everyone copy"/>
+ <check_box label="Переместить" name="checkbox allow everyone move"/>
+ <text name="GroupLabel">
+ Группа:
+ </text>
+ <check_box label="Поделиться" name="checkbox share with group" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
+ <text name="NextOwnerLabel">
+ Следующий владелец:
+ </text>
+ <check_box label="Изменять" name="checkbox next owner can modify"/>
+ <check_box label="Копировать" name="checkbox next owner can copy"/>
+ <check_box label="Передать" name="checkbox next owner can transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+ </panel>
+ <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="Original"/>
+ </combo_box>
+ <spinner label="Цена: L$" name="Edit Cost"/>
+ <check_box label="Показать в результатах поиска" name="search_check" tool_tip="Показывать объект в результатах поиска"/>
+ <text name="B:">
+ Н:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ В:
+ </text>
+ <text name="N:">
+ С:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
+ <panel name="button_panel">
+ <button label="Открыть" name="open_btn"/>
+ <button label="Заплатить" name="pay_btn"/>
+ <button label="Купить" name="buy_btn"/>
+ <button label="Подробности" name="details_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
new file mode 100644
index 0000000000..7fef5797a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -0,0 +1,4946 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+ It is only for those strings which do not belong in a floater.
+ 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="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Second Life
+ </string>
+ <string name="CAPITALIZED_APP_NAME">
+ SECOND LIFE
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Сетка Second Life
+ </string>
+ <string name="SUPPORT_SITE">
+ Портал поддержки Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Проверка оборудования...
+ </string>
+ <string name="StartupLoading">
+ Загружается [APP_NAME]...
+ </string>
+ <string name="StartupClearingCache">
+ Очистка кэша...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Инициализация кэша текстур...
+ </string>
+ <string name="StartupInitializingVFS">
+ Инициализация виртуальной файловой системы...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Ошибка инициализации графики. Обновите графический драйвер!
+ </string>
+ <string name="ProgressRestoring">
+ Восстановление...
+ </string>
+ <string name="ProgressChangingResolution">
+ Изменение разрешения...
+ </string>
+ <string name="Fullbright">
+ Собственная яркость (устаревший параметр)
+ </string>
+ <string name="LoginInProgress">
+ Вход... Может показаться, что программа [APP_NAME] зависла. Ожидайте.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Вход...
+ </string>
+ <string name="LoginAuthenticating">
+ Аутентификация
+ </string>
+ <string name="LoginMaintenance">
+ Идет обслуживание аккаунта...
+ </string>
+ <string name="LoginAttempt">
+ Предыдущая попытка входа была неудачной. Вход: попытка № [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Загрузка мира...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Инициализация встроенного веб-браузера...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Инициализация мультимедиа...
+ </string>
+ <string name="LoginInitializingFonts">
+ Загрузка шрифтов...
+ </string>
+ <string name="LoginVerifyingCache">
+ Проверка файлов кэша (может занять 60-90 с)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Обработка ответа...
+ </string>
+ <string name="LoginInitializingWorld">
+ Инициализация мира...
+ </string>
+ <string name="LoginDecodingImages">
+ Декодирование изображений...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Инициализация QuickTime...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ QuickTime не найден – ошибка инициализации.
+ </string>
+ <string name="LoginQuicktimeOK">
+ Успешная инициализация QuickTime.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Запрос возможностей региона...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Запрос возможностей региона, попытка [NUMBER]...
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Устанавливается связь с регионом...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Подключение к региону...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Загрузка одежды...
+ </string>
+ <string name="InvalidCertificate">
+ Сервер возвратил недействительный или поврежденный сертификат. Обратитесь к администратору сетки.
+ </string>
+ <string name="CertInvalidHostname">
+ Для доступа к серверу использовалось недействительное имя узла. Проверьте URL-адрес SL или имя узла в сетке.
+ </string>
+ <string name="CertExpired">
+ Судя по всему, истек срок действия сертификата, возвращенного сеткой. Проверьте время, установленное в системе, или обратитесь к администратору сетки.
+ </string>
+ <string name="CertKeyUsage">
+ Не удалось использовать в протоколе SSL сертификат, возвращенный сервером. Обратитесь к администратору сетки.
+ </string>
+ <string name="CertBasicConstraints">
+ В цепочке сертификатов серверов слишком много сертификатов. Обратитесь к администратору сетки.
+ </string>
+ <string name="CertInvalidSignature">
+ Не удалось проверить подпись сертификата, возвращенного сервером сетки. Обратитесь к администратору сетки.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Ошибка сети: не удалось установить соединение. Проверьте подключение к сети.
+ </string>
+ <string name="LoginFailed">
+ Ошибка входа.
+ </string>
+ <string name="Quit">
+ Выйти
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ У клиента, которым вы пользуетесь, больше нет доступа к игре Second Life. Загрузить новую версию клиента можно по адресу
+http://secondlife.com/download
+
+Дополнительные сведения см. в разделе вопросов и ответов по адресу
+http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Доступно необязательное обновление клиента: [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Необходимо обновить клиент: [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ С этого клиента уже выполнен вход.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Извините! Не удается обеспечить ваш вход.
+Убедитесь, что вы правильно ввели:
+ * имя пользователя (например, bobsmith12 или steller.sunshine)
+ * пароль
+Кроме того, убедитесь, что режим Caps Lock отключен.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ В качестве меры предосторожности ваш пароль изменен.
+Перейдите на страницу своего аккаунта по адресу http://secondlife.com/password
+и ответьте на контрольный вопрос, чтобы восстановить свой пароль
+Приносим извинения за неудобство.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ В нашу систему внесены изменения, поэтому вам следует восстановить свой пароль.
+Перейдите на страницу своего аккаунта по адресу http://secondlife.com/password
+и ответьте на контрольный вопрос, чтобы восстановить свой пароль
+Приносим извинения за неудобство.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ Сайт Second Life временно закрыт на техническое обслуживание.
+В данное время входить могут только сотрудники.
+Обновление состояния см. на веб-странице www.secondlife.com/status.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ Вход в Second Life временно ограничен, чтобы обеспечить наилучшее времяпровождение в игровом мире.
+
+В это время у пользователей с бесплатными аккаунтами не будет доступа к Second Life, чтобы у тех, кто заплатил, было больше места.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ Нельзя входить в игру Second Life на этом компьютере.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу
+support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ Ваш аккаунт не будет доступен до
+[TIME] по тихоокеанскому времени.
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ В данное время нам не удается выполнить ваш запрос.
+Обратитесь за помощью в службу поддержки Second Life по адресу http://secondlife.com/support.
+Если вам не удается изменить свой пароль, позвоните по телефону (866) 476-9763.
+ </string>
+ <string name="LoginFailedTransformError">
+ При входе обнаружена несогласованность данных.
+Напишите сообщения по адресу support@secondlife.com.
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ Выполняется небольшое обслуживание вашего аккаунта.
+Ваш аккаунт не будет доступен до
+[TIME] по тихоокеанскому времени.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ В ответ на запрос выхода симулятор возвратил сообщение о сбое.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ В системе выполняется выход для вашего аккаунта.
+Она будет недоступна до
+[TIME] по тихоокеанскому времени.
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ Не удается создать допустимый сеанс.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ Не удается подключиться к симулятору.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Вы можете входить в Second Life только
+от [START] до [END] по тихоокеанскому времени.
+Заходите в это время.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Неправильные параметры.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ Имя должно состоять только из букв и цифр.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ Фамилия должна состоять только из букв и цифр.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ Регион переходит в автономный режим.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ Агент отсутствует в регионе.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ Вход в регион выполнен в другом сеансе.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ Для региона выполнен выход в предыдущем сеансе.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ Для региона все еще выполняется выход в предыдущем сеансе.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LogoutSucceeded">
+ В последнем сеансе для региона выполнен выход.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ Для региона начат процесс выхода.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ Во время вашего последнего сеанса система начала процедуру выхода.
+Попробуйте повторно войти через минуту.
+ </string>
+ <string name="AgentLostConnection">
+ Возможно, в этом регионе возникли проблемы. Проверьте подключение к Интернету.
+ </string>
+ <string name="SavingSettings">
+ Сохранение настроек...
+ </string>
+ <string name="LoggingOut">
+ Выполняется выход...
+ </string>
+ <string name="ShuttingDown">
+ Игра закрывается...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Произошло отключение от региона, в котором вы находились.
+ </string>
+ <string name="SentToInvalidRegion">
+ Вы отправлены в недействительный регион.
+ </string>
+ <string name="TestingDisconnect">
+ Тестирование отключения клиента
+ </string>
+ <string name="TooltipPerson">
+ Человек
+ </string>
+ <string name="TooltipNoName">
+ (нет имени)
+ </string>
+ <string name="TooltipOwner">
+ Владелец:
+ </string>
+ <string name="TooltipPublic">
+ Общедоступно
+ </string>
+ <string name="TooltipIsGroup">
+ (группа)
+ </string>
+ <string name="TooltipForSaleL$">
+ Продается: L$[AMOUNT]
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Стройка в составе группы
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Стройка запрещена
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Стройка в составе группы
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Небезопасно
+ </string>
+ <string name="TooltipFlagNoFly">
+ Полеты запрещены
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Скрипты для группы
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Скрипты запрещены
+ </string>
+ <string name="TooltipLand">
+ Земля:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Сюда можно перетащить только одну вещь
+ </string>
+ <string name="TooltipPrice" value="L$[AMOUNT]:"/>
+ <string name="TooltipOutboxNoTransfer">
+ Часть этих объектов нельзя продать, или они переданы другому пользователю.
+ </string>
+ <string name="TooltipOutboxWorn">
+ Часть этих объектов на вас. Снимите их со своего аватара и попробуйте переместить их еще раз.
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ В этой папке слишком много уровней вложенных папок. Измените структуру вложенных папок, ограничив ее глубину 4 уровнями (корневая папка, вложенные папки уровня А, вложенные в них папки уровня Б, вложенные в них папки уровня В).
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ Эта папка содержит более 200 объектов. Сложите некоторые вещи в коробки, чтобы уменьшить число объектов.
+ </string>
+ <string name="TooltipHttpUrl">
+ Щелкните, чтобы просмотреть эту веб-страницу
+ </string>
+ <string name="TooltipSLURL">
+ Щелкните, чтобы просмотреть информацию об этом месте
+ </string>
+ <string name="TooltipAgentUrl">
+ Щелкните, чтобы просмотреть профиль этого жителя
+ </string>
+ <string name="TooltipAgentInspect">
+ Узнать больше об этом жителе
+ </string>
+ <string name="TooltipAgentMute">
+ Щелкните, чтобы не слышать этого жителя
+ </string>
+ <string name="TooltipAgentUnmute">
+ Щелкните, чтобы слышать этого жителя
+ </string>
+ <string name="TooltipAgentIM">
+ Щелкните, чтобы открыть личный чат с этим жителем
+ </string>
+ <string name="TooltipAgentPay">
+ Щелкните, чтобы заплатить жителю
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Щелкните, чтобы предложить этому жителю телепортацию
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Щелкните, чтобы предложить этому жителю дружбу
+ </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://
+ </string>
+ <string name="CurrentURL" value="Текущий URL-адрес: [CurrentURL]"/>
+ <string name="SLurlLabelTeleport">
+ Телепортироваться в
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Показать карту для
+ </string>
+ <string name="SLappAgentMute">
+ Откл. звук
+ </string>
+ <string name="SLappAgentUnmute">
+ Вкл. звук
+ </string>
+ <string name="SLappAgentIM">
+ IM
+ </string>
+ <string name="SLappAgentPay">
+ Заплатить
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Предложить телепортацию в
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Предложить дружбу
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Закрыть (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Закрыть (Ctrl+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Закрыть
+ </string>
+ <string name="BUTTON_RESTORE">
+ Развернуть
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Свернуть
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Отделить
+ </string>
+ <string name="BUTTON_DOCK">
+ Присоединить
+ </string>
+ <string name="BUTTON_HELP">
+ Показать справку
+ </string>
+ <string name="Searching">
+ Поиск...
+ </string>
+ <string name="NoneFound">
+ Ничего не найдено.
+ </string>
+ <string name="RetrievingData">
+ Получение...
+ </string>
+ <string name="ReleaseNotes">
+ Заметки о выпуске
+ </string>
+ <string name="LoadingData">
+ Загрузка...
+ </string>
+ <string name="AvatarNameNobody">
+ (без имени)
+ </string>
+ <string name="AvatarNameWaiting">
+ (ожидание)
+ </string>
+ <string name="AvatarNameMultiple">
+ (несколько)
+ </string>
+ <string name="GroupNameNone">
+ (нет)
+ </string>
+ <string name="AvalineCaller">
+ [ORDER] абонента Avaline
+ </string>
+ <string name="AssetErrorNone">
+ Ошибок нет
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Запрос актива: сбой
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Запрос актива: файл не существует
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Запрос актива: актив не найден в базе данных
+ </string>
+ <string name="AssetErrorEOF">
+ Конец файла
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Не удается открыть файл
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Файл не найден
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Вышло время передачи файла
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Обрыв в канале
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Не достигнута договоренность по цене между клиентом и сервером
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Неизвестный статус
+ </string>
+ <string name="texture">
+ текстуру
+ </string>
+ <string name="sound">
+ звук
+ </string>
+ <string name="calling card">
+ визитку
+ </string>
+ <string name="landmark">
+ закладку
+ </string>
+ <string name="legacy script">
+ старый скрипт
+ </string>
+ <string name="clothing">
+ одежду
+ </string>
+ <string name="object">
+ объект
+ </string>
+ <string name="note card">
+ заметку
+ </string>
+ <string name="folder">
+ папку
+ </string>
+ <string name="root">
+ корневой каталог
+ </string>
+ <string name="lsl2 script">
+ скрипт LSL2
+ </string>
+ <string name="lsl bytecode">
+ байт-код LSL
+ </string>
+ <string name="tga texture">
+ текстуру TGA
+ </string>
+ <string name="body part">
+ часть тела
+ </string>
+ <string name="snapshot">
+ снимок
+ </string>
+ <string name="lost and found">
+ найденные вещи
+ </string>
+ <string name="targa image">
+ изображение TGA
+ </string>
+ <string name="trash">
+ содержимое корзины
+ </string>
+ <string name="jpeg image">
+ изображение JPEG
+ </string>
+ <string name="animation">
+ анимацию
+ </string>
+ <string name="gesture">
+ жест
+ </string>
+ <string name="simstate">
+ состояние симуляции
+ </string>
+ <string name="favorite">
+ избранное
+ </string>
+ <string name="symbolic link">
+ ссылку
+ </string>
+ <string name="symbolic folder link">
+ ссылку на папку
+ </string>
+ <string name="mesh">
+ сетка
+ </string>
+ <string name="AvatarEditingAppearance">
+ (внешний вид редактируется)
+ </string>
+ <string name="AvatarAway">
+ Нет на месте
+ </string>
+ <string name="AvatarBusy">
+ Не беспокоить
+ </string>
+ <string name="AvatarMuted">
+ В черном списке
+ </string>
+ <string name="anim_express_afraid">
+ Страх
+ </string>
+ <string name="anim_express_anger">
+ Гнев
+ </string>
+ <string name="anim_away">
+ Нет на месте
+ </string>
+ <string name="anim_backflip">
+ Сальто назад
+ </string>
+ <string name="anim_express_laugh">
+ Хохот
+ </string>
+ <string name="anim_express_toothsmile">
+ Широкая улыбка
+ </string>
+ <string name="anim_blowkiss">
+ Воздушный поцелуй
+ </string>
+ <string name="anim_express_bored">
+ Скука
+ </string>
+ <string name="anim_bow">
+ Поклон
+ </string>
+ <string name="anim_clap">
+ Хлопок
+ </string>
+ <string name="anim_courtbow">
+ Учтивый поклон
+ </string>
+ <string name="anim_express_cry">
+ Плач
+ </string>
+ <string name="anim_dance1">
+ Танец 1
+ </string>
+ <string name="anim_dance2">
+ Танец 2
+ </string>
+ <string name="anim_dance3">
+ Танец 3
+ </string>
+ <string name="anim_dance4">
+ Танец 4
+ </string>
+ <string name="anim_dance5">
+ Танец 5
+ </string>
+ <string name="anim_dance6">
+ Танец 6
+ </string>
+ <string name="anim_dance7">
+ Танец 7
+ </string>
+ <string name="anim_dance8">
+ Танец 8
+ </string>
+ <string name="anim_express_disdain">
+ Презрение
+ </string>
+ <string name="anim_drink">
+ Питьё
+ </string>
+ <string name="anim_express_embarrased">
+ Смущение
+ </string>
+ <string name="anim_angry_fingerwag">
+ Погрозить пальцем
+ </string>
+ <string name="anim_fist_pump">
+ Поднимание кулака
+ </string>
+ <string name="anim_yoga_float">
+ Парящий Будда
+ </string>
+ <string name="anim_express_frown">
+ Хмурость
+ </string>
+ <string name="anim_impatient">
+ Нетерпение
+ </string>
+ <string name="anim_jumpforjoy">
+ Прыжок радости
+ </string>
+ <string name="anim_kissmybutt">
+ Поцелуй в зад
+ </string>
+ <string name="anim_express_kiss">
+ Поцелуй
+ </string>
+ <string name="anim_laugh_short">
+ Смех
+ </string>
+ <string name="anim_musclebeach">
+ Демонстрация мускулов
+ </string>
+ <string name="anim_no_unhappy">
+ Грустный отказ
+ </string>
+ <string name="anim_no_head">
+ Отказ
+ </string>
+ <string name="anim_nyanya">
+ Ня-ня-ня
+ </string>
+ <string name="anim_punch_onetwo">
+ Двойка руками
+ </string>
+ <string name="anim_express_open_mouth">
+ Открывание рта
+ </string>
+ <string name="anim_peace">
+ Дружелюбие
+ </string>
+ <string name="anim_point_you">
+ Указывание на кого-то
+ </string>
+ <string name="anim_point_me">
+ Указывание на себя
+ </string>
+ <string name="anim_punch_l">
+ Удар левой рукой
+ </string>
+ <string name="anim_punch_r">
+ Удар правой рукой
+ </string>
+ <string name="anim_rps_countdown">
+ Счет в КНБ
+ </string>
+ <string name="anim_rps_paper">
+ КНБ – бумага
+ </string>
+ <string name="anim_rps_rock">
+ КНБ – камень
+ </string>
+ <string name="anim_rps_scissors">
+ КНБ – ножницы
+ </string>
+ <string name="anim_express_repulsed">
+ Отказ
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ «Вертушка»
+ </string>
+ <string name="anim_express_sad">
+ Грусть
+ </string>
+ <string name="anim_salute">
+ Приветствие
+ </string>
+ <string name="anim_shout">
+ Крик
+ </string>
+ <string name="anim_express_shrug">
+ Пожимание плечами
+ </string>
+ <string name="anim_express_smile">
+ Улыбка
+ </string>
+ <string name="anim_smoke_idle">
+ Курение не в затяжку
+ </string>
+ <string name="anim_smoke_inhale">
+ Курение в затяжку
+ </string>
+ <string name="anim_smoke_throw_down">
+ Бросить сигарету
+ </string>
+ <string name="anim_express_surprise">
+ Удивление
+ </string>
+ <string name="anim_sword_strike_r">
+ Удар мечом
+ </string>
+ <string name="anim_angry_tantrum">
+ Вспышка гнева
+ </string>
+ <string name="anim_express_tongue_out">
+ Показ языка
+ </string>
+ <string name="anim_hello">
+ Приветствие рукой
+ </string>
+ <string name="anim_whisper">
+ Шепот
+ </string>
+ <string name="anim_whistle">
+ Свист
+ </string>
+ <string name="anim_express_wink">
+ Подмигивание
+ </string>
+ <string name="anim_wink_hollywood">
+ Подмигивание по-голливудски
+ </string>
+ <string name="anim_express_worry">
+ Беспокойство
+ </string>
+ <string name="anim_yes_happy">
+ Радостное согласие
+ </string>
+ <string name="anim_yes_head">
+ Согласие
+ </string>
+ <string name="texture_loading">
+ Загрузка...
+ </string>
+ <string name="worldmap_offline">
+ Не в сети
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ [AREA] м² L$[PRICE]
+ </string>
+ <string name="worldmap_results_none_found">
+ Ничего не найдено.
+ </string>
+ <string name="Ok">
+ ОК
+ </string>
+ <string name="Premature end of file">
+ Преждевременный конец файла
+ </string>
+ <string name="ST_NO_JOINT">
+ Не удается найти объект ROOT или JOINT.
+ </string>
+ <string name="whisper">
+ шепчет:
+ </string>
+ <string name="shout">
+ кричит:
+ </string>
+ <string name="ringing">
+ Подключение к голосовому чату...
+ </string>
+ <string name="connected">
+ Подключение установлено
+ </string>
+ <string name="unavailable">
+ В этом месте голосовая связь недоступна
+ </string>
+ <string name="hang_up">
+ Отключение от общего голосового чата
+ </string>
+ <string name="reconnect_nearby">
+ Будет установлено подключение к локальному голосовому чату
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ Объекту «[OBJECTNAME]», который принадлежит пользователю «[OWNERNAME]» и находится в [REGIONPOS] в регионе «[REGIONNAME]», предоставлено разрешение: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ Объекту «[OBJECTNAME]», который принадлежит пользователю «[OWNERNAME]» и находится в [REGIONPOS] в регионе «[REGIONNAME]», отказано в разрешении: [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ У вас берут Linden-деньги
+ </string>
+ <string name="ActOnControlInputs">
+ Действия при активации элементов управления
+ </string>
+ <string name="RemapControlInputs">
+ Новое сопоставление элементов управления
+ </string>
+ <string name="AnimateYourAvatar">
+ Анимировать ваш аватар
+ </string>
+ <string name="AttachToYourAvatar">
+ Прикрепить к аватару
+ </string>
+ <string name="ReleaseOwnership">
+ Отказаться от владения, сделать всеобщим
+ </string>
+ <string name="LinkAndDelink">
+ Связать или отменить связь с другими объектами
+ </string>
+ <string name="AddAndRemoveJoints">
+ Добавление и удаление связей с другими объектами
+ </string>
+ <string name="ChangePermissions">
+ Изменить разрешения
+ </string>
+ <string name="TrackYourCamera">
+ Следить за камерой
+ </string>
+ <string name="ControlYourCamera">
+ Управлять камерой
+ </string>
+ <string name="NotConnected">
+ Нет подключения
+ </string>
+ <string name="SIM_ACCESS_PG">
+ Общий
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Умеренный
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Для взрослых
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Не в сети
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Неизвестно
+ </string>
+ <string name="land_type_unknown">
+ (неизвестно)
+ </string>
+ <string name="Estate / Full Region">
+ Землевладение/весь регион
+ </string>
+ <string name="Estate / Homestead">
+ Землевладение/поместье
+ </string>
+ <string name="Mainland / Homestead">
+ Материк/поместье
+ </string>
+ <string name="Mainland / Full Region">
+ Материк/весь регион
+ </string>
+ <string name="all_files">
+ Все файлы
+ </string>
+ <string name="sound_files">
+ Звуки
+ </string>
+ <string name="animation_files">
+ Анимация
+ </string>
+ <string name="image_files">
+ Изображения
+ </string>
+ <string name="save_file_verb">
+ Сохранить
+ </string>
+ <string name="load_file_verb">
+ Загрузить
+ </string>
+ <string name="targa_image_files">
+ Изображения TGA
+ </string>
+ <string name="bitmap_image_files">
+ Изображения BMP
+ </string>
+ <string name="avi_movie_file">
+ Видео AVI
+ </string>
+ <string name="xaf_animation_file">
+ Анимация XAF
+ </string>
+ <string name="xml_file">
+ XML-файл
+ </string>
+ <string name="raw_file">
+ RAW-файл
+ </string>
+ <string name="compressed_image_files">
+ Несжатые изображения
+ </string>
+ <string name="load_files">
+ Загрузить файлы
+ </string>
+ <string name="choose_the_directory">
+ Выбрать каталог
+ </string>
+ <string name="AvatarSetNotAway">
+ На месте
+ </string>
+ <string name="AvatarSetAway">
+ Нет на месте
+ </string>
+ <string name="AvatarSetNotBusy">
+ Не занят(а)
+ </string>
+ <string name="AvatarSetBusy">
+ Не беспокоить
+ </string>
+ <string name="shape">
+ Фигура
+ </string>
+ <string name="skin">
+ Кожа
+ </string>
+ <string name="hair">
+ Волосы
+ </string>
+ <string name="eyes">
+ Глаза
+ </string>
+ <string name="shirt">
+ Рубашка
+ </string>
+ <string name="pants">
+ Брюки
+ </string>
+ <string name="shoes">
+ Обувь
+ </string>
+ <string name="socks">
+ Носки
+ </string>
+ <string name="jacket">
+ Пиджак
+ </string>
+ <string name="gloves">
+ Перчатки
+ </string>
+ <string name="undershirt">
+ Майка
+ </string>
+ <string name="underpants">
+ Трусы
+ </string>
+ <string name="skirt">
+ Юбка
+ </string>
+ <string name="alpha">
+ Альфа-маска
+ </string>
+ <string name="tattoo">
+ Тату
+ </string>
+ <string name="physics">
+ Физические данные
+ </string>
+ <string name="invalid">
+ ошибка
+ </string>
+ <string name="none">
+ нет
+ </string>
+ <string name="shirt_not_worn">
+ Рубашка не надета
+ </string>
+ <string name="pants_not_worn">
+ Брюки не надеты
+ </string>
+ <string name="shoes_not_worn">
+ Обувь не надета
+ </string>
+ <string name="socks_not_worn">
+ Носки не надеты
+ </string>
+ <string name="jacket_not_worn">
+ Пиджак не надет
+ </string>
+ <string name="gloves_not_worn">
+ Перчатки не надеты
+ </string>
+ <string name="undershirt_not_worn">
+ Майка не надета
+ </string>
+ <string name="underpants_not_worn">
+ Трусы не надеты
+ </string>
+ <string name="skirt_not_worn">
+ Юбка не надета
+ </string>
+ <string name="alpha_not_worn">
+ Альфа-маска не надета
+ </string>
+ <string name="tattoo_not_worn">
+ Тату не надето
+ </string>
+ <string name="physics_not_worn">
+ Физика не учитывается
+ </string>
+ <string name="invalid_not_worn">
+ ошибка
+ </string>
+ <string name="create_new_shape">
+ Создать фигуру
+ </string>
+ <string name="create_new_skin">
+ Создать кожу
+ </string>
+ <string name="create_new_hair">
+ Создать волосы
+ </string>
+ <string name="create_new_eyes">
+ Создать глаза
+ </string>
+ <string name="create_new_shirt">
+ Создать рубашку
+ </string>
+ <string name="create_new_pants">
+ Создать брюки
+ </string>
+ <string name="create_new_shoes">
+ Создать обувь
+ </string>
+ <string name="create_new_socks">
+ Создать носки
+ </string>
+ <string name="create_new_jacket">
+ Создать пиджак
+ </string>
+ <string name="create_new_gloves">
+ Создать перчатки
+ </string>
+ <string name="create_new_undershirt">
+ Создать майку
+ </string>
+ <string name="create_new_underpants">
+ Создать трусы
+ </string>
+ <string name="create_new_skirt">
+ Создать юбку
+ </string>
+ <string name="create_new_alpha">
+ Создать альфа-маску
+ </string>
+ <string name="create_new_tattoo">
+ Создать тату
+ </string>
+ <string name="create_new_physics">
+ Создать физику
+ </string>
+ <string name="create_new_invalid">
+ ошибка
+ </string>
+ <string name="NewWearable">
+ Создать [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Далее
+ </string>
+ <string name="ok">
+ ОК
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Групповое уведомление
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Групповые уведомления
+ </string>
+ <string name="GroupNotifySentBy">
+ Отправитель
+ </string>
+ <string name="GroupNotifyAttached">
+ Вложение:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Здесь можно просмотреть последние уведомления или отказаться от их получения.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Открыть вложение
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Сохранить вложение
+ </string>
+ <string name="TeleportOffer">
+ Предложена телепортация
+ </string>
+ <string name="StartUpNotifications">
+ Пока вы отсутствовали, пришли новые уведомления.
+ </string>
+ <string name="OverflowInfoChannelString">
+ Других уведомлений: %d
+ </string>
+ <string name="BodyPartsRightArm">
+ Правая рука
+ </string>
+ <string name="BodyPartsHead">
+ Голова
+ </string>
+ <string name="BodyPartsLeftArm">
+ Левая рука
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Левая нога
+ </string>
+ <string name="BodyPartsTorso">
+ Торс
+ </string>
+ <string name="BodyPartsRightLeg">
+ Правая нога
+ </string>
+ <string name="GraphicsQualityLow">
+ низкая
+ </string>
+ <string name="GraphicsQualityMid">
+ средняя
+ </string>
+ <string name="GraphicsQualityHigh">
+ высокая
+ </string>
+ <string name="LeaveMouselook">
+ Нажмите ESC, чтобы вернуться к обычному обзору
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/all/[SEARCH_TERM] поиском].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/places/[SEARCH_TERM] поиском].
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Перетащите сюда закладку, чтобы добавить ее в список избранного.
+ </string>
+ <string name="InventoryNoTexture">
+ В вашем инвентаре нет копии этой текстуры
+ </string>
+ <string name="InventoryInboxNoItems">
+ Покупки из торгового центра будут доставлены сюда.
+ </string>
+ <string name="MarketplaceURL">
+ http://marketplace.[DOMAIN_NAME]
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://marketplace.[DOMAIN_NAME]/create_store
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ http://marketplace.[DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryOutboxCreationErrorTitle">
+ Папка «Торговые исходящие» настроена неправильно
+ </string>
+ <string name="InventoryOutboxCreationErrorTooltip">
+ Ошибка конфигурации папки «Торговые исходящие»
+ </string>
+ <string name="InventoryOutboxCreationError">
+ Чтобы исправить эту проблему, обратитесь в службу поддержки.
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Продавать вещи в торговом центре может кто угодно
+ </string>
+ <string name="InventoryOutboxNotMerchantTooltip">
+ Станьте торговцем!
+ </string>
+ <string name="InventoryOutboxNotMerchant">
+ [[MARKETPLACE_URL] Торговый центр Second Life] предлагает на продажу более миллиона виртуальных продуктов, и все они созданы жителями Second Life. Вы тоже можете продавать созданные вами вещи, а также некоторые из вещей, купленных вами. Это совсем несложно. Настройка выполняется бесплатно. [[LEARN_MORE_URL] Узнайте подробности] или [[CREATE_STORE_URL] создайте магазин] в торговом центре, чтобы начать торговлю.
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ Новый способ отправки вещей в торговый центр
+ </string>
+ <string name="InventoryOutboxNoItemsTooltip">
+ Перетащите вещи сюда, чтобы подготовить их для продажи в торговом центре
+ </string>
+ <string name="InventoryOutboxNoItems">
+ Перетаскивайте в эту область вещи и папки, которые хотите продать. При перетаскивании создается копия вещи (за исключением вещей, недоступных для копирования), поэтому инвентарь не изменяется. Когда все готово для отправки вещей в торговый центр, нажмите кнопку «Передать». Вещи, перемещенные в инвентарь магазина, исчезают из этой папки.
+ </string>
+ <string name="Marketplace Error None">
+ Ошибок нет
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ Ошибка. Прежде чем отправлять вещи в магазин, необходимо зарегистрироваться как торговец (бесплатно).
+ </string>
+ <string name="Marketplace Error Empty Folder">
+ Ошибка. В этой папке нет контента.
+ </string>
+ <string name="Marketplace Error Unassociated Products">
+ Ошибка. Не удается передать эту вещь, поскольку в вашем торговом аккаунте слишком много вещей, не связанных с продуктами. Чтобы исправить эту ошибку, войдите на веб-сайт торгового центра и уменьшите число своих вещей, которые ни с чем не связаны.
+ </string>
+ <string name="Marketplace Error Object Limit">
+ Ошибка. Эта вещь содержит слишком много объектов. Исправьте эту ошибку, сложив объекты в коробки и уменьшив их общее число (должно быть меньше 200).
+ </string>
+ <string name="Marketplace Error Folder Depth">
+ Ошибка. Эта вещь содержит слишком много уровней вложенных папок. Измените структуру так, чтобы уровней вложенных папок было не более 3.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Ошибка. Эту вещь нельзя продать в магазине.
+ </string>
+ <string name="Marketplace Error Internal Import">
+ Ошибка. Эта вещь создает проблему. Повторите попытку позже.
+ </string>
+ <string name="Open landmarks">
+ Открыть закладки
+ </string>
+ <string name="no_transfer" value="(не передается)"/>
+ <string name="no_modify" value="(не изменяется)"/>
+ <string name="no_copy" value="(не копируется)"/>
+ <string name="worn" value="(носится)"/>
+ <string name="link" value="(ссылка)"/>
+ <string name="broken_link" value="(broken_link)"/>
+ <string name="LoadingContents">
+ Загрузка содержимого...
+ </string>
+ <string name="NoContents">
+ Нет контента
+ </string>
+ <string name="WornOnAttachmentPoint" value="(где носится: [ATTACHMENT_POINT])"/>
+ <string name="ActiveGesture" value="[GESLABEL] (активно)"/>
+ <string name="PermYes">
+ Да
+ </string>
+ <string name="PermNo">
+ Нет
+ </string>
+ <string name="Chat Message" value="Чат:"/>
+ <string name="Sound" value="Звук:"/>
+ <string name="Wait" value="--- Ждите:"/>
+ <string name="AnimFlagStop" value="Остановить анимацию:"/>
+ <string name="AnimFlagStart" value="Начать анимацию:"/>
+ <string name="Wave" value="Приветствие рукой"/>
+ <string name="GestureActionNone" value="Нет"/>
+ <string name="HelloAvatar" value="Привет, аватар!"/>
+ <string name="ViewAllGestures" value="Просмотреть все &gt;&gt;"/>
+ <string name="GetMoreGestures" value="Дополнительно &gt;&gt;"/>
+ <string name="Animations" value="Анимация,"/>
+ <string name="Calling Cards" value="Визитки,"/>
+ <string name="Clothing" value="Одежда,"/>
+ <string name="Gestures" value="Жесты,"/>
+ <string name="Landmarks" value="Закладки,"/>
+ <string name="Notecards" value="Заметки,"/>
+ <string name="Objects" value="Объекты,"/>
+ <string name="Scripts" value="Скрипты,"/>
+ <string name="Sounds" value="Звуки,"/>
+ <string name="Textures" value="Текстуры,"/>
+ <string name="Snapshots" value="Снимки,"/>
+ <string name="No Filters" value="Нет"/>
+ <string name="Since Logoff" value="- С момента выхода"/>
+ <string name="InvFolder My Inventory">
+ Мой инвентарь
+ </string>
+ <string name="InvFolder Library">
+ Библиотека
+ </string>
+ <string name="InvFolder Textures">
+ Текстуры
+ </string>
+ <string name="InvFolder Sounds">
+ Звуки
+ </string>
+ <string name="InvFolder Calling Cards">
+ Визитки
+ </string>
+ <string name="InvFolder Landmarks">
+ Закладки
+ </string>
+ <string name="InvFolder Scripts">
+ Скрипты
+ </string>
+ <string name="InvFolder Clothing">
+ Одежда
+ </string>
+ <string name="InvFolder Objects">
+ Объекты
+ </string>
+ <string name="InvFolder Notecards">
+ Заметки
+ </string>
+ <string name="InvFolder New Folder">
+ Новая папка
+ </string>
+ <string name="InvFolder Inventory">
+ Инвентарь
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Несжатые изображения
+ </string>
+ <string name="InvFolder Body Parts">
+ Части тела
+ </string>
+ <string name="InvFolder Trash">
+ Корзина
+ </string>
+ <string name="InvFolder Photo Album">
+ Фотоальбом
+ </string>
+ <string name="InvFolder Lost And Found">
+ Бюро находок
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Несжатые звуки
+ </string>
+ <string name="InvFolder Animations">
+ Анимация
+ </string>
+ <string name="InvFolder Gestures">
+ Жесты
+ </string>
+ <string name="InvFolder Favorite">
+ Мое избранное
+ </string>
+ <string name="InvFolder favorite">
+ Мое избранное
+ </string>
+ <string name="InvFolder Current Outfit">
+ Текущий костюм
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Начальные костюмы
+ </string>
+ <string name="InvFolder My Outfits">
+ Мои костюмы
+ </string>
+ <string name="InvFolder Accessories">
+ Аксессуары
+ </string>
+ <string name="InvFolder Meshes">
+ Меши
+ </string>
+ <string name="InvFolder Friends">
+ Друзья
+ </string>
+ <string name="InvFolder All">
+ Все
+ </string>
+ <string name="no_attachments">
+ Нет прикрепленных объектов
+ </string>
+ <string name="Buy">
+ Купить
+ </string>
+ <string name="BuyforL$">
+ Купить за L$
+ </string>
+ <string name="Stone">
+ Камень
+ </string>
+ <string name="Metal">
+ Металл
+ </string>
+ <string name="Glass">
+ Стекло
+ </string>
+ <string name="Wood">
+ Дерево
+ </string>
+ <string name="Flesh">
+ Плоть
+ </string>
+ <string name="Plastic">
+ Пластик
+ </string>
+ <string name="Rubber">
+ Резина
+ </string>
+ <string name="Light">
+ Светлый
+ </string>
+ <string name="KBShift">
+ SHIFT
+ </string>
+ <string name="KBCtrl">
+ CTRL
+ </string>
+ <string name="Chest">
+ Грудь
+ </string>
+ <string name="Skull">
+ Череп
+ </string>
+ <string name="Left Shoulder">
+ Левое плечо
+ </string>
+ <string name="Right Shoulder">
+ Правое плечо
+ </string>
+ <string name="Left Hand">
+ Левая кисть
+ </string>
+ <string name="Right Hand">
+ Правая кисть
+ </string>
+ <string name="Left Foot">
+ Левая ступня
+ </string>
+ <string name="Right Foot">
+ Правая ступня
+ </string>
+ <string name="Spine">
+ Позвоночник
+ </string>
+ <string name="Pelvis">
+ Таз
+ </string>
+ <string name="Mouth">
+ Рот
+ </string>
+ <string name="Chin">
+ Подбородок
+ </string>
+ <string name="Left Ear">
+ Левое ухо
+ </string>
+ <string name="Right Ear">
+ Правое ухо
+ </string>
+ <string name="Left Eyeball">
+ Левый глаз
+ </string>
+ <string name="Right Eyeball">
+ Правый глаз
+ </string>
+ <string name="Nose">
+ Нос
+ </string>
+ <string name="R Upper Arm">
+ Правое плечо
+ </string>
+ <string name="R Forearm">
+ Правое предплечье
+ </string>
+ <string name="L Upper Arm">
+ Левое плечо
+ </string>
+ <string name="L Forearm">
+ Левое предплечье
+ </string>
+ <string name="Right Hip">
+ Правое бедро
+ </string>
+ <string name="R Upper Leg">
+ Правое колено
+ </string>
+ <string name="R Lower Leg">
+ Правая голень
+ </string>
+ <string name="Left Hip">
+ Левое бедро
+ </string>
+ <string name="L Upper Leg">
+ Левое колено
+ </string>
+ <string name="L Lower Leg">
+ Левая голень
+ </string>
+ <string name="Stomach">
+ Живот
+ </string>
+ <string name="Left Pec">
+ Левая грудь
+ </string>
+ <string name="Right Pec">
+ Правая грудь
+ </string>
+ <string name="Invalid Attachment">
+ Неверная точка присоединения
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS]
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS]
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS]
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS]
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS]
+ </string>
+ <string name="TodayOld">
+ Сегодня
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] год
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] года
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] лет
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] месяц
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] месяца
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] месяцев
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] неделя
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] недели
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] недель
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] день
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] дня
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] дней
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] участник
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] участника
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] участников
+ </string>
+ <string name="AcctTypeResident">
+ Житель
+ </string>
+ <string name="AcctTypeTrial">
+ Гость
+ </string>
+ <string name="AcctTypeCharterMember">
+ Учредитель
+ </string>
+ <string name="AcctTypeEmployee">
+ Сотрудник Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Есть информация о платежах
+ </string>
+ <string name="PaymentInfoOnFile">
+ Есть зарегистрир. информация о платежах
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Нет информации о платежах
+ </string>
+ <string name="AgeVerified">
+ Возраст проверен
+ </string>
+ <string name="NotAgeVerified">
+ Возраст не проверен
+ </string>
+ <string name="Center 2">
+ В центре 2
+ </string>
+ <string name="Top Right">
+ Вверху справа
+ </string>
+ <string name="Top">
+ Вверху
+ </string>
+ <string name="Top Left">
+ Вверху слева
+ </string>
+ <string name="Center">
+ В центре
+ </string>
+ <string name="Bottom Left">
+ Внизу слева
+ </string>
+ <string name="Bottom">
+ Внизу
+ </string>
+ <string name="Bottom Right">
+ Внизу справа
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Загружено, компилируется
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Скрипт не найден на сервере.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Проблема при загрузке
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Недостаточно разрешений для загрузки скрипта.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Недостаточно разрешений для
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Неизвестный сбой загрузки
+ </string>
+ <string name="CompileQueueTitle">
+ Ход повторной компиляции
+ </string>
+ <string name="CompileQueueStart">
+ скомпилировать повторно
+ </string>
+ <string name="ResetQueueTitle">
+ Ход сброса
+ </string>
+ <string name="ResetQueueStart">
+ сброс
+ </string>
+ <string name="RunQueueTitle">
+ Ход запуска
+ </string>
+ <string name="RunQueueStart">
+ запустить
+ </string>
+ <string name="NotRunQueueTitle">
+ Ход остановки выполнения
+ </string>
+ <string name="NotRunQueueStart">
+ прекратить выполнение
+ </string>
+ <string name="CompileSuccessful">
+ Компиляция успешно выполнена!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Компиляция успешно выполнена, сохраняется...
+ </string>
+ <string name="SaveComplete">
+ Сохранение завершено.
+ </string>
+ <string name="ObjectOutOfRange">
+ Скрипт (объект вне области)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Объект [OBJECT] пользователя [OWNER]
+ </string>
+ <string name="GroupsNone">
+ нет
+ </string>
+ <string name="Group" value="(группа)"/>
+ <string name="Unknown">
+ (Неизвестно)
+ </string>
+ <string name="SummaryForTheWeek" value="Сводка за неделю, начиная с"/>
+ <string name="NextStipendDay" value="Дата очередного жалования:"/>
+ <string name="GroupPlanningDate">
+ [day,datetime,utc].[mthnum,datetime,utc].[year,datetime,utc]
+ </string>
+ <string name="GroupIndividualShare" value="Для группы Персонально Совместно"/>
+ <string name="GroupColumn" value="Группа"/>
+ <string name="Balance">
+ Баланс
+ </string>
+ <string name="Credits">
+ Расход
+ </string>
+ <string name="Debits">
+ Приход
+ </string>
+ <string name="Total">
+ Итого
+ </string>
+ <string name="NoGroupDataFound">
+ Не найдены данные для группы
+ </string>
+ <string name="IMParentEstate">
+ родовое землевладение
+ </string>
+ <string name="IMMainland">
+ материк
+ </string>
+ <string name="IMTeen">
+ подростковый
+ </string>
+ <string name="Anyone">
+ все
+ </string>
+ <string name="RegionInfoError">
+ ошибка
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ все землевладения пользователя [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ все ваши землевладения
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ все землевладения пользователя [OWNER], которыми вы управляете
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Допущенные жители: ([ALLOWEDAGENTS], не более [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Допущенные группы: ([ALLOWEDGROUPS], не более [MAXACCESS])
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Память под скрипты на участке
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Участков в списке: [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Используется памяти: [COUNT] КБ из [MAX] КБ; доступно: [AVAILABLE] КБ
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Используется памяти: [COUNT] КБ
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ URL-адреса скрипта участков
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ Используется URL-адресов: [COUNT] из [MAX] (доступно: [AVAILABLE])
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ Используется URL-адресов: [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Ошибка при запросе данных
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Участок не выбран
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Ошибка. Сведения о скрипте доступны только в текущем регионе
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Получение данных...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ У вас нет прав для исследования этого участка
+ </string>
+ <string name="SITTING_ON">
+ Сидит на
+ </string>
+ <string name="ATTACH_CHEST">
+ Грудь
+ </string>
+ <string name="ATTACH_HEAD">
+ Голова
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Левое плечо
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Правое плечо
+ </string>
+ <string name="ATTACH_LHAND">
+ Левая кисть
+ </string>
+ <string name="ATTACH_RHAND">
+ Правая кисть
+ </string>
+ <string name="ATTACH_LFOOT">
+ Левая ступня
+ </string>
+ <string name="ATTACH_RFOOT">
+ Правая ступня
+ </string>
+ <string name="ATTACH_BACK">
+ Спина
+ </string>
+ <string name="ATTACH_PELVIS">
+ Таз
+ </string>
+ <string name="ATTACH_MOUTH">
+ Рот
+ </string>
+ <string name="ATTACH_CHIN">
+ Подбородок
+ </string>
+ <string name="ATTACH_LEAR">
+ Левое ухо
+ </string>
+ <string name="ATTACH_REAR">
+ Правое ухо
+ </string>
+ <string name="ATTACH_LEYE">
+ Левый глаз
+ </string>
+ <string name="ATTACH_REYE">
+ Правый глаз
+ </string>
+ <string name="ATTACH_NOSE">
+ Нос
+ </string>
+ <string name="ATTACH_RUARM">
+ Правое плечо
+ </string>
+ <string name="ATTACH_RLARM">
+ Правое предплечье
+ </string>
+ <string name="ATTACH_LUARM">
+ Левое плечо
+ </string>
+ <string name="ATTACH_LLARM">
+ Левое предплечье
+ </string>
+ <string name="ATTACH_RHIP">
+ Правое бедро
+ </string>
+ <string name="ATTACH_RULEG">
+ Правое колено
+ </string>
+ <string name="ATTACH_RLLEG">
+ Правая голень
+ </string>
+ <string name="ATTACH_LHIP">
+ Левое бедро
+ </string>
+ <string name="ATTACH_LULEG">
+ Левое колено
+ </string>
+ <string name="ATTACH_LLLEG">
+ Левая голень
+ </string>
+ <string name="ATTACH_BELLY">
+ Живот
+ </string>
+ <string name="ATTACH_RPEC">
+ Правая грудь
+ </string>
+ <string name="ATTACH_LPEC">
+ Левая грудь
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ Данные в игре в центре 2
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ Данные в игре вверху справа
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ Данные в игре вверху в центре
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ Данные в игре вверху слева
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ Данные в игре в центре 1
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ Данные в игре внизу слева
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ Данные в игре внизу
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ Данные в игре внизу справа
+ </string>
+ <string name="CursorPos">
+ Строка [LINE], столбец [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ Найдено: [COUNT]
+ </string>
+ <string name="PanelDirTimeStr">
+ [hour,datetime,slt]:[min,datetime,slt]
+ </string>
+ <string name="PanelDirEventsDateText">
+ [day,datetime,slt].[mthnum,datetime,slt]
+ </string>
+ <string name="PanelContentsTooltip">
+ Подключение к объекту
+ </string>
+ <string name="PanelContentsNewScript">
+ Новый скрипт
+ </string>
+ <string name="BusyModeResponseDefault">
+ У адресата вашего сообщения задан статус «Не беспокоить». Ваше сообщение все равно будет отображено на панели IM для просмотра позже.
+ </string>
+ <string name="MuteByName">
+ (по имени)
+ </string>
+ <string name="MuteAgent">
+ (для жителя)
+ </string>
+ <string name="MuteObject">
+ (для объекта)
+ </string>
+ <string name="MuteGroup">
+ (для группы)
+ </string>
+ <string name="MuteExternal">
+ (внешний)
+ </string>
+ <string name="RegionNoCovenant">
+ Нет соглашения для этого землевладения.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Нет соглашения для этого землевладения. Земля в этом землевладении продается его владельцем, а не компанией Linden Lab. Чтобы узнать подробности о продаже, обратитесь к землевладельцу.
+ </string>
+ <string name="covenant_last_modified" value="Дата последнего изменения:"/>
+ <string name="none_text" value="(нет)"/>
+ <string name="never_text" value="(никогда)"/>
+ <string name="GroupOwned">
+ Собственность группы
+ </string>
+ <string name="Public">
+ Общая собственность
+ </string>
+ <string name="LocalSettings">
+ Локальные настройки
+ </string>
+ <string name="RegionSettings">
+ Региональные настройки
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Щелчки: телепорт [TELEPORT], карта [MAP], профиль [PROFILE]
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (будет обновлено после публикации)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ Вы не создали подборки или рекламы. Нажмите кнопку со знаком «плюс» ниже, чтобы создать подборку или рекламу
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ У жителя нет подборки или рекламы
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Загрузка...
+ </string>
+ <string name="MultiPreviewTitle">
+ Предварительный просмотр
+ </string>
+ <string name="MultiPropertiesTitle">
+ Свойства
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Объект с именем
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ принадлежит группе
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ принадлежит известной группе
+ </string>
+ <string name="InvOfferOwnedBy">
+ принадлежит
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ принадлежит неизвестному пользователю
+ </string>
+ <string name="InvOfferGaveYou">
+ дал(а) вам
+ </string>
+ <string name="InvOfferDecline">
+ Вы не приняли [DESC] от жителя &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
+ </string>
+ <string name="GroupMoneyTotal">
+ Итого
+ </string>
+ <string name="GroupMoneyBought">
+ куплено
+ </string>
+ <string name="GroupMoneyPaidYou">
+ уплачено вам
+ </string>
+ <string name="GroupMoneyPaidInto">
+ уплачено в
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ куплен пропуск в
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ уплачено за событие
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ выплачено призовых за событие
+ </string>
+ <string name="GroupMoneyBalance">
+ Баланс
+ </string>
+ <string name="GroupMoneyCredits">
+ Расход
+ </string>
+ <string name="GroupMoneyDebits">
+ Приход
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc], [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
+ </string>
+ <string name="ViewerObjectContents">
+ Контент
+ </string>
+ <string name="AcquiredItems">
+ Купленные вещи
+ </string>
+ <string name="Cancel">
+ Отмена
+ </string>
+ <string name="UploadingCosts">
+ Передача [NAME] стоит L$[AMOUNT]
+ </string>
+ <string name="BuyingCosts">
+ Стоимость покупки: L$[AMOUNT]
+ </string>
+ <string name="UnknownFileExtension">
+ Неизвестное расширение файла .%s
+Ожидаются расширения: WAV, TGA, BMP, JPG, JPEG или BVH
+ </string>
+ <string name="MuteObject2">
+ Заблокировать
+ </string>
+ <string name="MuteAvatar">
+ Заблокировать
+ </string>
+ <string name="UnmuteObject">
+ Разблокировать
+ </string>
+ <string name="UnmuteAvatar">
+ Разблокировать
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Добавить в мои закладки...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Изменить мою закладку...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ CTRL+
+ </string>
+ <string name="accel-win-alt">
+ ALT+
+ </string>
+ <string name="accel-win-shift">
+ SHIFT+
+ </string>
+ <string name="FileSaved">
+ Файл сохранен
+ </string>
+ <string name="Receiving">
+ Получение
+ </string>
+ <string name="AM">
+ до полудня
+ </string>
+ <string name="PM">
+ после полудня
+ </string>
+ <string name="PST">
+ Тихоокеанское время
+ </string>
+ <string name="PDT">
+ Летнее тихоокеанское время
+ </string>
+ <string name="Direction_Forward">
+ Вперед
+ </string>
+ <string name="Direction_Left">
+ Влево
+ </string>
+ <string name="Direction_Right">
+ Вправо
+ </string>
+ <string name="Direction_Back">
+ Назад
+ </string>
+ <string name="Direction_North">
+ Север
+ </string>
+ <string name="Direction_South">
+ Юг
+ </string>
+ <string name="Direction_West">
+ Запад
+ </string>
+ <string name="Direction_East">
+ Восток
+ </string>
+ <string name="Direction_Up">
+ Вверх
+ </string>
+ <string name="Direction_Down">
+ Вниз
+ </string>
+ <string name="Any Category">
+ Все категории
+ </string>
+ <string name="Shopping">
+ Покупки
+ </string>
+ <string name="Land Rental">
+ Земельная рента
+ </string>
+ <string name="Property Rental">
+ Аренда имущества
+ </string>
+ <string name="Special Attraction">
+ Особое событие
+ </string>
+ <string name="New Products">
+ Новые продукты
+ </string>
+ <string name="Employment">
+ Род занятий
+ </string>
+ <string name="Wanted">
+ Хочу найти
+ </string>
+ <string name="Service">
+ Услуги
+ </string>
+ <string name="Personal">
+ Личное сообщение
+ </string>
+ <string name="None">
+ Нет
+ </string>
+ <string name="Linden Location">
+ Место Linden
+ </string>
+ <string name="Adult">
+ Для взрослых
+ </string>
+ <string name="Arts&amp;Culture">
+ Искусство и культура
+ </string>
+ <string name="Business">
+ Бизнес
+ </string>
+ <string name="Educational">
+ Образование
+ </string>
+ <string name="Gaming">
+ Игры
+ </string>
+ <string name="Hangout">
+ Места встреч
+ </string>
+ <string name="Newcomer Friendly">
+ Для новичков
+ </string>
+ <string name="Parks&amp;Nature">
+ Парки и природа
+ </string>
+ <string name="Residential">
+ Проживание
+ </string>
+ <string name="Stage">
+ Стадия
+ </string>
+ <string name="Other">
+ Другое
+ </string>
+ <string name="Rental">
+ Аренда
+ </string>
+ <string name="Any">
+ Все
+ </string>
+ <string name="You">
+ Вы
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="&apos;">
+ &apos;
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="Multiple Media">
+ Несколько источников мультимедиа
+ </string>
+ <string name="Play Media">
+ Мультимедиа – воспроизведение/пауза
+ </string>
+ <string name="MBCmdLineError">
+ Ошибка при анализе командной строки.
+См.: http://wiki.secondlife.com/wiki/Client_parameters
+Ошибка:
+ </string>
+ <string name="MBCmdLineUsg">
+ Использование командной строки [APP_NAME]:
+ </string>
+ <string name="MBUnableToAccessFile">
+ Приложению [APP_NAME] не удается получить доступ к нужному файлу.
+Возможно, выполняется несколько копий или в системе неправильно открыт файл.
+Если это сообщение по-прежнему будет отображаться, перезагрузите компьютер и повторите попытку.
+Если и это не поможет, возможно, придется повторно установить приложение [APP_NAME].
+ </string>
+ <string name="MBFatalError">
+ Неустранимая ошибка
+ </string>
+ <string name="MBRequiresAltiVec">
+ Для работы [APP_NAME] необходим процессор с поддержкой AltiVec (версии G4 или более поздней).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] уже выполняется.
+Поищите значок программы на панели задач.
+Если это сообщение по-прежнему будет отображаться, перезагрузите компьютер.
+ </string>
+ <string name="MBFrozenCrashed">
+ По-видимому, при предыдущем запуске приложения [APP_NAME] оно зависло или в нем возник сбой.
+Отправить отчет о сбое?
+ </string>
+ <string name="MBAlert">
+ Уведомление
+ </string>
+ <string name="MBNoDirectX">
+ Приложению [APP_NAME] не удается обнаружить DirectX 9.0b или более поздних версий.
+В приложении [APP_NAME] используется DirectX для проверки оборудования и выявления устаревших драйверов, из-за которых может снизиться стабильность работы и быстродействие, а также возникнуть сбои. Настоятельно рекомендуется установить DirectX 9.0b, хотя приложение [APP_NAME] работает и без этого компонента.
+Продолжить?
+ </string>
+ <string name="MBWarning">
+ Внимание!
+ </string>
+ <string name="MBNoAutoUpdate">
+ В ОС Linux автоматическое обновление еще не реализовано.
+Загрузите новую версию на сайте www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ Ошибка RegisterClass
+ </string>
+ <string name="MBError">
+ Ошибка
+ </string>
+ <string name="MBFullScreenErr">
+ Невозможна работа в полноэкранном режиме на экране [WIDTH] x [HEIGHT].
+Запущено в окне.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Ошибка завершения работы при удалении окна (сбой функции DestroyWindow())
+ </string>
+ <string name="MBShutdownErr">
+ Ошибка завершения работы
+ </string>
+ <string name="MBDevContextErr">
+ Не удается создать контекст устройства GL
+ </string>
+ <string name="MBPixelFmtErr">
+ Не удается найти подходящий формат пикселей
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Не удается получить описание формата пикселей
+ </string>
+ <string name="MBTrueColorWindow">
+ Для работы [APP_NAME] необходим режим True Color (32 бита).
+Задайте в настройках дисплея 32-битный режим цвета.
+ </string>
+ <string name="MBAlpha">
+ Не удается запустить [APP_NAME] из-за отсутствия доступа к 8-битному альфа-каналу. Обычно эта проблема возникает из-за неполадок с драйвером видеокарты.
+Установите новые драйверы видеокарты.
+Также задайте для монитора 32-битный режим True Color (Панель управления &gt; Экран &gt; Параметры).
+Если это сообщение продолжает отображаться, обратитесь на сайт [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Не удается задать формат пикселей
+ </string>
+ <string name="MBGLContextErr">
+ Не удается создать контекст визуализации GL
+ </string>
+ <string name="MBGLContextActErr">
+ Не удается активировать контекст визуализации GL
+ </string>
+ <string name="MBVideoDrvErr">
+ Не удается запустить приложение [APP_NAME], поскольку драйверы видеокарты неправильно установлены, устарели или предназначены для оборудования, которое не поддерживается. Установите или переустановите последние драйверы видеокарты.
+Если это сообщение продолжает отображаться, обратитесь на сайт [SUPPORT_SITE].
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Жидкие
+ </string>
+ <string name="All White">
+ Полностью белые
+ </string>
+ <string name="Anime Eyes">
+ Глаза как в аниме
+ </string>
+ <string name="Arced">
+ Дугой
+ </string>
+ <string name="Arm Length">
+ Длина рук
+ </string>
+ <string name="Attached">
+ Прикреплено
+ </string>
+ <string name="Attached Earlobes">
+ Приросшие мочки
+ </string>
+ <string name="Back Fringe">
+ Затылок
+ </string>
+ <string name="Baggy">
+ С мешками
+ </string>
+ <string name="Bangs">
+ Челки
+ </string>
+ <string name="Beady Eyes">
+ Бусинки
+ </string>
+ <string name="Belly Size">
+ Размер живота
+ </string>
+ <string name="Big">
+ Большой
+ </string>
+ <string name="Big Butt">
+ Большой зад
+ </string>
+ <string name="Big Hair Back">
+ Пышные волосы: сзади
+ </string>
+ <string name="Big Hair Front">
+ Пышные волосы: спереди
+ </string>
+ <string name="Big Hair Top">
+ Пышные волосы: сверху
+ </string>
+ <string name="Big Head">
+ Большая голова
+ </string>
+ <string name="Big Pectorals">
+ Выпуклая грудь
+ </string>
+ <string name="Big Spikes">
+ Большие «шипы»
+ </string>
+ <string name="Black">
+ Черный
+ </string>
+ <string name="Blonde">
+ Светлый
+ </string>
+ <string name="Blonde Hair">
+ Светлые волосы
+ </string>
+ <string name="Blush">
+ Румяна
+ </string>
+ <string name="Blush Color">
+ Цвет румян
+ </string>
+ <string name="Blush Opacity">
+ Прозрачность румян
+ </string>
+ <string name="Body Definition">
+ Тип тела
+ </string>
+ <string name="Body Fat">
+ Жировая прослойка
+ </string>
+ <string name="Body Freckles">
+ Веснушки
+ </string>
+ <string name="Body Thick">
+ Полное тело
+ </string>
+ <string name="Body Thickness">
+ Полнота
+ </string>
+ <string name="Body Thin">
+ Худое тело
+ </string>
+ <string name="Bow Legged">
+ Ноги колесом
+ </string>
+ <string name="Breast Buoyancy">
+ Высота груди
+ </string>
+ <string name="Breast Cleavage">
+ Ложбинка между грудей
+ </string>
+ <string name="Breast Size">
+ Размер груди
+ </string>
+ <string name="Bridge Width">
+ Ширина переносицы
+ </string>
+ <string name="Broad">
+ Широкая
+ </string>
+ <string name="Brow Size">
+ Размер надбровных дуг
+ </string>
+ <string name="Bug Eyes">
+ Выпученные глаза
+ </string>
+ <string name="Bugged Eyes">
+ Выпученные глаза
+ </string>
+ <string name="Bulbous">
+ Картошкой
+ </string>
+ <string name="Bulbous Nose">
+ Нос картошкой
+ </string>
+ <string name="Breast Physics Mass">
+ Масса груди
+ </string>
+ <string name="Breast Physics Smoothing">
+ Гладкость груди
+ </string>
+ <string name="Breast Physics Gravity">
+ Обвислость груди
+ </string>
+ <string name="Breast Physics Drag">
+ Аэродинамика груди
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Верхняя граница
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Упругость
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Отклик
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Затухание
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Верхняя граница
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Упругость
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Отклик
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Затухание
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Верхняя граница
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Упругость
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Отклик
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Затухание
+ </string>
+ <string name="Belly Physics Mass">
+ Масса живота
+ </string>
+ <string name="Belly Physics Smoothing">
+ Гладкость живота
+ </string>
+ <string name="Belly Physics Gravity">
+ Обвислость живота
+ </string>
+ <string name="Belly Physics Drag">
+ Инертность живота
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Верхняя граница
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Упругость
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Отклик
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Затухание
+ </string>
+ <string name="Butt Physics Mass">
+ Масса зада
+ </string>
+ <string name="Butt Physics Smoothing">
+ Гладкость зада
+ </string>
+ <string name="Butt Physics Gravity">
+ Обвислость зада
+ </string>
+ <string name="Butt Physics Drag">
+ Инертность зада
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Верхняя граница
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Упругость
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Отклик
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Затухание
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Верхняя граница
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Упругость
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Отклик
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Затухание
+ </string>
+ <string name="Bushy Eyebrows">
+ Кустистые брови
+ </string>
+ <string name="Bushy Hair">
+ Пышные
+ </string>
+ <string name="Butt Size">
+ Размер зада
+ </string>
+ <string name="Butt Gravity">
+ Обвислость зада
+ </string>
+ <string name="bustle skirt">
+ Турнюр
+ </string>
+ <string name="no bustle">
+ Без турнюра
+ </string>
+ <string name="more bustle">
+ Большой турнюр
+ </string>
+ <string name="Chaplin">
+ «Чарли Чаплин»
+ </string>
+ <string name="Cheek Bones">
+ Скулы
+ </string>
+ <string name="Chest Size">
+ Размер грудной клетки
+ </string>
+ <string name="Chin Angle">
+ Угол подбородка
+ </string>
+ <string name="Chin Cleft">
+ Ямка на подбородке
+ </string>
+ <string name="Chin Curtains">
+ Шкиперская бородка
+ </string>
+ <string name="Chin Depth">
+ Толщина подбородка
+ </string>
+ <string name="Chin Heavy">
+ Мощный подбородок
+ </string>
+ <string name="Chin In">
+ Подбородок внутрь
+ </string>
+ <string name="Chin Out">
+ Подбородок наружу
+ </string>
+ <string name="Chin-Neck">
+ Переход от подбородка к шее
+ </string>
+ <string name="Clear">
+ Чистый
+ </string>
+ <string name="Cleft">
+ Ямка
+ </string>
+ <string name="Close Set Eyes">
+ Близко посаженные
+ </string>
+ <string name="Closed">
+ Закрыто
+ </string>
+ <string name="Closed Back">
+ Закрыто сзади
+ </string>
+ <string name="Closed Front">
+ Закрыто спереди
+ </string>
+ <string name="Closed Left">
+ Закрыто слева
+ </string>
+ <string name="Closed Right">
+ Закрыто справа
+ </string>
+ <string name="Coin Purse">
+ Кошелек для мелочи
+ </string>
+ <string name="Collar Back">
+ Вырез сзади
+ </string>
+ <string name="Collar Front">
+ Вырез спереди
+ </string>
+ <string name="Corner Down">
+ Уголки опущены
+ </string>
+ <string name="Corner Up">
+ Уголки подняты
+ </string>
+ <string name="Creased">
+ Измятый
+ </string>
+ <string name="Crooked Nose">
+ Искривленный нос
+ </string>
+ <string name="Cuff Flare">
+ Манжеты
+ </string>
+ <string name="Dark">
+ Темный
+ </string>
+ <string name="Dark Green">
+ Темно-зеленый
+ </string>
+ <string name="Darker">
+ Темнее
+ </string>
+ <string name="Deep">
+ Глубоко
+ </string>
+ <string name="Default Heels">
+ Стандартные каблуки
+ </string>
+ <string name="Dense">
+ Густые
+ </string>
+ <string name="Double Chin">
+ Двойной подбородок
+ </string>
+ <string name="Downturned">
+ Вниз
+ </string>
+ <string name="Duffle Bag">
+ Больше
+ </string>
+ <string name="Ear Angle">
+ Оттопыренность ушей
+ </string>
+ <string name="Ear Size">
+ Размер ушей
+ </string>
+ <string name="Ear Tips">
+ Кончики ушей
+ </string>
+ <string name="Egg Head">
+ Яйцеголовость
+ </string>
+ <string name="Eye Bags">
+ Мешки под глазами
+ </string>
+ <string name="Eye Color">
+ Цвет глаз
+ </string>
+ <string name="Eye Depth">
+ Глубина глаз
+ </string>
+ <string name="Eye Lightness">
+ Светлость глаз
+ </string>
+ <string name="Eye Opening">
+ Открытость глаз
+ </string>
+ <string name="Eye Pop">
+ Вытаращить глаз
+ </string>
+ <string name="Eye Size">
+ Размер глаз
+ </string>
+ <string name="Eye Spacing">
+ Расстояние между глазами
+ </string>
+ <string name="Eyebrow Arc">
+ Линия бровей
+ </string>
+ <string name="Eyebrow Density">
+ Густота бровей
+ </string>
+ <string name="Eyebrow Height">
+ Высота бровей
+ </string>
+ <string name="Eyebrow Points">
+ Кончики бровей
+ </string>
+ <string name="Eyebrow Size">
+ Размер бровей
+ </string>
+ <string name="Eyelash Length">
+ Длина ресниц
+ </string>
+ <string name="Eyeliner">
+ Подводка
+ </string>
+ <string name="Eyeliner Color">
+ Цвет подводки
+ </string>
+ <string name="Eyes Bugged">
+ Выпученные глаза
+ </string>
+ <string name="Face Shear">
+ Перекос лица
+ </string>
+ <string name="Facial Definition">
+ Черты лица
+ </string>
+ <string name="Far Set Eyes">
+ Широко расставленные глаза
+ </string>
+ <string name="Fat Lips">
+ Толстые губы
+ </string>
+ <string name="Female">
+ Женщина
+ </string>
+ <string name="Fingerless">
+ Без пальцев
+ </string>
+ <string name="Fingers">
+ С пальцами
+ </string>
+ <string name="Flared Cuffs">
+ С манжетами
+ </string>
+ <string name="Flat">
+ Плоские
+ </string>
+ <string name="Flat Butt">
+ Плоский зад
+ </string>
+ <string name="Flat Head">
+ Плоская голова
+ </string>
+ <string name="Flat Toe">
+ Плоский носок
+ </string>
+ <string name="Foot Size">
+ Размер ступни
+ </string>
+ <string name="Forehead Angle">
+ Наклон лба
+ </string>
+ <string name="Forehead Heavy">
+ Мощный лоб
+ </string>
+ <string name="Freckles">
+ Веснушки
+ </string>
+ <string name="Front Fringe">
+ Челка спереди
+ </string>
+ <string name="Full Back">
+ Полностью назад
+ </string>
+ <string name="Full Eyeliner">
+ Подводка полностью
+ </string>
+ <string name="Full Front">
+ Полностью наперед
+ </string>
+ <string name="Full Hair Sides">
+ Волосы по бокам
+ </string>
+ <string name="Full Sides">
+ По бокам
+ </string>
+ <string name="Glossy">
+ Блестящие
+ </string>
+ <string name="Glove Fingers">
+ Пальцы перчаток
+ </string>
+ <string name="Glove Length">
+ Длина перчаток
+ </string>
+ <string name="Hair">
+ Волосы
+ </string>
+ <string name="Hair Back">
+ Волосы: сзади
+ </string>
+ <string name="Hair Front">
+ Волосы: спереди
+ </string>
+ <string name="Hair Sides">
+ Волосы: по бокам
+ </string>
+ <string name="Hair Sweep">
+ Волосы на глаза
+ </string>
+ <string name="Hair Thickess">
+ Толщина волос
+ </string>
+ <string name="Hair Thickness">
+ Толщина волос
+ </string>
+ <string name="Hair Tilt">
+ Зачес
+ </string>
+ <string name="Hair Tilted Left">
+ Зачес назад
+ </string>
+ <string name="Hair Tilted Right">
+ Зачес вправо
+ </string>
+ <string name="Hair Volume">
+ Волосы: объем
+ </string>
+ <string name="Hand Size">
+ Размер кисти
+ </string>
+ <string name="Handlebars">
+ Длинные усы
+ </string>
+ <string name="Head Length">
+ Длина головы
+ </string>
+ <string name="Head Shape">
+ Форма головы
+ </string>
+ <string name="Head Size">
+ Размер головы
+ </string>
+ <string name="Head Stretch">
+ Вытянутость головы
+ </string>
+ <string name="Heel Height">
+ Высота каблука
+ </string>
+ <string name="Heel Shape">
+ Форма каблука
+ </string>
+ <string name="Height">
+ Рост
+ </string>
+ <string name="High">
+ Высокие
+ </string>
+ <string name="High Heels">
+ Высокий каблук
+ </string>
+ <string name="High Jaw">
+ Челюсть высоко
+ </string>
+ <string name="High Platforms">
+ Высокая платформа
+ </string>
+ <string name="High and Tight">
+ Высокий и плотный
+ </string>
+ <string name="Higher">
+ Выше
+ </string>
+ <string name="Hip Length">
+ Длина бедер
+ </string>
+ <string name="Hip Width">
+ Ширина бедер
+ </string>
+ <string name="In">
+ Внутрь
+ </string>
+ <string name="In Shdw Color">
+ Цвет внутренних теней
+ </string>
+ <string name="In Shdw Opacity">
+ Прозрачность внутр. теней
+ </string>
+ <string name="Inner Eye Corner">
+ Внутренние уголки глаз
+ </string>
+ <string name="Inner Eye Shadow">
+ Тени на внутренних уголках
+ </string>
+ <string name="Inner Shadow">
+ Внутренние тени
+ </string>
+ <string name="Jacket Length">
+ Длина пиджака
+ </string>
+ <string name="Jacket Wrinkles">
+ Смятый пиджак
+ </string>
+ <string name="Jaw Angle">
+ Угол челюсти
+ </string>
+ <string name="Jaw Jut">
+ Выступание челюсти
+ </string>
+ <string name="Jaw Shape">
+ Форма челюсти
+ </string>
+ <string name="Join">
+ Прикрепить
+ </string>
+ <string name="Jowls">
+ Щеки
+ </string>
+ <string name="Knee Angle">
+ Угол колен
+ </string>
+ <string name="Knock Kneed">
+ Колченогие
+ </string>
+ <string name="Large">
+ Больше
+ </string>
+ <string name="Large Hands">
+ Большие кисти
+ </string>
+ <string name="Left Part">
+ Левый пробор
+ </string>
+ <string name="Leg Length">
+ Длина ног
+ </string>
+ <string name="Leg Muscles">
+ Мышцы на ногах
+ </string>
+ <string name="Less">
+ Меньше
+ </string>
+ <string name="Less Body Fat">
+ Меньше жира
+ </string>
+ <string name="Less Curtains">
+ Меньше борода
+ </string>
+ <string name="Less Freckles">
+ Меньше веснушек
+ </string>
+ <string name="Less Full">
+ Менее полное
+ </string>
+ <string name="Less Gravity">
+ Меньше притяжения
+ </string>
+ <string name="Less Love">
+ Меньше
+ </string>
+ <string name="Less Muscles">
+ Меньше мышц
+ </string>
+ <string name="Less Muscular">
+ Меньше мышц
+ </string>
+ <string name="Less Rosy">
+ Меньше румян
+ </string>
+ <string name="Less Round">
+ Меньше округлости
+ </string>
+ <string name="Less Saddle">
+ Меньше
+ </string>
+ <string name="Less Square">
+ Меньше угловатости
+ </string>
+ <string name="Less Volume">
+ Меньше объема
+ </string>
+ <string name="Less soul">
+ Меньше
+ </string>
+ <string name="Lighter">
+ Светлее
+ </string>
+ <string name="Lip Cleft">
+ Ямка между губ
+ </string>
+ <string name="Lip Cleft Depth">
+ Глубина ямки
+ </string>
+ <string name="Lip Fullness">
+ Полнота губ
+ </string>
+ <string name="Lip Pinkness">
+ Розоватость губ
+ </string>
+ <string name="Lip Ratio">
+ Пропорция губ
+ </string>
+ <string name="Lip Thickness">
+ Толщина губ
+ </string>
+ <string name="Lip Width">
+ Ширина губ
+ </string>
+ <string name="Lipgloss">
+ Блеск губ
+ </string>
+ <string name="Lipstick">
+ Губная помада
+ </string>
+ <string name="Lipstick Color">
+ Цвет помады
+ </string>
+ <string name="Long">
+ Длиннее
+ </string>
+ <string name="Long Head">
+ Длинная голова
+ </string>
+ <string name="Long Hips">
+ Длинные бедра
+ </string>
+ <string name="Long Legs">
+ Длинные ноги
+ </string>
+ <string name="Long Neck">
+ Длинная шея
+ </string>
+ <string name="Long Pigtails">
+ Длинные хвосты по бокам
+ </string>
+ <string name="Long Ponytail">
+ Длинный хвост сзади
+ </string>
+ <string name="Long Torso">
+ Длинный торс
+ </string>
+ <string name="Long arms">
+ Длинные руки
+ </string>
+ <string name="Loose Pants">
+ Свободные брюки
+ </string>
+ <string name="Loose Shirt">
+ Свободная рубашка
+ </string>
+ <string name="Loose Sleeves">
+ Свободные рукава
+ </string>
+ <string name="Love Handles">
+ Отложения на талии
+ </string>
+ <string name="Low">
+ Низкие
+ </string>
+ <string name="Low Heels">
+ Низкий каблук
+ </string>
+ <string name="Low Jaw">
+ Челюсть низко
+ </string>
+ <string name="Low Platforms">
+ Низкая платформа
+ </string>
+ <string name="Low and Loose">
+ Низкий и свободный
+ </string>
+ <string name="Lower">
+ Ниже
+ </string>
+ <string name="Lower Bridge">
+ Спинка носа
+ </string>
+ <string name="Lower Cheeks">
+ Щеки ниже
+ </string>
+ <string name="Male">
+ Мужчина
+ </string>
+ <string name="Middle Part">
+ Пробор по центру
+ </string>
+ <string name="More">
+ Больше
+ </string>
+ <string name="More Blush">
+ Больше румян
+ </string>
+ <string name="More Body Fat">
+ Больше жира
+ </string>
+ <string name="More Curtains">
+ Больше борода
+ </string>
+ <string name="More Eyeshadow">
+ Больше теней
+ </string>
+ <string name="More Freckles">
+ Больше веснушек
+ </string>
+ <string name="More Full">
+ Более полное
+ </string>
+ <string name="More Gravity">
+ Большее притяжение
+ </string>
+ <string name="More Lipstick">
+ Больше помады
+ </string>
+ <string name="More Love">
+ Больше
+ </string>
+ <string name="More Lower Lip">
+ Больше нижняя губа
+ </string>
+ <string name="More Muscles">
+ Больше мышц
+ </string>
+ <string name="More Muscular">
+ Больше мышц
+ </string>
+ <string name="More Rosy">
+ Больше румянца
+ </string>
+ <string name="More Round">
+ Больше округлости
+ </string>
+ <string name="More Saddle">
+ Больше
+ </string>
+ <string name="More Sloped">
+ Более наклонный
+ </string>
+ <string name="More Square">
+ Более квадратная
+ </string>
+ <string name="More Upper Lip">
+ Больше верхняя губа
+ </string>
+ <string name="More Vertical">
+ Более вертикальный
+ </string>
+ <string name="More Volume">
+ Больше объема
+ </string>
+ <string name="More soul">
+ Больше
+ </string>
+ <string name="Moustache">
+ Усы
+ </string>
+ <string name="Mouth Corner">
+ Угол рта
+ </string>
+ <string name="Mouth Position">
+ Положение рта
+ </string>
+ <string name="Mowhawk">
+ Ирокез
+ </string>
+ <string name="Muscular">
+ Мускулистое
+ </string>
+ <string name="Mutton Chops">
+ Бакенбарды
+ </string>
+ <string name="Nail Polish">
+ Лак для ногтей
+ </string>
+ <string name="Nail Polish Color">
+ Цвет лака
+ </string>
+ <string name="Narrow">
+ Узко
+ </string>
+ <string name="Narrow Back">
+ Узко сзади
+ </string>
+ <string name="Narrow Front">
+ Узкий перед
+ </string>
+ <string name="Narrow Lips">
+ Узкие губы
+ </string>
+ <string name="Natural">
+ Естественный
+ </string>
+ <string name="Neck Length">
+ Длина шеи
+ </string>
+ <string name="Neck Thickness">
+ Толщина шеи
+ </string>
+ <string name="No Blush">
+ Без румян
+ </string>
+ <string name="No Eyeliner">
+ Без подводки
+ </string>
+ <string name="No Eyeshadow">
+ Без теней
+ </string>
+ <string name="No Lipgloss">
+ Без блеска
+ </string>
+ <string name="No Lipstick">
+ Без помады
+ </string>
+ <string name="No Part">
+ Без пробора
+ </string>
+ <string name="No Polish">
+ Без лака
+ </string>
+ <string name="No Red">
+ Не красные
+ </string>
+ <string name="No Spikes">
+ Без «шипов»
+ </string>
+ <string name="No White">
+ Нет белого
+ </string>
+ <string name="No Wrinkles">
+ Без морщин
+ </string>
+ <string name="Normal Lower">
+ Ниже обычного
+ </string>
+ <string name="Normal Upper">
+ Выше обычного
+ </string>
+ <string name="Nose Left">
+ Нос влево
+ </string>
+ <string name="Nose Right">
+ Нос вправо
+ </string>
+ <string name="Nose Size">
+ Размер носа
+ </string>
+ <string name="Nose Thickness">
+ Толщина носа
+ </string>
+ <string name="Nose Tip Angle">
+ Загнутость кончика носа
+ </string>
+ <string name="Nose Tip Shape">
+ Форма кончика носа
+ </string>
+ <string name="Nose Width">
+ Ширина носа
+ </string>
+ <string name="Nostril Division">
+ Перегородка
+ </string>
+ <string name="Nostril Width">
+ Ширина ноздрей
+ </string>
+ <string name="Opaque">
+ Непрозрачный
+ </string>
+ <string name="Open">
+ Открыто
+ </string>
+ <string name="Open Back">
+ Открыто сзади
+ </string>
+ <string name="Open Front">
+ Открыто спереди
+ </string>
+ <string name="Open Left">
+ Открыто слева
+ </string>
+ <string name="Open Right">
+ Открыто справа
+ </string>
+ <string name="Orange">
+ Оранжевый
+ </string>
+ <string name="Out">
+ Наружу
+ </string>
+ <string name="Out Shdw Color">
+ Цвет внешних теней
+ </string>
+ <string name="Out Shdw Opacity">
+ Прозрачность внеш. теней
+ </string>
+ <string name="Outer Eye Corner">
+ Внешние уголки глаз
+ </string>
+ <string name="Outer Eye Shadow">
+ Тени во внешних уголках
+ </string>
+ <string name="Outer Shadow">
+ Внешние тени
+ </string>
+ <string name="Overbite">
+ Глубокий прикус
+ </string>
+ <string name="Package">
+ Гульфик
+ </string>
+ <string name="Painted Nails">
+ Покрашенные
+ </string>
+ <string name="Pale">
+ Бледный
+ </string>
+ <string name="Pants Crotch">
+ Шаг
+ </string>
+ <string name="Pants Fit">
+ Облегающие брюки
+ </string>
+ <string name="Pants Length">
+ Длина
+ </string>
+ <string name="Pants Waist">
+ Талия брюк
+ </string>
+ <string name="Pants Wrinkles">
+ Смятость брюк
+ </string>
+ <string name="Part">
+ Пробор
+ </string>
+ <string name="Part Bangs">
+ Челка с пробором
+ </string>
+ <string name="Pectorals">
+ Грудные мышцы
+ </string>
+ <string name="Pigment">
+ Пигментация
+ </string>
+ <string name="Pigtails">
+ Хвосты по бокам
+ </string>
+ <string name="Pink">
+ Розовый
+ </string>
+ <string name="Pinker">
+ Розовее
+ </string>
+ <string name="Platform Height">
+ Высота платформы
+ </string>
+ <string name="Platform Width">
+ Ширина платформы
+ </string>
+ <string name="Pointy">
+ Острые
+ </string>
+ <string name="Pointy Heels">
+ Острый каблук
+ </string>
+ <string name="Ponytail">
+ Хвост сзади
+ </string>
+ <string name="Poofy Skirt">
+ Пышная юбка
+ </string>
+ <string name="Pop Left Eye">
+ Левый глаз
+ </string>
+ <string name="Pop Right Eye">
+ Правый глаз
+ </string>
+ <string name="Puffy">
+ Пухлые
+ </string>
+ <string name="Puffy Eyelids">
+ Припухлость век
+ </string>
+ <string name="Rainbow Color">
+ Цвета радуги
+ </string>
+ <string name="Red Hair">
+ Рыжие волосы
+ </string>
+ <string name="Regular">
+ Обычное
+ </string>
+ <string name="Right Part">
+ Правый пробор
+ </string>
+ <string name="Rosy Complexion">
+ Розовое лицо
+ </string>
+ <string name="Round">
+ Круглое
+ </string>
+ <string name="Ruddiness">
+ Румянец
+ </string>
+ <string name="Ruddy">
+ Румяный
+ </string>
+ <string name="Rumpled Hair">
+ Взъерошенные
+ </string>
+ <string name="Saddle Bags">
+ Галифе
+ </string>
+ <string name="Scrawny Leg">
+ Сухопарая нога
+ </string>
+ <string name="Separate">
+ Разделить
+ </string>
+ <string name="Shallow">
+ Мелко
+ </string>
+ <string name="Shear Back">
+ Скос сзади
+ </string>
+ <string name="Shear Face">
+ Перекос лица
+ </string>
+ <string name="Shear Front">
+ Скос спереди
+ </string>
+ <string name="Shear Left Up">
+ Скос влево вверх
+ </string>
+ <string name="Shear Right Up">
+ Скос вправо вверх
+ </string>
+ <string name="Sheared Back">
+ Уменьшено сзади
+ </string>
+ <string name="Sheared Front">
+ Уменьшено спереди
+ </string>
+ <string name="Shift Left">
+ Сдвинуть влево
+ </string>
+ <string name="Shift Mouth">
+ Сдвинуть рот
+ </string>
+ <string name="Shift Right">
+ Сдвинуть вправо
+ </string>
+ <string name="Shirt Bottom">
+ Низ рубашки
+ </string>
+ <string name="Shirt Fit">
+ Облегание рубашки
+ </string>
+ <string name="Shirt Wrinkles">
+ Помятость рубашки
+ </string>
+ <string name="Shoe Height">
+ Высота обуви
+ </string>
+ <string name="Short">
+ Ниже
+ </string>
+ <string name="Short Arms">
+ Короткие руки
+ </string>
+ <string name="Short Legs">
+ Короткие ноги
+ </string>
+ <string name="Short Neck">
+ Короткая шея
+ </string>
+ <string name="Short Pigtails">
+ Короткие хвосты по бокам
+ </string>
+ <string name="Short Ponytail">
+ Короткий хвост сзади
+ </string>
+ <string name="Short Sideburns">
+ Короткие баки
+ </string>
+ <string name="Short Torso">
+ Короткий торс
+ </string>
+ <string name="Short hips">
+ Короткие бедра
+ </string>
+ <string name="Shoulders">
+ Плечи
+ </string>
+ <string name="Side Fringe">
+ Челка набок
+ </string>
+ <string name="Sideburns">
+ Бакенбарды
+ </string>
+ <string name="Sides Hair">
+ Волосы по бокам
+ </string>
+ <string name="Sides Hair Down">
+ Волосы по бокам внизу
+ </string>
+ <string name="Sides Hair Up">
+ Волосы по бокам вверху
+ </string>
+ <string name="Skinny Neck">
+ Худая шея
+ </string>
+ <string name="Skirt Fit">
+ Облегающая юбка
+ </string>
+ <string name="Skirt Length">
+ Длина юбки
+ </string>
+ <string name="Slanted Forehead">
+ Наклонный лоб
+ </string>
+ <string name="Sleeve Length">
+ Длина рукавов
+ </string>
+ <string name="Sleeve Looseness">
+ Ширина рукавов
+ </string>
+ <string name="Slit Back">
+ Разрез: сзади
+ </string>
+ <string name="Slit Front">
+ Разрез: спереди
+ </string>
+ <string name="Slit Left">
+ Разрез: слева
+ </string>
+ <string name="Slit Right">
+ Разрез: справа
+ </string>
+ <string name="Small">
+ Меньше
+ </string>
+ <string name="Small Hands">
+ Маленькие кисти
+ </string>
+ <string name="Small Head">
+ Маленькая голова
+ </string>
+ <string name="Smooth">
+ Гладко
+ </string>
+ <string name="Smooth Hair">
+ Приглаженные
+ </string>
+ <string name="Socks Length">
+ Длина носков
+ </string>
+ <string name="Soulpatch">
+ Эспаньолка
+ </string>
+ <string name="Sparse">
+ Жидкие
+ </string>
+ <string name="Spiked Hair">
+ Прическа «шипами»
+ </string>
+ <string name="Square">
+ Квадратный
+ </string>
+ <string name="Square Toe">
+ Квадратный носок
+ </string>
+ <string name="Squash Head">
+ Голова-тыква
+ </string>
+ <string name="Stretch Head">
+ Вытянутость головы
+ </string>
+ <string name="Sunken">
+ Впалые
+ </string>
+ <string name="Sunken Chest">
+ Впалая грудь
+ </string>
+ <string name="Sunken Eyes">
+ Впалые глаза
+ </string>
+ <string name="Sweep Back">
+ Зачесанные назад
+ </string>
+ <string name="Sweep Forward">
+ Зачесанные вперед
+ </string>
+ <string name="Tall">
+ Выше
+ </string>
+ <string name="Taper Back">
+ Конус сзади
+ </string>
+ <string name="Taper Front">
+ Конус спереди
+ </string>
+ <string name="Thick Heels">
+ Широкий каблук
+ </string>
+ <string name="Thick Neck">
+ Толстая шея
+ </string>
+ <string name="Thick Toe">
+ Толстый носок
+ </string>
+ <string name="Thin">
+ Тонкий
+ </string>
+ <string name="Thin Eyebrows">
+ Тонкие брови
+ </string>
+ <string name="Thin Lips">
+ Тонкие губы
+ </string>
+ <string name="Thin Nose">
+ Тонкий нос
+ </string>
+ <string name="Tight Chin">
+ Тонкий подбородок
+ </string>
+ <string name="Tight Cuffs">
+ Манжеты на резинке
+ </string>
+ <string name="Tight Pants">
+ Облегающие брюки
+ </string>
+ <string name="Tight Shirt">
+ Облегающая рубашка
+ </string>
+ <string name="Tight Skirt">
+ Облегающая юбка
+ </string>
+ <string name="Tight Sleeves">
+ Облегающие рукава
+ </string>
+ <string name="Toe Shape">
+ Форма носка
+ </string>
+ <string name="Toe Thickness">
+ Толщина носка
+ </string>
+ <string name="Torso Length">
+ Длина торса
+ </string>
+ <string name="Torso Muscles">
+ Мускулистость торса
+ </string>
+ <string name="Torso Scrawny">
+ Сухопарость торса
+ </string>
+ <string name="Unattached">
+ Не прикреплено
+ </string>
+ <string name="Uncreased">
+ Без складок
+ </string>
+ <string name="Underbite">
+ Мезиальный прикус
+ </string>
+ <string name="Unnatural">
+ Неестественный
+ </string>
+ <string name="Upper Bridge">
+ Переносица
+ </string>
+ <string name="Upper Cheeks">
+ Щеки выше
+ </string>
+ <string name="Upper Chin Cleft">
+ Ямка на подбородке выше
+ </string>
+ <string name="Upper Eyelid Fold">
+ Складка верхнего века
+ </string>
+ <string name="Upturned">
+ Вверх
+ </string>
+ <string name="Very Red">
+ Очень красные
+ </string>
+ <string name="Waist Height">
+ Высота талии
+ </string>
+ <string name="Well-Fed">
+ Упитанные
+ </string>
+ <string name="White Hair">
+ Белые волосы
+ </string>
+ <string name="Wide">
+ Широко
+ </string>
+ <string name="Wide Back">
+ Широко сзади
+ </string>
+ <string name="Wide Front">
+ Широкий перед
+ </string>
+ <string name="Wide Lips">
+ Широкие губы
+ </string>
+ <string name="Wild">
+ Безумный
+ </string>
+ <string name="Wrinkles">
+ Складки
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Добавить в закладки
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Изменить закладку
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Посмотреть подробную информацию о текущем месте
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Моя история посещений
+ </string>
+ <string name="LocationCtrlForSaleTooltip">
+ Купить эту землю
+ </string>
+ <string name="LocationCtrlVoiceTooltip">
+ Голосовое общение здесь недоступно
+ </string>
+ <string name="LocationCtrlFlyTooltip">
+ Полеты запрещены
+ </string>
+ <string name="LocationCtrlPushTooltip">
+ Нельзя толкаться
+ </string>
+ <string name="LocationCtrlBuildTooltip">
+ Строительство/выкладывание объектов не разрешено
+ </string>
+ <string name="LocationCtrlScriptsTooltip">
+ Запускать скрипты запрещено
+ </string>
+ <string name="LocationCtrlDamageTooltip">
+ Здоровье
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Область для взрослых
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Область умеренной дозволенности
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Область общей дозволенности
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Все жители с других участков могут видеть аватары и общаться в чате
+ </string>
+ <string name="UpdaterWindowTitle">
+ Обновление [APP_NAME]
+ </string>
+ <string name="UpdaterNowUpdating">
+ Обновляется [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Устанавливается [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Клиент [APP_NAME] обновляется до последнего выпуска. Это может занять какое-то время. Проявите терпение.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Загрузка обновления...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Загружается обновление
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Не удалось загрузить обновление
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ При обновлении приложения [APP_NAME] возникла ошибка. Загрузите новую версию на сайте www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Не удалось установить обновление
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Не удалось запустить клиент
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME]: Из-за слишком быстрого поступления элементов с [FROM_NAME] автоматический просмотр отключен на [TIME] с
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME]: из-за слишком быстрого поступления элементов автоматический просмотр отключен на [TIME] с
+ </string>
+ <string name="IM_logging_string">
+ -- Включена регистрация сообщений IM --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] вводит текст...
+ </string>
+ <string name="Unnamed">
+ (Без имени)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Модерируется: голоса по умолчанию отключены)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Во время этого звонка текстовый чат недоступен.
+ </string>
+ <string name="IM_muted_text_label">
+ Ваш текстовый чат отключен модератором группы.
+ </string>
+ <string name="IM_default_text_label">
+ Щелкните здесь, чтобы создать IM-сообщение.
+ </string>
+ <string name="IM_to_label">
+ Кому
+ </string>
+ <string name="IM_moderator_label">
+ (Модератор)
+ </string>
+ <string name="Saved_message">
+ (Сохранено [LONG_TIMESTAMP])
+ </string>
+ <string name="answered_call">
+ На ваш звонок ответили
+ </string>
+ <string name="you_started_call">
+ Вы начали голосовую беседу
+ </string>
+ <string name="you_joined_call">
+ Вы присоединились к голосовой беседе
+ </string>
+ <string name="name_started_call">
+ Житель [NAME] начал голосовую беседу
+ </string>
+ <string name="ringing-im">
+ Присоединение к голосовой беседе...
+ </string>
+ <string name="connected-im">
+ Соединение установлено. Выберите команду «Прервать звонок», чтобы повесить трубку
+ </string>
+ <string name="hang_up-im">
+ Голосовой звонок прерван
+ </string>
+ <string name="answering-im">
+ Соединяется...
+ </string>
+ <string name="conference-title">
+ Спонтанная конференция
+ </string>
+ <string name="conference-title-incoming">
+ Конференция с жителем [AGENT_NAME]
+ </string>
+ <string name="inventory_item_offered-im">
+ Предложено пополнить инвентарь
+ </string>
+ <string name="share_alert">
+ Перетаскивайте вещи из инвентаря сюда
+ </string>
+ <string name="no_session_message">
+ (Сеанс IM не существует)
+ </string>
+ <string name="only_user_message">
+ Вы – единственный пользователь в этом сеансе.
+ </string>
+ <string name="offline_message">
+ [NAME] не в сети.
+ </string>
+ <string name="invite_message">
+ Нажмите кнопку [BUTTON NAME], чтобы участвовать в этом голосовом чате.
+ </string>
+ <string name="muted_message">
+ Вы заблокировали этого жителя. Если отправить ему сообщение, блок автоматически снимется.
+ </string>
+ <string name="generic">
+ Ошибка при запросе. Повторите попытку.
+ </string>
+ <string name="generic_request_error">
+ Ошибка при запросе. Повторите попытку.
+ </string>
+ <string name="insufficient_perms_error">
+ У вас недостаточно разрешений.
+ </string>
+ <string name="session_does_not_exist_error">
+ Сеанс больше не существует
+ </string>
+ <string name="no_ability_error">
+ У вас нет этой способности.
+ </string>
+ <string name="no_ability">
+ У вас нет этой способности.
+ </string>
+ <string name="not_a_mod_error">
+ Вы – не модератор сеанса.
+ </string>
+ <string name="muted">
+ Модератор группы отключил для вас текстовый чат.
+ </string>
+ <string name="muted_error">
+ Модератор группы отключил для вас текстовый чат.
+ </string>
+ <string name="add_session_event">
+ Не удается добавить пользователей в сеанс чата с жителем [RECIPIENT].
+ </string>
+ <string name="message">
+ Не удается отправить ваше сообщение в сеанс чата с жителем [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ Не удается отправить ваше сообщение в сеанс чата с жителем [RECIPIENT].
+ </string>
+ <string name="mute">
+ Ошибка при модерировании.
+ </string>
+ <string name="removed">
+ Вы исключены из группы.
+ </string>
+ <string name="removed_from_group">
+ Вы исключены из группы.
+ </string>
+ <string name="close_on_no_ability">
+ У вас больше нет возможности участвовать в сеансе чата.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] сказал что-то новое
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] сказал что-то новое
+ </string>
+ <string name="session_initialization_timed_out_error">
+ Истекло время ожидания инициализации сеанса
+ </string>
+ <string name="Home position set.">
+ Задано положение дома.
+ </string>
+ <string name="voice_morphing_url">
+ http://secondlife.com/landing/voicemorphing
+ </string>
+ <string name="paid_you_ldollars">
+ Житель [NAME] заплатил вам L$[AMOUNT] за [REASON].
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ Житель [NAME] заплатил вам L$[AMOUNT].
+ </string>
+ <string name="you_paid_ldollars">
+ Вы заплатили жителю [NAME] L$[AMOUNT] за [REASON].
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ Вы заплатили L$[AMOUNT].
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ Вы заплатили жителю [NAME] L$[AMOUNT].
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ Вы заплатили L$[AMOUNT] за [REASON].
+ </string>
+ <string name="for item">
+ за [ITEM]
+ </string>
+ <string name="for a parcel of land">
+ за земельный участок
+ </string>
+ <string name="for a land access pass">
+ за пропуск на землю
+ </string>
+ <string name="for deeding land">
+ за передачу земли
+ </string>
+ <string name="to create a group">
+ за создание группы
+ </string>
+ <string name="to join a group">
+ за вступление в группу
+ </string>
+ <string name="to upload">
+ за передачу по сети
+ </string>
+ <string name="to publish a classified ad">
+ за публикацию рекламы
+ </string>
+ <string name="giving">
+ Уплата L$[AMOUNT]
+ </string>
+ <string name="uploading_costs">
+ Передача стоит L$[AMOUNT]
+ </string>
+ <string name="this_costs">
+ Это стоит L$[AMOUNT]
+ </string>
+ <string name="buying_selected_land">
+ Покупка выбранной земли за L$[AMOUNT]
+ </string>
+ <string name="this_object_costs">
+ Этот объект стоит L$[AMOUNT]
+ </string>
+ <string name="group_role_everyone">
+ Все
+ </string>
+ <string name="group_role_officers">
+ Должностные лица
+ </string>
+ <string name="group_role_owners">
+ Владельцы
+ </string>
+ <string name="group_member_status_online">
+ В сети
+ </string>
+ <string name="uploading_abuse_report">
+ Загружается...
+
+Жалоба
+ </string>
+ <string name="New Shape">
+ Новая фигура
+ </string>
+ <string name="New Skin">
+ Новая кожа
+ </string>
+ <string name="New Hair">
+ Новые волосы
+ </string>
+ <string name="New Eyes">
+ Новые глаза
+ </string>
+ <string name="New Shirt">
+ Новая рубашка
+ </string>
+ <string name="New Pants">
+ Новые брюки
+ </string>
+ <string name="New Shoes">
+ Новая обувь
+ </string>
+ <string name="New Socks">
+ Новые носки
+ </string>
+ <string name="New Jacket">
+ Новый пиджак
+ </string>
+ <string name="New Gloves">
+ Новые перчатки
+ </string>
+ <string name="New Undershirt">
+ Новая майка
+ </string>
+ <string name="New Underpants">
+ Новые трусы
+ </string>
+ <string name="New Skirt">
+ Новая юбка
+ </string>
+ <string name="New Alpha">
+ Новая альфа-маска
+ </string>
+ <string name="New Tattoo">
+ Новое тату
+ </string>
+ <string name="New Physics">
+ Новая физика
+ </string>
+ <string name="Invalid Wearable">
+ Нельзя носить
+ </string>
+ <string name="New Gesture">
+ Новый жест
+ </string>
+ <string name="New Script">
+ Новый скрипт
+ </string>
+ <string name="New Note">
+ Новая заметка
+ </string>
+ <string name="New Folder">
+ Новая папка
+ </string>
+ <string name="Contents">
+ Контент
+ </string>
+ <string name="Gesture">
+ Жест
+ </string>
+ <string name="Male Gestures">
+ Мужские жесты
+ </string>
+ <string name="Female Gestures">
+ Женские жесты
+ </string>
+ <string name="Other Gestures">
+ Прочие жесты
+ </string>
+ <string name="Speech Gestures">
+ Жесты в разговорах
+ </string>
+ <string name="Common Gestures">
+ Стандартные жесты
+ </string>
+ <string name="Male - Excuse me">
+ Мужчина – извинение
+ </string>
+ <string name="Male - Get lost">
+ Мужчина – скройтесь
+ </string>
+ <string name="Male - Blow kiss">
+ Мужчина – воздушный поцелуй
+ </string>
+ <string name="Male - Boo">
+ Мужчина – фу!
+ </string>
+ <string name="Male - Bored">
+ Мужчина – скука
+ </string>
+ <string name="Male - Hey">
+ Мужчина – эй!
+ </string>
+ <string name="Male - Laugh">
+ Мужчина – смех
+ </string>
+ <string name="Male - Repulsed">
+ Мужчина – неприятие
+ </string>
+ <string name="Male - Shrug">
+ Мужчина – пожимает плечами
+ </string>
+ <string name="Male - Stick tougue out">
+ Мужчина – показывает язык
+ </string>
+ <string name="Male - Wow">
+ Мужчина – ух ты!
+ </string>
+ <string name="Female - Chuckle">
+ Женщина – смешок
+ </string>
+ <string name="Female - Cry">
+ Женщина – плач
+ </string>
+ <string name="Female - Embarrassed">
+ Женщина – смущение
+ </string>
+ <string name="Female - Excuse me">
+ Женщина – извинение
+ </string>
+ <string name="Female - Get lost">
+ Женщина – скройтесь
+ </string>
+ <string name="Female - Blow kiss">
+ Женщина – воздушный поцелуй
+ </string>
+ <string name="Female - Boo">
+ Женщина – фу!
+ </string>
+ <string name="Female - Bored">
+ Женщина – скука
+ </string>
+ <string name="Female - Hey">
+ Женщина – эй!
+ </string>
+ <string name="Female - Hey baby">
+ Женщина – эй, бейби!
+ </string>
+ <string name="Female - Laugh">
+ Женщина – смех
+ </string>
+ <string name="Female - Looking good">
+ Женщина – хорошо выглядишь
+ </string>
+ <string name="Female - Over here">
+ Женщина – сюда!
+ </string>
+ <string name="Female - Please">
+ Женщина – просьба
+ </string>
+ <string name="Female - Repulsed">
+ Женщина – неприятие
+ </string>
+ <string name="Female - Shrug">
+ Женщина – пожимает плечами
+ </string>
+ <string name="Female - Stick tougue out">
+ Женщина – показывает язык
+ </string>
+ <string name="Female - Wow">
+ Женщина – ух ты!
+ </string>
+ <string name="/bow">
+ /поклониться
+ </string>
+ <string name="/clap">
+ /хлопнуть
+ </string>
+ <string name="/count">
+ /счет
+ </string>
+ <string name="/extinguish">
+ /затушить
+ </string>
+ <string name="/kmb">
+ /поцелуй меня в зад
+ </string>
+ <string name="/muscle">
+ /силач
+ </string>
+ <string name="/no">
+ /нет
+ </string>
+ <string name="/no!">
+ /нет!
+ </string>
+ <string name="/paper">
+ /бумага
+ </string>
+ <string name="/pointme">
+ /показать на себя
+ </string>
+ <string name="/pointyou">
+ /показать на другого
+ </string>
+ <string name="/rock">
+ /камень
+ </string>
+ <string name="/scissor">
+ /ножницы
+ </string>
+ <string name="/smoke">
+ /курить
+ </string>
+ <string name="/stretch">
+ /потянуться
+ </string>
+ <string name="/whistle">
+ /свистнуть
+ </string>
+ <string name="/yes">
+ /да
+ </string>
+ <string name="/yes!">
+ /о да!
+ </string>
+ <string name="afk">
+ отошел
+ </string>
+ <string name="dance1">
+ танец1
+ </string>
+ <string name="dance2">
+ танец2
+ </string>
+ <string name="dance3">
+ танец3
+ </string>
+ <string name="dance4">
+ танец4
+ </string>
+ <string name="dance5">
+ танец5
+ </string>
+ <string name="dance6">
+ танец6
+ </string>
+ <string name="dance7">
+ танец7
+ </string>
+ <string name="dance8">
+ танец8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [day,datetime,slt].[mthnum,datetime,slt].[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ нет/нет
+ </string>
+ <string name="texture_load_dimensions_error">
+ Нельзя загружать изображения, размер которых превышает [WIDTH]*[HEIGHT]
+ </string>
+ <string name="words_separator" value=","/>
+ <string name="server_is_down">
+ Несмотря на наши усилия, что-то неожиданно пошло не так.
+ Ознакомьтесь с описанием известных проблем в работе этой службы на сайте status.secondlifegrid.net.
+ Если проблемы продолжаются, то проверьте подключение к сети и настройки брандмауэра.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ Воскресенье:Понедельник:Вторник:Среда:Четверг:Пятница:Суббота
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ Вс:Пн:Вт:Ср:Чт:Пт:Сб
+ </string>
+ <string name="dateTimeMonthNames">
+ Январь:Февраль:Март:Апрель:Май:Июнь:Июль:Август:Сентябрь:Октябрь:Ноябрь:Декабрь
+ </string>
+ <string name="dateTimeMonthShortNames">
+ Янв:Фев:Мар:Апр:Май:Июн:Июл:Авг:Сен:Окт:Ноя:Дек
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ до полудня
+ </string>
+ <string name="dateTimePM">
+ после полудня
+ </string>
+ <string name="LocalEstimateUSD">
+ [AMOUNT] US$
+ </string>
+ <string name="Membership">
+ Членство
+ </string>
+ <string name="Roles">
+ Роли
+ </string>
+ <string name="Group Identity">
+ Удостоверение группы
+ </string>
+ <string name="Parcel Management">
+ Управление участком
+ </string>
+ <string name="Parcel Identity">
+ Удостоверение участка
+ </string>
+ <string name="Parcel Settings">
+ Параметры участка
+ </string>
+ <string name="Parcel Powers">
+ Способности для участка
+ </string>
+ <string name="Parcel Access">
+ Доступ к участку
+ </string>
+ <string name="Parcel Content">
+ Содержимое на участке
+ </string>
+ <string name="Object Management">
+ Управление объектами
+ </string>
+ <string name="Accounting">
+ Бухгалтерия
+ </string>
+ <string name="Notices">
+ Уведомления
+ </string>
+ <string name="Chat">
+ Чат
+ </string>
+ <string name="DeleteItems">
+ Удалить выбранные объекты?
+ </string>
+ <string name="DeleteItem">
+ Удалить выбранный объект?
+ </string>
+ <string name="EmptyOutfitText">
+ Для этого костюма нет вещей
+ </string>
+ <string name="ExternalEditorNotSet">
+ Выберите редактор, используя параметр ExternalEditor.
+ </string>
+ <string name="ExternalEditorNotFound">
+ Не удается найти указанный внешний редактор.
+Попробуйте взять путь к редактору в двойные кавычки
+(например &quot;/path to my/editor&quot; &quot;%s&quot;)
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Ошибка анализа командной строки для внешнего редактора.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ Не удалось запустить внешний редактор.
+ </string>
+ <string name="Esc">
+ ESC
+ </string>
+ <string name="Space">
+ ПРОБЕЛ
+ </string>
+ <string name="Enter">
+ ВВОД
+ </string>
+ <string name="Tab">
+ TAB
+ </string>
+ <string name="Ins">
+ INS
+ </string>
+ <string name="Del">
+ DEL
+ </string>
+ <string name="Backsp">
+ BACKSP
+ </string>
+ <string name="Shift">
+ SHIFT
+ </string>
+ <string name="Ctrl">
+ CTRL
+ </string>
+ <string name="Alt">
+ ALT
+ </string>
+ <string name="CapsLock">
+ CAPSLOCK
+ </string>
+ <string name="Left">
+ Стрелка влево
+ </string>
+ <string name="Right">
+ Стрелка вправо
+ </string>
+ <string name="Up">
+ Стрелка вверх
+ </string>
+ <string name="Down">
+ Стрелка вниз
+ </string>
+ <string name="Home">
+ HOME
+ </string>
+ <string name="End">
+ END
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ +
+ </string>
+ <string name="Subtract">
+ -
+ </string>
+ <string name="Multiply">
+ *
+ </string>
+ <string name="Divide">
+ /
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Просмотр меток участков (синие)
+ </string>
+ <string name="BeaconPhysical">
+ Просмотр меток физических объектов (зеленые)
+ </string>
+ <string name="BeaconScripted">
+ Просмотр меток объектов со скриптами (красные)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Просмотр меток объектов со скриптами и функцией касания (красные)
+ </string>
+ <string name="BeaconSound">
+ Просмотр звуковых меток (желтые)
+ </string>
+ <string name="BeaconMedia">
+ Просмотр медийных меток (белые)
+ </string>
+ <string name="ParticleHiding">
+ Частицы скрыты
+ </string>
+ <string name="Command_AboutLand_Label">
+ О земле
+ </string>
+ <string name="Command_Appearance_Label">
+ Внешность
+ </string>
+ <string name="Command_Avatar_Label">
+ Аватар
+ </string>
+ <string name="Command_Build_Label">
+ Строительство
+ </string>
+ <string name="Command_Chat_Label">
+ Чат
+ </string>
+ <string name="Command_Compass_Label">
+ Компас
+ </string>
+ <string name="Command_Destinations_Label">
+ Пункты
+ </string>
+ <string name="Command_Gestures_Label">
+ Жесты
+ </string>
+ <string name="Command_HowTo_Label">
+ Инструкции
+ </string>
+ <string name="Command_Inventory_Label">
+ Инвентарь
+ </string>
+ <string name="Command_Map_Label">
+ Карта
+ </string>
+ <string name="Command_Marketplace_Label">
+ Торговый центр
+ </string>
+ <string name="Command_MiniMap_Label">
+ Миникарта
+ </string>
+ <string name="Command_Move_Label">
+ Переместить
+ </string>
+ <string name="Command_People_Label">
+ Люди
+ </string>
+ <string name="Command_Picks_Label">
+ Подборка
+ </string>
+ <string name="Command_Places_Label">
+ Места
+ </string>
+ <string name="Command_Preferences_Label">
+ Настройки
+ </string>
+ <string name="Command_Profile_Label">
+ Профиль
+ </string>
+ <string name="Command_Search_Label">
+ Поиск
+ </string>
+ <string name="Command_Snapshot_Label">
+ Снимок
+ </string>
+ <string name="Command_Speak_Label">
+ Говорить
+ </string>
+ <string name="Command_View_Label">
+ Вид
+ </string>
+ <string name="Command_Voice_Label">
+ Настройки голоса
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Информация о посещаемой вами земле
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Изменить аватар
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Выбор аватара
+ </string>
+ <string name="Command_Build_Tooltip">
+ Построение объектов и формирование ландшафта
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Обменивайтесь текстовыми репликами с людьми вокруг вас
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Компас
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Интересные места
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Жесты для аватара
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Выполнение типичных задач
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Просмотр и использование вашего имущества
+ </string>
+ <string name="Command_Map_Tooltip">
+ Карта мира
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Покупки
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Показать людей поблизости
+ </string>
+ <string name="Command_Move_Tooltip">
+ Перемещение аватара
+ </string>
+ <string name="Command_People_Tooltip">
+ Друзья, группы и люди поблизости
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Места, которые будут показаны в вашем профиле как избранное
+ </string>
+ <string name="Command_Places_Tooltip">
+ Сохраненные вами места
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Настройки
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Редактирование или просмотр вашего профиля
+ </string>
+ <string name="Command_Search_Tooltip">
+ Поиск мест, событий, людей
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Сделать снимок
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Говорите с людьми вокруг вас с помощью микрофона
+ </string>
+ <string name="Command_View_Tooltip">
+ Изменение угла камеры
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Громкость звонков и голосов окружающих вас людей
+ </string>
+ <string name="Retain%">
+ Остаток%
+ </string>
+ <string name="Detail">
+ Детализация
+ </string>
+ <string name="Better Detail">
+ Более детально
+ </string>
+ <string name="Surface">
+ Поверхность
+ </string>
+ <string name="Solid">
+ Сплошной
+ </string>
+ <string name="Wrap">
+ Оболочка
+ </string>
+ <string name="Preview">
+ Предварительный просмотр
+ </string>
+ <string name="Normal">
+ Нормальный
+ </string>
+</strings>
diff --git a/indra/newview/skins/default/xui/ru/teleport_strings.xml b/indra/newview/skins/default/xui/ru/teleport_strings.xml
new file mode 100644
index 0000000000..296562e6f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/teleport_strings.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages>
+ <message_set name="errors">
+ <message name="invalid_tport">
+ При запросе телепортации возникла проблема. Возможно, вам придется повторить вход перед тем, как вы сможете телепортироваться.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ При пересечении границы региона возникла проблема. Возможно, вам придется повторить вход перед тем, как вы сможете перейти границу.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Телепортация сейчас заблокирована. Повторите попытку позже.
+Если вам все равно не удается телепортироваться, выйдите и войдите в систему, чтобы устранить проблему.
+ </message>
+ <message name="nolandmark_tport">
+ Системе не удалось определить место назначения закладки.
+ </message>
+ <message name="timeout_tport">
+ Системе не удалось выполнить подключение телепорта.
+Повторите попытку позже.
+ </message>
+ <message name="NoHelpIslandTP">
+ Вы не можете телепортироваться обратно на Остров Помощи.
+Телепортируйтесь на Общественный Остров Помощи, чтобы повторить обучение
+ </message>
+ <message name="noaccess_tport">
+ У вас нет доступа к точке назначения этого телепорта.
+ </message>
+ <message name="missing_attach_tport">
+ Ваши присоединения еще не доставлены. Подождите несколько секунд либо выйдите и войдите в программу, прежде чем повторить попытку телепортации.
+ </message>
+ <message name="too_many_uploads_tport">
+ Очередь активов в данном регионе заполнена, поэтому ваш запрос на телепортацию не будет выполнен своевременно. Повторите попытку через несколько минут или перейдите в менее загруженный регион.
+ </message>
+ <message name="expired_tport">
+ Системе не удалось своевременно выполнить ваш запрос на телепортацию. Повторите попытку через несколько минут.
+ </message>
+ <message name="expired_region_handoff">
+ Системе не удалось своевременно выполнить ваше пересечение границы. Повторите попытку через несколько минут.
+ </message>
+ <message name="no_host">
+ Не удалось найти точку назначения телепорта. Возможно, назначение временно недоступно или уже не существует. Повторите попытку через несколько минут.
+ </message>
+ <message name="no_inventory_host">
+ Система инвентаря сейчас недоступна.
+ </message>
+ </message_set>
+ <message_set name="progress">
+ <message name="sending_dest">
+ Отправка по назначению.
+ </message>
+ <message name="redirecting">
+ Перенаправление в другое место.
+ </message>
+ <message name="relaying">
+ Перенаправление по назначению.
+ </message>
+ <message name="sending_home">
+ Отправка запроса домашнего местоположения.
+ </message>
+ <message name="sending_landmark">
+ Отправка запроса местоположения закладки.
+ </message>
+ <message name="completing">
+ Выполнение телепортации.
+ </message>
+ <message name="completed_from">
+ Выполнена телепоратция из [T_SLURL]
+ </message>
+ <message name="resolving">
+ Определение назначения.
+ </message>
+ <message name="contacting">
+ Соединение с новым регионом.
+ </message>
+ <message name="arriving">
+ Прибытие…
+ </message>
+ <message name="requesting">
+ Запрос телепортации…
+ </message>
+ </message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/tr/floater_aaa.xml b/indra/newview/skins/default/xui/tr/floater_aaa.xml
new file mode 100644
index 0000000000..d663ec1a5b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_aaa.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Test Floater" title="TEST GEZDİRİCİSİ">
+ <string name="test_the_vlt">
+ Bu CHANGE2 dizesi ayıklandı.
+ </string>
+ <string name="testing_eli">
+ Sadece test amaçlı. değişiklikler.
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml
new file mode 100644
index 0000000000..993ec42958
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_about.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="[CAPITALIZED_APP_NAME] HAKKINDA">
+ <floater.string name="AboutHeader">
+ [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [Sürüm Notları]]
+ </floater.string>
+ <floater.string name="AboutCompiler">
+ [COMPILER] [COMPILER_VERSION] sürümü ile oluşturuldu
+ </floater.string>
+ <floater.string name="AboutPosition">
+ &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] konumundasınız
+[SERVER_VERSION]
+[SERVER_RELEASE_NOTES_URL]
+ </floater.string>
+ <floater.string name="AboutSystem">
+ CPU: [CPU]
+Bellek: [MEMORY_MB] MB
+İşl. Sis. Sürümü: [OS_VERSION]
+Grafik Kartı Üreticisi: [GRAPHICS_CARD_VENDOR]
+Grafik Kartı: [GRAPHICS_CARD]
+ </floater.string>
+ <floater.string name="AboutDriver">
+ Windows Grafik Sürücüsü Sürümü: [GRAPHICS_DRIVER_VERSION]
+ </floater.string>
+ <floater.string name="AboutLibs">
+ OpenGL Sürümü: [OPENGL_VERSION]
+
+libcurl Sürümü: [LIBCURL_VERSION]
+J2C Kod Çözücü Sürümü: [J2C_VERSION]
+Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION]
+Qt Web Kit Sürümü: [QT_WEBKIT_VERSION]
+Ses Sunucusu Sürümü: [VOICE_VERSION]
+ </floater.string>
+ <floater.string name="none">
+ (hiçbiri)
+ </floater.string>
+ <floater.string name="AboutTraffic">
+ Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </floater.string>
+ <floater.string name="ErrorFetchingServerReleaseNotesURL">
+ Sunucu sürümü notları URL&apos;si alınırken hata oluştu.
+ </floater.string>
+ <tab_container name="about_tab">
+ <panel label="Bilgi" name="support_panel">
+ <button label="Panoya Kopyala" name="copy_btn"/>
+ </panel>
+ <panel label="Katkıda Bulunanlar" name="credits_panel">
+ <text name="linden_intro">
+ Second Life, Linden&apos;lar tarafından geliştirilmiştir:
+ </text>
+ <text name="contrib_intro">
+ Açık kaynak kod katkısında bulunanlar:
+ </text>
+ <text_editor name="contrib_names">
+ Geçici Ad çalıştırma sırasında değiştirilir
+ </text_editor>
+ <text name="trans_intro">
+ Çevirileri yapanlar:
+ </text>
+ <text_editor name="trans_names">
+ Geçici Ad çalıştırma sırasında değiştirilir
+ </text_editor>
+ </panel>
+ <panel label="Lisanslar" name="licenses_panel">
+ <text_editor name="credits_editor">
+ 3Dconnexion SDK Telif Hakkı (C) 1992-2007 3Dconnexion
+APR Telif Hakkı (C) 2000-2004 The Apache Software Foundation
+Collada DOM Telif Hakkı 2005 Sony Computer Entertainment Inc.
+cURL Telif Hakkı (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
+DBus/dbus-glib Telif Hakkı (C) 2002, 2003 CodeFactory AB / Telif Hakkı (C) 2003, 2004 Red Hat, Inc.
+expat Telif Hakkı (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+FreeType Telif Hakkı (C) 1996-2002, The FreeType Project (www.freetype.org).
+GL Telif Hakkı (C) 1999-2004 Brian Paul.
+GLOD Telif Hakkı (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University ve David Luebke, Brenden Schubert, University of Virginia.
+google-perftools Telif Hakkı (c) 2005, Google Inc.
+Havok.com(TM) Telif Hakkı (C) 1999-2001, Telekinesys Research Limited.
+jpeg2000 Telif Hakkı (C) 2001, David Taubman, The University of New South Wales (UNSW)
+jpeglib Telif Hakkı (C) 1991-1998, Thomas G. Lane.
+ogg/vorbis Telif Hakkı (C) 2001, Xiphophorus
+OpenSSL Telif Hakkı (C) 1998-2002 The OpenSSL Project.
+PCRE Telif Hakkı (c) 1997-2008 University of Cambridge
+SDL Telif Hakkı (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+SSLeay Telif Hakkı (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+xmlrpc-epi Telif Hakkı (C) 2000 Epinions, Inc.
+zlib Telif Hakkı (C) 1995-2002 Jean-loup Gailly ve Mark Adler.
+google-perftools Telif Hakkı (c) 2005, Google Inc.
+
+Second Life Görüntüleyicisi Havok (TM) Fizik motorunu kullanmaktadır. (c)Telif Hakkı 1999-2010 Havok.com Inc. (ve Lisans Verenleri). Tüm Hakları Saklıdır. Ayrıntılı bilgi için bkz. www.havok.com
+
+Tüm hakları saklıdır. Ayrıntılı bilgi için bkz. licenses.txt
+
+Sesli sohbet için Ses kodlaması: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+ </text_editor>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
new file mode 100644
index 0000000000..e0350964b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="ARAZİ HAKKINDA">
+ <floater.string name="maturity_icon_general">
+ &quot;Parcel_PG_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_moderate">
+ &quot;Parcel_M_Dark&quot;
+ </floater.string>
+ <floater.string name="maturity_icon_adult">
+ &quot;Parcel_R_Dark&quot;
+ </floater.string>
+ <floater.string name="Minutes">
+ [MINUTES] dakika
+ </floater.string>
+ <floater.string name="Minute">
+ dakika
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] saniye
+ </floater.string>
+ <floater.string name="Remaining">
+ kaldı
+ </floater.string>
+ <tab_container name="landtab">
+ <panel label="GENEL" name="land_general_panel">
+ <panel.string name="new users only">
+ Sadece Yeni Sakinler
+ </panel.string>
+ <panel.string name="anyone">
+ Herkes
+ </panel.string>
+ <panel.string name="area_text">
+ Alan
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] m²
+ </panel.string>
+ <panel.string name="auction_id_text">
+ İhale Kimlik: [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ Bu arazide değişiklik yapmak için satın alımınızı onaylamanız gerekir.
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (Sahibi Olunan Grup)
+ </panel.string>
+ <panel.string name="profile_text">
+ Profil
+ </panel.string>
+ <panel.string name="info_text">
+ Bilgi
+ </panel.string>
+ <panel.string name="public_text">
+ (kamuya açık)
+ </panel.string>
+ <panel.string name="none_text">
+ (hiçbiri)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (Satış Bekliyor)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ Seçili parsel yok.
+ </panel.string>
+ <panel.string name="time_stamp_template">
+ [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="Name:">
+ Ad:
+ </text>
+ <text name="Description:">
+ Açıklama:
+ </text>
+ <text name="LandType">
+ Tür:
+ </text>
+ <text name="LandTypeText">
+ Anakara / Banliyö
+ </text>
+ <text name="ContentRating">
+ Seviye:
+ </text>
+ <text name="ContentRatingText">
+ Yetişkin
+ </text>
+ <text name="Owner:">
+ Sahip:
+ </text>
+ <text name="Group:">
+ Grup:
+ </text>
+ <button label="Ayarla" name="Set..."/>
+ <check_box label="Gruba Devretmeye İzin Ver" name="check deed" tool_tip="Bir gurup görevlisi bu araziyi gruba devredebilir, bu nedenle grubun arazi tahsisiyle desteklenecektir."/>
+ <button label="Devret" name="Deed..." tool_tip="Sadece eğer seçilen grupta bir görevliyseniz arazi devredebilirsiniz."/>
+ <check_box label="Sahip Devirle Katkıda Bulunur" name="check contrib" tool_tip="Arazi gruba devredildiği zaman önceki sahip bunu desteklemek için yeterli miktarda arazi tahsisiyle katkıda bulunur."/>
+ <text name="For Sale:">
+ Satılık:
+ </text>
+ <text name="Not for sale.">
+ Satılık değil
+ </text>
+ <text name="For Sale: Price L$[PRICE].">
+ Fiyat: L$[PRICE] (L$[PRICE_PER_SQM]/m²)
+ </text>
+ <button label="Araziyi Sat" name="Sell Land..."/>
+ <text name="For sale to">
+ Şu Alıcıya Satılık: [BUYER]
+ </text>
+ <text name="Sell with landowners objects in parcel.">
+ Nesneler satışa dahildir
+ </text>
+ <text name="Selling with no objects in parcel.">
+ Nesneler satışa dahil değildir
+ </text>
+ <button label="Arazi Satışını İptal Et" label_selected="Arazi Satışını İptal Et" name="Cancel Land Sale"/>
+ <text name="Claimed:">
+ Alındı:
+ </text>
+ <text name="DateClaimText">
+ 15 Ağustos Salı 13:47:25 2006
+ </text>
+ <text name="PriceLabel">
+ Alan:
+ </text>
+ <text name="PriceText">
+ 4048 m²
+ </text>
+ <text name="Traffic:">
+ Trafik:
+ </text>
+ <text name="DwellText">
+ 0
+ </text>
+ <button label="Arazi Satın Al" name="Buy Land..."/>
+ <button label="Linden Satışı" name="Linden Sale..." tool_tip="Arazinin sahip olunması, içeriğinin ayarlanması ve ihaleye çıkmamış olması gerekir"/>
+ <button label="Komut Dosyası Bilgileri" name="Scripts..."/>
+ <button label="Grup İçin Satın Al" name="Buy For Group..."/>
+ <button label="Geçiş Hakkı Satın Al" name="Buy Pass..." tool_tip="Geçiş hakkı bu araziye geçici erişiminizi sağlar."/>
+ <button label="Araziyi Terket" name="Abandon Land..."/>
+ <button label="Araziyi Geri Kazan" name="Reclaim Land..."/>
+ </panel>
+ <panel label="SÖZLEŞME" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ Bu bölgede satın alınan arazi tekrar satılabilir.
+ </panel.string>
+ <panel.string name="can_not_resell">
+ Bu bölgede satın alınan arazi tekrar satılamayabilir.
+ </panel.string>
+ <panel.string name="can_change">
+ Bu bölgede satın alınan arazi birleştirilebilir veya bölünebilir.
+ </panel.string>
+ <panel.string name="can_not_change">
+ Bu bölgede satın alınan arazi birleştirilemeyebilir veya bölünemeyebilir.
+ </panel.string>
+ <text name="estate_section_lbl">
+ Gayrimenkul:
+ </text>
+ <text name="estate_name_text">
+ anakara
+ </text>
+ <text name="estate_owner_lbl">
+ Sahip:
+ </text>
+ <text name="estate_owner_text">
+ (hiçbiri)
+ </text>
+ <text_editor name="covenant_editor">
+ Bu Gayrimenkul için Sözleşmesi yok.
+ </text_editor>
+ <text name="covenant_timestamp_text">
+ Son Değiştirme: 31 Ara, Çar 16:00:00 1969
+ </text>
+ <text name="region_section_lbl">
+ Bölge:
+ </text>
+ <text name="region_name_text">
+ EricaVille
+ </text>
+ <text name="region_landtype_lbl">
+ Tür:
+ </text>
+ <text name="region_landtype_text">
+ Anakara / Banliyö
+ </text>
+ <text name="region_maturity_lbl">
+ Seviye:
+ </text>
+ <text name="region_maturity_text">
+ Yetişkin
+ </text>
+ <text name="resellable_lbl">
+ Tekrar Satış:
+ </text>
+ <text name="resellable_clause">
+ Bu bölgedeki arazi tekrar satılamayabilir.
+ </text>
+ <text name="changeable_lbl">
+ Böl:
+ </text>
+ <text name="changeable_clause">
+ Bu bölgedeki arazi birleştirilemeyebilir/bölünemeyebilir.
+ </text>
+ </panel>
+ <panel label="NESNELER" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] / [MAX] ([AVAILABLE]) uygun
+ </panel.string>
+ <panel.string name="objects_deleted_text">
+ [COUNT] / [MAX] ([SİLİNDİ] silinecek)
+ </panel.string>
+ <text name="parcel_object_bonus">
+ Bölge Nesne Bonusu Faktörü: [BONUS]
+ </text>
+ <text name="Simulator primitive usage:">
+ Bölge kapasitesi:
+ </text>
+ <text name="objects_available">
+ [COUNT] / [MAX] ([AVAILABLE]) uygun
+ </text>
+ <text name="Primitives parcel supports:">
+ Parsel arazi kapasitesi:
+ </text>
+ <text name="object_contrib_text">
+ [COUNT]
+ </text>
+ <text name="Primitives on parcel:">
+ Parsel arazi etkisi:
+ </text>
+ <text name="total_objects_text">
+ [COUNT]
+ </text>
+ <text name="Owned by parcel owner:">
+ Parsel sahibinin mülkiyetinde
+ </text>
+ <text name="owner_objects_text">
+ [COUNT]
+ </text>
+ <button label="Göster" label_selected="Göster" name="ShowOwner"/>
+ <button label="İade Et" name="ReturnOwner..." tool_tip="Nesneleri sahiplerine iade et."/>
+ <text name="Set to group:">
+ Gruba ayarı:
+ </text>
+ <text name="group_objects_text">
+ [COUNT]
+ </text>
+ <button label="Göster" label_selected="Göster" name="ShowGroup"/>
+ <button label="İade Et" name="ReturnGroup..." tool_tip="Nesneleri sahiplerine iade et."/>
+ <text name="Owned by others:">
+ Başkalarının mülkiyetinde:
+ </text>
+ <text name="other_objects_text">
+ [COUNT]
+ </text>
+ <button label="Göster" label_selected="Göster" name="ShowOther"/>
+ <button label="İade Et" name="ReturnOther..." tool_tip="Nesneleri sahiplerine iade et."/>
+ <text name="Selected / sat upon:">
+ Seçilen / üzerine oturulan:
+ </text>
+ <text name="selected_objects_text">
+ [COUNT]
+ </text>
+ <text name="Autoreturn">
+ Diğer Sakinlerin nesnelerini otomatik iade (dakika, kapalı için 0):
+ </text>
+ <text name="Object Owners:">
+ Nesne Sahipleri:
+ </text>
+ <button name="Refresh List" tool_tip="Nesne Listesini Yenile"/>
+ <button label="Nesneleri İade Et" name="Return objects..."/>
+ <name_list name="owner list">
+ <name_list.columns label="Tür" name="type"/>
+ <name_list.columns label="Ad" name="name"/>
+ <name_list.columns label="Sayım" name="count"/>
+ <name_list.columns label="En son" name="mostrecent"/>
+ </name_list>
+ </panel>
+ <panel label="SEÇENEKLER" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ Arama sonuçlarında bu parsel görünsün
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ Bu seçenek etkin değil, çünkü bu parselin alanı 128 m² veya daha küçük.
+Sadece büyük parseller aramada görünür.
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ Bu seçenek etkin değil, çünkü bu parselin seçeneklerinde değişiklik yapamazsınız.
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Orta Seviyede İçerik
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Yetişkin İçeriği
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ Parsel bilgileriniz veya içeriğiniz orta olarak değerlendiriliyor.
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ Parsel bilgileriniz veya içeriğiniz yetişkin olarak değerlendiriliyor.
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (hiçbiri)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ İtme Yok
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ İtme Yok (Bölge Geçersiz Kılma)
+ </panel.string>
+ <panel.string name="see_avs_text">
+ Parseldeki sakinleri gör ve onlarla sohbet et
+ </panel.string>
+ <text name="allow_label">
+ Sakinlere şunun için izin ver:
+ </text>
+ <check_box label="Yüzeyi Düzenle" name="edit land check" tool_tip="İşaretliyse herkes arazinizi şekillendirebilir. en iyisi bunu işaretlememektir, çünkü kendi arazinizi her zaman düzenleyebilirsiniz."/>
+ <check_box label="Uç" name="check fly" tool_tip="İşaretliyse Sakinler arazinizden uçabilir. İşaretli değilse, sadece arazinize ve arazinizin üzerinde uçabilir."/>
+ <text name="allow_label2">
+ İnşa Et:
+ </text>
+ <check_box label="Herkes" name="edit objects check"/>
+ <check_box label="Grup" name="edit group objects check"/>
+ <text name="allow_label3">
+ Nesne Girişi:
+ </text>
+ <check_box label="Herkes" name="all object entry check"/>
+ <check_box label="Grup" name="group object entry check"/>
+ <text name="allow_label4">
+ Komut Dosyalarını Çalıştır:
+ </text>
+ <check_box label="Herkes" name="check other scripts"/>
+ <check_box label="Grup" name="check group scripts"/>
+ <text name="land_options_label">
+ Arazi Seçenekleri:
+ </text>
+ <check_box label="Güvenli (hasar yok)" name="check safe" tool_tip="İşaretliyse, araziyi Güvenli moda getirerek hasar çarpışmasını etkinsizleştirir İşaretli değilse hasar çarpışması etkinleşir."/>
+ <check_box label="İtme Yok" name="PushRestrictCheck" tool_tip="Komut dosyalarının itmesini önler Bu seçeneğin işaretlenmesi arazinizdeki bozucu davranışları önlemeye yardımcı olabilir."/>
+ <check_box label="Konumu Arama sonuçlarında göster (L$30/hafta)" name="ShowDirectoryCheck" tool_tip="Arama sonuçlarında bu parsel görünsün"/>
+ <combo_box name="land category with adult">
+ <combo_box.item label="Herh. Bir Kategori" name="item0"/>
+ <combo_box.item label="Linden Konumu" name="item1"/>
+ <combo_box.item label="Yetişkin" name="item2"/>
+ <combo_box.item label="Sanat ve Kültür" name="item3"/>
+ <combo_box.item label="İş" name="item4"/>
+ <combo_box.item label="Eğitim" name="item5"/>
+ <combo_box.item label="Oyun" name="item6"/>
+ <combo_box.item label="Uğrak Mekan" name="item7"/>
+ <combo_box.item label="Yeni Gelenlere Yardım Sunan" name="item8"/>
+ <combo_box.item label="Park ve Doğa" name="item9"/>
+ <combo_box.item label="Yerleşim" name="item10"/>
+ <combo_box.item label="Alışveriş" name="item11"/>
+ <combo_box.item label="Kiralık" name="item13"/>
+ <combo_box.item label="Diğer" name="item12"/>
+ </combo_box>
+ <combo_box name="land category">
+ <combo_box.item label="Herh. Bir Kategori" name="item0"/>
+ <combo_box.item label="Linden Konumu" name="item1"/>
+ <combo_box.item label="Sanat ve Kültür" name="item3"/>
+ <combo_box.item label="İş" name="item4"/>
+ <combo_box.item label="Eğitim" name="item5"/>
+ <combo_box.item label="Oyun" name="item6"/>
+ <combo_box.item label="Uğrak Mekan" name="item7"/>
+ <combo_box.item label="Yeni Gelenlere Yardım Sunan" name="item8"/>
+ <combo_box.item label="Park ve Doğa" name="item9"/>
+ <combo_box.item label="Yerleşim" name="item10"/>
+ <combo_box.item label="Alışveriş" name="item11"/>
+ <combo_box.item label="Kiralık" name="item13"/>
+ <combo_box.item label="Diğer" name="item12"/>
+ </combo_box>
+ <check_box label="Orta Seviyede İçerik" name="MatureCheck" tool_tip=" "/>
+ <text name="Snapshot:">
+ Anlık Görüntü:
+ </text>
+ <texture_picker name="snapshot_ctrl" tool_tip="Bir resim seçmek için tıklayın"/>
+ <text name="allow_label5">
+ Diğer parsel Sakinlerine şunun için izin verin:
+ </text>
+ <check_box label="Avatarları Gör" name="SeeAvatarsCheck" tool_tip="Diğer parsellerdeki sakinlerin bu parseldeki sakinleri görmesine ve onlarla sohbet etmesine, sizin de onları görüp, onlarla sohbet etmenize imkan tanır."/>
+ <text name="landing_point">
+ İniş Noktası: [LANDING]
+ </text>
+ <button label="Ayarla" label_selected="Ayarla" name="Set" tool_tip="İniş noktasını konukların geldiği yere ayarla. avatarınızın konumunu bu parselin içine ayarlar."/>
+ <button label="Temizle" label_selected="Temizle" name="Clear" tool_tip="İniş noktasını temizle"/>
+ <text name="Teleport Routing: ">
+ Işınlama Rotası:
+ </text>
+ <combo_box name="landing type" tool_tip="Işınlama Rotası -- arazinize ışınlamaları nasıl kullanacağınızı seçin">
+ <combo_box.item label="Engellenmiş" name="Blocked"/>
+ <combo_box.item label="İniş Noktası" name="LandingPoint"/>
+ <combo_box.item label="Herhangi bir yere" name="Anywhere"/>
+ </combo_box>
+ </panel>
+ <panel label="ORTAM" name="land_media_panel">
+ <text name="with media:">
+ Tür:
+ </text>
+ <combo_box name="media type" tool_tip="URL&apos;nin bir film, web sayfası, ya da başka bir ortam olup olmadığını belirtin"/>
+ <text name="at URL:">
+ Ana Sayfa:
+ </text>
+ <button label="Ayarla" name="set_media_url"/>
+ <text name="Description:">
+ Açıklama:
+ </text>
+ <line_editor name="url_description" tool_tip="Yazılar oyna/yükle düğmesinin yanında gösterilir"/>
+ <text name="Media texture:">
+ Doku Değiştir:
+ </text>
+ <texture_picker name="media texture" tool_tip="Bir resim seçmek için tıklayın"/>
+ <text name="replace_texture_help">
+ Bu dokuyu kullanan nesneler, oynat okuna bastıktan sonra filmi veya web sayfasını gösterecektir. Farklı bir doku seçmek için pul resmi seçin.
+ </text>
+ <check_box label="Otomatik ölçekle" name="media_auto_scale" tool_tip="Bu seçeneğin işaretlenmesi bu parselin içeriğini otomatik olarak ölçeklendirecektir. Biraz yavaş ve görsel açıdan kalitesi biraz düşük olabilir, ancak başka doku ölçekleme veya ayarlama gerekmeyecektir."/>
+ <text name="media_size" tool_tip="Web ortamını oluşturmak için boyutlandır, varsayılan için 0 bırak.">
+ Büyüklük:
+ </text>
+ <spinner name="media_size_width" tool_tip="Web ortamını oluşturmak için boyutlandır, varsayılan için 0 bırak."/>
+ <spinner name="media_size_height" tool_tip="Web ortamını oluşturmak için boyutlandır, varsayılan için 0 bırak."/>
+ <text name="pixels">
+ piksel
+ </text>
+ <text name="Options:">
+ Seçenklr.:
+ </text>
+ <check_box label="Döngü" name="media_loop" tool_tip="Ortamı döngüsel olarak oynat. Ortamın oynatılması bittiğinde baştan tekrar başlayacaktır."/>
+ </panel>
+ <panel label="SES" name="land_audio_panel">
+ <text name="MusicURL:">
+ Müzik URL&apos;si:
+ </text>
+ <text name="Sound:">
+ Ses:
+ </text>
+ <check_box label="Mimik ve nesne seslerini bu parselle sınırla" name="check sound local"/>
+ <text name="Avatar Sounds:">
+ Avatar Sesleri:
+ </text>
+ <check_box label="Herkes" name="all av sound check"/>
+ <check_box label="Grup" name="group av sound check"/>
+ <text name="Voice settings:">
+ Sesli:
+ </text>
+ <check_box label="Sesi Etkinleştir" name="parcel_enable_voice_channel"/>
+ <check_box label="Sesi Etkinleştir (Gayrimenkul tarafından belirlenir)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+ <check_box label="Sesi bu parselle sınırla" name="parcel_enable_voice_channel_local"/>
+ </panel>
+ <panel label="ERİŞİM" name="land_access_panel">
+ <panel.string name="access_estate_defined">
+ (Gayrimenkul tarafından tanımlanır)
+ </panel.string>
+ <panel.string name="allow_public_access">
+ Kamusal Erişime İzin Ver ([MATURITY]) (Not: İşaret kaldırılırsa yasaklama çizgileri oluşur)
+ </panel.string>
+ <panel.string name="estate_override">
+ Bu seçeneklerden biri veya daha fazlası gayrimenkul düzeyinde ayarlanır
+ </panel.string>
+ <text name="Limit access to this parcel to:">
+ Bu Parsele Erişim
+ </text>
+ <text name="Only Allow">
+ Erişimi şununla doğrulanan Sakinlerle Sınırla:
+ </text>
+ <check_box label="Dosyadaki ödeme bilgileri [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Tanınmayan Sakinleri Yasakla."/>
+ <check_box label="Yaş doğrulama [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Yaşını doğrulamayan Sakinleri yasakla Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
+ <check_box label="Grup Erişimine İzin Ver: [GROUP]" name="GroupCheck" tool_tip="Genel sekmesinde grup ayarla."/>
+ <check_box label="Geçiş haklr. şuna sat:" name="PassCheck" tool_tip="Bu parsele geçici erişim verir"/>
+ <combo_box name="pass_combo">
+ <combo_box.item label="Herkes" name="Anyone"/>
+ <combo_box.item label="Grup" name="Group"/>
+ </combo_box>
+ <spinner label="L$ olarak Fiyat:" name="PriceSpin"/>
+ <spinner label="Erişim saatleri:" name="HoursSpin"/>
+ <panel name="Allowed_layout_panel">
+ <text label="Her Zaman İzin Ver" name="AllowedText">
+ İzin Verilen Sakinler
+ </text>
+ <name_list name="AccessList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
+ <button label="Ekle" name="add_allowed"/>
+ <button label="Kaldır" label_selected="Kaldır" name="remove_allowed"/>
+ </panel>
+ <panel name="Banned_layout_panel">
+ <text label="Yasakla" name="BanCheck">
+ Yasaklı Sakinler
+ </text>
+ <name_list name="BannedList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
+ <button label="Ekle" name="add_banned"/>
+ <button label="Kaldır" label_selected="Kaldır" name="remove_banned"/>
+ </panel>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_activeim.xml b/indra/newview/skins/default/xui/tr/floater_activeim.xml
new file mode 100644
index 0000000000..f3f66b942f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="ETKİN Aİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_animation_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_preview.xml
new file mode 100644
index 0000000000..f8800c674d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_animation_preview.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview">
+ <floater.string name="failed_to_initialize">
+ Hareket başlatılamadı
+ </floater.string>
+ <floater.string name="anim_too_long">
+ Animasyon dosyası [LENGTH] saniye uzunluğunda.
+
+Maksimum animasyon uzunluğu [LENGTH] saniye.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ Animasyon dosyası okunamadı.
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ Tamam
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Dosyanın zamanından önce sonu.
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ Kısıtlama tanımı okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ BVH dosyası açılamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ Geçersiz HİYERARŞİ üst bilgisi.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ KÖK veya EKLEM bulunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ EKLEM adı alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ OFSET bulunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ KANALLAR bulunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ Döndürme sırası alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ Döndürme ekseni alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ HAREKET bulunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ kARE SAYISI alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ Kare zamanı alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ Konum değerleri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ Döndürme değerleri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ Çeviri dosyası açılamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Çeviri üst bilgisi okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Çeviri adları okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Çeviri yoksay değeri okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Çeviri nisbi değeri okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Çeviri çıkış adı değeri okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Çeviri matrisi okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Birleştirme alt birim adı alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Birleştirme üst birim adı alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ Öncelik değerleri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ Döngü (tekrar) değerleri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ Easln (Yavaş Başlangıç) değerleri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ EaseOut (Yavaş Bitiş) değerleri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ El şekillendirme değeri alınamadı.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ Duygu ifadesi adı okunamadı.
+ </floater.string>
+ <floater.string name="E_ST_BAD_ROOT">
+ Yanlış kök eklem adı, &quot;kalça&quot; kullanın
+ </floater.string>
+ <text name="name_label">
+ Ad:
+ </text>
+ <text name="description_label">
+ Açıklama:
+ </text>
+ <spinner label="Öncelik" name="priority" tool_tip="Bu animasyonun diğer animasyonları geçersiz kılabileceği kontrolleri"/>
+ <check_box label="Döngü" name="loop_check" tool_tip="Bu animasyonun döngülenmesini (tekrarlanmasını) sağlar"/>
+ <spinner label="İç (%)" name="loop_in_point" tool_tip="Döngünün döndüğü animasyon noktasını belirler"/>
+ <spinner label="Dış (%)" name="loop_out_point" tool_tip="Animasyonda döngünün bittiği noktayı belirler"/>
+ <text name="hand_label">
+ El Duruşu
+ </text>
+ <combo_box name="hand_pose_combo" tool_tip="Ellerin animasyon sırasında neler yaptığını kontrol eder">
+ <combo_box.item label="Yayılım" name="Spread"/>
+ <combo_box.item label="Rahat" name="Relaxed"/>
+ <combo_box.item label="Her İkisi de İşaret Ediyor" name="PointBoth"/>
+ <combo_box.item label="Yumruk" name="Fist"/>
+ <combo_box.item label="Sol Rahat" name="RelaxedLeft"/>
+ <combo_box.item label="Sol İşaret Ediyor" name="PointLeft"/>
+ <combo_box.item label="Sol Yumruk" name="FistLeft"/>
+ <combo_box.item label="Sağ Rahat" name="RelaxedRight"/>
+ <combo_box.item label="Sağ İşaret Ediyor" name="PointRight"/>
+ <combo_box.item label="Sağ Yumruk" name="FistRight"/>
+ <combo_box.item label="Sağı Selamlıyor" name="SaluteRight"/>
+ <combo_box.item label="Yazı Yazıyor" name="Typing"/>
+ <combo_box.item label="Sağ Barış" name="PeaceRight"/>
+ </combo_box>
+ <text name="emote_label">
+ İfade
+ </text>
+ <combo_box name="emote_combo" tool_tip="Yüzün animasyon sırasındaki ifadesini kontrol eder">
+ <item label="(Hiçbiri)" name="[None]" value=""/>
+ <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/>
+ <item label="Korkmuş" name="Afraid" value="Korkmuş"/>
+ <item label="Kızgın" name="Angry" value="Kızgın"/>
+ <item label="Yaygın Gülümseyiş" name="BigSmile" value="Yaygın Gülümseyiş"/>
+ <item label="Canı Sıkılmış" name="Bored" value="Canı Sıkılmış"/>
+ <item label="Ağlama" name="Cry" value="Ağlama"/>
+ <item label="Dudak Bükme" name="Disdain" value="Dudak Bükme"/>
+ <item label="Utanmış" name="Embarrassed" value="Utanmış"/>
+ <item label="Kaş Çatma" name="Frown" value="Kaş Çatma"/>
+ <item label="Öpücük" name="Kiss" value="Öpücük"/>
+ <item label="Gülme" name="Laugh" value="Gülme"/>
+ <item label="Kahkaha" name="Plllppt" value="Kahkaha"/>
+ <item label="Tiksinmiş" name="Repulsed" value="Tiksinmiş"/>
+ <item label="Üzgün" name="Sad" value="Üzgün"/>
+ <item label="Omuz Silkme" name="Shrug" value="Omuz Silkme"/>
+ <item label="Gülümseme" name="Smile" value="Gülümseme"/>
+ <item label="Sürpriz" name="Surprise" value="Sürpriz"/>
+ <item label="Göz Kırpma" name="Wink" value="Göz Kırpma"/>
+ <item label="Endişelenme" name="Worry" value="Endişelenme"/>
+ </combo_box>
+ <text name="preview_label">
+ Şu sırada önizle
+ </text>
+ <combo_box name="preview_base_anim" tool_tip="Animasyon davranışınızı avatarınız genel hareketleri yaparken test etmek için bunu kullanın.">
+ <item label="Ayakta Duruyor" name="Standing" value="Ayakta Duruyor"/>
+ <item label="Yürüyor" name="Walking" value="Yürüyor"/>
+ <item label="Oturuyor" name="Sitting" value="Oturuyor"/>
+ <item label="Uçuyor" name="Flying" value="Uçuyor"/>
+ </combo_box>
+ <spinner label="Yavaş Başlangıç (saniye)" name="ease_in_time" tool_tip="Animasyonun kaynaştığı süre (saniye olarak)"/>
+ <spinner label="Yavaş Bitiş (saniye)" name="ease_out_time" tool_tip="Animasyonun ayrıştığı süre (saniye olarak)"/>
+ <button name="play_btn" tool_tip="Animasyonunu oynat"/>
+ <button name="pause_btn" tool_tip="Animasyonunu duraklat"/>
+ <button name="stop_btn" tool_tip="Animasyo oynatmayı durdur"/>
+ <text name="bad_animation_text">
+ Animasyon dosyası okunamadı.
+
+Poser 4&apos;ten aktarılan BHV dosyalarını tavsiye ederiz.
+ </text>
+ <button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_auction.xml b/indra/newview/skins/default/xui/tr/floater_auction.xml
new file mode 100644
index 0000000000..3c945a9c96
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_auction.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_auction" title="LINDEN ARAZİ SATIŞINI BAŞLAT">
+ <floater.string name="already for sale">
+ Zaten satışa çıkarılmış olan parselleri açık artırmaya sunamazsınız.
+ </floater.string>
+ <check_box initial_value="true" label="Sarı seçim çiti dahil edilsin" name="fence_check"/>
+ <button label="Anlık Görüntü" label_selected="Anlık Görüntü" name="snapshot_btn"/>
+ <button label="Herkese Sat" label_selected="Herkese Sat" name="sell_to_anyone_btn"/>
+ <button label="Ayarları Temizle" label_selected="Ayarları Temizle" name="reset_parcel_btn"/>
+ <button label="Açık Artırmayı Başlat" label_selected="Açık Artırmayı Başlat" name="start_auction_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar.xml b/indra/newview/skins/default/xui/tr/floater_avatar.xml
new file mode 100644
index 0000000000..fc9e3c8a9b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="AVATAR SEÇİCİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml
new file mode 100644
index 0000000000..99c2aae5a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatarpicker" title="SAKİNİ SEÇ">
+ <floater.string name="not_found">
+ &apos;[TEXT]&apos; bulunamadı
+ </floater.string>
+ <floater.string name="no_one_near">
+ Yakında kimse yok
+ </floater.string>
+ <floater.string name="no_results">
+ Sonuç yok
+ </floater.string>
+ <floater.string name="searching">
+ Arıyor...
+ </floater.string>
+ <string name="Select">
+ Seç
+ </string>
+ <string name="Close">
+ Kapat
+ </string>
+ <tab_container name="ResidentChooserTabs">
+ <panel label="Ara" name="SearchPanel">
+ <text name="InstructSearchResidentName">
+ Bir kişinin adının bir kısmını yazın:
+ </text>
+ <button label="Git" label_selected="Git" name="Find"/>
+ <scroll_list name="SearchResults">
+ <columns label="Ad" name="name"/>
+ <columns label="Kullanıcı Adı" name="username"/>
+ </scroll_list>
+ </panel>
+ <panel label="Arkadaşlar" name="FriendsPanel">
+ <text name="InstructSelectFriend">
+ Bir kişiyi seçin:
+ </text>
+ </panel>
+ <panel label="Bana Yakın" name="NearMePanel">
+ <text name="InstructSelectResident">
+ Yakındaki bir kişiyi seçin:
+ </text>
+ <slider label="Mesafe" name="near_me_range"/>
+ <text name="meters">
+ Metre
+ </text>
+ <scroll_list name="NearMe">
+ <columns label="Ad" name="name"/>
+ <columns label="Kullanıcı Adı" name="username"/>
+ </scroll_list>
+ </panel>
+ </tab_container>
+ <button label="Tamam" label_selected="Tamam" name="ok_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml
new file mode 100644
index 0000000000..b519cfa1a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatar_texture_debug" title="AVATAR DOKULARI">
+ <floater.string name="InvalidAvatar">
+ GEÇERSİZ AVATAR
+ </floater.string>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="label">
+ Kaydeildi
+Dokular
+ </text>
+ <text name="composite_label">
+ Birleşik
+Dokular
+ </text>
+ <button label="Kimlikleri Konsole Yığ" label_selected="Yığ" name="Dump"/>
+ <panel name="scroll_content_panel">
+ <texture_picker label="Saç" name="hair-baked"/>
+ <texture_picker label="Saç" name="hair_grain"/>
+ <texture_picker label="Saç Alfası" name="hair_alpha"/>
+ <texture_picker label="Baş" name="head-baked"/>
+ <texture_picker label="Makyaj" name="head_bodypaint"/>
+ <texture_picker label="Baş Alfası" name="head_alpha"/>
+ <texture_picker label="Baş Dövmesi" name="head_tattoo"/>
+ <texture_picker label="Gözler" name="eyes-baked"/>
+ <texture_picker label="Göz" name="eyes_iris"/>
+ <texture_picker label="Göz Alfası" name="eyes_alpha"/>
+ <texture_picker label="Üst Gövde" name="upper-baked"/>
+ <texture_picker label="Üst GövdeBoya" name="upper_bodypaint"/>
+ <texture_picker label="Fanila" name="upper_undershirt"/>
+ <texture_picker label="Eldivenler" name="upper_gloves"/>
+ <texture_picker label="Gömlek" name="upper_shirt"/>
+ <texture_picker label="Üst Ceket" name="upper_jacket"/>
+ <texture_picker label="Yüksek Alfa" name="upper_alpha"/>
+ <texture_picker label="Üst Gövde Dövmesi" name="upper_tattoo"/>
+ <texture_picker label="Alt Gövde" name="lower-baked"/>
+ <texture_picker label="Alt GövdeBoya" name="lower_bodypaint"/>
+ <texture_picker label="Külot" name="lower_underpants"/>
+ <texture_picker label="Çoraplar" name="lower_socks"/>
+ <texture_picker label="Ayakkabılar" name="lower_shoes"/>
+ <texture_picker label="Pantolon" name="lower_pants"/>
+ <texture_picker label="Ceket" name="lower_jacket"/>
+ <texture_picker label="Düşük Alfa" name="lower_alpha"/>
+ <texture_picker label="Alt Gövde Dövmesi" name="lower_tattoo"/>
+ <texture_picker label="Etek" name="skirt-baked"/>
+ <texture_picker label="Etek" name="skirt"/>
+ </panel>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_beacons.xml b/indra/newview/skins/default/xui/tr/floater_beacons.xml
new file mode 100644
index 0000000000..08ebf36be5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_beacons.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="İŞARETLER">
+ <panel name="beacons_panel">
+ <text name="label_show">
+ Göster :
+ </text>
+ <check_box label="İşaretler" name="beacons"/>
+ <check_box label="Vurgulananlar" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="İşaret genişliği">
+ Genişlik:
+ </text>
+ <text name="label_objects">
+ Bu nesneler için.
+ </text>
+ <check_box label="Fiziksel" name="physical"/>
+ <check_box label="Komut Dosyalı" name="scripted"/>
+ <check_box label="Sadece dokun" name="touch_only"/>
+ <check_box label="Ses kaynakları" name="sounds"/>
+ <check_box label="Parçacık kaynakları" name="particles"/>
+ <check_box label="Ortam kaynakları" name="moapbeacon"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_build_options.xml b/indra/newview/skins/default/xui/tr/floater_build_options.xml
new file mode 100644
index 0000000000..5e77f6b168
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_build_options.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="AĞ SEÇENEKLERİ">
+ <floater.string name="grid_screen_text">
+ Ekran
+ </floater.string>
+ <floater.string name="grid_local_text">
+ Yerel
+ </floater.string>
+ <floater.string name="grid_world_text">
+ Dünya
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ Referans
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ Aksesuar
+ </floater.string>
+ <text name="grid_mode_label" tool_tip="Ağ geçirgenliği">
+ Mod
+ </text>
+ <combo_box name="combobox grid mode" tool_tip="Nesneyi konumlandırmak için ağ cetvelini seçin">
+ <combo_box.item label="Dünya ağı" name="World"/>
+ <combo_box.item label="Yerel ağ" name="Local"/>
+ <combo_box.item label="Referans ağı" name="Reference"/>
+ </combo_box>
+ <spinner label="Birimler (metre)" name="GridResolution"/>
+ <spinner label="Kapsamlar (metre)" name="GridDrawSize"/>
+ <check_box label="Alt birimlere geç" name="GridSubUnit"/>
+ <check_box label="Çapraz kesitleri göster" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="Ağ geçirgenliği">
+ Geçirgenlik:
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml
new file mode 100644
index 0000000000..1d929a2dd3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="İÇERİK İZİNLERİNİ DÜZENLE">
+ <floater.string name="nothing_to_modify_text">
+ Seçim içerisinde düzenlenebilir içerik yok.
+ </floater.string>
+ <floater.string name="status_text">
+ [NAME] üzerinde izinler ayarlanıyor
+ </floater.string>
+ <floater.string name="start_text">
+ İzin değişiklik talepleri başlatılıyor...
+ </floater.string>
+ <floater.string name="done_text">
+ İzin değişiklik talepleri sonlandırıldı.
+ </floater.string>
+ <icon name="icon_animation" tool_tip="Animasyon"/>
+ <icon name="icon_bodypart" tool_tip="Vücut Bölümleri"/>
+ <icon name="icon_clothing" tool_tip="Giysiler"/>
+ <icon name="icon_gesture" tool_tip="Mimikler"/>
+ <icon name="icon_notecard" tool_tip="Not Kartları"/>
+ <icon name="icon_object" tool_tip="Nesneler"/>
+ <icon name="icon_script" tool_tip="Komut Dosyaları"/>
+ <icon name="icon_sound" tool_tip="Sesler"/>
+ <icon name="icon_texture" tool_tip="Dokular"/>
+ <button label="√ Tümü" name="check_all"/>
+ <button label="Temizle" label_selected="Hiçbiri" name="check_none"/>
+ <text name="newperms">
+ Yeni İçerik İzinleri
+ </text>
+ <text name="GroupLabel">
+ Grup:
+ </text>
+ <check_box label="Paylaş" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ Herkes:
+ </text>
+ <check_box label="Kopyala" name="everyone_copy"/>
+ <text name="NextOwnerLabel">
+ Sonraki sahip:
+ </text>
+ <check_box label="Değiştir" name="next_owner_modify"/>
+ <check_box label="Kopyala" name="next_owner_copy"/>
+ <check_box initial_value="true" label="Aktar" name="next_owner_transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+ <button label="Tamam" name="apply"/>
+ <button label="İptal" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_bumps.xml b/indra/newview/skins/default/xui/tr/floater_bumps.xml
new file mode 100644
index 0000000000..06ae3a2ec3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_bumps.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_bumps" title="TOSLAMALAR, İTMELER VE VURMALAR">
+ <floater.string name="none_detected">
+ Hiçbiri tespit edilmedi
+ </floater.string>
+ <floater.string name="bump">
+ [TIME] [NAME] size tosladı
+ </floater.string>
+ <floater.string name="llpushobject">
+ [TIME] [NAME] bir komut dosyasıyla sizi itti
+ </floater.string>
+ <floater.string name="selected_object_collide">
+ [TIME] [NAME] bir nesneyle size vurdu
+ </floater.string>
+ <floater.string name="scripted_object_collide">
+ [TIME] [NAME] komut doyalı bir nesneyle size vurdu
+ </floater.string>
+ <floater.string name="physical_object_collide">
+ [TIME] [NAME] fiziki bir nesneyle size vurdu
+ </floater.string>
+ <floater.string name="timeStr">
+ [[hour,datetime,slt]:[min,datetime,slt]]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_contents.xml b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml
new file mode 100644
index 0000000000..9012189ce5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_contents" title="İÇERİĞİ SATIN AL">
+ <floater.string name="no_copy_text">
+ (kopya yok)
+ </floater.string>
+ <floater.string name="no_modify_text">
+ (değiştirme yok)
+ </floater.string>
+ <floater.string name="no_transfer_text">
+ (aktarım yok)
+ </floater.string>
+ <text name="contains_text">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; içeriği:
+ </text>
+ <text name="buy_text">
+ L$[AMOUNT] karşılığında [NAME]&apos;den satın alınsın mı?
+ </text>
+ <check_box label="Giysiyi şimdi giy" name="wear_check"/>
+ <button label="Satın Al" label_selected="Satın Al" name="buy_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml
new file mode 100644
index 0000000000..6608fd72e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="L$ SATIN AL">
+ <floater.string name="buy_currency">
+ Yaklaşık [LOCALAMOUNT] karşılığında [LINDENS] L$ satın al
+ </floater.string>
+ <text name="info_need_more">
+ Daha fazla L$&apos;na ihtiyacınız var
+ </text>
+ <text name="contacting">
+ LindeX ile bağlantı kuruluyor...
+ </text>
+ <text name="info_buying">
+ L$ Satın Al
+ </text>
+ <text name="balance_label">
+ Sahip olduğum miktar:
+ </text>
+ <text name="balance_amount">
+ L$ [AMT]
+ </text>
+ <text name="currency_action">
+ Satın almak istediğim miktar:
+ </text>
+ <text name="currency_label">
+ L$
+ </text>
+ <line_editor label="L$" name="currency_amt">
+ 1234
+ </line_editor>
+ <text name="buying_label">
+ Fiyatı:
+ </text>
+ <text name="currency_est">
+ yakl. [LOCALAMOUNT]
+ </text>
+ <text name="getting_data">
+ Hesaplanıyor...
+ </text>
+ <text name="buy_action">
+ [ACTION]
+ </text>
+ <text name="total_label">
+ Bakiye param şu kadar olacak:
+ </text>
+ <text name="total_amount">
+ L$ [AMT]
+ </text>
+ <text name="currency_links">
+ [http://www.secondlife.com/my/account/payment_method_management.php ödeme yöntemi] | [http://www.secondlife.com/my/account/currency.php para birimi
+ </text>
+ <text name="exchange_rate_note">
+ En son döviz kurunu görmek için miktarı yeniden girin.
+ </text>
+ <text name="purchase_warning_repurchase">
+ Bu satın alma işlemini teyit ettiğinizde nesne değil, L$ satın alırsınız.
+ </text>
+ <text name="purchase_warning_notenough">
+ Yeterli L$ satın almıyorsunuz. Lütfen miktarı artırın.
+ </text>
+ <button label="Şimdi Satın Al" name="buy_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+ <text name="info_cannot_buy">
+ Satın Alınamıyor
+ </text>
+ <button label="Web&apos;e devam et" name="error_web"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml
new file mode 100644
index 0000000000..98aaf50db0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_currency_html" title="PARA SATIN AL"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_land.xml b/indra/newview/skins/default/xui/tr/floater_buy_land.xml
new file mode 100644
index 0000000000..7b43af2ea4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_land.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy land" title="ARAZİ SATIN AL">
+ <floater.string name="can_resell">
+ Tekrar satılabilir.
+ </floater.string>
+ <floater.string name="can_not_resell">
+ Tekrar satılamaz.
+ </floater.string>
+ <floater.string name="can_change">
+ Eklenebilir veya bölünebilir.
+ </floater.string>
+ <floater.string name="can_not_change">
+ Eklenemez veya bölünemez.
+ </floater.string>
+ <floater.string name="cant_buy_for_group">
+ Etkin grubunuz adına arazi satın almak için gerekli izne sahip değilsiniz.
+ </floater.string>
+ <floater.string name="no_land_selected">
+ Seçili arazi yok.
+ </floater.string>
+ <floater.string name="multiple_parcels_selected">
+ Birden fazla farklı parsel seçildi.
+Daha küçük bir alan seçmeyi deneyin.
+ </floater.string>
+ <floater.string name="no_permission">
+ Etkin grubunuz adına arazi satın almak için gerekli izne sahip değilsiniz.
+ </floater.string>
+ <floater.string name="parcel_not_for_sale">
+ Seçilen parsel satılık değil.
+ </floater.string>
+ <floater.string name="group_already_owns">
+ Parsel zaten gruba ait.
+ </floater.string>
+ <floater.string name="you_already_own">
+ Parsel zaten size ait.
+ </floater.string>
+ <floater.string name="set_to_sell_to_other">
+ Seçilen parsel başka birisine satılmak için ayrılmış.
+ </floater.string>
+ <floater.string name="no_public_land">
+ Seçilen alanda kamu arazisi yok.
+ </floater.string>
+ <floater.string name="not_owned_by_you">
+ Başka bir Sakine ait arazi seçildi.
+Daha küçük bir alan seçmeyi deneyin.
+ </floater.string>
+ <floater.string name="processing">
+ Satın alımınız işleniyor...
+
+(Bu işlem bir iki dakika sürebilir.)
+ </floater.string>
+ <floater.string name="fetching_error">
+ Arazi alma bilgileri çekilirken hata oluştu.
+ </floater.string>
+ <floater.string name="buying_will">
+ Arazinin satın alınması sonucu:
+ </floater.string>
+ <floater.string name="buying_for_group">
+ Bu arazinin grup için satın alınması sonucu:
+ </floater.string>
+ <floater.string name="cannot_buy_now">
+ Şimdi satın alamaz:
+ </floater.string>
+ <floater.string name="not_for_sale">
+ Satılık değil:
+ </floater.string>
+ <floater.string name="none_needed">
+ hiç ihtiyaç yok
+ </floater.string>
+ <floater.string name="must_upgrade">
+ Arazi sahibi olmak için hesabınızın yükseltilmesi gerekir.
+ </floater.string>
+ <floater.string name="cant_own_land">
+ Hesabınız arazi sahibi olabilir.
+ </floater.string>
+ <floater.string name="land_holdings">
+ Elinizde [BUYER] m² arazi var.
+ </floater.string>
+ <floater.string name="pay_to_for_land">
+ Bu arazi için [SELLER]&apos;e L$[AMOUNT] ödeyin
+ </floater.string>
+ <floater.string name="buy_for_US">
+ Yaklaşık [LOCAL_AMOUNT] için L$[AMOUNT] satın al,
+ </floater.string>
+ <floater.string name="parcel_meters">
+ Bu parsel [AMOUNT] m²
+ </floater.string>
+ <floater.string name="premium_land">
+ Bu parsel primlidir ve [AMOUNT] m² olarak ücretlendirilecektir.
+ </floater.string>
+ <floater.string name="discounted_land">
+ Bu parsel indirimlidir ve [AMOUNT] m² olarak ücretlendirilecektir.
+ </floater.string>
+ <floater.string name="meters_supports_object">
+ [AMOUNT] m²
+[AMOUNT2] nesneyi destekler
+ </floater.string>
+ <floater.string name="sold_with_objects">
+ nesnelerle satılır
+ </floater.string>
+ <floater.string name="sold_without_objects">
+ nesneler dahil değildir
+ </floater.string>
+ <floater.string name="info_price_string">
+ L$[PRICE]
+(L$ [PRICE_PER_SQM]/m²)
+[SOLD_WITH_OBJECTS]
+ </floater.string>
+ <floater.string name="insufficient_land_credits">
+ [GROUP] grubu, satın almanın gerçekleşmesi için bu parselin fiyatını karşılamak amacıyla yeterli miktarda arazi kullanım kredisine ihtiyaç duyacaktır.
+ </floater.string>
+ <floater.string name="have_enough_lindens">
+ L$ [AMOUNT] sahibisiniz, bu da bu araziyi almaya yeter.
+ </floater.string>
+ <floater.string name="not_enough_lindens">
+ Sadece L$ [AMOUNT] sahibisiniz, L$ [AMOUNT2] kadar daha ihtiyacınız var.
+ </floater.string>
+ <floater.string name="balance_left">
+ Satın alımdan sonra elinizde L$ [AMOUNT] kalacak.
+ </floater.string>
+ <floater.string name="balance_needed">
+ Bu araziyi alabilmek için en az L$ [AMOUNT] almanız gerekir.
+ </floater.string>
+ <floater.string name="no_parcel_selected">
+ (seçili parsel yok)
+ </floater.string>
+ <text name="region_name_label">
+ Bölge:
+ </text>
+ <text name="region_name_text">
+ (bilinmiyor)
+ </text>
+ <text name="region_type_label">
+ Tür:
+ </text>
+ <text name="region_type_text">
+ (bilinmiyor)
+ </text>
+ <text name="estate_name_label">
+ Gayrimenkul:
+ </text>
+ <text name="estate_name_text">
+ (bilinmiyor)
+ </text>
+ <text name="estate_owner_label">
+ Gayrimenkul Sahibi:
+ </text>
+ <text name="estate_owner_text">
+ (bilinmiyor)
+ </text>
+ <text name="resellable_changeable_label">
+ Bu bölgede satın alınan arazi:
+ </text>
+ <text name="resellable_clause">
+ Tekrar satılabilir veya satılamaz.
+ </text>
+ <text name="changeable_clause">
+ Eklenebilir/bölünebilir veya eklenemez/bölünemez.
+ </text>
+ <text name="covenant_text">
+ Gayrimenkul Sözleşmesini kabul etmelisiniz:
+ </text>
+ <text_editor name="covenant_editor">
+ Yükleniyor...
+ </text_editor>
+ <check_box label="Yukarıda Tanımlanan Sözleşmeyi Kabul Ediyorum." name="agree_covenant"/>
+ <text name="info_parcel_label">
+ Parsel:
+ </text>
+ <text name="info_parcel">
+ Scotopteryx 138,204
+ </text>
+ <text name="info_size_label">
+ Büyüklük:
+ </text>
+ <text name="info_size">
+ 1.024 m²
+ </text>
+ <text name="info_price_label">
+ Fiyat:
+ </text>
+ <text name="info_price">
+ L$ 1500
+(L$ 1,1/m²)
+nesnelerle satılır
+ </text>
+ <text name="info_action">
+ Arazinin satın alınması sonucu:
+ </text>
+ <text name="error_message">
+ Bir şeyler yolunda değil.
+ </text>
+ <button label="Web sitesine git" name="error_web"/>
+ <text name="account_action">
+ Ücretli üyeliğini yükselt.
+ </text>
+ <text name="account_reason">
+ Sadece ücretli üyeler arazi sahibi olabilir.
+ </text>
+ <combo_box name="account_level">
+ <combo_box.item label="US$9,95/ay, aylık fatura edilir" name="US$9.95/month,billedmonthly"/>
+ <combo_box.item label="US$7,50/ay, üç aylık fatura edilir" name="US$7.50/month,billedquarterly"/>
+ <combo_box.item label="US$6,00/ay, yıllık fatura edilir" name="US$6.00/month,billedannually"/>
+ </combo_box>
+ <text name="land_use_action">
+ Aylık arazi kullanım ücretlerinizi US$40/aya çıkarın.
+ </text>
+ <text name="land_use_reason">
+ Elinizde 1309 m² arazi var.
+Bu parsel 512 m² arazidir.
+ </text>
+ <text name="purchase_action">
+ Arazi için Joe Sakine L$ 4000 ödeme yap
+ </text>
+ <text name="currency_reason">
+ L$ 2.100&apos;ünüz var.
+ </text>
+ <text name="currency_action">
+ İlave L$ satın al
+ </text>
+ <line_editor name="currency_amt">
+ 1000
+ </line_editor>
+ <text name="currency_est">
+ yaklaşık [LOCAL_AMOUNT] için
+ </text>
+ <text name="currency_balance">
+ L$ 2.100&apos;ünüz var.
+ </text>
+ <check_box label="[AMOUNT] m² katkıyı gruptan kaldır." name="remove_contribution"/>
+ <button label="Satın Al" name="buy_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_object.xml b/indra/newview/skins/default/xui/tr/floater_buy_object.xml
new file mode 100644
index 0000000000..91ef05fb29
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_object.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="NESNENİN KOPYASINI SATIN AL">
+ <floater.string name="title_buy_text">
+ Satın Al
+ </floater.string>
+ <floater.string name="title_buy_copy_text">
+ Şunun bir kopyasını satın alın:
+ </floater.string>
+ <floater.string name="no_copy_text">
+ (kopya yok)
+ </floater.string>
+ <floater.string name="no_modify_text">
+ (değiştirme yok)
+ </floater.string>
+ <floater.string name="no_transfer_text">
+ (aktarım yok)
+ </floater.string>
+ <text name="contents_text">
+ İçeriği:
+ </text>
+ <text name="buy_text">
+ L$[AMOUNT] karşılığında şuradan satın alın:
+ </text>
+ <text name="buy_name_text">
+ [NAME]?
+ </text>
+ <button label="Satın Al" label_selected="Satın Al" name="buy_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_camera.xml b/indra/newview/skins/default/xui/tr/floater_camera.xml
new file mode 100644
index 0000000000..c92d4e9db4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_camera.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater" title="GÖSTER">
+ <floater.string name="rotate_tooltip">
+ Odak Etrafında Kamerayı Döndür
+ </floater.string>
+ <floater.string name="zoom_tooltip">
+ Kamerayı Odağa Yakınlaştır
+ </floater.string>
+ <floater.string name="move_tooltip">
+ Kamerayı Yukarı ve Aşağı, Sola ve Sağa Hareket Ettir
+ </floater.string>
+ <floater.string name="free_mode_title">
+ Nesneyi Göster
+ </floater.string>
+ <panel name="controls">
+ <panel name="preset_views_list">
+ <panel_camera_item name="front_view">
+ <panel_camera_item.text name="front_view_text">
+ Ön Görünüm
+ </panel_camera_item.text>
+ </panel_camera_item>
+ <panel_camera_item name="group_view">
+ <panel_camera_item.text name="side_view_text">
+ Yan Görünüm
+ </panel_camera_item.text>
+ </panel_camera_item>
+ <panel_camera_item name="rear_view">
+ <panel_camera_item.text name="rear_view_text">
+ Arkadan Görünüm
+ </panel_camera_item.text>
+ </panel_camera_item>
+ </panel>
+ <panel name="camera_modes_list">
+ <panel_camera_item name="object_view">
+ <panel_camera_item.text name="object_view_text">
+ Nesne Görünümü
+ </panel_camera_item.text>
+ </panel_camera_item>
+ <panel_camera_item name="mouselook_view">
+ <panel_camera_item.text name="mouselook_view_text">
+ Fare Üzerinden Görünüm
+ </panel_camera_item.text>
+ </panel_camera_item>
+ </panel>
+ <panel name="zoom">
+ <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera odak etrafında yörüngede hareket etsin"/>
+ <slider_bar name="zoom_slider" tool_tip="Kamerayı odağa yakınlaştır"/>
+ <joystick_track name="cam_track_stick" tool_tip="Kamerayı yukarı ve aşağı, sola ve sağa hareket ettir"/>
+ </panel>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="presets_btn" tool_tip="Ön Ayarlı Görünümler"/>
+ <button label="" name="pan_btn" tool_tip="Yörünge Değişimi - Yakınlaştırma - Kamerayı Çevirme"/>
+ <button label="" name="avatarview_btn" tool_tip="Kamera modları"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
new file mode 100644
index 0000000000..d2385e6be3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="YAKINDAKİ SOHBET">
+ <panel>
+ <line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
+ <button name="show_nearby_chat" tool_tip="yakın sohbet günlüğünü gösterir/gizler"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_choose_group.xml b/indra/newview/skins/default/xui/tr/floater_choose_group.xml
new file mode 100644
index 0000000000..1bfc772f4a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_choose_group.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="groups" title="GRUPLAR">
+ <text name="groupdesc">
+ Bir grup seç:
+ </text>
+ <button label="Tamam" label_selected="Tamam" name="OK"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_color_picker.xml b/indra/newview/skins/default/xui/tr/floater_color_picker.xml
new file mode 100644
index 0000000000..c9465fff83
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_color_picker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="RENK SEÇİCİ">
+ <text name="r_val_text">
+ Kırmızı:
+ </text>
+ <text name="g_val_text">
+ Yeşil:
+ </text>
+ <text name="b_val_text">
+ Mavi:
+ </text>
+ <text name="h_val_text">
+ Ton:
+ </text>
+ <text name="s_val_text">
+ Sat:
+ </text>
+ <text name="l_val_text">
+ Par:
+ </text>
+ <check_box label="Şimdi uygula" name="apply_immediate"/>
+ <button label="Tamam" label_selected="Tamam" name="select_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+ <text name="Current color:">
+ Geçerli renk:
+ </text>
+ <text name="(Drag below to save.)">
+ (Kaydetmek için aşağıya sürükleyin)
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_critical.xml b/indra/newview/skins/default/xui/tr/floater_critical.xml
new file mode 100644
index 0000000000..041a303bae
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_critical.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+ <button label="Devam Et" label_selected="Devam Et" name="Continue"/>
+ <text name="tos_heading">
+ Lütfen aşağıdaki iletiyi dikkatle okuyun.
+ </text>
+ <text_editor name="tos_text">
+ TOS_TEXT
+ </text_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml
new file mode 100644
index 0000000000..915770f727
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="ORTAM ÖN AYARINI SİL">
+ <string name="title_water">
+ Su Ön Ayarını Sil
+ </string>
+ <string name="title_sky">
+ Gökyüzü Ön Ayarını Sil
+ </string>
+ <string name="title_day_cycle">
+ Gün Döngüsünü Sil
+ </string>
+ <string name="label_water">
+ Ön Ayar:
+ </string>
+ <string name="label_sky">
+ Ön Ayar:
+ </string>
+ <string name="label_day_cycle">
+ Gün döngüsü:
+ </string>
+ <string name="msg_confirm_deletion">
+ Seçili ön ayarı silmek istediğinize emin misiniz?
+ </string>
+ <string name="msg_sky_is_referenced">
+ Bazı gün döngüleri tarafından başvurulan bir ön ayar kaldırılamaz.
+ </string>
+ <string name="combo_label">
+ -Bir ön ayar seçin-
+ </string>
+ <text name="label">
+ Ön Ayar:
+ </text>
+ <button label="Sil" name="delete"/>
+ <button label="İptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_destinations.xml b/indra/newview/skins/default/xui/tr/floater_destinations.xml
new file mode 100644
index 0000000000..4504366d63
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="HEDEF KONUMLAR"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_display_name.xml b/indra/newview/skins/default/xui/tr/floater_display_name.xml
new file mode 100644
index 0000000000..e39be5a24b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_display_name.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Display Name" title="EKRAN ADINI DEĞİŞTİR">
+ <text name="info_text">
+ Avatarınıza verdiğiniz ad, Ekran Adınız olarak değerlendirilir. Bunu haftada bir kere değiştirebilirsiniz.
+ </text>
+ <text name="lockout_text">
+ Ekran Adınızı şu saate kadar değiştiremezsiniz: [TIME].
+ </text>
+ <text name="set_name_label">
+ Yeni Ekran Adı:
+ </text>
+ <text name="name_confirm_label">
+ Onaylamak için yeni adınızı tekrar yazın:
+ </text>
+ <button label="Kaydet" name="save_btn" tool_tip="Yeni Ekran Adınızı kaydedin"/>
+ <button label="Sıfırla" name="reset_btn" tool_tip="Ekran Adını Kullanıcı Adıyla aynı yap"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000..4be1068dcc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Gün Döngüsünü Düzenle">
+ <string name="title_new">
+ Yeni Bir Gün Döngüsü Oluştur
+ </string>
+ <string name="title_edit">
+ Gün Döngüsünü Düzenle
+ </string>
+ <string name="hint_new">
+ Gün döngünüzü adlandırın, bunu oluşturmak için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+ </string>
+ <string name="hint_edit">
+ Gün döngünüzü düzenlemek için alttaki denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+ </string>
+ <string name="combo_label">
+ -Bir ön ayar seçin-
+ </string>
+ <text name="label">
+ Ön Ayar Adı:
+ </text>
+ <text name="note">
+ Not: Ön ayarınızın adını değiştirirseniz, yeni bir ön ayar oluşturursunuz ve mevcut ön ayar değişmez.
+ </text>
+ <text name="hint_item1">
+ - Birine tıklayarak gökyüzü ayarlarını/zamanı düzenleyin.
+ </text>
+ <text name="hint_item2">
+ - Sekmelere tıklayıp sürükleyerek geçiş sürlrn. ayarlayın.
+ </text>
+ <text name="hint_item3">
+ - Gün döngünüzü önizlemek için fırçayı kullanın.
+ </text>
+ <panel name="day_cycle_slider_panel">
+ <multi_slider initial_value="0" name="WLTimeSlider"/>
+ <multi_slider initial_value="0" name="WLDayCycleKeys"/>
+ <button label="Anahtar Ekle" label_selected="Anahtar Ekle" name="WLAddKey"/>
+ <button label="Anahtarı Sil" label_selected="Anahtarı Sil" name="WLDeleteKey"/>
+ <text name="WL12am">
+ 12
+ </text>
+ <text name="WL3am">
+ 3
+ </text>
+ <text name="WL6am">
+ 6
+ </text>
+ <text name="WL9amHash">
+ 9
+ </text>
+ <text name="WL12pmHash">
+ 24
+ </text>
+ <text name="WL3pm">
+ 15
+ </text>
+ <text name="WL6pm">
+ 18
+ </text>
+ <text name="WL9pm">
+ 21
+ </text>
+ <text name="WL12am2">
+ 12
+ </text>
+ <text name="WL12amHash">
+ |
+ </text>
+ <text name="WL3amHash">
+ I
+ </text>
+ <text name="WL6amHash">
+ |
+ </text>
+ <text name="WL9amHash2">
+ I
+ </text>
+ <text name="WL12pmHash2">
+ |
+ </text>
+ <text name="WL3pmHash">
+ I
+ </text>
+ <text name="WL6pmHash">
+ |
+ </text>
+ <text name="WL9pmHash">
+ I
+ </text>
+ <text name="WL12amHash2">
+ |
+ </text>
+ </panel>
+ <text name="WLCurKeyPresetText">
+ Gökyüzü Ayarı:
+ </text>
+ <combo_box label="Ön Ayar" name="WLSkyPresets"/>
+ <text name="WLCurKeyTimeText">
+ Zaman:
+ </text>
+ <time name="time" value="6:00"/>
+ <check_box label="Bunu yeni gün döngüm yap" name="make_default_cb"/>
+ <button label="Kaydet" name="save"/>
+ <button label="İptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000..0e9f86148d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Gökyüzü Ön Ayarını Düzenle">
+ <string name="title_new">
+ Yeni Gökyüzü Ön Ayarı Oluştur
+ </string>
+ <string name="title_edit">
+ Gökyüzü Ön Ayarını Düzenle
+ </string>
+ <string name="hint_new">
+ Ön ayarınızı adlandırın, bunu oluşturmak için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+ </string>
+ <string name="hint_edit">
+ Gökyüzü ön ayarınızı düzenlemek için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+ </string>
+ <string name="combo_label">
+ -Bir ön ayar seçin-
+ </string>
+ <text name="hint">
+ Ön ayarınızı düzenlemek için denetimleri ayarlayın, sonra &quot;Kaydet&quot; üzerine tıklayın.
+ </text>
+ <text name="label">
+ Ön Ayar Adı:
+ </text>
+ <text name="note">
+ Not: Ön ayarınızın adını değiştirirseniz, yeni bir ön ayar oluşturursunuz ve mevcut ön ayar değişmez.
+ </text>
+ <tab_container name="WindLight Tabs">
+ <panel label="ATMOSFER" name="Atmosphere">
+ <text name="BHText">
+ Mavi Ufuk
+ </text>
+ <text name="BDensText">
+ Puslu Ufuk
+ </text>
+ <text name="BDensText2">
+ Mavi Yoğunluğu
+ </text>
+ <text name="HDText">
+ Pus Yoğunluğu
+ </text>
+ <text name="DensMultText">
+ Yoğunluk Çarpanı
+ </text>
+ <text name="WLDistanceMultText">
+ Mesafe Çarpanı
+ </text>
+ <text name="MaxAltText">
+ Maks İrtifa
+ </text>
+ </panel>
+ <panel label="AYDINLATMA" name="Lighting">
+ <text name="SLCText">
+ Güneş/Ay Rengi
+ </text>
+ <text name="WLAmbientText">
+ Ortam
+ </text>
+ <text name="SunGlowText">
+ Güneş Parlaması
+ </text>
+ <slider label="Odak" name="WLGlowB"/>
+ <slider label="Büyüklük" name="WLGlowR"/>
+ <text name="WLStarText">
+ Yıldız Parlaklığı
+ </text>
+ <text name="SceneGammaText">
+ Sahne Gaması
+ </text>
+ <text name="TODText">
+ Güneş/Ay Konumu
+ </text>
+ <multi_slider initial_value="0" name="WLSunPos"/>
+ <text name="WL12amHash">
+ |
+ </text>
+ <text name="WL6amHash">
+ |
+ </text>
+ <text name="WL12pmHash2">
+ |
+ </text>
+ <text name="WL6pmHash">
+ |
+ </text>
+ <text name="WL12amHash2">
+ |
+ </text>
+ <text name="WL12am">
+ 12
+ </text>
+ <text name="WL6am">
+ 6
+ </text>
+ <text name="WL12pmHash">
+ 24
+ </text>
+ <text name="WL6pm">
+ 18
+ </text>
+ <text name="WL12am2">
+ 12
+ </text>
+ <time name="WLDayTime" value="6:00"/>
+ <text name="WLEastAngleText">
+ Doğu Açısı
+ </text>
+ </panel>
+ <panel label="BULUTLAR" name="Clouds">
+ <text name="WLCloudColorText">
+ Bulut Rengi
+ </text>
+ <text name="WLCloudColorText2">
+ Bulut XY/Yoğunluğu
+ </text>
+ <slider label="X" name="WLCloudX"/>
+ <slider label="Y" name="WLCloudY"/>
+ <slider label="D" name="WLCloudDensity"/>
+ <text name="WLCloudCoverageText">
+ Bulut Örtüsü
+ </text>
+ <text name="WLCloudScaleText">
+ Bulut Yüksekliği
+ </text>
+ <text name="WLCloudDetailText">
+ Bulut Ayrıntısı (XY/Yoğunluğu)
+ </text>
+ <slider label="X" name="WLCloudDetailX"/>
+ <slider label="Y" name="WLCloudDetailY"/>
+ <slider label="D" name="WLCloudDetailDensity"/>
+ <text name="WLCloudScrollXText">
+ Bulut Kaydırma X
+ </text>
+ <check_box label="Kilitle" name="WLCloudLockX"/>
+ <text name="WLCloudScrollYText">
+ Bulut Kaydırma Y
+ </text>
+ <check_box label="Kilitle" name="WLCloudLockY"/>
+ </panel>
+ </tab_container>
+ <check_box label="Bu ön ayarı yeni gökyüzü ayarım yap" name="make_default_cb"/>
+ <button label="Kaydet" name="save"/>
+ <button label="İptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml
new file mode 100644
index 0000000000..2ddee32bad
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Su Ön Ayarını Düzenle">
+ <string name="title_new">
+ Yeni Bir Su Ön Ayarı Oluştur
+ </string>
+ <string name="title_edit">
+ Bir Su Ön Ayarını Düzenle
+ </string>
+ <string name="hint_new">
+ Ön ayarınızı adlandırın, bunu oluşturmak için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+ </string>
+ <string name="hint_edit">
+ Su ön ayarınızı düzenlemek için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+ </string>
+ <string name="combo_label">
+ -Bir ön ayar seçin-
+ </string>
+ <text name="hint">
+ Ön ayarınızı düzenlemek için denetimleri ayarlayın, sonra &quot;Kaydet&quot; üzerine tıklayın.
+ </text>
+ <text name="label">
+ Ön Ayar Adı:
+ </text>
+ <text name="note">
+ Not: Ön ayarınızın adını değiştirirseniz, yeni bir ön ayar oluşturursunuz ve mevcut ön ayar değişmez.
+ </text>
+ <panel name="panel_water_preset">
+ <text name="water_color_label">
+ Su Pus Rengi
+ </text>
+ <text name="water_fog_density_label">
+ Pus Yoğunluk Üssü
+ </text>
+ <text name="underwater_fog_modifier_label">
+ Sualtı Pus Değiştiricisi
+ </text>
+ <text name="BHText">
+ Büyük Dalga Yönü
+ </text>
+ <slider label="X" name="WaterWave1DirX"/>
+ <slider label="Y" name="WaterWave1DirY"/>
+ <text name="BDensText">
+ Yansıma Dalgacığı Ölçeği
+ </text>
+ <text name="HDText">
+ Fresnel Ölçeği
+ </text>
+ <text name="FresnelOffsetText">
+ Fresnel Dengeleyicisi
+ </text>
+ <text name="BHText2">
+ Küçük Dalga Yönü
+ </text>
+ <slider label="X" name="WaterWave2DirX"/>
+ <slider label="Y" name="WaterWave2DirY"/>
+ <text name="DensMultText">
+ Yukarıdan Kırılma Ölçeği
+ </text>
+ <text name="WaterScaleBelowText">
+ Aşağıdan Kırılma Ölçeği
+ </text>
+ <text name="MaxAltText">
+ Bulanıklaştırma Çarpanı
+ </text>
+ <text name="BHText3">
+ Normal Harita
+ </text>
+ </panel>
+ <check_box label="Bu ön ayarı yeni su ayarım yap" name="make_default_cb"/>
+ <button label="Kaydet" name="save"/>
+ <button label="İptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_env_settings.xml b/indra/newview/skins/default/xui/tr/floater_env_settings.xml
new file mode 100644
index 0000000000..d53629f6fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_env_settings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="ÇEVRE DÜZENLEYİCİ">
+ <floater.string name="timeStr">
+ [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+ </floater.string>
+ <text name="EnvTimeText">
+ Günün Saati
+ </text>
+ <text name="EnvTimeText2">
+ 12:00 PM
+ </text>
+ <text name="EnvCloudText">
+ Bulut Örtüsü
+ </text>
+ <text name="EnvWaterColorText">
+ Su Rengi
+ </text>
+ <color_swatch name="EnvWaterColor" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ <text name="EnvWaterFogText">
+ Su Sisi
+ </text>
+ <button label="Gayrimenkul Saati Kullan" name="EnvUseEstateTimeButton"/>
+ <button label="Gelişmiş Gökyüzü" name="EnvAdvancedSkyButton"/>
+ <button label="Gelişmiş Su" name="EnvAdvancedWaterButton"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_environment_settings.xml b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml
new file mode 100644
index 0000000000..e702da7e1b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="ORTAM AYARLARI">
+ <text name="note">
+ Görüntüleyiciniz için ortam ayarlarını özelleştirmek isterseniz aşağıdaki seçenekleri kullanın.
+ </text>
+ <radio_group name="region_settings_radio_group">
+ <radio_item label="Bölge ayarlarını kullanın" name="use_region_settings"/>
+ <radio_item label="Ortamımı özelleştir" name="use_my_settings"/>
+ </radio_group>
+ <panel name="user_environment_settings">
+ <text name="note">
+ Not: Özel ayarlarınız diğer kullanıcılar tarafından görülmez.
+ </text>
+ <text name="water_settings_title">
+ Su Ayarı
+ </text>
+ <combo_box name="water_settings_preset_combo">
+ <combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+ </combo_box>
+ <text name="sky_dayc_settings_title">
+ Gökyüzü/Gün Dön.
+ </text>
+ <radio_group name="sky_dayc_settings_radio_group">
+ <radio_item label="Sabit gökyüzü" name="my_sky_settings"/>
+ <radio_item label="Gün döngüsü" name="my_dayc_settings"/>
+ </radio_group>
+ <combo_box name="sky_settings_preset_combo">
+ <combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+ </combo_box>
+ <combo_box name="dayc_settings_preset_combo">
+ <combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+ </combo_box>
+ </panel>
+ <button label="Tamam" name="ok_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_event.xml b/indra/newview/skins/default/xui/tr/floater_event.xml
new file mode 100644
index 0000000000..60dece124b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_event.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Etkinlik" name="Event" title="ETKİNLİK AYRINTILARI">
+ <floater.string name="loading_text">
+ Yükleniyor...
+ </floater.string>
+ <floater.string name="done_text">
+ Tamamlandı
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_fast_timers.xml b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
new file mode 100644
index 0000000000..5736bda45e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+ <string name="pause">
+ Duraklat
+ </string>
+ <string name="run">
+ Koş
+ </string>
+ <button label="Duraklat" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_font_test.xml b/indra/newview/skins/default/xui/tr/floater_font_test.xml
new file mode 100644
index 0000000000..5371d5d2a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_font_test.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="FONT TESTİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_gesture.xml b/indra/newview/skins/default/xui/tr/floater_gesture.xml
new file mode 100644
index 0000000000..5f5d28ad6c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_gesture.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Yerler" name="gestures" title="MİMİKLER">
+ <floater.string name="loading">
+ Yükleniyor...
+ </floater.string>
+ <floater.string name="playing">
+ (Oynuyor)
+ </floater.string>
+ <floater.string name="copy_name">
+ [COPY_NAME] kopyası
+ </floater.string>
+ <scroll_list name="gesture_list">
+ <scroll_list.columns label="Ad" name="name"/>
+ <scroll_list.columns label="Sohbet" name="trigger"/>
+ <scroll_list.columns label="Anahtar" name="shortcut"/>
+ </scroll_list>
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="gear_btn" tool_tip="İlave seçenekler"/>
+ <button name="new_gesture_btn" tool_tip="Yeni mimik yap"/>
+ <button name="activate_btn" tool_tip="Seçilen mimiği Etkinleştir/Devre Dışı Bırak"/>
+ <button name="del_btn" tool_tip="Bu mimiği sil"/>
+ </panel>
+ <button label="Düzenle" name="edit_btn"/>
+ <button label="Oyna" name="play_btn"/>
+ <button label="Durdur" name="stop_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_god_tools.xml b/indra/newview/skins/default/xui/tr/floater_god_tools.xml
new file mode 100644
index 0000000000..26e5ebd18b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_god_tools.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="YÖNETİCİ ARAÇLARI">
+ <tab_container name="GodTools Tabs">
+ <panel label="Ağ" name="grid">
+ <button label="Bu Bölgenin Harita Görünürlük Önbelleklerini Temizle" label_selected="Bu Bölgenin Harita Görünürlük Önbelleklerini Temizle" name="Flush This Region&apos;s Map Visibility Caches"/>
+ </panel>
+ <panel label="Bölge" name="region">
+ <text name="Region Name:">
+ Bölge Adı:
+ </text>
+ <check_box label="Başlangıç" name="check prelude" tool_tip="Burayı başlangıç bölgesi yapmak için ayarlayın"/>
+ <check_box label="Sabit Güneş" name="check fixed sun" tool_tip="Güneş konumunu sabitleyin (Bölge/Gayrimenkul &gt; Yüzey için olduğu gibi"/>
+ <check_box label="Işınlanınca Ana Konumu Sıfırla" name="check reset home" tool_tip="Sakin ışınlanarak gittiğinde, ana konumlarını hedef konum olarak sıfırlayın."/>
+ <check_box label="Görünür" name="check visible" tool_tip="Yönetici olmayanların bölgeyi görmesi için bunu ayarlayın"/>
+ <check_box label="Hasar" name="check damage" tool_tip="Bölgede hasara imkan tanımak için bunu ayarlayın"/>
+ <check_box label="Trafik İzlemesini Engelle" name="block dwell" tool_tip="Bölgenin trafiği hesaplamaması için bunu ayarlayın"/>
+ <check_box label="Yer Şekillendirmeyi Engelle" name="block terraform" tool_tip="Kişilerin arazilerini şekillendirmesini engellemek için bunu ayarlayın"/>
+ <check_box label="Korumalı Alan" name="is sandbox" tool_tip="Bunun bir korumalı bölge olmasını açıp/kapayın"/>
+ <button label="Yüzeyi Kaydet" label_selected="Yüzeyi Kaydet" name="Bake Terrain" tool_tip="Mevcut yüzeyi varsayılan olarak kaydet"/>
+ <button label="Yüzeyi Geri Döndür" label_selected="Yüzeyi Geri Döndür" name="Revert Terrain" tool_tip="Mevcut yüzeyin yerine varsayılanı koy"/>
+ <button label="Yüzeyi Değiştir" label_selected="Yüzeyi Değiştir" name="Swap Terrain" tool_tip="Mevcut yüzeyi varsayılanla değiştir"/>
+ <text name="estate id">
+ Gayrimenkul Kimliği:
+ </text>
+ <text name="parent id">
+ Ana Kimlik:
+ </text>
+ <line_editor name="parentestate" tool_tip="Burası bu bölge için ana gayrimenkuldur."/>
+ <text name="Grid Pos: ">
+ Ağ Konumu:
+ </text>
+ <line_editor name="gridposx" tool_tip="Burası bu bölge için ağdaki x konumudur"/>
+ <line_editor name="gridposy" tool_tip="Burası bu bölge için ağdaki y konumudur"/>
+ <text name="Redirect to Grid: ">
+ Ağa Tekrar Yönlendir:
+ </text>
+ <text name="billable factor text">
+ Faturalanabilir Çarpan:
+ </text>
+ <text name="land cost text">
+ m² başına L$:
+ </text>
+ <button label="Yenile" label_selected="Yenile" name="Refresh" tool_tip="Yukarıdaki bilgileri yenilemek için buraya tıklayın"/>
+ <button label="Uygula" label_selected="Uygula" name="Apply" tool_tip="Yukarıdaki herhangi bir değişikliği uygulamak için buraya tıklayın"/>
+ <button label="Bölge Seç" label_selected="Bölge Seç" name="Select Region" tool_tip="Arazi aracıyla tüm bölgeyi seçin"/>
+ <button label="Şimdi otomatik kaydet" label_selected="Şimdi otomatik kaydet" name="Autosave now" tool_tip="Gzip ile sıkıştırılmış halini otomatik kaydetme dizinine kaydedin"/>
+ </panel>
+ <panel label="Nesneler" name="objects">
+ <panel.string name="no_target">
+ (hedef yok)
+ </panel.string>
+ <text name="Region Name:">
+ Bölge Adı:
+ </text>
+ <text name="region name">
+ Welsh
+ </text>
+ <check_box label="Komut Dosyalarını Devre Dışı Bırak" name="disable scripts" tool_tip="Bu bölgedeki tüm komut dosyalarını devre dışı bırakmak için bunu ayarlayın"/>
+ <check_box label="Çarpışmaları Devre Dışı Bırak" name="disable collisions" tool_tip="Bu bölgedeki aracı dışı çarpışmaları devre dışı bırakmak için bunu ayarlayın"/>
+ <check_box label="Fiziği Devre Dışı Bırak" name="disable physics" tool_tip="Bu bölgedeki tüm fiziği devre dışı bırakmak için bunu ayarlayın"/>
+ <button label="Uygula" label_selected="Uygula" name="Apply" tool_tip="Yukarıdaki herhangi bir değişikliği uygulamak için buraya tıklayın"/>
+ <button label="Hedefi Ayarla" label_selected="Hedefi Ayarla" name="Set Target" tool_tip="Nesne silinmesi için hedef avatarı ayarlayın"/>
+ <text name="target_avatar_name">
+ (hedef yok)
+ </text>
+ <button label="Başkalarının Arazilerinde Hedefin Komut Dosyalı Nesnelerini Sil" label_selected="Başkalarının Arazilerinde Hedefin Komut Dosyalı Nesnelerini Sil" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Hedefe ait olmayan arazide hedefe ait olan tüm komut dosyalı nesneleri silin. (kopya yok) nesneler geri döndürülür."/>
+ <button label="Hedefin *Herhangi Bir* Arazideki Komut Dosyalı Nesnelerini Sil" label_selected="Hedefin *Herhangi Bir* Arazideki Komut Dosyalı Nesnelerini Sil" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Bu bölgede hedefe ait olan tüm komut dosyalı nesneleri silin. (kopya yok) nesneler geri döndürülür."/>
+ <button label="Hedefin *TÜM* Nesnelerini Sil" label_selected="Hedefin *TÜM* Nesnelerini Sil" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Bu bölgede hedefe ait olan tüm nesneleri silin. (kopya yok) nesneler geri döndürülür."/>
+ <button label="En Çok Çarpışanlar" label_selected="En Çok Çarpışanlar" name="Get Top Colliders" tool_tip="En dar fazda geri aramaları yaşayan nesnelerin listesini alır"/>
+ <button label="En Çok Komut Dsy. Çalştr." label_selected="En Çok Komut Dsy. Çalştr." name="Get Top Scripts" tool_tip="Komut dosyalarını çalıştırırken en çok zaman harcayan nesnelerin listesini alır"/>
+ <button label="Komut dosyaları özeti" label_selected="Komut dosyaları özeti" name="Scripts digest" tool_tip="Tüm komut dosyalarının ve her birinin ne kadar kullanıldığının listesini alır"/>
+ </panel>
+ <panel label="Talep" name="request">
+ <text name="Destination:">
+ Hedef Konum:
+ </text>
+ <combo_box name="destination">
+ <combo_box.item label="Seçim" name="item1"/>
+ <combo_box.item label="Aracı Bölgesi" name="item2"/>
+ </combo_box>
+ <text name="Request:">
+ Talep:
+ </text>
+ <combo_box name="request">
+ <combo_box.item label="çarpışanlar &lt;adımlar&gt;" name="item1"/>
+ <combo_box.item label="komut dosyaları &lt;sayım&gt;,&lt;opsiyonel desen&gt;" name="item2"/>
+ <combo_box.item label="nesneler &lt;desen&gt;" name="item3"/>
+ <combo_box.item label="&lt;asset_id&gt; oluştur" name="item4"/>
+ </combo_box>
+ <text name="Parameter:">
+ Parametre:
+ </text>
+ <button label="Talepte Bulun" label_selected="Talepte Bulun" name="Make Request"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml
new file mode 100644
index 0000000000..12927dcaeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="DONANIM AYARLARI">
+ <text name="Filtering:">
+ Filtreleme:
+ </text>
+ <check_box label="Anisotropik Filtreleme (etkinken daha yavaş)" name="ani"/>
+ <text name="Antialiasing:">
+ Antialiasing:
+ </text>
+ <combo_box label="Antialiasing" name="fsaa">
+ <combo_box.item label="Devre dışı" 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>
+ <text name="antialiasing restart">
+ (görüntülemeyi eniden başlatma gerekir)
+ </text>
+ <spinner label="Gama:" name="gamma"/>
+ <text name="(brightness, lower is brighter)">
+ (0 = varsayılan parlaklık, düşük = daha parlak)
+ </text>
+ <text name="Enable VBO:">
+ VBO Etkinleştir:
+ </text>
+ <check_box initial_value="true" label="OpenGL Vertex Tampon Nesnelerini Etkinleştir" name="vbo" tool_tip="Modern donanımlarda bunun etkinleştirilmesi performans artışı sağlar. Ancak, eski donanımlardaki VBO uygulamaları yetersizdir ve etkinleştirildiğinde bilgisayarınız çökebilir."/>
+ <slider label="Doku Belleği (MB):" name="GraphicsCardTextureMemory" tool_tip="Dokular için tahsis edilecek bellek miktarı. Varsayılan değer video kartı belleğidir. Bu değerin küçültülmesi performansı artırabilir, ama ayrıca dokuları bulanıklaştırabilir."/>
+ <spinner label="Sis Mesafe Oranı:" name="fog"/>
+ <button label="Tamam" label_selected="Tamam" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_help_browser.xml b/indra/newview/skins/default/xui/tr/floater_help_browser.xml
new file mode 100644
index 0000000000..695f838936
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_help_browser.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="YARDIM TARAYICISI">
+ <floater.string name="loading_text">
+ Yükleniyor...
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_how_to.xml b/indra/newview/skins/default/xui/tr/floater_how_to.xml
new file mode 100644
index 0000000000..a42fe0b122
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="NASIL YAPILIR"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_hud.xml b/indra/newview/skins/default/xui/tr/floater_hud.xml
new file mode 100644
index 0000000000..09f119bbc1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_hud.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_hud" title="ÖĞRETİCİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml
new file mode 100644
index 0000000000..4451d1d309
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="SOHBETLER"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml
new file mode 100644
index 0000000000..bed08b36c6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="panel_im">
+ <layout_stack name="im_panels">
+ <layout_panel>
+ <line_editor label="Kime" name="chat_editor"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_image_preview.xml b/indra/newview/skins/default/xui/tr/floater_image_preview.xml
new file mode 100644
index 0000000000..a5963bdf63
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_image_preview.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview">
+ <text name="name_label">
+ Ad:
+ </text>
+ <text name="description_label">
+ Açıklama:
+ </text>
+ <text name="preview_label">
+ Görüntüyü şu şekilde önizle:
+ </text>
+ <combo_box label="Giysi Türü" name="clothing_type_combo">
+ <item label="Görüntü" name="Image" value="Görüntü"/>
+ <item label="Saç" name="Hair" value="Saç"/>
+ <item label="Kadın Kafası" name="FemaleHead" value="Kadın Kafası"/>
+ <item label="Kadın Üst Gövde" name="FemaleUpperBody" value="Kadın Üst Gövde"/>
+ <item label="Kadın Alt Gövde" name="FemaleLowerBody" value="Kadın Alt Gövde"/>
+ <item label="Erkek Kafası" name="MaleHead" value="Erkek Kafası"/>
+ <item label="Erkek Üst Gövde" name="MaleUpperBody" value="Erkek Üst Gövde"/>
+ <item label="Erkek Alt Gövde" name="MaleLowerBody" value="Erkek Alt Gövde"/>
+ <item label="Etek" name="Skirt" value="Etek"/>
+ <item label="Şekillendirilmiş Prim" name="SculptedPrim" value="Şekillendirilmiş Prim"/>
+ </combo_box>
+ <text name="bad_image_text">
+ Görüntü okunamadı
+
+Görüntüyü 24 bit Targa .tga olarak kaydetmeyi dene.
+ </text>
+ <check_box label="Kayıpsız sıkıştırmayı kullan" name="lossless_check"/>
+ <button label="İptal" name="cancel_btn"/>
+ <button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_import_collada.xml b/indra/newview/skins/default/xui/tr/floater_import_collada.xml
new file mode 100644
index 0000000000..1e77d1b376
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_import_collada.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Import Collada" title="Sahneyi İçeri Aktar">
+ <text name="mesh count">
+ Örgüler: [COUNT]
+ </text>
+ <text name="texture count">
+ Dokular: [COUNT]
+ </text>
+ <text name="status">
+ Durum: [STATUS]
+ </text>
+ <button label="İptal" name="cancel"/>
+ <button label="Tamam" name="ok"/>
+ <string name="status_idle">
+ Boşta
+ </string>
+ <string name="status_uploading">
+ [NAME] karşıya yükleniyor
+ </string>
+ <string name="status_creating">
+ [NAME] nesnesi oluşturuluyor
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
new file mode 100644
index 0000000000..adb03c2dff
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="Gelen arama">
+ <floater.string name="lifetime">
+ 5
+ </floater.string>
+ <floater.string name="localchat">
+ Yakındaki Sesli Sohbet
+ </floater.string>
+ <floater.string name="anonymous">
+ anonim
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ arıyor.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
+ </floater.string>
+ <floater.string name="VoiceInviteGroup">
+ &apos;[GROUP]&apos; ses kanalına şimdi katıldı.
+ </floater.string>
+ <floater.string name="VoiceInviteQuestionGroup">
+ [CURRENT_CHAT] sohbetinden ayrılıp, &apos;[GROUP]&apos; aramasına katılmak istiyor musunuz?
+ </floater.string>
+ <floater.string name="VoiceInviteQuestionDefault">
+ [CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
+ </floater.string>
+ <text name="question">
+ [CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
+ </text>
+ <button label="Kabul Et" label_selected="Kabul Et" name="Accept"/>
+ <button label="Reddet" label_selected="Reddet" name="Reject"/>
+ <button label="Aİ Başlat" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_inspect.xml b/indra/newview/skins/default/xui/tr/floater_inspect.xml
new file mode 100644
index 0000000000..09130a31f3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inspect.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="inspect" title="NESNELERİ İNCELE">
+ <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="SL dünyasında vurgulamak için bu listedeki bir nesneyi seçin">
+ <scroll_list.columns label="Nesne Adı" name="object_name"/>
+ <scroll_list.columns label="Sahip Adı" name="owner_name"/>
+ <scroll_list.columns label="Oluşturanın Adı" name="creator_name"/>
+ <scroll_list.columns label="Oluşturma Tarihi" name="creation_date"/>
+ </scroll_list>
+ <button label="Sahip Profiline Bak..." name="button owner" tool_tip="Vurgulanan nesnenin sahibinin profiline bak"/>
+ <button label="Oluşturan Profiline Bak..." name="button creator" tool_tip="Vurgulanan nesneyi ilk oluşturanın profiline bak"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_inventory.xml b/indra/newview/skins/default/xui/tr/floater_inventory.xml
new file mode 100644
index 0000000000..cfb12d4b68
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inventory.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory" title="ENVANTERİM">
+ <panel label="Envanter Paneli" name="Inventory Panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml
new file mode 100644
index 0000000000..e49fef1f46
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="ENVANTER ÖGESİ ÖZELLİKLERİ">
+ <floater.string name="unknown">
+ (bilinmiyor)
+ </floater.string>
+ <floater.string name="public">
+ (kamuya açık)
+ </floater.string>
+ <floater.string name="you_can">
+ Şunu yapabilirsiniz:
+ </floater.string>
+ <floater.string name="owner_can">
+ Sahip şunu yapabilir:
+ </floater.string>
+ <floater.string name="acquiredDate">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </floater.string>
+ <text name="LabelItemNameTitle">
+ Ad:
+ </text>
+ <text name="LabelItemDescTitle">
+ Açıklama:
+ </text>
+ <text name="LabelCreatorTitle">
+ Oluşturan:
+ </text>
+ <button label="Profil..." name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ Sahip:
+ </text>
+ <button label="Profil..." name="BtnOwner"/>
+ <text name="LabelAcquiredTitle">
+ Alınan:
+ </text>
+ <text name="LabelAcquiredDate">
+ 24 Mayıs Çarş 12:50:46 2006
+ </text>
+ <text name="OwnerLabel">
+ Siz:
+ </text>
+ <check_box label="Düzenle" name="CheckOwnerModify"/>
+ <check_box label="Kopyala" name="CheckOwnerCopy"/>
+ <check_box label="Tekrar Sat" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Herkes:
+ </text>
+ <check_box label="Kopyala" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Grup:
+ </text>
+ <check_box label="Paylaş" name="CheckShareWithGroup"/>
+ <text name="NextOwnerLabel">
+ Sonraki sahip:
+ </text>
+ <check_box label="Düzenle" name="CheckNextOwnerModify"/>
+ <check_box label="Kopyala" name="CheckNextOwnerCopy"/>
+ <check_box label="Tekrar Sat" name="CheckNextOwnerTransfer"/>
+ <check_box label="Satılık" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Kopyala" name="Copy"/>
+ <combo_box.item label="Orijinal" name="Original"/>
+ </combo_box>
+ <spinner label="Fiyat:" name="Edit Cost"/>
+ <text name="CurrencySymbol">
+ L$
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml
new file mode 100644
index 0000000000..9d1a556751
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS">
+ <check_box label="Animasyon" name="check_animation"/>
+ <check_box label="Arama Kartları" name="check_calling_card"/>
+ <check_box label="Giysiler" name="check_clothing"/>
+ <check_box label="Mimikler" name="check_gesture"/>
+ <check_box label="Yer İmleri" name="check_landmark"/>
+ <check_box label="Örgüler" name="check_mesh"/>
+ <check_box label="Not Kartları" name="check_notecard"/>
+ <check_box label="Nesneler" name="check_object"/>
+ <check_box label="Komut Dosyaları" name="check_script"/>
+ <check_box label="Sesler" name="check_sound"/>
+ <check_box label="Dokular" name="check_texture"/>
+ <check_box label="Anlık Görüntüler" name="check_snapshot"/>
+ <button label="Tümü" label_selected="Tümü" name="All"/>
+ <button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
+ <check_box label="Klasörleri her zaman göster" name="check_show_empty"/>
+ <check_box label="Oturum Kapandıktan Beri" name="check_since_logoff"/>
+ <text name="- OR -">
+ - VEYA -
+ </text>
+ <spinner label="Saat Önce" name="spin_hours_ago"/>
+ <spinner label="Gün Önce" name="spin_days_ago"/>
+ <button label="Kapat" label_selected="Kapat" name="Close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_joystick.xml b/indra/newview/skins/default/xui/tr/floater_joystick.xml
new file mode 100644
index 0000000000..4a27aac3c1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_joystick.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Joystick" title="OYUN ÇUBUĞU YAPILANDIRMA">
+ <floater.string name="NoDevice">
+ cihaz tespit edilmedi
+ </floater.string>
+ <check_box label="Oyun Çub. Etkşt:" name="enable_joystick"/>
+ <spinner label="X Eks. Haritalama" name="JoystickAxis1"/>
+ <spinner label="Y Eks. Haritalama" name="JoystickAxis2"/>
+ <spinner label="Z Eks. Haritalama" name="JoystickAxis0"/>
+ <spinner label="Eğim Haritalama" name="JoystickAxis4"/>
+ <spinner label="Düşey Sapma Haritalama" name="JoystickAxis5"/>
+ <spinner label="Tilt Haritalama" name="JoystickAxis3"/>
+ <spinner label="Zum Haritalama" name="JoystickAxis6"/>
+ <check_box label="Doğrudan Zum" name="ZoomDirect"/>
+ <check_box label="3B İmleç" name="Cursor3D"/>
+ <check_box label="Otomatik Düzey" name="AutoLeveling"/>
+ <text name="Control Modes:">
+ Kontrol Modları:
+ </text>
+ <check_box label="Avatar" name="JoystickAvatarEnabled"/>
+ <check_box label="İnşa Et" name="JoystickBuildEnabled"/>
+ <check_box label="Flycam" name="JoystickFlycamEnabled"/>
+ <stat_view label="Oyun Çubuğu İzleme" name="axis_view">
+ <stat_bar label="Eksen 0" name="axis0"/>
+ <stat_bar label="Eksen 1" name="axis1"/>
+ <stat_bar label="Eksen 2" name="axis2"/>
+ <stat_bar label="Eksen 3" name="axis3"/>
+ <stat_bar label="Eksen 4" name="axis4"/>
+ <stat_bar label="Eksen 5" name="axis5"/>
+ </stat_view>
+ <text name="XScale">
+ X Ölçeği
+ </text>
+ <text name="YScale">
+ Y Ölçeği
+ </text>
+ <text name="ZScale">
+ Z Ölçeği
+ </text>
+ <text name="PitchScale">
+ Eğim Ölçeği
+ </text>
+ <text name="YawScale">
+ Düşey Sapma Ölçeği
+ </text>
+ <text name="RollScale">
+ Tilt Ölçeği
+ </text>
+ <text name="XDeadZone">
+ X Ölü Bölge
+ </text>
+ <text name="YDeadZone">
+ Y Ölü Bölge
+ </text>
+ <text name="ZDeadZone">
+ Z Ölü Bölge
+ </text>
+ <text name="PitchDeadZone">
+ Eğim Ölü Bölge
+ </text>
+ <text name="YawDeadZone">
+ Düşey Sapma Ölü Bölge
+ </text>
+ <text name="RollDeadZone">
+ Tilt Ölü Bölge
+ </text>
+ <text name="Feathering">
+ Uçlarda Rötuş
+ </text>
+ <text name="ZoomScale2">
+ Zum Ölçeği
+ </text>
+ <text name="ZoomDeadZone">
+ Zum Ölü Bölge
+ </text>
+ <button label="UzayNavigatörü Varsayılanlar" name="SpaceNavigatorDefaults"/>
+ <button label="Tamam" label_selected="Tamam" name="ok_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_lagmeter.xml b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml
new file mode 100644
index 0000000000..736c50be90
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_lagmeter" title="GECİKME ÖLÇER">
+ <floater.string name="max_title_msg">
+ Gecikme Ölçer
+ </floater.string>
+ <floater.string name="max_width_px">
+ 360
+ </floater.string>
+ <floater.string name="min_title_msg">
+ Gecikme
+ </floater.string>
+ <floater.string name="min_width_px">
+ 90
+ </floater.string>
+ <floater.string name="client_text_msg">
+ İstemci
+ </floater.string>
+ <floater.string name="client_frame_rate_critical_fps">
+ 10
+ </floater.string>
+ <floater.string name="client_frame_rate_warning_fps">
+ 15
+ </floater.string>
+ <floater.string name="client_frame_time_window_bg_msg">
+ Normal, pencere alt zeminde
+ </floater.string>
+ <floater.string name="client_frame_time_critical_msg">
+ İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] altında
+ </floater.string>
+ <floater.string name="client_frame_time_warning_msg">
+ İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] ile [CLIENT_FRAME_RATE_WARNING] arasınad
+ </floater.string>
+ <floater.string name="client_frame_time_normal_msg">
+ Normal
+ </floater.string>
+ <floater.string name="client_draw_distance_cause_msg">
+ Muhtemel neden: Çizme mesafesi çok yüksek
+ </floater.string>
+ <floater.string name="client_texture_loading_cause_msg">
+ Muhtemel neden: Görüntüler yükleniyor
+ </floater.string>
+ <floater.string name="client_texture_memory_cause_msg">
+ Muhtemel neden: Bellekte çok fazla görüntü
+ </floater.string>
+ <floater.string name="client_complex_objects_cause_msg">
+ Muhtemel neden: Sahnede çok fazla karmaşık nesne
+ </floater.string>
+ <floater.string name="network_text_msg">
+ Ağ
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_pct">
+ 10
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_pct">
+ 5
+ </floater.string>
+ <floater.string name="network_packet_loss_critical_msg">
+ Bağlantı paketlerin % [NETWORK_PACKET_LOSS_CRITICAL]&apos;sinden fazlasını bırakıyor
+ </floater.string>
+ <floater.string name="network_packet_loss_warning_msg">
+ Bağlantı paketlerin % [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]&apos;sini bırakıyor
+ </floater.string>
+ <floater.string name="network_performance_normal_msg">
+ Normal
+ </floater.string>
+ <floater.string name="network_ping_critical_ms">
+ 600
+ </floater.string>
+ <floater.string name="network_ping_warning_ms">
+ 300
+ </floater.string>
+ <floater.string name="network_ping_critical_msg">
+ Bağlantı ping süresi [NETWORK_PING_CRITICAL] ms.den fazla
+ </floater.string>
+ <floater.string name="network_ping_warning_msg">
+ Bağlantı ping süresi [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
+ </floater.string>
+ <floater.string name="network_packet_loss_cause_msg">
+ Muhtemel yetersiz bağlantı veya &apos;Bant Genişliği&apos; tercihi çok yüksek.
+ </floater.string>
+ <floater.string name="network_ping_cause_msg">
+ Muhtemel yetersiz bağlantı veya dosya paylaşım uygulaması.
+ </floater.string>
+ <floater.string name="server_text_msg">
+ Sunucu
+ </floater.string>
+ <floater.string name="server_frame_rate_critical_fps">
+ 20
+ </floater.string>
+ <floater.string name="server_frame_rate_warning_fps">
+ 30
+ </floater.string>
+ <floater.string name="server_single_process_max_time_ms">
+ 20
+ </floater.string>
+ <floater.string name="server_frame_time_critical_msg">
+ Simülatör kare hızı [SERVER_FRAME_RATE_CRITICAL] altında
+ </floater.string>
+ <floater.string name="server_frame_time_warning_msg">
+ Simülatör kare hızı [SERVER_FRAME_RATE_CRITICAL] ve [SERVER_FRAME_RATE_WARNING] arasında
+ </floater.string>
+ <floater.string name="server_frame_time_normal_msg">
+ Normal
+ </floater.string>
+ <floater.string name="server_physics_cause_msg">
+ Muhtemel Neden: Çok fazla fiziki nesne
+ </floater.string>
+ <floater.string name="server_scripts_cause_msg">
+ Muhtemel Neden: Çok fazla komut dosyalı nesne
+ </floater.string>
+ <floater.string name="server_net_cause_msg">
+ Muhtemel Neden: Çok fazla ağ trafiği
+ </floater.string>
+ <floater.string name="server_agent_cause_msg">
+ Muhtemel Neden: Bölgede hareket eden çok fazla insan var
+ </floater.string>
+ <floater.string name="server_images_cause_msg">
+ Muhtemel Neden: Çok fazla görüntü hesabı
+ </floater.string>
+ <floater.string name="server_generic_cause_msg">
+ Muhtemel Neden: Simülatör yükü çok ağır
+ </floater.string>
+ <floater.string name="smaller_label">
+ &gt;&gt;
+ </floater.string>
+ <floater.string name="bigger_label">
+ &lt;&lt;
+ </floater.string>
+ <button name="client_lagmeter" tool_tip="İstemci gecikme durumu"/>
+ <text name="client">
+ İstemci
+ </text>
+ <text name="client_text">
+ Normal
+ </text>
+ <button name="network_lagmeter" tool_tip="Ağ gecikme durumu"/>
+ <text name="network">
+ Ağ
+ </text>
+ <text name="network_text">
+ Normal
+ </text>
+ <button name="server_lagmeter" tool_tip="Sunucu gecikme durumu"/>
+ <text name="server">
+ Sunucu
+ </text>
+ <text name="server_text">
+ Normal
+ </text>
+ <button label="&gt;&gt;" name="minimize" tool_tip="Gezdirici büyüklüğünü değiştir"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_land_holdings.xml b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml
new file mode 100644
index 0000000000..a075a93c1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="ARAZİM">
+ <floater.string name="area_string">
+ [AREA] m²
+ </floater.string>
+ <scroll_list name="parcel list">
+ <scroll_list.columns label="Parsel" name="name"/>
+ <scroll_list.columns label="Bölge" name="location"/>
+ <scroll_list.columns label="Tür" name="type"/>
+ <scroll_list.columns label="Alan" name="area"/>
+ </scroll_list>
+ <button label="Işınla" label_selected="Işınla" name="Teleport" tool_tip="Bu arazinin merkezine ışınlama yapılsın."/>
+ <button label="Harita" label_selected="Harita" name="Show on Map" tool_tip="Bu arazi dünya haritasında gösterilsin"/>
+ <text name="contrib_label">
+ Gruplarınıza katkılar:
+ </text>
+ <scroll_list name="grant list">
+ <scroll_list.columns label="Grup" name="group"/>
+ <scroll_list.columns label="Alan" name="area"/>
+ </scroll_list>
+ <text name="allowed_label">
+ Mevcut ödeme planı kapsamında sahip olunmasına izin verilen araziler:
+ </text>
+ <text name="allowed_text">
+ [AREA] m²
+ </text>
+ <text name="current_label">
+ Şu anda sahip olunan araziler:
+ </text>
+ <text name="current_text">
+ [AREA] m²
+ </text>
+ <text name="available_label">
+ Arazi satın alımı için kullanılabilir:
+ </text>
+ <text name="available_text">
+ [AREA] m²
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml
new file mode 100644
index 0000000000..34c3e28a0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="KOMUT DOSYASI: YENİ KOMUT DOSYASI">
+ <floater.string name="not_allowed">
+ Bu komut dosyasını görüntüleyemez veya düzenleyemezsiniz, çünkü &quot;kopyalanamaz&quot; olarak ayarlanmıştır. Bir nesnenin içerisindeki bir komut dosyasını görüntülemek veya düzenlemek için tam izinlere ihtiyacınız var.
+ </floater.string>
+ <floater.string name="script_running">
+ Çalışıyor
+ </floater.string>
+ <floater.string name="Title">
+ KOMUT DOSYASI: [NAME]
+ </floater.string>
+ <button label="Sıfırla" label_selected="Sıfırla" name="Reset"/>
+ <check_box initial_value="true" label="Çalışıyor" name="running"/>
+ <check_box initial_value="true" label="Mono" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml
new file mode 100644
index 0000000000..0b898d6032
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="LSL REFERANSI">
+ <check_box label="İmleci izle" name="lock_check"/>
+ <combo_box label="Kilitle" name="history_combo"/>
+ <button label="Geri" name="back_btn"/>
+ <button label="İleri" name="fwd_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_map.xml b/indra/newview/skins/default/xui/tr/floater_map.xml
new file mode 100644
index 0000000000..7d6c314f04
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_map.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map" title="MİNİ-HARİTA">
+ <floater.string name="ToolTipMsg">
+ [REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)
+ </floater.string>
+ <floater.string name="AltToolTipMsg">
+ [REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)
+ </floater.string>
+ <floater.string name="mini_map_caption">
+ Mini-harita
+ </floater.string>
+ <text label="K" name="floater_map_north">
+ K
+ </text>
+ <text label="E" name="floater_map_east">
+ E
+ </text>
+ <text label="B" name="floater_map_west">
+ B
+ </text>
+ <text label="G" name="floater_map_south">
+ G
+ </text>
+ <text label="GD" name="floater_map_southeast">
+ GD
+ </text>
+ <text label="KD" name="floater_map_northeast">
+ KD
+ </text>
+ <text label="GB" name="floater_map_southwest">
+ GB
+ </text>
+ <text label="KB" name="floater_map_northwest">
+ KB
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_media_browser.xml b/indra/newview/skins/default/xui/tr/floater_media_browser.xml
new file mode 100644
index 0000000000..6cce4d59b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_media_browser.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="ORTAM TARAYICISI">
+ <floater.string name="home_page_url">
+ http://www.secondlife.com
+ </floater.string>
+ <floater.string name="support_page_url">
+ http://support.secondlife.com
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button label="Geri" name="back"/>
+ <button label="İleri" name="forward"/>
+ <button label="Yeniden Yükle" name="reload"/>
+ <button label="Git" name="go"/>
+ </layout_panel>
+ <layout_panel name="time_controls">
+ <button label="başa sar" name="rewind"/>
+ <button label="durdur" name="stop"/>
+ <button label="ileri" name="seek"/>
+ </layout_panel>
+ <layout_panel name="parcel_owner_controls">
+ <button label="Mevcut Sayfayı Parsele Gönder" name="assign"/>
+ </layout_panel>
+ <layout_panel name="external_controls">
+ <button label="Web Tarayıcımda Aç" name="open_browser"/>
+ <check_box label="Her zaman web tarayıcımda aç" name="open_always"/>
+ <button label="Kapat" name="close"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_media_settings.xml b/indra/newview/skins/default/xui/tr/floater_media_settings.xml
new file mode 100644
index 0000000000..4205a0dbef
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="ORTAM AYARLARI">
+ <button label="Tamam" label_selected="Tamam" name="OK"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+ <button label="Uygula" label_selected="Uygula" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml
new file mode 100644
index 0000000000..ba87ee99a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="BİR BELLEK SIZINTISI BENZETİMİNİ GERÇEKLEŞTİR">
+ <spinner label="Sızıntı Hızı (çerçeve başına bayt):" name="leak_speed"/>
+ <spinner label="Maks Sızan Bellek (MB):" name="max_leak"/>
+ <text name="total_leaked_label">
+ Geçerli sızan bellek: [SIZE] KB
+ </text>
+ <text name="note_label_1">
+ [NOTE1]
+ </text>
+ <text name="note_label_2">
+ [NOTE2]
+ </text>
+ <button label="Başla" name="start_btn"/>
+ <button label="Durdur" name="stop_btn"/>
+ <button label="Bırak" name="release_btn"/>
+ <button label="Kapat" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_model_preview.xml b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
new file mode 100644
index 0000000000..339545f96e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Preview" title="MODELİ KARŞIYA YÜKLE">
+ <string name="status_idle"/>
+ <string name="status_parse_error">
+ Hata: Tarih ayrıştırma sorunu - ayrıntılar için günlüğe bakın.
+ </string>
+ <string name="status_reading_file">
+ Yükleniyor...
+ </string>
+ <string name="status_generating_meshes">
+ Örgüler Oluşturuluyor...
+ </string>
+ <string name="status_vertex_number_overflow">
+ Hata: Köşe numarası 65534&apos;ten fazla, işlem durduruldu!
+ </string>
+ <string name="bad_element">
+ Hata: Öğe geçersiz
+ </string>
+ <string name="high">
+ Yüksek
+ </string>
+ <string name="medium">
+ Orta
+ </string>
+ <string name="low">
+ Düşük
+ </string>
+ <string name="lowest">
+ En Düşük
+ </string>
+ <string name="mesh_status_good">
+ Uygula!
+ </string>
+ <string name="mesh_status_na">
+ G/D
+ </string>
+ <string name="mesh_status_none">
+ Hiçbiri
+ </string>
+ <string name="mesh_status_submesh_mismatch">
+ Ayrıntı seviyelerinde farklı sayıda dokulanabilir yüz var.
+ </string>
+ <string name="mesh_status_mesh_mismatch">
+ Ayrıntı seviyelerinde farklı sayıda örgü örneği var.
+ </string>
+ <string name="mesh_status_too_many_vertices">
+ Ayrıntı seviyesinde fazla sayıda köşe var.
+ </string>
+ <string name="mesh_status_missing_lod">
+ Gereken ayrıntı seviyesi eksik.
+ </string>
+ <string name="mesh_status_invalid_material_list">
+ Ayrıntı seviyesi malzemeleri, referans modelin bir alt kümesi değil.
+ </string>
+ <string name="layer_all">
+ Tümü
+ </string>
+ <string name="decomposing">
+ Çözümleniyor...
+ </string>
+ <string name="simplifying">
+ Basitleştiriliyor...
+ </string>
+ <string name="tbd">
+ ileride belirlenecektir
+ </string>
+ <panel name="left_panel">
+ <panel name="model_name_representation_panel">
+ <text name="name_label">
+ Model adı:
+ </text>
+ <text name="model_category_label">
+ Bu modelin temsil ettiği...
+ </text>
+ <combo_box name="model_category_combo">
+ <combo_item label="Birini Seçin..." name="Choose one"/>
+ <combo_item label="Avatar şekli" name="Avatar shape"/>
+ <combo_item label="Avatar aksesuarı" name="Avatar attachment"/>
+ <combo_item label="Hareket eden nesne (araç, hayvan)" name="Moving object (vehicle, animal)"/>
+ <combo_item label="Bina Bileşeni" name="Building Component"/>
+ <combo_item label="Büyük, hareketsiz, vs." name="Large, non moving etc"/>
+ <combo_item label="Daha küçük, hareketsiz, vs." name="Smaller, non-moving etc"/>
+ <combo_item label="Bunlardan herhangi biri değil" name="Not really any of these"/>
+ </combo_box>
+ </panel>
+ <tab_container name="import_tab">
+ <panel label="Ayrıntı Seviyesi" name="lod_panel" title="Ayrıntı Seviyesi">
+ <text initial_value="Kaynak" name="source" value="Kaynak"/>
+ <text initial_value="Üçgenler" name="triangles" value="Üçgenler"/>
+ <text initial_value="Köşeler" name="vertices" value="Köşeler"/>
+ <text initial_value="Yüksek" name="high_label" value="Yüksek"/>
+ <button label="Gözat..." name="lod_browse_high"/>
+ <text initial_value="0" name="high_triangles" value="0"/>
+ <text initial_value="0" name="high_vertices" value="0"/>
+ <text initial_value="Orta" name="medium_label" value="Orta"/>
+ <button label="Gözat..." name="lod_browse_medium"/>
+ <text initial_value="0" name="medium_triangles" value="0"/>
+ <text initial_value="0" name="medium_vertices" value="0"/>
+ <text initial_value="Düşük" name="low_label" value="Düşük"/>
+ <button label="Gözat..." name="lod_browse_low"/>
+ <text initial_value="0" name="low_triangles" value="0"/>
+ <text initial_value="0" name="low_vertices" value="0"/>
+ <text initial_value="En Düşük" name="lowest_label" value="En Düşük"/>
+ <button label="Gözat..." name="lod_browse_lowest"/>
+ <text initial_value="0" name="lowest_triangles" value="0"/>
+ <text initial_value="0" name="lowest_vertices" value="0"/>
+ <check_box label="Normalleri Oluştur" name="gen_normals"/>
+ <text initial_value="Kıvrım Açısı:" name="crease_label" value="Kıvrım Açısı:"/>
+ <spinner name="crease_angle" value="75"/>
+ </panel>
+ <panel label="Fizik" name="physics_panel">
+ <panel name="physics geometry">
+ <text name="first_step_name">
+ 1. Adım: Ayrıntı Seviyesi
+ </text>
+ <combo_box name="physics_lod_combo" tool_tip="Fizik şekli için kullanılacak ayrıntı">
+ <combo_item name="choose_one">
+ Birini seçin...
+ </combo_item>
+ <combo_item name="physics_high">
+ Yüksek
+ </combo_item>
+ <combo_item name="physics_medium">
+ Orta
+ </combo_item>
+ <combo_item name="physics_low">
+ Düşük
+ </combo_item>
+ <combo_item name="physics_lowest">
+ En Düşük
+ </combo_item>
+ <combo_item name="load_from_file">
+ Dosyadan
+ </combo_item>
+ </combo_box>
+ <button label="Gözat..." name="physics_browse"/>
+ </panel>
+ <panel name="physics analysis">
+ <text name="method_label">
+ 2. Adım: Çözümle
+ </text>
+ <text name="analysis_method_label">
+ Yöntem:
+ </text>
+ <text name="quality_label">
+ Kalite:
+ </text>
+ <text name="smooth_method_label">
+ Düzeltme:
+ </text>
+ <check_box label="Delikleri Kapat" name="Close Holes (Slow)"/>
+ <button label="Çözümle" name="Decompose"/>
+ <button label="İptal" name="decompose_cancel"/>
+ </panel>
+ <panel name="physics simplification">
+ <text name="second_step_label">
+ 3. Adım: Basitleştir
+ </text>
+ <text name="simp_method_header">
+ Yöntem:
+ </text>
+ <text name="pass_method_header">
+ Geçişler:
+ </text>
+ <text name="Detail Scale label">
+ Ayrıntı ölçeği:
+ </text>
+ <text name="Retain%_label">
+ Koru:
+ </text>
+ <combo_box name="Combine Quality" value="1"/>
+ <button label="Basitleştir" name="Simplify"/>
+ <button label="İptal" name="simplify_cancel"/>
+ </panel>
+ <panel name="physics info">
+ <text name="results_text">
+ Sonuçlar:
+ </text>
+ <text name="physics_triangles">
+ Üçgenler: [TRIANGLES],
+ </text>
+ <text name="physics_points">
+ Köşeler: [POINTS],
+ </text>
+ <text name="physics_hulls">
+ Gövdeler: [HULLS]
+ </text>
+ </panel>
+ </panel>
+ <panel label="Karşıya yükleme seçenekleri" name="modifiers_panel">
+ <text name="scale_label">
+ Ölçek (1=ölçekleme yok):
+ </text>
+ <spinner name="import_scale" value="1.0"/>
+ <text name="dimensions_label">
+ Boyutlar:
+ </text>
+ <text name="import_dimensions">
+ [X] X [Y] X [Z]
+ </text>
+ <check_box label="Dokuları dahil et" name="upload_textures"/>
+ <text name="include_label">
+ Sadece avatar modelleri için:
+ </text>
+ <check_box label="Dış katman ağırlığını dahil et" name="upload_skin"/>
+ <check_box label="Eklem konumlarını dahil et" name="upload_joints"/>
+ <text name="pelvis_offset_label">
+ Z kayması (avatarı kaldırmak veya indirmek için):
+ </text>
+ <spinner name="pelvis_offset" value="0.0"/>
+ </panel>
+ </tab_container>
+ <panel name="weights_and_warning_panel">
+ <button label="Ağırlıkları ve ücreti hesapla" name="calculate_btn" tool_tip="Ağırlıkları ve ücreti hesapla"/>
+ <button label="İptal" name="cancel_btn"/>
+ <button label="Karşıya Yükle" name="ok_btn" tool_tip="Simülatöre karşıya yükle"/>
+ <button label="Ayarları temizle ve formu sıfırla" name="reset_btn"/>
+ <text name="upload_fee">
+ Karşıya yükleme ücreti: L$ [FEE]
+ </text>
+ <text name="prim_weight">
+ Arazi etkisi [EQ]
+ </text>
+ <text name="download_weight">
+ Karşıdan Yükle: [ST]
+ </text>
+ <text name="physics_weight">
+ Fizik: [PH]
+ </text>
+ <text name="server_weight">
+ Sunucu: [SIM]
+ </text>
+ <text name="warning_title">
+ NOT:
+ </text>
+ <text name="warning_message">
+ Örgü modellerini karşıya yüklemeye hakkınız yok. Nasıl onaylanacağınızı [[VURL] öğrenin].
+ </text>
+ <text name="status">
+ [STATUS]
+ </text>
+ </panel>
+ </panel>
+ <text name="lod_label">
+ Önizleme:
+ </text>
+ <panel name="right_panel">
+ <combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+ <combo_item name="high">
+ Yüksek
+ </combo_item>
+ <combo_item name="medium">
+ Orta
+ </combo_item>
+ <combo_item name="low">
+ Düşük
+ </combo_item>
+ <combo_item name="lowest">
+ En Düşük
+ </combo_item>
+ </combo_box>
+ <text name="label_display">
+ Ekran...
+ </text>
+ <check_box label="Kenarlar" name="show_edges"/>
+ <check_box label="Fizik" name="show_physics"/>
+ <check_box label="Dokular" name="show_textures"/>
+ <check_box label="Dış katman ağırlıkları" name="show_skin_weight"/>
+ <check_box label="Eklemler" name="show_joint_positions"/>
+ <text name="physics_explode_label">
+ Önizleme Yayılımı:
+ </text>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_model_wizard.xml b/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
new file mode 100644
index 0000000000..108d20cfac
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Wizard" title="KARŞIYA MODEL YÜKLEME SİHİRBAZI">
+ <button label="5. Karşıya Yükle" name="upload_btn"/>
+ <button label="4. İncele" name="review_btn"/>
+ <button label="3. Fizik" name="physics_btn"/>
+ <button label="2. Optimize et" name="optimize_btn"/>
+ <button label="1. Dosya Seç" name="choose_file_btn"/>
+ <panel name="choose_file_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Model dosyasını seçin
+ </text>
+ </panel>
+ <panel name="content">
+ <text name="advanced_users_text">
+ Gelişmiş kullanıcılar: Eğer 3B içerik oluşturma araçlarını kullanmayı biliyorsanız, Gelişmiş Karşıya Yükleyiciyi kullanmak isteyebilirsiniz.
+ </text>
+ <button label="Gelişmişe geç" name="switch_to_advanced"/>
+ <text name="Cache location">
+ Karşıya yüklenecek model dosyasını seçin
+ </text>
+ <button label="Gözat..." label_selected="Gözat..." name="browse"/>
+ <text name="dimensions">
+ X Y Z
+ </text>
+ <text name="warning_label">
+ UYARI:
+ </text>
+ <text name="warning_text">
+ Bu modelin Second Life sunucularına nihai karşıya yükleme adımını tamamlayamayacaksınız. Hesabınızı örgü modellerinin karşıya yüklenmesi için ayarlamanın [secondlife:///app/floater/learn_more nasıl yapılacağını öğrenin].
+ </text>
+ </panel>
+ </panel>
+ <panel name="optimize_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Modeli optimize et
+ </text>
+ </panel>
+ <text name="description">
+ Modeli performans için optimize ettik. İstiyorsanız daha da ayarlayabilirsiniz.
+ </text>
+ <panel name="content">
+ <text name="high_detail_text">
+ Ayrıntı Seviyesi Oluştur: Yüksek
+ </text>
+ <text name="medium_detail_text">
+ Ayrıntı Seviyesi Oluştur: Orta
+ </text>
+ <text name="low_detail_text">
+ Ayrıntı Seviyesi Oluştur: Düşük
+ </text>
+ <text name="lowest_detail_text">
+ Ayrıntı Seviyesi Oluştur: En Düşük
+ </text>
+ </panel>
+ <panel name="content2">
+ <button label="Geometri hesaplarını tekrar yap" name="recalculate_geometry_btn"/>
+ <text name="lod_label">
+ Geometri önizleme
+ </text>
+ <combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+ <combo_item name="high">
+ Çok ayrıntı
+ </combo_item>
+ <combo_item name="medium">
+ Orta düzey ayrıntı
+ </combo_item>
+ <combo_item name="low">
+ Az ayrıntı
+ </combo_item>
+ <combo_item name="lowest">
+ En az ayrıntı
+ </combo_item>
+ </combo_box>
+ </panel>
+ </panel>
+ <panel name="physics_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Fizik ayarlarını yap
+ </text>
+ </panel>
+ <text name="description">
+ Modelin dış gövdesi için bir şekil oluşturacağız. Modelinizin amacına uygun olarak şeklin ayrıntı seviyesini belirleyin.
+ </text>
+ <panel name="content">
+ <button label="Fizik hesaplarını tekrar yap" name="recalculate_physics_btn"/>
+ <button label="Tekrar hesaplanıyor..." name="recalculating_physics_btn"/>
+ <text name="lod_label">
+ Fizik önizleme
+ </text>
+ <combo_box name="preview_lod_combo2" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+ <combo_item name="high">
+ Çok ayrıntı
+ </combo_item>
+ <combo_item name="medium">
+ Orta düzey ayrıntı
+ </combo_item>
+ <combo_item name="low">
+ Az ayrıntı
+ </combo_item>
+ <combo_item name="lowest">
+ En az ayrıntı
+ </combo_item>
+ </combo_box>
+ </panel>
+ </panel>
+ <panel name="review_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ İncele
+ </text>
+ </panel>
+ <panel name="content">
+ <text name="review_prim_equiv">
+ Parsele/bölgeye etkisi: [EQUIV] prim eşdeğerleri
+ </text>
+ <text name="review_fee">
+ Hesabınızdan L$ [FEE] karşıya yükleme ücreti düşülecektir.
+ </text>
+ <text name="review_confirmation">
+ Karşıya yükleme düğmesine tıkladığınızda, modelde yer alan malzeme için ilgili haklara sahip olduğunuzu teyid edersiniz.
+ </text>
+ </panel>
+ </panel>
+ <panel name="upload_panel">
+ <panel name="header_panel">
+ <text name="header_text">
+ Karşıya yükleme bitti
+ </text>
+ </panel>
+ <text name="model_uploaded_text">
+ Modeliniz karşıya yüklendi.
+ </text>
+ <text name="inventory_text">
+ Bunu, envanterinizdeki Nesneler klasöründe bulacaksınız.
+ </text>
+ <text name="charged_fee">
+ Hesabınızdan L$ [FEE] düşüldü.
+ </text>
+ </panel>
+ <button label="&lt;&lt; Geri" name="back"/>
+ <button label="Sonraki &gt;&gt;" name="next"/>
+ <button label="Ağırlıkları ve ücreti hesapla &gt;&gt;" name="calculate"/>
+ <button label="Hesaplanıyor..." name="calculating"/>
+ <button label="Karşıya Yükle" name="upload" tool_tip="Simülatöre karşıya yükle"/>
+ <button label="İptal" name="cancel"/>
+ <button label="Kapat" name="close"/>
+ <spinner name="import_scale" value="1.0"/>
+ <string name="status_idle">
+ Boşta
+ </string>
+ <string name="status_parse_error">
+ Dae ayrıştırma sorunu - ayrıntılar için günlüğe bakın.
+ </string>
+ <string name="status_reading_file">
+ Yükleniyor...
+ </string>
+ <string name="status_generating_meshes">
+ Örgüler Oluşturuluyor...
+ </string>
+ <string name="status_vertex_number_overflow">
+ Hata: Köşe numarası 65534&apos;ten fazla, işlem durduruldu!
+ </string>
+ <string name="bad_element">
+ Hata: Öğe geçersiz
+ </string>
+ <string name="high">
+ Yüksek
+ </string>
+ <string name="medium">
+ Orta
+ </string>
+ <string name="low">
+ Düşük
+ </string>
+ <string name="lowest">
+ En Düşük
+ </string>
+ <string name="mesh_status_good">
+ Uygula!
+ </string>
+ <string name="mesh_status_na">
+ G/D
+ </string>
+ <string name="mesh_status_none">
+ Hiçbiri
+ </string>
+ <string name="mesh_status_submesh_mismatch">
+ Ayrıntı seviyelerinde farklı sayıda dokulanabilir yüz var.
+ </string>
+ <string name="mesh_status_mesh_mismatch">
+ Ayrıntı seviyelerinde farklı sayıda örgü örneği var.
+ </string>
+ <string name="mesh_status_too_many_vertices">
+ Ayrıntı seviyesinde fazla sayıda köşe var.
+ </string>
+ <string name="mesh_status_missing_lod">
+ Gereken ayrıntı seviyesi eksik.
+ </string>
+ <string name="layer_all">
+ Tümü
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_moveview.xml b/indra/newview/skins/default/xui/tr/floater_moveview.xml
new file mode 100644
index 0000000000..74ed613a62
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_moveview.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater" title="HAREKET ET">
+ <string name="walk_forward_tooltip">
+ İleri Yürü (Yukarı Okuna veya W&apos;ye basın)
+ </string>
+ <string name="walk_back_tooltip">
+ Geri Yürü (Aşağı Okuna veya S&apos;ye basın)
+ </string>
+ <string name="walk_left_tooltip">
+ Sola Yürü (Shift + Sol Oka veya A&apos;ya basın)
+ </string>
+ <string name="walk_right_tooltip">
+ Sağa Yürü (Shift + Sağ Oka veya D&apos;ye basın)
+ </string>
+ <string name="run_forward_tooltip">
+ İleri Koş (Yukarı Okuna veya W&apos;ye basın)
+ </string>
+ <string name="run_back_tooltip">
+ Geri Koş (Aşağı Okuna veya S&apos;ye basın)
+ </string>
+ <string name="run_left_tooltip">
+ Sola Koş (Shift + Sol Oka veya A&apos;ya basın)
+ </string>
+ <string name="run_right_tooltip">
+ Sağa Koş (Shift + Sağ Oka veya D&apos;ye basın)
+ </string>
+ <string name="fly_forward_tooltip">
+ İleri Uç (Yukarı Okuna veya W&apos;ye basın)
+ </string>
+ <string name="fly_back_tooltip">
+ Geri Uç (Aşağı Okuna veya S&apos;ye basın)
+ </string>
+ <string name="fly_left_tooltip">
+ Sola Uç (Shift + Sol Oka veya A&apos;ya basın)
+ </string>
+ <string name="fly_right_tooltip">
+ Sağa Uç (Shift + Sağ Oka veya D&apos;ye basın)
+ </string>
+ <string name="fly_up_tooltip">
+ Yukarı Uç (E&apos;ye basın)
+ </string>
+ <string name="fly_down_tooltip">
+ Aşağı Uç (C&apos;ye basın)
+ </string>
+ <string name="jump_tooltip">
+ Atla (E&apos;ye basın)
+ </string>
+ <string name="crouch_tooltip">
+ Çömel (C&apos;ye basın)
+ </string>
+ <string name="walk_title">
+ Yürü
+ </string>
+ <string name="run_title">
+ Koş
+ </string>
+ <string name="fly_title">
+ Uç
+ </string>
+ <panel name="panel_actions">
+ <button name="turn left btn" tool_tip="Sola Dön (Sol Oka veya A&apos;ya basın)"/>
+ <joystick_slide name="move left btn" tool_tip="Sola Yürü (Shift + Sol Oka veya A&apos;ya basın)"/>
+ <button name="turn right btn" tool_tip="Sağa Dön (Sağ Oka veya D&apos;ye basın)"/>
+ <joystick_slide name="move right btn" tool_tip="Sağa Yürü (Shift + Sağ Oka veya D&apos;ye basın)"/>
+ <joystick_turn name="forward btn" tool_tip="İleri Yürü (Yukarı Okuna veya W&apos;ye basın)"/>
+ <joystick_turn name="backward btn" tool_tip="Geri Yürü (Aşağı Okuna veya S&apos;ye basın)"/>
+ <button name="move up btn" tool_tip="Yukarı Uç (E&apos;ye basın)"/>
+ <button name="move down btn" tool_tip="Aşağı Uç (C&apos;ye basın)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="Yürüme modu"/>
+ <button label="" name="mode_run_btn" tool_tip="Koşma modu"/>
+ <button label="" name="mode_fly_btn" tool_tip="Uçma modu"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_mute_object.xml b/indra/newview/skins/default/xui/tr/floater_mute_object.xml
new file mode 100644
index 0000000000..becad38a8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_mute_object.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="block by name" title="NESNEYİ ADINA GÖRE ENGELLE">
+ <text name="message">
+ Bir nesneyi engelle
+ </text>
+ <line_editor name="object_name">
+ Nesne adı
+ </line_editor>
+ <text name="note">
+ * Sadece nesne metnini engeller, sesleri engellemez
+ </text>
+ <button label="Tamam" name="OK"/>
+ <button label="İptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_my_appearance.xml b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
new file mode 100644
index 0000000000..4d71187a1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="GÖRÜNÜM">
+ <panel label="Görünümü Düzenle" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_my_inventory.xml b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
new file mode 100644
index 0000000000..8c62692a88
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="ENVANTER"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/tr/floater_nearby_chat.xml
new file mode 100644
index 0000000000..6b12ad0ef5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="YAKINDAKİ SOHBET">
+ <check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_notification.xml b/indra/newview/skins/default/xui/tr/floater_notification.xml
new file mode 100644
index 0000000000..89a56348f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_notification.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notification" title="BİLDİRİMLER KONSOLU">
+ <text_editor name="payload">
+ Yükleniyor...
+ </text_editor>
+ <combo_box label="Yanıt" name="response"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_notifications_console.xml b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml
new file mode 100644
index 0000000000..e4eaf2cf9e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notifications_console" title="BİLDİRİMLER KONSOLU">
+ <combo_box label="Bildirim türünü seç" name="notification_types"/>
+ <button label="Ekle" name="add_notification"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_object_weights.xml b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
new file mode 100644
index 0000000000..b57943f666
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="GELİŞMİŞ">
+ <floater.string name="nothing_selected" value="--"/>
+ <text name="selected_text" value="SEÇİLİ"/>
+ <text name="objects" value="--"/>
+ <text name="objects_label" value="Nesneler"/>
+ <text name="prims" value="--"/>
+ <text name="prims_label" value="Primler"/>
+ <text name="weights_of_selected_text" value="SEÇİLENLERİN AĞIRLIKLARI"/>
+ <text name="download" value="--"/>
+ <text name="download_label" value="Karşıdan yükle"/>
+ <text name="physics" value="--"/>
+ <text name="physics_label" value="Fizik"/>
+ <text name="server" value="--"/>
+ <text name="server_label" value="Sunucu"/>
+ <text name="display" value="--"/>
+ <text name="display_label" value="Ekran"/>
+ <text name="land_impacts_text" value="ARAZİ ETKİLERİ"/>
+ <text name="selected" value="--"/>
+ <text name="selected_label" value="Seçili"/>
+ <text name="rezzed_on_land" value="--"/>
+ <text name="rezzed_on_land_label" value="Arazide oluşturulmuş"/>
+ <text name="remaining_capacity" value="--"/>
+ <text name="remaining_capacity_label" value="Kalan kapasite"/>
+ <text name="total_capacity" value="--"/>
+ <text name="total_capacity_label" value="Toplam kapasite"/>
+ <text name="help_SLURL" value="[secondlife:///app/help/object_weights Bunların tümü ne?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_openobject.xml b/indra/newview/skins/default/xui/tr/floater_openobject.xml
new file mode 100644
index 0000000000..9980aee97f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_openobject.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="objectcontents" title="NESNE İÇERİKLERİ">
+ <text name="object_name">
+ [DESC]:
+ </text>
+ <button label="Envantere Kopyala" label_selected="Envantere Kopyala" name="copy_to_inventory_button"/>
+ <button label="Kopyala ve Giy" label_selected="Kopyala ve Giy" name="copy_and_wear_button"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
new file mode 100644
index 0000000000..7a9f507c93
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="DIŞ GÖRÜNÜMÜ KAYDET">
+ <button label="Kaydet" label_selected="Kaydet" name="Save"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+ <text name="Save item as:">
+ Üzerimdekileri yeni bir
+Dış Görünüm olarak kaydet:
+ </text>
+ <line_editor name="name ed">
+ [DESC] (yeni)
+ </line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml
new file mode 100644
index 0000000000..7ba4580f4f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="ARIYOR">
+ <floater.string name="lifetime">
+ 5
+ </floater.string>
+ <floater.string name="localchat">
+ Yakındaki Sesli Sohbet
+ </floater.string>
+ <floater.string name="anonymous">
+ anonim
+ </floater.string>
+ <floater.string name="VoiceInviteP2P">
+ arıyor.
+ </floater.string>
+ <floater.string name="VoiceInviteAdHoc">
+ bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
+ </floater.string>
+ <text name="connecting">
+ [CALLEE_NAME] bağlanıyor
+ </text>
+ <text name="calling">
+ [CALLEE_NAME] aranıyor
+ </text>
+ <text name="noanswer">
+ Cevap Yok. Lütfen daha sonra tekrar deneyin.
+ </text>
+ <text name="nearby">
+ [VOICE_CHANNEL_NAME] ile bağlantınız kesildi. [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_other">
+ Aramanız bitti. [RECONNECT_NEARBY]
+ </text>
+ <text name="nearby_P2P_by_agent">
+ Aramayı bitirdiniz. [RECONNECT_NEARBY]
+ </text>
+ <text name="leaving">
+ [CURRENT_CHAT] bırakılıyor.
+ </text>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pay.xml b/indra/newview/skins/default/xui/tr/floater_pay.xml
new file mode 100644
index 0000000000..6604e5c37a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_pay.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+ <string name="payee_group">
+ Gruba Öde
+ </string>
+ <string name="payee_resident">
+ Sakine Öde
+ </string>
+ <text name="payee_name">
+ Kırpmayı Kontrol İçin Test Adı Çok Uzun
+ </text>
+ <button label="L$1" label_selected="L$1" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
+ <text name="amount text">
+ veya tutarı seç:
+ </text>
+ <button label="Öde" label_selected="Öde" name="pay btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pay_object.xml b/indra/newview/skins/default/xui/tr/floater_pay_object.xml
new file mode 100644
index 0000000000..7772d3b101
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_pay_object.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+ <string name="payee_group">
+ Gruba Öde
+ </string>
+ <string name="payee_resident">
+ Sakine Öde
+ </string>
+ <text name="payee_name">
+ Ericacita Moostopolison
+ </text>
+ <text name="object_name_label">
+ Nesne yoluyla:
+ </text>
+ <icon name="icon_object" tool_tip="Nesneler"/>
+ <text name="object_name_text">
+ Harika nesnem gerçekten uzun bir adla
+ </text>
+ <button label="L$1" label_selected="L$1" name="fastpay 1"/>
+ <button label="L$5" label_selected="L$5" name="fastpay 5"/>
+ <button label="L$10" label_selected="L$10" name="fastpay 10"/>
+ <button label="L$20" label_selected="L$20" name="fastpay 20"/>
+ <text name="amount text">
+ veya tutarı seç:
+ </text>
+ <button label="Öde" label_selected="Öde" name="pay btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_people.xml b/indra/newview/skins/default/xui/tr/floater_people.xml
new file mode 100644
index 0000000000..94a27bff57
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="KİŞİLER">
+ <panel_container name="main_panel">
+ <panel label="Grup Profili" name="panel_group_info_sidetray"/>
+ <panel label="Engellenmiş Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+ </panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml
new file mode 100644
index 0000000000..669b833c26
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="perm prefs" title="VARSAYILAN KARŞIYA YÜKLEME İZİNLERİ">
+ <panel label="İzinler" name="permissions">
+ <check_box label="Grupla paylaş" name="share_with_group"/>
+ <check_box label="Herkese kopyalama izni ver" name="everyone_copy"/>
+ <text name="NextOwnerLabel">
+ Sonraki sahip şunu yapabilir:
+ </text>
+ <check_box label="Değiştir" name="next_owner_modify"/>
+ <check_box label="Kopyala" name="next_owner_copy"/>
+ <check_box initial_value="true" label="Tekrar sat/Ver" name="next_owner_transfer"/>
+ </panel>
+ <button label="Tamam" label_selected="Tamam" name="ok"/>
+ <button label="İptal" label_selected="İptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_picks.xml b/indra/newview/skins/default/xui/tr/floater_picks.xml
new file mode 100644
index 0000000000..513a2e319a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Seçmeler"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_places.xml b/indra/newview/skins/default/xui/tr/floater_places.xml
new file mode 100644
index 0000000000..4e09a699f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="YERLER">
+ <panel label="Yerler" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_post_process.xml b/indra/newview/skins/default/xui/tr/floater_post_process.xml
new file mode 100644
index 0000000000..5e419f8ffa
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_post_process.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Post-Process Floater" title="İŞLEM SONRASI AYARLARI">
+ <tab_container name="Post-Process Tabs">
+ <panel label="Renk Filtresi" name="wmiColorFilterPanel">
+ <check_box label="Etkinleştir" name="wmiColorFilterToggle"/>
+ <text name="wmiColorFilterBrightnessText">
+ Parlaklık
+ </text>
+ <text name="wmiColorFilterSaturationText">
+ Doygunluk
+ </text>
+ <text name="wmiColorFilterContrastText">
+ Kontrast
+ </text>
+ <text name="wmiColorFilterBaseText">
+ Kontrast Baz Rengi
+ </text>
+ <slider label="R" name="wmiColorFilterBaseR"/>
+ <slider label="G" name="wmiColorFilterBaseG"/>
+ <slider label="B" name="wmiColorFilterBaseB"/>
+ <slider label="I" name="wmiColorFilterBaseI"/>
+ </panel>
+ <panel label="Gece Görüşü" name="wmiNightVisionPanel">
+ <check_box label="Etkinleştir" name="wmiNightVisionToggle"/>
+ <text name="wmiNightVisionBrightMultText">
+ Işık Yükseltme Çarpanı
+ </text>
+ <text name="wmiNightVisionNoiseSizeText">
+ Gürültü Büyüklüğü
+ </text>
+ <text name="wmiNightVisionNoiseStrengthText">
+ Gürültü Gücü
+ </text>
+ </panel>
+ <panel label="Işıma" name="wmiBloomPanel">
+ <check_box label="Etkinleştir" name="wmiBloomToggle"/>
+ <text name="wmiBloomExtractText">
+ Parlaklık Çıkarma
+ </text>
+ <text name="wmiBloomSizeText">
+ Işıma Büyüklüğü
+ </text>
+ <text name="wmiBloomStrengthText">
+ Işıma Gücü
+ </text>
+ </panel>
+ <panel label="Ekstralar" name="Extras">
+ <button label="EfektYükle" label_selected="EfektYükle" name="PPLoadEffect"/>
+ <button label="EfektKaydet" label_selected="EfektKaydet" name="PPSaveEffect"/>
+ <line_editor label="Efekt Adı" name="PPEffectNameEditor"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_postcard.xml b/indra/newview/skins/default/xui/tr/floater_postcard.xml
new file mode 100644
index 0000000000..ef11c68afe
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_postcard.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Postcard" title="ANLIK GÖRÜNTÜYÜ E-POSTAYLA GÖNDER">
+ <floater.string name="default_subject">
+ SECOND_LIFE]&apos;dan posta kartı.
+ </floater.string>
+ <floater.string name="default_message">
+ Buna bakın!
+ </floater.string>
+ <floater.string name="upload_message">
+ Gönderiyor...
+ </floater.string>
+ <text name="to_label">
+ Alıcının E-postası:
+ </text>
+ <text name="from_label">
+ E-postanız:
+ </text>
+ <text name="name_label">
+ Adınız:
+ </text>
+ <text name="subject_label">
+ Konu:
+ </text>
+ <line_editor label="Konunuzu buraya yazın." name="subject_form"/>
+ <text name="msg_label">
+ İleti:
+ </text>
+ <text_editor name="msg_form">
+ İletinizi buraya yazın.
+ </text_editor>
+ <button label="İptal" name="cancel_btn"/>
+ <button label="Gönder" name="send_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences.xml b/indra/newview/skins/default/xui/tr/floater_preferences.xml
new file mode 100644
index 0000000000..edb3c19b81
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preferences.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Preferences" title="TERCİHLER">
+ <button label="Tamam" label_selected="Tamam" name="OK"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+ <tab_container name="pref core">
+ <panel label="Genel" name="general"/>
+ <panel label="Grafikler" name="display"/>
+ <panel label="Ses ve Ortamlar" name="audio"/>
+ <panel label="Sohbet" name="chat"/>
+ <panel label="Hareket ve Görünümler" name="move"/>
+ <panel label="Bildirimler" name="msgs"/>
+ <panel label="Renkler" name="colors"/>
+ <panel label="Gizlilik" name="im"/>
+ <panel label="Ayarlar" name="input"/>
+ <panel label="Gelişmiş" name="advanced1"/>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml
new file mode 100644
index 0000000000..1c462e6ebf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Proxy Settings Floater" title="Proxy Ayarları">
+ <check_box initial_value="false" label="Web sayfaları için HTTP Proxy kullan" name="web_proxy_enabled"/>
+ <text name="http_proxy_label">
+ HTTP Proxy:
+ </text>
+ <line_editor name="web_proxy_editor" tool_tip="Kullanmak istediğiniz HTTP proxy&apos;nin DNS adı veya IP adresi."/>
+ <spinner label="Port numarası:" name="web_proxy_port" tool_tip="Kullanmak istediğiniz HTTP proxy&apos;nin portu."/>
+ <check_box label="UDP trafiği için SOCKS 5 Proxy kullan" name="socks_proxy_enabled"/>
+ <text name="socks5_proxy_label">
+ SOCKS 5 Proxy:
+ </text>
+ <line_editor name="socks_proxy_editor" tool_tip="Kullanmak istediğiniz SOCKS 5 proxy&apos;nin DNS adı veya IP adresi."/>
+ <spinner label="Port numarası:" name="socks_proxy_port" tool_tip="Kullanmak istediğiniz SOCKS 5 proxy&apos;nin portu."/>
+ <text name="socks_auth_label">
+ SOCKS Kimlik Doğrulama:
+ </text>
+ <radio_group name="socks5_auth_type">
+ <radio_item label="Kimlik Doğrulama Yok" name="Socks5NoAuth" tool_tip="Socks5 proxy&apos;si kimlik doğrulama gerektirmiyor." value="Hiçbiri"/>
+ <radio_item label="Kullanıcı Adı/Parola" name="Socks5UserPass" tool_tip="Socks5 proxy&apos;si kullanıcı adı/parola doğrulaması gerektiriyor." value="UserPass"/>
+ </radio_group>
+ <text name="socks5_username_label">
+ Kullanıcı Adı:
+ </text>
+ <text name="socks5_password_label">
+ Parola:
+ </text>
+ <line_editor name="socks5_username" tool_tip="SOCKS 5 sunucunuzda kimlik doğrulaması yapmak için kullanılan kullanıcı adı"/>
+ <line_editor name="socks5_password" tool_tip="SOCKS 5 sunucunuzda kimlik doğrulaması yapmak için kullanılan parola"/>
+ <text name="other_proxy_label">
+ Diğer HTTP trafiği proxy&apos;si:
+ </text>
+ <radio_group name="other_http_proxy_type">
+ <radio_item label="Proxy kullanılmasın" name="OtherNoProxy" tool_tip="Web dışı HTTP trafiği herhangi bir proxy&apos;ye gönderilmez." value="Hiçbiri"/>
+ <radio_item label="HTTP Proxy&apos;si kullan" name="OtherHTTPProxy" tool_tip="Web dışı HTTP trafiği yapılandırılmış web proxy&apos;si üzerinden gönderilir." value="Web"/>
+ <radio_item label="SOCKS 5 Proxy&apos;si kullan" name="OtherSocksProxy" tool_tip="Web dışı HTTP trafiği yapılandırılmış Socks 5 proxy&apos;si üzerinden gönderilir." value="Socks"/>
+ </radio_group>
+ <button label="Tamam" label_selected="Tamam" name="OK"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml
new file mode 100644
index 0000000000..1c526c75f9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+ <floater.string name="Title">
+ Animasyon: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Açıklama:
+ </text>
+ <button label="SL Dünyasında Oynat" label_selected="Durdur" name="Anim play btn" tool_tip="Bu animasyonu başkaları görebilecek şekilde oynatın"/>
+ <button label="Yerel Olarak Oynat" label_selected="Durdur" name="Anim audition btn" tool_tip="Bu animasyonu sadece kendinizin görebileceği şekilde oynatın"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml
new file mode 100644
index 0000000000..dc6f66f657
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="gesture_preview">
+ <floater.string name="step_anim">
+ Oynatılacak animasyon:
+ </floater.string>
+ <floater.string name="step_sound">
+ Çalınacak ses:
+ </floater.string>
+ <floater.string name="step_chat">
+ Konuşulacak sohbet:
+ </floater.string>
+ <floater.string name="step_wait">
+ Bekle:
+ </floater.string>
+ <floater.string name="stop_txt">
+ Durdur
+ </floater.string>
+ <floater.string name="preview_txt">
+ Önizleme
+ </floater.string>
+ <floater.string name="none_text">
+ -- Hiçbiri --
+ </floater.string>
+ <floater.string name="Title">
+ Mimik: [NAME]
+ </floater.string>
+ <text name="desc_label">
+ Açıklama:
+ </text>
+ <text name="trigger_label">
+ Tetikleyici:
+ </text>
+ <text name="replace_text" tool_tip="Tetikleyici kelimelerinin yerine bunları koyun. Örneğin, &apos;merhaba&apos; yerine &apos;naber&apos; konulması tetikleyicisi ile &quot;merhaba demek istemiştim&quot; sohbeti &quot;naber demek istemiştim olacak ve mimik gerçekleştirilecektir!">
+ Yerine şunu koy:
+ </text>
+ <line_editor name="replace_editor" tool_tip="Tetikleyici kelimelerinin yerine bunları koyun. Örneğin, &apos;merhaba&apos; yerine &apos;naber&apos; konulması tetikleyicisi ile &quot;merhaba demek istemiştim&quot; sohbeti &quot;naber demek istemiştim olacak ve mimik gerçekleştirilecektir"/>
+ <text name="key_label">
+ Kısayol Tuşu:
+ </text>
+ <combo_box label="Hiçbiri" name="modifier_combo"/>
+ <combo_box label="Hiçbiri" name="key_combo"/>
+ <text name="library_label">
+ Kütüphane:
+ </text>
+ <scroll_list name="library_list">
+ <scroll_list.rows name="action_animation" value="Animasyon"/>
+ <scroll_list.rows name="action_sound" value="Ses"/>
+ <scroll_list.rows name="action_chat" value="Sohbet"/>
+ <scroll_list.rows name="action_wait" value="Bekle"/>
+ </scroll_list>
+ <button label="Ekle &gt;&gt;" name="add_btn"/>
+ <text name="steps_label">
+ Adımlar:
+ </text>
+ <button label="Yukarı" name="up_btn"/>
+ <button label="Aşağı" name="down_btn"/>
+ <button label="Kaldır" name="delete_btn"/>
+ <text name="options_text">
+ (seçenekler)
+ </text>
+ <radio_group name="animation_trigger_type">
+ <radio_item label="Başla" name="start"/>
+ <radio_item label="Durdur" name="stop"/>
+ </radio_group>
+ <check_box label="tüm animasyonlar bitinceye kadar" name="wait_anim_check"/>
+ <check_box label="saniye olarak zaman:" name="wait_time_check"/>
+ <text name="help_label">
+ Bekleme adımları eklemediğiniz sürece tüm adımlar aynı anda gerçekleşir.
+ </text>
+ <check_box label="Etkin" name="active_check" tool_tip="Etkin mimikleri tetiklemek için tetikleme fazları için sohbet gerçekleştirebilir veya kısayol tuşlarına basabilirsiniz. Bir anahtar bağlama ihtilafı olduğunda mimikler genellikle inaktif hale geçer."/>
+ <button label="Önizleme" name="preview_btn"/>
+ <button label="Kaydet" name="save_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
new file mode 100644
index 0000000000..23391249d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="NOT KARTI:">
+ <floater.string name="no_object">
+ Bu not kartını içeren nesne bulunamadı.
+ </floater.string>
+ <floater.string name="not_allowed">
+ Bu not kartını görüntüleme izniniz yok.
+ </floater.string>
+ <floater.string name="Title">
+ Not Kartı: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Açıklama:
+ </text>
+ <text_editor name="Notecard Editor">
+ Yükleniyor...
+ </text_editor>
+ <button label="Kaydet" label_selected="Kaydet" name="Save"/>
+ <button label="Sil" label_selected="Sil" name="Delete"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_sound.xml b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml
new file mode 100644
index 0000000000..50874f024a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+ <floater.string name="Title">
+ Ses: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Açıklama:
+ </text>
+ <button label="SL Dünyasında Oynat" label_selected="SL Dünyasında Oynat" name="Sound play btn" tool_tip="Bu ses başkaların işitebileceği bir şekilde çalınsın"/>
+ <button label="Yerel Olarak Oynat" label_selected="Yerel Olarak Oynat" name="Sound audition btn" tool_tip="Bu ses sadece sizin işitebileceğiniz bir şekilde çalınsın"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml
new file mode 100644
index 0000000000..79e184130a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+ <floater.string name="Title">
+ Doku: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ Envantere Kopyala
+ </floater.string>
+ <text name="desc txt">
+ Açıklama:
+ </text>
+ <text name="dimensions">
+ [WIDTH]px x [HEIGHT]px
+ </text>
+ <text name="aspect_ratio">
+ En boy oranını önizle
+ </text>
+ <combo_box name="combo_aspect_ratio" tool_tip="Sabit en boy oranında önizle">
+ <combo_item name="Unconstrained">
+ Kısıtsız
+ </combo_item>
+ <combo_item name="1:1" tool_tip="Grup işaretleri veya Real World profili">
+ 1:1
+ </combo_item>
+ <combo_item name="4:3" tool_tip="[SECOND_LIFE] profili">
+ 4:3
+ </combo_item>
+ <combo_item name="10:7" tool_tip="İlanlar ve arama listeleri, yer imleri">
+ 10:7
+ </combo_item>
+ <combo_item name="3:2" tool_tip="Arazi hakkında">
+ 3:2
+ </combo_item>
+ <combo_item name="16:10">
+ 16:10
+ </combo_item>
+ <combo_item name="16:9" tool_tip="Profil seçmeleri">
+ 16:9
+ </combo_item>
+ <combo_item name="2:1">
+ 2:1
+ </combo_item>
+ </combo_box>
+ <button label="Tamam" name="Keep"/>
+ <button label="At" name="Discard"/>
+ <button label="Farklı Kaydet" name="save_tex_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml b/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml
new file mode 100644
index 0000000000..5cdd25b64c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="price_for_listing" title="SERİ İLAN YAYINLA">
+ <text name="explanation_text">
+ İlanınız yayınlandığı günden itibaren bir hafta boyunca yayında kalacaktır.
+
+İlanınızın seri ilanlar listesindeki yeri, ne kadar ödeme yapmayı seçtiğinize bağlıdır.
+
+En çok ücret ödenen ilanlar listenin tepesinde yer alır ve aramalarda daha yukarı sırada görünür.
+ </text>
+ <text name="price_text">
+ İlan Ücreti:
+ </text>
+ <text name="price_symbol">
+ L$
+ </text>
+ <button label="Tamam" name="set_price_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_publish_classified.xml b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml
new file mode 100644
index 0000000000..572892667b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="İlan Yayınlama">
+ <text name="explanation_text">
+ Seri ilanınız yayına verildiği günden itibaren bir hafta boyunca yayında kalacaktır.
+
+Unutmayın, İlan ücretleri iade edilmez.
+ </text>
+ <spinner label="Fiyat: L$" name="price_for_listing" tool_tip="İlan ücreti." value="50"/>
+ <button label="Yayınla" name="publish_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml b/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml
new file mode 100644
index 0000000000..e2a5e8e86a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="region_debug_console" title="Bölge Hata Ayıklama"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_region_info.xml b/indra/newview/skins/default/xui/tr/floater_region_info.xml
new file mode 100644
index 0000000000..2b2e00161b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_region_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="regioninfo" title="BÖLGE/GAYRİMENKUL"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
new file mode 100644
index 0000000000..c5765883c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="KÖTÜYE KULLANIM BİLDİR">
+ <floater.string name="Screenshot">
+ Anlık görüntü
+ </floater.string>
+ <check_box label="Bu anlık görüntüyü kullan" name="screen_check"/>
+ <text name="reporter_title">
+ Rapor eden:
+ </text>
+ <text name="sim_title">
+ Bölge:
+ </text>
+ <text name="sim_field">
+ Bölge Adı
+ </text>
+ <text name="pos_title">
+ Konum:
+ </text>
+ <text name="pos_field">
+ {128.1, 128.1, 15.4}
+ </text>
+ <text name="select_object_label">
+ Düğmeye, sonra da kötüye kullanılan nesneye tıklayın:
+ </text>
+ <button name="pick_btn" tool_tip="Nesne Seçici - bu raporun konusu olan nesneyi tespit edin"/>
+ <text name="object_name_label">
+ Nesne:
+ </text>
+ <text name="owner_name_label">
+ Sahip:
+ </text>
+ <combo_box name="category_combo" tool_tip="Kategori -- bu raporu en iyi tanımlayan kategoriyi seçin">
+ <combo_box.item label="Kategori seç" name="Select_category"/>
+ <combo_box.item label="Yaş &gt; Yaşı oyna" name="Age__Age_play"/>
+ <combo_box.item label="Yaş &gt; 18 Yaş Altı Second Life&apos;ında Yetişkin Sakin" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Yaş &gt; 18 Yaş Altı Second Life&apos;ı dışında Reşit Olmayan Sakin" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Saldırı &gt; Çarpışma koruma alanı / güvensiz alan" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Saldırı &gt; Güvenli alan" name="Assault__Safe_area"/>
+ <combo_box.item label="Saldırı &gt; Silah test güvenli alanı" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Ticaret &gt; Ürün veya hizmet verilemedi" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="İfşa &gt; Gerçek dünya bilgileri" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="İfşa &gt; Sohbet uzaktan izleniyor" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="İfşa &gt; Second Life bilgileri/sohbet/Aİ&apos;ler" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Huzuru bozuyor &gt; bölge kaynaklarının haksız kullanımı" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Huzuru bozuyor &gt; aşırı komut dosyalı nesne" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Huzuru bozuyor &gt; Nesne dağıtma" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Huzuru bozuyor &gt; Tekrarlanan spam" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Huzuru bozuyor &gt; İstenmeyen reklam spamı" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Dolandırıcılık &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Dolandırıcılık &gt; Arazi" name="Fraud__Land"/>
+ <combo_box.item label="Dolandırıcılık &gt; Piramid planı veya zincirleme mektup" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Dolandırıcılık &gt; US$" name="Fraud__US$"/>
+ <combo_box.item label="Taciz &gt; reklam çiftlikleri / görsel spam" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Taciz &gt; Kişi ya da grupları aşağılama" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Taciz &gt; Tehditkâr hareket" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Taciz &gt; Cinsel taciz" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Taciz &gt; Başkalarını Hizmet Koşullarını ihlal etmeye kışkırtma/teşvik" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Taciz &gt; Sözlü istismar" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Uygunsuzluk &gt; Genel anlamda rahatsız edici içerik veya davranış" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Uygunsuzluk &gt; Uygunsuz avatar adı" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Uygunsuzluk &gt; PG bölgesinde rahatsız edici içerik veya davranış" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Uygunsuzluk &gt; Orta bölgede rahatsız edici içerik veya davranış" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Fikri mülkiyet ihlali &gt; İçerik Silme" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Fikri mülkiyet ihlali &gt; CopyBot veya İzinlerin Kötüye Kullanılması" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Tahammülsüzlük" name="Intolerance"/>
+ <combo_box.item label="Arazi &gt; Koruma alanı kaynaklarının istismarı" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Arazi &gt; Tecavvüz &gt; Nesneler/dokular" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Arazi &gt; Tecavvüz &gt; Parçacıklar" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Arazi &gt; Tecavvüz &gt; Ağaçlar/bitkiler" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Bahis oynatma/kumar" name="Wagering_gambling"/>
+ <combo_box.item label="Diğer" name="Other"/>
+ </combo_box>
+ <text name="abuser_name_title">
+ Kötüye kullananın adı:
+ </text>
+ <button label="Seç" name="select_abuser" tool_tip="Kötüye kullananın adını bir listeden seçin"/>
+ <text name="abuser_name_title2">
+ Kötüye Kullanma Konumu
+ </text>
+ <text name="sum_title">
+ Özet:
+ </text>
+ <text name="dscr_title">
+ Ayrıntl:
+ </text>
+ <text name="bug_aviso">
+ Mümkün olduğunca spesifik olun
+ </text>
+ <text name="incomplete_title">
+ * Eksik raporlar incelenmeyecektir
+ </text>
+ <button label="Kötüye Kullanımı Bildir" label_selected="Kötüye Kullanımı Bildir" name="send_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug.xml b/indra/newview/skins/default/xui/tr/floater_script_debug.xml
new file mode 100644
index 0000000000..baf0aabd85
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_debug.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="script debug floater" title="Komut Dosyası Uyarı/Hata"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml
new file mode 100644
index 0000000000..e70a30fa24
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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/tr/floater_script_limits.xml b/indra/newview/skins/default/xui/tr/floater_script_limits.xml
new file mode 100644
index 0000000000..875599bde3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="KOMUT DOSYASI BİLGİSİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_preview.xml b/indra/newview/skins/default/xui/tr/floater_script_preview.xml
new file mode 100644
index 0000000000..e193f7c1af
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_preview.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="KOMUT DOSYASI: DÖNDÜRME KOMUT DOSYASI">
+ <floater.string name="Title">
+ KOMUT DOSYASI: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Açıklama:
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_queue.xml b/indra/newview/skins/default/xui/tr/floater_script_queue.xml
new file mode 100644
index 0000000000..c1d98b717a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_queue.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="İLERLEMEYİ SIFIRLA">
+ <floater.string name="Starting">
+ [COUNT] öğe için [START] başlatılıyor.
+ </floater.string>
+ <floater.string name="Done">
+ Tamamlandı.
+ </floater.string>
+ <floater.string name="Resetting">
+ Sıfırlanıyor
+ </floater.string>
+ <floater.string name="Running">
+ Çalışıyor
+ </floater.string>
+ <floater.string name="NotRunning">
+ Çalışmıyor
+ </floater.string>
+ <button label="Kapat" label_selected="Kapat" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_search.xml b/indra/newview/skins/default/xui/tr/floater_script_search.xml
new file mode 100644
index 0000000000..54b1d20c8c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_search.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script search" title="KOMUT DOSYASI ARA">
+ <check_box label="Büyük Küçük Harfe Duyarsız" name="case_text"/>
+ <button label="Ara" label_selected="Ara" name="search_btn"/>
+ <button label="Değiştir" label_selected="Değiştir" name="replace_btn"/>
+ <button label="Tümünü Değiştir" label_selected="Tümünü Değiştir" name="replace_all_btn"/>
+ <text name="txt">
+ Ara
+ </text>
+ <text name="txt2">
+ Değiştir
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_search.xml b/indra/newview/skins/default/xui/tr/floater_search.xml
new file mode 100644
index 0000000000..08c1e5162c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="">
+ <floater.string name="loading_text">
+ Yükleniyor...
+ </floater.string>
+ <floater.string name="done_text">
+ Tamamlandı
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="browser_layout">
+ <text name="refresh_search">
+ Mevcut Yönetici seviyesini dikkate alarak aramayı yenile
+ </text>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_select_key.xml b/indra/newview/skins/default/xui/tr/floater_select_key.xml
new file mode 100644
index 0000000000..b828672ec2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_select_key.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+ <text name="Save item as:">
+ Konuş düğmesi tetikleyicinizi ayarlamak için bir düğmeye basın.
+ </text>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sell_land.xml b/indra/newview/skins/default/xui/tr/floater_sell_land.xml
new file mode 100644
index 0000000000..9bea1e120e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sell_land.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sell land" title="ARAZİ SAT">
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Parsel:
+ </text>
+ <text name="info_parcel">
+ PARSEL ADI
+ </text>
+ <text name="info_size_label">
+ Büyüklük:
+ </text>
+ <text name="info_size">
+ [AREA] m²
+ </text>
+ <text name="info_action">
+ Bu parseli satmak için:
+ </text>
+ <text name="price_label">
+ 1. Fiyat belirle:
+ </text>
+ <text name="price_text">
+ Uygun bir fiyat seçin.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <line_editor name="price">
+ 0
+ </line_editor>
+ <text name="price_per_m">
+ (L$[PER_METER] / m²)
+ </text>
+ <text name="sell_to_label">
+ 2. Araziyi şuna satın:
+ </text>
+ <text name="sell_to_text">
+ Herkese mi, yoksa belirli bir alıcıya mı satacağınızı seçin.
+ </text>
+ <combo_box name="sell_to">
+ <combo_box.item label="- Birini seç -" name="--selectone--"/>
+ <combo_box.item label="Herkes" name="Anyone"/>
+ <combo_box.item label="Belirli kişi:" name="Specificuser:"/>
+ </combo_box>
+ <button label="Seç" name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ 3. Nesneler araziyle birlikte mi satılacak?
+ </text>
+ <text name="sell_objects_text">
+ Arazi sahibinin parsel üzerindeki devredilebilir nesnelerinin mülkiyeti değişecektir.
+ </text>
+ <radio_group name="sell_objects">
+ <radio_item label="Hayır, nesnelerin mülkiyetini koru" name="no"/>
+ <radio_item label="Evet, nesneleri araziyle birlikte sat" name="yes"/>
+ </radio_group>
+ <button label="Nesneleri Göster" name="show_objects"/>
+ <text name="nag_message_label">
+ UNUTMAYIN: Tüm satışlar kesindir.
+ </text>
+ <button label="Araziyi Satışa Çıkar" name="sell_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_settings_debug.xml b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml
new file mode 100644
index 0000000000..65264c57d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="HATA AYIKLAMA AYARLARI">
+ <radio_group name="boolean_combo">
+ <radio_item label="TRUE" name="TRUE" value="true"/>
+ <radio_item label="FALSE" name="FALSE" value=""/>
+ </radio_group>
+ <color_swatch label="Renk" 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="Varsayılana sıfırla" name="default_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_snapshot.xml b/indra/newview/skins/default/xui/tr/floater_snapshot.xml
new file mode 100644
index 0000000000..492ec4b588
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_snapshot.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Snapshot" title="ANLIK GÖRÜNTÜ ÖNİZLEME">
+ <floater.string name="unknown">
+ bilinmiyor
+ </floater.string>
+ <radio_group label="Anlık görüntü türü" name="snapshot_type_radio">
+ <radio_item label="E-posta" name="postcard"/>
+ <radio_item label="Envanterim (L$[AMOUNT])" name="texture"/>
+ <radio_item label="Bilgisayarıma kaydet" name="local"/>
+ </radio_group>
+ <text name="file_size_label">
+ [SIZE] KB
+ </text>
+ <button label="Gönder" name="send_btn"/>
+ <button label="Kaydet (L$[AMOUNT])" name="upload_btn"/>
+ <flyout_button label="Kaydet" name="save_btn" tool_tip="Görüntüyü bir dosyaya kaydet">
+ <flyout_button.item label="Kaydet" name="save_item"/>
+ <flyout_button.item label="Farklı Kaydet..." name="saveas_item"/>
+ </flyout_button>
+ <button label="Daha Fazla" name="more_btn" tool_tip="Gelişmiş seçenekler"/>
+ <button label="Daha Az" name="less_btn" tool_tip="Gelişmiş seçenekler"/>
+ <button label="İptal" name="discard_btn"/>
+ <text name="type_label2">
+ Büyüklük
+ </text>
+ <text name="format_label">
+ Format
+ </text>
+ <combo_box label="Çözünürlük" name="postcard_size_combo">
+ <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/>
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ <combo_box.item label="Özel" name="Custom"/>
+ </combo_box>
+ <combo_box label="Çözünürlük" name="texture_size_combo">
+ <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/>
+ <combo_box.item label="Küçük (128x128)" name="Small(128x128)"/>
+ <combo_box.item label="Orta (256x256)" name="Medium(256x256)"/>
+ <combo_box.item label="Büyük (512x512)" name="Large(512x512)"/>
+ <combo_box.item label="Özel" name="Custom"/>
+ </combo_box>
+ <combo_box label="Çözünürlük" name="local_size_combo">
+ <combo_box.item label="Mevcut Pencere" 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="Özel" name="Custom"/>
+ </combo_box>
+ <combo_box label="Format" name="local_format_combo">
+ <combo_box.item label="PNG" name="PNG"/>
+ <combo_box.item label="JPEG" name="JPEG"/>
+ <combo_box.item label="BMP" name="BMP"/>
+ </combo_box>
+ <spinner label="Genişlik" name="snapshot_width"/>
+ <spinner label="Yükseklik" name="snapshot_height"/>
+ <check_box label="Oranları Koru" name="keep_aspect_check"/>
+ <slider label="Görüntü kalitesi" name="image_quality_slider"/>
+ <text name="layer_type_label">
+ Yakala:
+ </text>
+ <combo_box label="Görüntü Katmanları" name="layer_types">
+ <combo_box.item label="Renkler" name="Colors"/>
+ <combo_box.item label="Derinlik" name="Depth"/>
+ </combo_box>
+ <check_box label="Arayüz" name="ui_check"/>
+ <check_box label="BÜG&apos;ler" name="hud_check"/>
+ <check_box label="Kaydettikten sonra açık tut" name="keep_open_check"/>
+ <check_box label="Kare dondur (tam ekran)" name="freeze_frame_check"/>
+ <check_box label="Otomatik yenile" name="auto_snapshot_check"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
new file mode 100644
index 0000000000..470a222d7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_sound_devices" title="SES CİHAZLARI">
+ <text name="voice_label">
+ Sesli Sohbet
+ </text>
+ <check_box label="Etkin" name="enable_voice"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_preview.xml b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml
new file mode 100644
index 0000000000..1938f184b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Sound Preview" title="SOUND.WAV">
+ <text name="name_label">
+ Ad:
+ </text>
+ <text name="description_label">
+ Açıklama:
+ </text>
+ <button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/>
+ <button label="İptal" label_selected="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_stats.xml b/indra/newview/skins/default/xui/tr/floater_stats.xml
new file mode 100644
index 0000000000..17f1166c46
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_stats.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="İSTATİSTİKLER">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Temel" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="Bant genişliği" name="bandwidth"/>
+ <stat_bar label="Paket Kaybı" name="packet_loss"/>
+ <stat_bar label="Sim Pingi" name="ping"/>
+ </stat_view>
+ <stat_view label="Gelişmiş" name="advanced">
+ <stat_view label="İşle" name="render">
+ <stat_bar label="Çerçeve Başına Çizilen Üçgenler" name="ktrisframe"/>
+ <stat_bar label="Saniyede Bir Çizilen Üçgenler" name="ktrissec"/>
+ <stat_bar label="Toplam Nesne" name="objs"/>
+ <stat_bar label="Yeni Nesne" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Doku" name="texture">
+ <stat_bar label="Sayım" name="numimagesstat"/>
+ <stat_bar label="Ham Sayım" name="numrawimagesstat"/>
+ <stat_bar label="GL Belleği" name="gltexmemstat"/>
+ <stat_bar label="Formatlanmış Bellek" name="formattedmemstat"/>
+ <stat_bar label="Ham Bellek" name="rawmemstat"/>
+ <stat_bar label="Bağlı Doku Belleği" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Ağ" name="network">
+ <stat_bar label="Gelen Paketler" name="packetsinstat"/>
+ <stat_bar label="Giden Paketler" name="packetsoutstat"/>
+ <stat_bar label="Nesneler" name="objectkbitstat"/>
+ <stat_bar label="Doku" name="texturekbitstat"/>
+ <stat_bar label="Varlık" name="assetkbitstat"/>
+ <stat_bar label="Katmanlar" name="layerskbitstat"/>
+ <stat_bar label="Gerçekte Gelen" name="actualinkbitstat"/>
+ <stat_bar label="Gerçekte Giden" name="actualoutkbitstat"/>
+ <stat_bar label="VFS Bekleyen İşlemler" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Simülatör" name="sim">
+ <stat_bar label="Zaman Genleşmesi" name="simtimedilation"/>
+ <stat_bar label="Sim FPS" name="simfps"/>
+ <stat_bar label="Fizik FPS" name="simphysicsfps"/>
+ <stat_view label="Fizik Ayrıntıları" name="physicsdetail">
+ <stat_bar label="Sabitlenmiş Nesneler" name="physicspinnedtasks"/>
+ <stat_bar label="Düşük Ayrıntı Seviyesindeki Nesneler" name="physicslodtasks"/>
+ <stat_bar label="Ayrılan Bellek" name="physicsmemoryallocated"/>
+ </stat_view>
+ <stat_bar label="Aracı Güncelleştirmeleri/sn" name="simagentups"/>
+ <stat_bar label="Ana Aracılar" name="simmainagents"/>
+ <stat_bar label="Alt Aracılar" name="simchildagents"/>
+ <stat_bar label="Nesneler" name="simobjects"/>
+ <stat_bar label="Etkin Nesneler" name="simactiveobjects"/>
+ <stat_bar label="Etkin Komut Dosyaları" name="simactivescripts"/>
+ <stat_bar label="Komut Dosyası Etkinlikleri" name="simscripteps"/>
+ <stat_bar label="Gelen Paketler" name="siminpps"/>
+ <stat_bar label="Giden Paketler" name="simoutpps"/>
+ <stat_bar label="Bekleyen Karşıdan Yüklemeler" name="simpendingdownloads"/>
+ <stat_bar label="Bekleyen Karşıya Yüklemeler" name="simpendinguploads"/>
+ <stat_bar label="Toplam Bildirilmiş Bayt" name="simtotalunackedbytes"/>
+ <stat_view label="Zaman (ms)" name="simperf">
+ <stat_bar label="Toplam Çerçeve Süresi" name="simframemsec"/>
+ <stat_bar label="Net Süre" name="simnetmsec"/>
+ <stat_bar label="Fizik Süresi" name="simsimphysicsmsec"/>
+ <stat_bar label="Simülasyon Süresi" name="simsimothermsec"/>
+ <stat_bar label="Aracı Süresi" name="simagentmsec"/>
+ <stat_bar label="Görüntü Süresi" name="simimagesmsec"/>
+ <stat_bar label="Komut Dosyası Süresi" name="simscriptmsec"/>
+ <stat_bar label="Yedek Zaman" name="simsparemsec"/>
+ <stat_view label="Zaman Ayrıntıları (ms)" name="timedetails">
+ <stat_bar label="Fizik Adımı" name="simsimphysicsstepmsec"/>
+ <stat_bar label="Fizik Şekillerini Güncelle" name="simsimphysicsshapeupdatemsec"/>
+ <stat_bar label="Fizik Diğer" name="simsimphysicsothermsec"/>
+ <stat_bar label="Uyku Zamanı" name="simsleepmsec"/>
+ <stat_bar label="Pompa Giriş Çıkış" name="simpumpiomsec"/>
+ </stat_view>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sys_well.xml b/indra/newview/skins/default/xui/tr/floater_sys_well.xml
new file mode 100644
index 0000000000..301d9af063
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="BİLDİRİMLER">
+ <string name="title_im_well_window">
+ SOHBETLER
+ </string>
+ <string name="title_notification_well_window">
+ BİLDİRİMLER
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_telehub.xml b/indra/newview/skins/default/xui/tr/floater_telehub.xml
new file mode 100644
index 0000000000..2cdb464ed0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_telehub.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Explicit left edge to avoid overlapping build tools -->
+<floater name="telehub" title="IŞINLAMA İSTASYONU">
+ <text name="status_text_connected">
+ Işınlama istasyonu nesneye [OBJECT] bağlandı
+ </text>
+ <text name="status_text_not_connected">
+ Hiçbir ışınlama istasyonu bağlı değil
+ </text>
+ <text name="help_text_connected">
+ Çıkarmak için, Bağlantıyı Kes&apos;e tıkla.
+ </text>
+ <text name="help_text_not_connected">
+ Nesneyi seç ve Işınlama İstasyonuna Bağlan&apos;a tıkla
+ </text>
+ <button label="Işınlanma İstasyonuna Bağlan" name="connect_btn"/>
+ <button label="Bağlantıyı Kes" name="disconnect_btn"/>
+ <text name="spawn_points_text">
+ Üreme Noktaları (konumlar, nesneler değil):
+ </text>
+ <button label="Üreme Ekle" name="add_spawn_point_btn"/>
+ <button label="Üreme Çıkar" name="remove_spawn_point_btn"/>
+ <text name="spawn_point_help">
+ Konum belirtmek için nesneyi seç ve &quot;Üreme Ekle&quot;ye tıkla
+Daha sonra nesneyi taşıyabilir veya silebilirsiniz.
+Konumlar ışınlanma istasyonu merkezine görelidir.
+SL dünyasında vurgulamak için listedeki bir ögeyi seçin.
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
new file mode 100644
index 0000000000..4ef789f585
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="texture picker" title="SEÇME: DOKU">
+ <floater.string name="choose_picture">
+ Bir resim seçmek için tıklayın
+ </floater.string>
+ <floater.string name="pick title">
+ Seçme:
+ </floater.string>
+ <text name="Multiple">
+ Birden çok doku
+ </text>
+ <text name="unknown">
+ Büyüklük: [DIMENSIONS]
+ </text>
+ <button label="Varsayılan" label_selected="Varsayılan" name="Default"/>
+ <button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
+ <button label="Boş" label_selected="Boş" name="Blank"/>
+ <check_box initial_value="true" label="Şimdi uygula" name="apply_immediate_check"/>
+ <filter_editor label="Dokuları Filtrele" name="inventory search editor"/>
+ <check_box initial_value="false" label="Klasörleri göster" name="show_folders_check"/>
+ <button label="Tamam" label_selected="Tamam" name="Select"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml
new file mode 100644
index 0000000000..d4ee9995dd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_tools.xml
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="İNŞA ET ARAÇLARI">
+ <floater.string name="status_rotate">
+ Nesneyi döndürmek için renkli bantları sürükleyin
+ </floater.string>
+ <floater.string name="status_scale">
+ Seçilen tarafı uzatmak için tıklayın ve sürükleyin
+ </floater.string>
+ <floater.string name="status_move">
+ Hareket ettirmek için sürükleyin, kopyalamak için Shift ile sürükleyin
+ </floater.string>
+ <floater.string name="status_modifyland">
+ Araziyi değiştirmek için tıklayın ve tutun
+ </floater.string>
+ <floater.string name="status_camera">
+ Kamerayı hareket ettirmek için tıklayın ve sürükleyin
+ </floater.string>
+ <floater.string name="status_grab">
+ Hareket ettirmek için sürükleyin, kaldırmak için Ctrl, döndürmek için Ctrl+Shift kullanın
+ </floater.string>
+ <floater.string name="status_place">
+ İnşa etmek için SL dünyası içine tıklayın
+ </floater.string>
+ <floater.string name="status_selectland">
+ Araziyi seçmek için tıklayın ve sürükleyin
+ </floater.string>
+ <floater.string name="status_selectcount">
+ [OBJ_COUNT] nesne seçili, [LAND_IMPACT] arazi etkisi
+ </floater.string>
+ <floater.string name="status_remaining_capacity">
+ Kalan kapasite [LAND_CAPACITY].
+ </floater.string>
+ <button name="button focus" tool_tip="Odak"/>
+ <button name="button move" tool_tip="Hareket Et"/>
+ <button name="button edit" tool_tip="Düzenle"/>
+ <button name="button create" tool_tip="Oluştur"/>
+ <button name="button land" tool_tip="Arazi"/>
+ <text name="text status">
+ Hareket ettirmek için sürükleyin, kopyalamak için Shift ile sürükleyin
+ </text>
+ <radio_group name="focus_radio_group">
+ <radio_item label="Yakınlaştır" name="radio zoom"/>
+ <radio_item label="Yörünge Değişimi (Ctrl)" name="radio orbit"/>
+ <radio_item label="Kamerayı Çevir (Ctrl+Shift)" name="radio pan"/>
+ </radio_group>
+ <slider_bar initial_value="0.125" name="slider zoom"/>
+ <radio_group name="move_radio_group">
+ <radio_item label="Hareket Et" name="radio move"/>
+ <radio_item label="Kaldır (Ctrl)" name="radio lift"/>
+ <radio_item label="Çevir (Ctrl+Shift)" name="radio spin"/>
+ </radio_group>
+ <radio_group name="edit_radio_group">
+ <radio_item label="Hareket Et" name="radio position"/>
+ <radio_item label="Döndür (Ctrl)" name="radio rotate"/>
+ <radio_item label="Uzat (Ctrl+Shift)" name="radio stretch"/>
+ <radio_item label="Yüzü Seç" name="radio select face"/>
+ </radio_group>
+ <check_box label="Bağlantılıları düzenle" name="checkbox edit linked parts"/>
+ <button label="Bağla" name="link_btn"/>
+ <button label="Bağlantıyı Kopar" name="unlink_btn"/>
+ <text label="Her İki Tarafı Uzat" name="checkbox uniform label">
+ Her İki Tarafı Uzat
+ </text>
+ <check_box initial_value="true" label="Dokuları Uzat" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="Yasla" name="checkbox snap to grid"/>
+ <button label="Seçenekler..." name="Options..." tool_tip="İlave ağ seçeneklerine bak"/>
+ <button name="ToolCube" tool_tip="Küp"/>
+ <button name="ToolPrism" tool_tip="Prizma"/>
+ <button name="ToolPyramid" tool_tip="Piramit"/>
+ <button name="ToolTetrahedron" tool_tip="Üçgen Piramit"/>
+ <button name="ToolCylinder" tool_tip="Silindir"/>
+ <button name="ToolHemiCylinder" tool_tip="Yarı Silindir"/>
+ <button name="ToolCone" tool_tip="Koni"/>
+ <button name="ToolHemiCone" tool_tip="Yarı Koni"/>
+ <button name="ToolSphere" tool_tip="Küre"/>
+ <button name="ToolHemiSphere" tool_tip="Yarı Küre"/>
+ <button name="ToolTorus" tool_tip="Torus"/>
+ <button name="ToolTube" tool_tip="Tüp"/>
+ <button name="ToolRing" tool_tip="Halka"/>
+ <button name="ToolTree" tool_tip="Ağaç"/>
+ <button name="ToolGrass" tool_tip="Çimen"/>
+ <check_box label="Seçili Aracı tut" name="checkbox sticky"/>
+ <check_box label="Seçimi kopyala" name="checkbox copy selection"/>
+ <check_box initial_value="true" label="Kopyayı Merkezle" name="checkbox copy centers"/>
+ <check_box label="Kopyayı Döndür" name="checkbox copy rotates"/>
+ <radio_group name="land_radio_group">
+ <radio_item label="Araziyi Seç" name="radio select land"/>
+ <radio_item label="Düzleştir" name="radio flatten"/>
+ <radio_item label="Yükselt" name="radio raise"/>
+ <radio_item label="Alçalt" name="radio lower"/>
+ <radio_item label="Düzgünleştir" name="radio smooth"/>
+ <radio_item label="Pürüzlendir" name="radio noise"/>
+ <radio_item label="Geri Çevir" name="radio revert"/>
+ </radio_group>
+ <text name="Bulldozer:">
+ Buldozer:
+ </text>
+ <text name="Dozer Size:">
+ Büyüklük
+ </text>
+ <slider_bar initial_value="2.0" name="slider brush size"/>
+ <text name="Strength:">
+ Kuvvet
+ </text>
+ <slider_bar initial_value="0.00" name="slider force"/>
+ <button label="Uygula" label_selected="Uygula" name="button apply to selection" tool_tip="Seçilen araziyi değiştirin"/>
+ <text name="selection_empty">
+ Seçilen bir şey yok.
+ </text>
+ <text name="remaining_capacity">
+ [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Ek bilgi]
+ </text>
+ <tab_container name="Object Info Tabs">
+ <panel label="Genel" name="General">
+ <panel.string name="text deed continued">
+ Devret
+ </panel.string>
+ <panel.string name="text deed">
+ Devret
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Bu nesneyi değiştirebilirsiniz
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Bu nesneleri değiştirebilirsiniz
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Bu nesneyi değiştiremezsiniz
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Bu nesneleri değiştiremezsiniz
+ </panel.string>
+ <panel.string name="text modify warning">
+ İzinleri ayarlamak için tüm nesneyi seçmelisiniz
+ </panel.string>
+ <panel.string name="Cost Default">
+ Fiyat: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Toplam Fiyat: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Birim Fiyatı: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Karma Fiyat
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Karma Satış
+ </panel.string>
+ <text name="Name:">
+ Ad:
+ </text>
+ <text name="Description:">
+ Açıklama:
+ </text>
+ <text name="Creator:">
+ Oluşturan:
+ </text>
+ <text name="Owner:">
+ Sahip:
+ </text>
+ <text name="Group:">
+ Grup:
+ </text>
+ <name_box initial_value="Yükleniyor..." name="Group Name Proxy"/>
+ <button name="button set group" tool_tip="Bu nesnenin izinlerini paylaşmak için bir grup seçin"/>
+ <check_box label="Paylaş" name="checkbox share with group" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/>
+ <button label="Devret" label_selected="Devret" name="button deed" tool_tip="Bu nesne devredilerek verildiğinde, nesnenin sonraki sahibi için izinler geçerli olur. Grup içerisinde paylaşılan nesneler bir grup yetkilisi tarafından devredilebilir."/>
+ <text name="label click action">
+ Şu eylem için tıklayın:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="Dokun (varsayılan)" name="Touch/grab(default)"/>
+ <combo_box.item label="Nesnenin üzerine otur" name="Sitonobject"/>
+ <combo_box.item label="Nesneyi satın al" name="Buyobject"/>
+ <combo_box.item label="Nesneye ödeme yap" name="Payobject"/>
+ <combo_box.item label="Aç" name="Open"/>
+ <combo_box.item label="Yakınlaştır" name="Zoom"/>
+ </combo_box>
+ <check_box label="Satılık:" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <combo_box.item label="Kopyala" name="Copy"/>
+ <combo_box.item label="İçerik" name="Contents"/>
+ <combo_box.item label="Orijinal" name="Original"/>
+ </combo_box>
+ <spinner label="Fiyat: L$" name="Edit Cost"/>
+ <check_box label="Aramada göster" name="search_check" tool_tip="Kişiler arama sonuçlarında bu nesneyi görebilsin"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Bu nesneyi değiştirebilirsiniz
+ </text>
+ <text name="Anyone can:">
+ Herkes:
+ </text>
+ <check_box label="Hareket Et" name="checkbox allow everyone move"/>
+ <check_box label="Kopyala" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Sonraki sahip:
+ </text>
+ <check_box label="Değiştir" name="checkbox next owner can modify"/>
+ <check_box label="Kopyala" name="checkbox next owner can copy"/>
+ <check_box label="Aktar" name="checkbox next owner can transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+ <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="Nesne" name="Object">
+ <check_box label="Kilitli" name="checkbox locked" tool_tip="Nesnenin hareket ettirilmesini veya silinmesini engeller. Arzulanmayan düzenlemelerden kaçınmak için inşa işlemleri sırasında oldukça faydalıdır."/>
+ <check_box label="Fiziksel" name="Physical Checkbox Ctrl" tool_tip="Nesnelerin itilmesine ve yerçekiminden etkilenmesine izin verir."/>
+ <check_box label="Geçici" name="Temporary Checkbox Ctrl" tool_tip="Nesnenin oluşturulduktan 1 dakika sonra silinmesine neden olur"/>
+ <check_box label="Fantom" name="Phantom Checkbox Ctrl" tool_tip="Nesnenin diğer nesneler veya avatarlarla çarpışmamasına neden olur"/>
+ <text name="label position">
+ Konum (metre)
+ </text>
+ <spinner label="X" name="Pos X"/>
+ <spinner label="Y" name="Pos Y"/>
+ <spinner label="Z" name="Pos Z"/>
+ <text name="label size">
+ Büyüklük (metre)
+ </text>
+ <spinner label="X" name="Scale X"/>
+ <spinner label="Y" name="Scale Y"/>
+ <spinner label="Z" name="Scale Z"/>
+ <text name="label rotation">
+ Dönüş (derece)
+ </text>
+ <spinner label="X" name="Rot X"/>
+ <spinner label="Y" name="Rot Y"/>
+ <spinner label="Z" name="Rot Z"/>
+ <combo_box name="comboBaseType">
+ <combo_box.item label="Kutu" name="Box"/>
+ <combo_box.item label="Silindir" name="Cylinder"/>
+ <combo_box.item label="Prizma" name="Prism"/>
+ <combo_box.item label="Küre" name="Sphere"/>
+ <combo_box.item label="Torus" name="Torus"/>
+ <combo_box.item label="Tüp" name="Tube"/>
+ <combo_box.item label="Halka" name="Ring"/>
+ <combo_box.item label="Şekillendirilmiş" name="Sculpted"/>
+ </combo_box>
+ <text name="text cut">
+ Yolu Kes (başlangıç/son)
+ </text>
+ <spinner label="B DİKKAT" name="cut begin"/>
+ <spinner label="D - DİKKAT" name="cut end"/>
+ <text name="text hollow">
+ Oyuk
+ </text>
+ <text name="text skew">
+ Çarpıt
+ </text>
+ <text name="Hollow Shape">
+ Oyuk Şekil
+ </text>
+ <combo_box name="hole">
+ <combo_box.item label="Varsayılan" name="Default"/>
+ <combo_box.item label="Daire" name="Circle"/>
+ <combo_box.item label="Kare" name="Square"/>
+ <combo_box.item label="Üçgen" name="Triangle"/>
+ </combo_box>
+ <text name="text twist">
+ Bük (başlangıç/son)
+ </text>
+ <spinner label="B DİKKAT" name="Twist Begin"/>
+ <spinner label="D - DİKKAT" name="Twist End"/>
+ <text name="scale_taper">
+ Kısalt
+ </text>
+ <text name="scale_hole">
+ Delik Büyüklüğü
+ </text>
+ <spinner label="X" name="Taper Scale X"/>
+ <spinner label="Y" name="Taper Scale Y"/>
+ <text name="text topshear">
+ Üstü Kaydır
+ </text>
+ <spinner label="X" name="Shear X"/>
+ <spinner label="Y" name="Shear Y"/>
+ <text name="advanced_cut">
+ Profili Kes (başlangıç/son)
+ </text>
+ <text name="advanced_dimple">
+ Çukurlaştır (başlangıç/son)
+ </text>
+ <text name="advanced_slice">
+ Dilimle (başlangıç/son)
+ </text>
+ <spinner label="B" name="Path Limit Begin"/>
+ <spinner label="D" name="Path Limit End"/>
+ <text name="text taper2">
+ Kısalt
+ </text>
+ <spinner label="X" name="Taper X"/>
+ <spinner label="Y" name="Taper Y"/>
+ <text name="text radius delta">
+ Yarıçap
+ </text>
+ <text name="text revolutions">
+ Dönüş
+ </text>
+ <texture_picker label="Dokuyu Şekillendir" name="sculpt texture control" tool_tip="Bir resim seçmek için tıklayın"/>
+ <check_box label="Ayna" name="sculpt mirror control" tool_tip="Şekillendirilmiş primi X ekseni etrafında döndürür"/>
+ <check_box label="İçini Dışına Çıkar" name="sculpt invert control" tool_tip="Şekillendirilmiş prim normallerini tersine çevirir, iç kısmı dışarıda gösterir"/>
+ <text name="label sculpt type">
+ Dikiş türü
+ </text>
+ <combo_box name="sculpt type control">
+ <combo_box.item label="Küre" name="Sphere"/>
+ <combo_box.item label="Torus" name="Torus"/>
+ <combo_box.item label="Düzlem" name="Plane"/>
+ <combo_box.item label="Silindir" name="Cylinder"/>
+ </combo_box>
+ </panel>
+ <panel label="Özellikler" name="Features">
+ <panel.string name="None">
+ Hiçbiri
+ </panel.string>
+ <panel.string name="Prim">
+ Prim
+ </panel.string>
+ <panel.string name="Convex Hull">
+ Dışbükey Gövde
+ </panel.string>
+ <text name="select_single">
+ Özelliklerini düzenlemek için sadece bir tane ilkel öğeyi seçin.
+ </text>
+ <text name="edit_object">
+ Nesne özelliklerini düzenleyin:
+ </text>
+ <check_box label="Esnek Yol" name="Flexible1D Checkbox Ctrl" tool_tip="Nesnelerin Z ekseni etrafında esnemesine imkan tanır (sadece istemci tarafında)"/>
+ <spinner label="Yumuşaklık" name="FlexNumSections"/>
+ <spinner label="Yerçekimi" name="FlexGravity"/>
+ <spinner label="Sürükle" name="FlexFriction"/>
+ <spinner label="Rüzgar" name="FlexWind"/>
+ <spinner label="Gerilim" name="FlexTension"/>
+ <spinner label="X Kuvveti" name="FlexForceX"/>
+ <spinner label="Y Kuvveti" name="FlexForceY"/>
+ <spinner label="Z Kuvveti" name="FlexForceZ"/>
+ <check_box label="Işık" name="Light Checkbox Ctrl" tool_tip="Nesnelerin ışık yaymasına neden olur"/>
+ <color_swatch name="colorswatch" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ <texture_picker label="" name="light texture control" tool_tip="Bir projeksiyon görüntüsü seçmek için tıklayın (sadece ertelenmiş işleme etkinken geçerlidir)"/>
+ <spinner label="Yoğunluk" name="Light Intensity"/>
+ <spinner label="Görünüm Alanı" name="Light FOV"/>
+ <spinner label="Yarıçap" name="Light Radius"/>
+ <spinner label="Odak" name="Light Focus"/>
+ <spinner label="Işık Azalması" name="Light Falloff"/>
+ <spinner label="Ambiyans" name="Light Ambiance"/>
+ <text name="label physicsshapetype">
+ Fizik Şekil Türü:
+ </text>
+ <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Fizik şekil türünü seçin"/>
+ <combo_box name="material">
+ <combo_box.item label="Taş" name="Stone"/>
+ <combo_box.item label="Metal" name="Metal"/>
+ <combo_box.item label="Cam" name="Glass"/>
+ <combo_box.item label="Ahşap" name="Wood"/>
+ <combo_box.item label="Et" name="Flesh"/>
+ <combo_box.item label="Plastik" name="Plastic"/>
+ <combo_box.item label="Lastik" name="Rubber"/>
+ </combo_box>
+ <spinner label="Yerçekimi" name="Physics Gravity"/>
+ <spinner label="Sürtünme" name="Physics Friction"/>
+ <spinner label="100 kg/m3 cinsinden yoğunluk" name="Physics Density"/>
+ <spinner label="Restitüsyon" name="Physics Restitution"/>
+ </panel>
+ <panel label="Doku" name="Texture">
+ <panel.string name="string repeats per meter">
+ Metrede Kaç Kez Tekrarlandığı
+ </panel.string>
+ <panel.string name="string repeats per face">
+ Bir Yüzde Kaç Kez Tekrarlandığı
+ </panel.string>
+ <texture_picker label="Doku" name="texture control" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk" name="colorswatch" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ <text name="color trans">
+ Saydamlık %
+ </text>
+ <text name="glow label">
+ Parıltı
+ </text>
+ <check_box label="Tam Parlak" name="checkbox fullbright"/>
+ <text name="tex gen">
+ Eşleştirme
+ </text>
+ <combo_box name="combobox texgen">
+ <combo_box.item label="Varsayılan" name="Default"/>
+ <combo_box.item label="Planar" name="Planar"/>
+ </combo_box>
+ <text name="label shininess">
+ Parıldama
+ </text>
+ <combo_box name="combobox shininess">
+ <combo_box.item label="Hiçbiri" name="None"/>
+ <combo_box.item label="Düşük" name="Low"/>
+ <combo_box.item label="Orta" name="Medium"/>
+ <combo_box.item label="Yüksek" name="High"/>
+ </combo_box>
+ <text name="label bumpiness">
+ Yumruluk
+ </text>
+ <combo_box name="combobox bumpiness">
+ <combo_box.item label="Hiçbiri" name="None"/>
+ <combo_box.item label="Parlaklık" name="Brightness"/>
+ <combo_box.item label="Koyuluk" name="Darkness"/>
+ <combo_box.item label="damarlı ahşap" name="woodgrain"/>
+ <combo_box.item label="ağaç kabuğu" name="bark"/>
+ <combo_box.item label="tuğlalar" name="bricks"/>
+ <combo_box.item label="dama tahtası" name="checker"/>
+ <combo_box.item label="beton" name="concrete"/>
+ <combo_box.item label="sert çini" name="crustytile"/>
+ <combo_box.item label="kesilmiş taş" name="cutstone"/>
+ <combo_box.item label="diskler" name="discs"/>
+ <combo_box.item label="çakıl" name="gravel"/>
+ <combo_box.item label="petri kabı" name="petridish"/>
+ <combo_box.item label="dış kaplama" name="siding"/>
+ <combo_box.item label="taş çini" name="stonetile"/>
+ <combo_box.item label="stükko" name="stucco"/>
+ <combo_box.item label="vakum" name="suction"/>
+ <combo_box.item label="örgü" name="weave"/>
+ </combo_box>
+ <check_box initial_value="false" label="Planar yüzleri hizala" name="checkbox planar align" tool_tip="Tüm seçili yüzeylerdeki dokuları son seçili yüzdekiyle hizalar. Planar doku eşleştirmesi gerektirir."/>
+ <text name="rpt">
+ Tekrarlar / Yüz
+ </text>
+ <spinner label="Yatay (U)" name="TexScaleU"/>
+ <check_box label="Çevir" name="checkbox flip s"/>
+ <spinner label="Dikey (V)" name="TexScaleV"/>
+ <check_box label="Çevir" name="checkbox flip t"/>
+ <spinner label="Döndürme*" name="TexRot"/>
+ <spinner label="Tekrarlar / Metre" name="rptctrl"/>
+ <button label="Uygula" label_selected="Uygula" name="button apply"/>
+ <text name="tex offset">
+ Doku Dengeleyicisi
+ </text>
+ <spinner label="Yatay (U)" name="TexOffsetU"/>
+ <spinner label="Dikey (V)" name="TexOffsetV"/>
+ <panel name="Add_Media">
+ <text name="media_tex">
+ Ortam
+ </text>
+ <button name="add_media" tool_tip="Ortam Ekle"/>
+ <button name="delete_media" tool_tip="Bu ortam dokusunu sil"/>
+ <button name="edit_media" tool_tip="Bu Ortamı Düzenle"/>
+ <button label="Hizala" label_selected="Ortamı Hizala" name="button align" tool_tip="Ortam dokusunu hizala (önce yüklenmelidir)"/>
+ </panel>
+ </panel>
+ <panel label="İçerik" name="Contents">
+ <button label="Yeni Komut Dosyası" label_selected="Yeni Komut Dosyası" name="button new script"/>
+ <button label="İzinler" name="button permissions"/>
+ </panel>
+ </tab_container>
+ <panel name="land info panel">
+ <text name="label_parcel_info">
+ Parsel Bilgisi
+ </text>
+ <text name="label_area_price">
+ Fiyat: [AREA] m² için L$[PRICE]
+ </text>
+ <text name="label_area">
+ Alan: [AREA] m²
+ </text>
+ <button label="Arazi Hakkında" label_selected="Arazi Hakkında" name="button about land"/>
+ <check_box label="Sahipleri göster" name="checkbox show owners" tool_tip="Sahip türüne göre parselleri renklendir: Yeşil = Sizin araziniz Deniz Mavisi = Grubunuzun arazisi Kırmızı = Başkalarının mülkiyetinde Sarı = Satılık Mor = Açık artırmada Gri = Kamuya açık"/>
+ <text name="label_parcel_modify">
+ Parseli Değiştir
+ </text>
+ <button label="Böl" label_selected="Böl" name="button subdivide land"/>
+ <button label="Birleştir" label_selected="Birleştir" name="button join land"/>
+ <text name="label_parcel_trans">
+ Arazi Alışverişleri
+ </text>
+ <button label="Arazi Satın Al" label_selected="Arazi Satın Al" name="button buy land"/>
+ <button label="Araziyi Terket" label_selected="Araziyi Terket" name="button abandon land"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_top_objects.xml b/indra/newview/skins/default/xui/tr/floater_top_objects.xml
new file mode 100644
index 0000000000..e726f583cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_top_objects.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="top_objects" title="Top Nesneler">
+ <floater.string name="top_scripts_title">
+ Top Komut Dosyaları
+ </floater.string>
+ <floater.string name="top_scripts_text">
+ [COUNT] komut tosyası toplam [TIME] ms sürüyor
+ </floater.string>
+ <floater.string name="scripts_score_label">
+ Süre
+ </floater.string>
+ <floater.string name="scripts_mono_time_label">
+ Mono Süre
+ </floater.string>
+ <floater.string name="top_colliders_title">
+ En Çok Çarpışanlar
+ </floater.string>
+ <floater.string name="top_colliders_text">
+ En çok potansiyel çarpışma yaşayan [COUNT] nesne
+ </floater.string>
+ <floater.string name="colliders_score_label">
+ Skor
+ </floater.string>
+ <floater.string name="none_descriptor">
+ Hiçbiri bulunamadı.
+ </floater.string>
+ <text name="title_text">
+ Yükleniyor...
+ </text>
+ <scroll_list name="objects_list">
+ <scroll_list.columns label="Skor" name="score"/>
+ <scroll_list.columns label="Ad" name="name"/>
+ <scroll_list.columns label="Sahip" name="owner"/>
+ <scroll_list.columns label="Konum" name="location"/>
+ <scroll_list.columns label="Süre" name="time"/>
+ <scroll_list.columns label="Mono Süre" name="mono_time"/>
+ <scroll_list.columns label="URL&apos;ler" name="URLs"/>
+ </scroll_list>
+ <text name="id_text">
+ Nesne Kimliği:
+ </text>
+ <button label="İşareti Göster" name="show_beacon_btn"/>
+ <text name="obj_name_text">
+ Nesne adı:
+ </text>
+ <button label="Filtrele" name="filter_object_btn"/>
+ <text name="owner_name_text">
+ Sahip:
+ </text>
+ <button label="Filtrele" name="filter_owner_btn"/>
+ <button label="Seçileni İade Et" name="return_selected_btn"/>
+ <button label="Tümünü İade Et" name="return_all_btn"/>
+ <button label="Seçileni Devre Dışı Bırak" name="disable_selected_btn"/>
+ <button label="Tümüni Devre Dışı Bırak" name="disable_all_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_tos.xml b/indra/newview/skins/default/xui/tr/floater_tos.xml
new file mode 100644
index 0000000000..7ff0001ddd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_tos.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+ <floater.string name="real_url">
+ http://secondlife.com/app/tos/
+ </floater.string>
+ <floater.string name="loading_url">
+ data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
+ </floater.string>
+ <button label="Devam Et" label_selected="Devam Et" name="Continue"/>
+ <button label="İptal" label_selected="İptal" name="Cancel"/>
+ <check_box label="Hizmet Koşullarını ve Gizlilik Politikasını Kabul Ediyorum" name="agree_chk"/>
+ <text name="tos_heading">
+ Aşağıdaki Hizmet Koşullarını ve Gizlilik Politikasını dikkatle okuyun. [SECOND_LIFE]&apos;ta oturum açmaya devam etmek için anlaşmayı kabul etmelisiniz.
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_toybox.xml b/indra/newview/skins/default/xui/tr/floater_toybox.xml
new file mode 100644
index 0000000000..05d3633df0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="ARAÇ ÇUBUKLARINI ÖZELLEŞTİR">
+ <text name="toybox label 1">
+ Düğmeleri araç çubuklarına veya araç çubuklarından sürükleyerek ekleyin ya da kaldırın.
+ </text>
+ <text name="toybox label 2">
+ Her bir araç çubuğunun ayarına göre düğmeler gösterilir veya sadece simgeleri yer alır.
+ </text>
+ <button label="Varsayılanları geri yükle" label_selected="Varsayılanları geri yükle" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_url_entry.xml b/indra/newview/skins/default/xui/tr/floater_url_entry.xml
new file mode 100644
index 0000000000..54c5b047a8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_url_entry.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="url_entry">
+ <text name="media_label">
+ Ortam URL&apos;si:
+ </text>
+ <button label="Tamam" name="ok_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+ <button label="Temizle" name="clear_btn"/>
+ <text name="loading_label">
+ Yükleniyor...
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
new file mode 100644
index 0000000000..dac05d8327
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="SES DENETİMLERİ">
+ <string name="title_nearby">
+ Yakındaki ses
+ </string>
+ <string name="title_group">
+ [GROUP] ile grup araması
+ </string>
+ <string name="title_adhoc">
+ Konferans araması
+ </string>
+ <string name="title_peer_2_peer">
+ [NAME] ile arama
+ </string>
+ <string name="no_one_near">
+ Yakındaki kimsede ses etkin değil
+ </string>
+ <layout_stack name="my_call_stack">
+ <layout_panel name="my_panel">
+ <text name="user_text" value="Avatarım:"/>
+ </layout_panel>
+ <layout_panel name="leave_call_panel">
+ <layout_stack name="voice_effect_and_leave_call_stack">
+ <layout_panel name="leave_call_btn_panel">
+ <button label="Aramadan Ayrıl" name="leave_call_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
new file mode 100644
index 0000000000..a10da39a69
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Yerler" name="voice_effects" title="SES ŞEKİLLENDİRME">
+ <string name="no_voice_effect">
+ (Ses Şekillendirme Yok)
+ </string>
+ <string name="active_voice_effect">
+ (Etkin)
+ </string>
+ <string name="unsubscribed_voice_effect">
+ (Abonelik İptal)
+ </string>
+ <string name="new_voice_effect">
+ (Yeni!)
+ </string>
+ <string name="effect_Arena">
+ Arena
+ </string>
+ <string name="effect_Beast">
+ Yaratık
+ </string>
+ <string name="effect_Buff">
+ Yapılı
+ </string>
+ <string name="effect_Buzz">
+ Vızıltı
+ </string>
+ <string name="effect_Camille">
+ Camille
+ </string>
+ <string name="effect_Creepy">
+ Korkutucu
+ </string>
+ <string name="effect_CreepyBot">
+ KorkutucuBot
+ </string>
+ <string name="effect_Cyber">
+ Siber
+ </string>
+ <string name="effect_DeepBot">
+ DerinBot
+ </string>
+ <string name="effect_Demon">
+ İblis
+ </string>
+ <string name="effect_Flirty">
+ Cilveli
+ </string>
+ <string name="effect_Foxy">
+ Alımlı
+ </string>
+ <string name="effect_Halloween_2010_Bonus">
+ Halloween_2010_Bonus
+ </string>
+ <string name="effect_Helium">
+ Helyum
+ </string>
+ <string name="effect_Husky">
+ Güçlü
+ </string>
+ <string name="effect_Intercom">
+ İnterkom
+ </string>
+ <string name="effect_Macho">
+ Maço
+ </string>
+ <string name="effect_Micro">
+ Mikro
+ </string>
+ <string name="effect_Mini">
+ Mini
+ </string>
+ <string name="effect_Nano">
+ Nano
+ </string>
+ <string name="effect_Nightmare">
+ Kabus
+ </string>
+ <string name="effect_PopBot">
+ PopBot
+ </string>
+ <string name="effect_Rachel">
+ Rachel
+ </string>
+ <string name="effect_Radio">
+ Radyo
+ </string>
+ <string name="effect_Robot">
+ Robot
+ </string>
+ <string name="effect_Roxanne">
+ Roxanne
+ </string>
+ <string name="effect_Sabrina">
+ Sabrina
+ </string>
+ <string name="effect_Samantha">
+ Samantha
+ </string>
+ <string name="effect_Sexy">
+ Seksi
+ </string>
+ <string name="effect_Shorty">
+ Bücür
+ </string>
+ <string name="effect_Sneaky">
+ Sinsi
+ </string>
+ <string name="effect_Stallion">
+ Maskülen
+ </string>
+ <string name="effect_Sultry">
+ İhtiraslı
+ </string>
+ <string name="effect_Thunder">
+ Gök gürültüsü
+ </string>
+ <string name="effect_Vixen">
+ Çekici
+ </string>
+ <string name="effect_WhinyBot">
+ AğlakBot
+ </string>
+ <text name="preview_text">
+ Önizleme için
+ </text>
+ <text name="status_text">
+ Bir örnek kaydettikten sonra sese tıklayarak nasıl olduğunu duyun.
+ </text>
+ <button label="Kaydet" name="record_btn" tool_tip="Sesinizin örneğini kaydedin."/>
+ <button label="Durdur" name="record_stop_btn"/>
+ <text name="voice_morphing_link">
+ [[URL] Hemen Abone Ol]
+ </text>
+ <scroll_list name="voice_effect_list" tool_tip="Sesinizin örneğini kaydettikten sonra önizleme için bir efekte tıklayın.">
+ <scroll_list.columns label="Ses Adı" name="name"/>
+ <scroll_list.columns label="Bitiş Tarihi" name="expires"/>
+ </scroll_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_water.xml b/indra/newview/skins/default/xui/tr/floater_water.xml
new file mode 100644
index 0000000000..66d6c1e30d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_water.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Water Floater" title="GELİŞMİŞ SU DÜZENLEYİCİ">
+ <floater.string name="WLDefaultWaterNames">
+ Varsayılan:Camsı:Havuz:çamurlu:İkinci Veba:YILAN!!!:Valdez
+ </floater.string>
+ <text name="KeyFramePresetsText">
+ Su Ön Ayarları:
+ </text>
+ <button label="Yeni" label_selected="Yeni" name="WaterNewPreset"/>
+ <button label="Kaydet" label_selected="Kaydet" name="WaterSavePreset"/>
+ <button label="Sil" label_selected="Sil" name="WaterDeletePreset"/>
+ <tab_container name="Water Tabs">
+ <panel label="AYARLAR" name="Settings">
+ <text name="BHText">
+ Su Sisi Rengi
+ </text>
+ <color_swatch name="WaterFogColor" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ <text name="WaterFogDensText">
+ Su Yoğunluk Üssü
+ </text>
+ <text name="WaterUnderWaterFogModText">
+ Sualtı Sis Değiştiricisi
+ </text>
+ <text name="BDensText">
+ Yansıma Dalgacığı Ölçeği
+ </text>
+ <slider label="1" name="WaterNormalScaleX"/>
+ <slider label="2" name="WaterNormalScaleY"/>
+ <slider label="3" name="WaterNormalScaleZ"/>
+ <text name="HDText">
+ Fresnel Ölçeği
+ </text>
+ <text name="FresnelOffsetText">
+ Fresnel Dengeleyicisi
+ </text>
+ <text name="DensMultText">
+ Yukarıdan Kırılma Ölçeği
+ </text>
+ <text name="WaterScaleBelowText">
+ Aşağıdan Kırılma Ölçeği
+ </text>
+ <text name="MaxAltText">
+ Bulanıklaştırma Çarpanı
+ </text>
+ </panel>
+ <panel label="GÖRÜNTÜ" name="Waves">
+ <text name="BHText">
+ Büyük Dalga Yönü
+ </text>
+ <text name="WaterWave1DirXText">
+ X
+ </text>
+ <text name="WaterWave1DirYText">
+ Y
+ </text>
+ <text name="BHText2">
+ Küçük Dalga Yönü
+ </text>
+ <text name="WaterWave2DirXText">
+ X
+ </text>
+ <text name="WaterWave2DirYText">
+ Y
+ </text>
+ <text name="BHText3">
+ Normal Harita
+ </text>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_web_content.xml b/indra/newview/skins/default/xui/tr/floater_web_content.xml
new file mode 100644
index 0000000000..93491b80fb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_web_content.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_web_content" title="">
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button name="back" tool_tip="Geri Git"/>
+ <button name="forward" tool_tip="İleri Git"/>
+ <button name="stop" tool_tip="Navigasyonu durdur"/>
+ <button name="reload" tool_tip="Sayfayı tekrar yükle"/>
+ <combo_box name="address" tool_tip="URL&apos;yi buraya gir"/>
+ <icon name="media_secure_lock_flag" tool_tip="Güvenli Tarama"/>
+ <button name="popexternal" tool_tip="Mevcut URL&apos;yi masaüstü tarayıcıda aç"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml
new file mode 100644
index 0000000000..1a9f731af0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry" title="GÜVENİLENLER LİSTESİ GİRİŞİ">
+ <text name="media_label">
+ İzin verilen alan adlarının listesine eklemek için bir URL ya da URL örneği girin
+ </text>
+ <line_editor name="whitelist_entry" tool_tip="Güvenilenler Listesine eklemek için bir URL ya da URL örneği girin"/>
+ <button label="Tamam" name="ok_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_windlight_options.xml b/indra/newview/skins/default/xui/tr/floater_windlight_options.xml
new file mode 100644
index 0000000000..6c5fba374c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_windlight_options.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="WindLight floater" title="GELİŞMİŞ GÖKYÜZÜ DÜZENLEYİCİ">
+ <floater.string name="WLDefaultSkyNames">
+ A-12:A-24:A-3:A-15:A-16.30:A-6:A-18:A-9:A-21:Barselona:Tipi:Mavi Gün Ortası:Sahilde Öğleden Sonra:Sahilde Gün Batımı:Varsayılan:Çölde Gün Batımı:Güzel Bir Gün:Kabarık Büyük Bulutlar:Sisli:Şık Şık:Şık Şık Şık:Dondurma:Hayalet:Uygunsuz Gerçekler:Gün Ortası1:Gün Ortası 2:Gün Ortası 3:Gün Ortası 4:Gece:Korsan:Mor:Denizcinin Keyfi:Saf Tensel
+ </floater.string>
+ <text name="KeyFramePresetsText">
+ Gökyüzü Ön Ayarları:
+ </text>
+ <button label="Yeni" label_selected="Yeni" name="WLNewPreset"/>
+ <button label="Kaydet" label_selected="Kaydet" name="WLSavePreset"/>
+ <button label="Sil" label_selected="Sil" name="WLDeletePreset"/>
+ <button label="Gün Döngüsü Düzenleyici" label_selected="Gün Döngüsü Düzenleyici" name="WLDayCycleMenuButton"/>
+ <tab_container name="WindLight Tabs">
+ <panel label="ATMOSFER" name="Atmosphere">
+ <text name="BHText">
+ Mavi Ufuk
+ </text>
+ <text name="BHText2">
+ R
+ </text>
+ <text name="BHText3">
+ G
+ </text>
+ <text name="BHText4">
+ B
+ </text>
+ <text name="BHText5">
+ I
+ </text>
+ <text name="BDensText">
+ Puslu Ufuk
+ </text>
+ <text name="BDensText2">
+ Mavi Yoğunluğu
+ </text>
+ <text name="BHText6">
+ R
+ </text>
+ <text name="BHText7">
+ G
+ </text>
+ <text name="BHText8">
+ B
+ </text>
+ <text name="BHText9">
+ I
+ </text>
+ <text name="HDText">
+ Pus Yoğunluğu
+ </text>
+ <text name="DensMultText">
+ Yoğunluk Çarpanı
+ </text>
+ <text name="WLDistanceMultText">
+ Mesafe Çarpanı
+ </text>
+ <text name="MaxAltText">
+ Maks İrtifa
+ </text>
+ </panel>
+ <panel label="AYDINLATMA" name="Lighting">
+ <text name="SLCText">
+ Güneş/Ay Rengi
+ </text>
+ <text name="BHText">
+ R
+ </text>
+ <text name="BHText2">
+ G
+ </text>
+ <text name="BHText3">
+ B
+ </text>
+ <text name="BHText4">
+ I
+ </text>
+ <text name="TODText">
+ Güneş/Ay Konumu
+ </text>
+ <text name="WLAmbientText">
+ Ortam
+ </text>
+ <text name="BHText5">
+ R
+ </text>
+ <text name="BHText6">
+ G
+ </text>
+ <text name="BHText7">
+ B
+ </text>
+ <text name="BHText8">
+ I
+ </text>
+ <text name="WLEastAngleText">
+ Doğu Açısı
+ </text>
+ <text name="SunGlowText">
+ Güneş Parıltısı
+ </text>
+ <slider label="Odak" name="WLGlowB"/>
+ <slider label="Büyüklük" name="WLGlowR"/>
+ <text name="SceneGammaText">
+ Sahne Gaması
+ </text>
+ <text name="WLStarText">
+ Yıldız Parlaklığı
+ </text>
+ </panel>
+ <panel label="BULUTLAR" name="Clouds">
+ <text name="WLCloudColorText">
+ Bulut Rengi
+ </text>
+ <text name="BHText">
+ R
+ </text>
+ <text name="BHText2">
+ G
+ </text>
+ <text name="BHText3">
+ B
+ </text>
+ <text name="BHText4">
+ I
+ </text>
+ <text name="WLCloudColorText2">
+ Bulut XY/Yoğunluğu
+ </text>
+ <text name="BHText5">
+ X
+ </text>
+ <text name="BHText6">
+ Y
+ </text>
+ <text name="BHText7">
+ D
+ </text>
+ <text name="WLCloudCoverageText">
+ Bulut Örtüsü
+ </text>
+ <text name="WLCloudScaleText">
+ Bulut Yüksekliği
+ </text>
+ <text name="WLCloudDetailText">
+ Bulut Ayrıntısı (XY/Yoğunluğu)
+ </text>
+ <text name="BHText8">
+ X
+ </text>
+ <text name="BHText9">
+ Y
+ </text>
+ <text name="BHText10">
+ D
+ </text>
+ <text name="WLCloudScrollXText">
+ Bulut Kaydırma X
+ </text>
+ <check_box label="Kilitle" name="WLCloudLockX"/>
+ <text name="WLCloudScrollYText">
+ Bulut Kaydırma Y
+ </text>
+ <check_box label="Kilitle" name="WLCloudLockY"/>
+ <check_box label="Klasik Bulutlar Çiz" name="DrawClassicClouds"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_window_size.xml b/indra/newview/skins/default/xui/tr/floater_window_size.xml
new file mode 100644
index 0000000000..acc2cc3376
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="PENCERE BÜYÜKLÜĞÜ">
+ <string name="resolution_format">
+ [RES_X] x [RES_Y]
+ </string>
+ <text name="windowsize_text">
+ Pencere büyüklüğünü ayarla:
+ </text>
+ <combo_box name="window_size_combo" tool_tip="genişlik x yükseklik">
+ <combo_box.item label="1000 x 700 (varsayılan)" name="item0"/>
+ <combo_box.item label="1024 x 768" name="item1"/>
+ <combo_box.item label="1280 x 720 (720p)" name="item2"/>
+ <combo_box.item label="1920 x 1080 (1080p)" name="item3"/>
+ </combo_box>
+ <button label="Ayarla" name="set_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_world_map.xml b/indra/newview/skins/default/xui/tr/floater_world_map.xml
new file mode 100644
index 0000000000..e4729c2aed
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_world_map.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="worldmap" title="DÜNYA HARİTASI">
+ <panel name="layout_panel_1">
+ <text name="events_label">
+ Lejand
+ </text>
+ </panel>
+ <panel name="layout_panel_2">
+ <button name="Show My Location" tool_tip="Haritanın merkezi avatarımın konumu olsun"/>
+ <text name="me_label">
+ Ben
+ </text>
+ <text name="person_label">
+ Kişi
+ </text>
+ <text name="infohub_label">
+ Bilgi İstasyonu
+ </text>
+ <text name="land_sale_label">
+ Arazi Satışı
+ </text>
+ <text name="auction_label">
+ arazi açık artırması
+ </text>
+ <text name="by_owner_label">
+ sahibi tarafından
+ </text>
+ <button name="Go Home" tool_tip="Ana konumuma ışınla"/>
+ <text name="Home_label">
+ Ana konum
+ </text>
+ <text name="events_label">
+ Etkinlikler:
+ </text>
+ <text name="pg_label">
+ Genel
+ </text>
+ <check_box initial_value="true" name="events_mature_chk"/>
+ <text name="events_mature_label">
+ Orta
+ </text>
+ <text name="events_adult_label">
+ Yetişkin
+ </text>
+ </panel>
+ <panel name="layout_panel_3">
+ <text name="find_on_map_label">
+ Haritada Bul
+ </text>
+ </panel>
+ <panel name="layout_panel_4">
+ <combo_box label="Çevrimiçi Arkadaşlar" name="friend combo" tool_tip="Haritada arkadaşlar gösterilsin">
+ <combo_box.item label="Çevrimiçi Arkadaşlarım" name="item1"/>
+ </combo_box>
+ <combo_box label="Yer İmlerim" name="landmark combo" tool_tip="Haritada gösterilecek yer imi">
+ <combo_box.item label="Yer İmlerim" name="item1"/>
+ </combo_box>
+ <search_editor label="Adlarına Göre Bölgeler" name="location" tool_tip="Bir bölgenin adını yazın"/>
+ <button label="Bul" name="DoSearch" tool_tip="Bölge ara"/>
+ <button name="Clear" tool_tip="Takip çizgilerini temizle ve haritayı sıfırla"/>
+ <text name="events_label">
+ Konum:
+ </text>
+ <button label="Işınla" name="Teleport" tool_tip="Seçilen konuma ışınla"/>
+ <button label="SLurl&apos;i Kopyala" name="copy_slurl" tool_tip="Mevcut konumu, web üzerinde kullanılması için SLurl olarak kopyalar."/>
+ <button label="Seçimi Göster" name="Show Destination" tool_tip="Haritanın merkezi seçilen konum olsun"/>
+ </panel>
+ <panel name="layout_panel_5">
+ <text name="zoom_label">
+ Yakınlaştır
+ </text>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_avatar.xml b/indra/newview/skins/default/xui/tr/inspect_avatar.xml
new file mode 100644
index 0000000000..cb3c7e9282
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_avatar.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_avatar">
+ <string name="Subtitle">
+ [AGE]
+ </string>
+ <string name="Details">
+ [SL_PROFILE]
+ </string>
+ <text name="user_subtitle" value="11 ay, 3 günlük"/>
+ <text name="user_details">
+ Second Life içerisindeki tanımım bu, harika olduğunu düşünüyorum. Ama nedense tanımım gerçekten çok uzun çünkü çok konuşmayı seviyorum.
+ </text>
+ <slider name="volume_slider" tool_tip="Ses düzeyi" value="0.5"/>
+ <button label="Arkadaş Ekle" name="add_friend_btn"/>
+ <button label="Aİ" name="im_btn"/>
+ <button label="Profil" name="view_profile_btn"/>
+ <panel name="moderator_panel">
+ <button label="Sesi Devre Dışı Bırak" name="disable_voice"/>
+ <button label="Sesi Etkinleştir" name="enable_voice"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_group.xml b/indra/newview/skins/default/xui/tr/inspect_group.xml
new file mode 100644
index 0000000000..9b130c9ef6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_group.xml
@@ -0,0 +1,32 @@
+<?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">
+ Özel grup
+ </string>
+ <string name="FreeToJoin">
+ Katılım ücretsiz
+ </string>
+ <string name="CostToJoin">
+ Katılmak için L$[AMOUNT] gerekiyor
+ </string>
+ <string name="YouAreMember">
+ Siz üyesiniz
+ </string>
+ <text name="group_subtitle">
+ 123 üye
+ </text>
+ <text name="group_details">
+ İçinde geyik olan bir oda oluşturmakla sorumlu bir grup insan.
+Geyikten korkun! Korkun! Firavun faresinden de!
+ </text>
+ <text name="group_cost">
+ Katılmak için L$123 gerekiyor
+ </text>
+ <button label="Katıl" name="join_btn"/>
+ <button label="Ayrıl" name="leave_btn"/>
+ <button label="Profili Göster" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_object.xml b/indra/newview/skins/default/xui/tr/inspect_object.xml
new file mode 100644
index 0000000000..bd09267319
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_object.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_object">
+ <string name="Creator">
+ [CREATOR] tarafından
+ </string>
+ <string name="CreatorAndOwner">
+ [CREATOR] tarafından
+Sahip [OWNER]
+ </string>
+ <string name="Price">
+ L$[AMOUNT]
+ </string>
+ <string name="PriceFree">
+ Ücretsiz!
+ </string>
+ <string name="Touch">
+ Dokun
+ </string>
+ <string name="Sit">
+ Otur
+ </string>
+ <text name="object_creator">
+ şunun tarafından: secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+sahip: secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+ </text>
+ <text name="price_text">
+ L$30,000
+ </text>
+ <icon name="secure_browsing" tool_tip="Güvenli Tarama"/>
+ <text name="object_media_url">
+ http://www.superdupertest.com
+ </text>
+ <button label="Satın Al" name="buy_btn"/>
+ <button label="Öde" name="pay_btn"/>
+ <button label="Kopya Al" name="take_free_copy_btn"/>
+ <button label="Dokun" name="touch_btn"/>
+ <button label="Otur" name="sit_btn"/>
+ <button label="Aç" name="open_btn"/>
+ <button label="Daha Fazla" name="more_info_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_remote_object.xml b/indra/newview/skins/default/xui/tr/inspect_remote_object.xml
new file mode 100644
index 0000000000..4b696b2ae5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_remote_object.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_remote_object">
+ <text name="object_name">
+ Çok Uzun Test Nesne Adı Aman Tanrım bu gerçekten o kadar uzun bir nesne adı ki bu kadar uzun olduğuna inanmıyorum.
+ </text>
+ <text name="object_owner_label">
+ Sahip:
+ </text>
+ <text name="object_owner">
+ Uzunavataradı Farukkalaycigillerdendegil
+ </text>
+ <text name="object_slurl">
+ http://slurl.com/Ahern/50/50/50
+ </text>
+ <button label="Harita" name="map_btn"/>
+ <button label="Engelle" name="block_btn"/>
+ <button label="Kapat" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml
new file mode 100644
index 0000000000..dcb4629259
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Add Wearable Gear Menu">
+ <menu_item_check label="En Sonunculara Göre Sırala" name="sort_by_most_recent"/>
+ <menu_item_check label="Ada Göre Sırala" name="sort_by_name"/>
+ <menu_item_check label="Türe Göre Sırala" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
new file mode 100644
index 0000000000..9ba214ff31
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Profili Göster" name="Profile..."/>
+ <menu_item_call label="Arkadaş Ekle" name="Add Friend"/>
+ <menu_item_call label="Aİ" name="Send IM..."/>
+ <menu_item_call label="Ara" name="Call"/>
+ <menu_item_call label="Gruba Davet Et" name="Invite..."/>
+ <menu_item_call label="Engelle" name="Avatar Mute"/>
+ <menu_item_call label="Raporla" name="abuse"/>
+ <menu_item_call label="Dondur" name="Freeze..."/>
+ <menu_item_call label="Çıkar" name="Eject..."/>
+ <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+ <menu_item_call label="Yakınlaştır" name="Zoom In"/>
+ <menu_item_call label="Öde" name="Pay..."/>
+ <menu_item_call label="Nesne Profili" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml
new file mode 100644
index 0000000000..16d1e3f356
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+ <menu_item_call label="Dokun" name="Attachment Object Touch"/>
+ <menu_item_call label="Düzenle" name="Edit..."/>
+ <menu_item_call label="Ayır" name="Detach"/>
+ <menu_item_call label="Otur" name="Sit Down Here"/>
+ <menu_item_call label="Kalk" name="Stand Up"/>
+ <menu_item_call label="Görünümüm" name="Change Outfit"/>
+ <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/>
+ <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/>
+ <menu_item_call label="Arkadaşlarım" name="Friends..."/>
+ <menu_item_call label="Gruplarım" name="Groups..."/>
+ <menu_item_call label="Profilim" name="Profile..."/>
+ <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+ <menu_item_call label="Bırak" name="Drop"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml
new file mode 100644
index 0000000000..d3ef490735
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Profili Göster" name="Show Profile"/>
+ <menu_item_call label="Aİ Gönder..." name="Send IM"/>
+ <menu_item_call label="Arkadaş Ekle..." name="Add Friend"/>
+ <menu_item_call label="Arkadaşı Çıkar..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
new file mode 100644
index 0000000000..7d691d2ac5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Profili Göster" name="Profile..."/>
+ <menu_item_call label="Arkadaş Ekle" name="Add Friend"/>
+ <menu_item_call label="Aİ" name="Send IM..."/>
+ <menu_item_call label="Ara" name="Call"/>
+ <menu_item_call label="Gruba Davet Et" name="Invite..."/>
+ <menu_item_call label="Engelle" name="Avatar Mute"/>
+ <menu_item_call label="Raporla" name="abuse"/>
+ <menu_item_call label="Dondur" name="Freeze..."/>
+ <menu_item_call label="Çıkar" name="Eject..."/>
+ <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+ <menu_item_call label="Yakınlaştır" name="Zoom In"/>
+ <menu_item_call label="Öde" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml
new file mode 100644
index 0000000000..c520aff521
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+ <menu_item_call label="Otur" name="Sit Down Here"/>
+ <menu_item_call label="Kalk" name="Stand Up"/>
+ <context_menu label="Çıkar" name="Take Off &gt;">
+ <context_menu label="Giysiler" name="Clothes &gt;">
+ <menu_item_call label="Gömlek" name="Shirt"/>
+ <menu_item_call label="Pantolon" name="Pants"/>
+ <menu_item_call label="Etek" name="Skirt"/>
+ <menu_item_call label="Ayakkabılar" name="Shoes"/>
+ <menu_item_call label="Çoraplar" name="Socks"/>
+ <menu_item_call label="Ceket" name="Jacket"/>
+ <menu_item_call label="Eldivenler" name="Gloves"/>
+ <menu_item_call label="Fanila" name="Self Undershirt"/>
+ <menu_item_call label="Külot" name="Self Underpants"/>
+ <menu_item_call label="Dövme" name="Self Tattoo"/>
+ <menu_item_call label="Fizik" name="Self Physics"/>
+ <menu_item_call label="Alfa" name="Self Alpha"/>
+ <menu_item_call label="Tüm Giysiler" name="All Clothes"/>
+ </context_menu>
+ <context_menu label="BÜG" name="Object Detach HUD"/>
+ <context_menu label="Ayır" name="Object Detach"/>
+ <menu_item_call label="Tümünü Ayır" name="Detach All"/>
+ </context_menu>
+ <menu_item_call label="Görünümüm" name="Chenge Outfit"/>
+ <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/>
+ <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/>
+ <menu_item_call label="Arkadaşlarım" name="Friends..."/>
+ <menu_item_call label="Gruplarım" name="Groups..."/>
+ <menu_item_call label="Profilim" name="Profile..."/>
+ <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_bottomtray.xml b/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
new file mode 100644
index 0000000000..f17c0f9971
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+ <menu_item_check label="Konuşma Düğmesi" name="EnableVoiceChat"/>
+ <menu_item_check label="Mimik düğmesi" name="ShowGestureButton"/>
+ <menu_item_check label="Taşıma düğmesi" name="ShowMoveButton"/>
+ <menu_item_check label="Görüntüleme düğmesi" name="ShowCameraButton"/>
+ <menu_item_check label="Anlık görüntü düğmesi" name="ShowSnapshotButton"/>
+ <menu_item_check label="İnşa Et düğmesi" name="ShowBuildButton"/>
+ <menu_item_check label="Arama düğmesi" name="ShowSearchButton"/>
+ <menu_item_check label="Harita düğmesi" name="ShowWorldMapButton"/>
+ <menu_item_check label="Mini-harita düğmesi" name="ShowMiniMapButton"/>
+ <menu_item_call label="Kes" name="NearbyChatBar_Cut"/>
+ <menu_item_call label="Kopyala" name="NearbyChatBar_Copy"/>
+ <menu_item_call label="Yapıştır" name="NearbyChatBar_Paste"/>
+ <menu_item_call label="Sil" name="NearbyChatBar_Delete"/>
+ <menu_item_call label="Tümünü Seç" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
new file mode 100644
index 0000000000..d57c43f6c1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Attachment">
+ <menu_item_call label="Ayır" name="detach"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml b/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml
new file mode 100644
index 0000000000..31f77d834a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Body">
+ <menu_item_call label="Değiştir" name="replace"/>
+ <menu_item_call label="Düzenle" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml
new file mode 100644
index 0000000000..784d809d70
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Clothing">
+ <menu_item_call label="Çıkar" name="take_off"/>
+ <menu_item_call label="Düzenle" name="edit"/>
+ <menu_item_call label="Değiştir" name="replace"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
new file mode 100644
index 0000000000..f910e1fe91
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear COF">
+ <menu label="Yeni Giysiler" name="COF.Gear.New_Clothes"/>
+ <menu label="Yeni Vücut Bölümleri" name="COF.Geear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_edit.xml b/indra/newview/skins/default/xui/tr/menu_edit.xml
new file mode 100644
index 0000000000..81cd270af0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_edit.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu label="Düzenle" name="Edit">
+ <menu_item_call label="Geri Al" name="Undo"/>
+ <menu_item_call label="Yinele" name="Redo"/>
+ <menu_item_call label="Kes" name="Cut"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+ <menu_item_call label="Yapıştır" name="Paste"/>
+ <menu_item_call label="Sil" name="Delete"/>
+ <menu_item_call label="Çoğalt" name="Duplicate"/>
+ <menu_item_call label="Tümünü Seç" name="Select All"/>
+ <menu_item_call label="Seçimi Kaldır" name="Deselect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_favorites.xml b/indra/newview/skins/default/xui/tr/menu_favorites.xml
new file mode 100644
index 0000000000..7bb2ed1ddc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Işınla" name="Teleport To Landmark"/>
+ <menu_item_call label="Yer İmini Görüntüle/Düzenle" name="Landmark Open"/>
+ <menu_item_call label="SLurl&apos;i Kopyala" name="Copy slurl"/>
+ <menu_item_call label="Haritada Göster" name="Show On Map"/>
+ <menu_item_call label="Kopyala" name="Landmark Copy"/>
+ <menu_item_call label="Yapıştır" name="Landmark Paste"/>
+ <menu_item_call label="Sil" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
new file mode 100644
index 0000000000..cb9b678fdd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gesture_gear">
+ <menu_item_call label="Favorilere Ekle/Çıkar" name="activate"/>
+ <menu_item_call label="Kopyala" name="copy_gesture"/>
+ <menu_item_call label="Yapıştır" name="paste"/>
+ <menu_item_call label="UUID&apos;yi Kopyala" name="copy_uuid"/>
+ <menu_item_call label="Mevcut dış görünüme kaydet" name="save_to_outfit"/>
+ <menu_item_call label="Düzenle" name="edit_gesture"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_group_plus.xml b/indra/newview/skins/default/xui/tr/menu_group_plus.xml
new file mode 100644
index 0000000000..82cf7dcf74
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Gruba Katıl..." name="item_join"/>
+ <menu_item_call label="Yeni Grup..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
new file mode 100644
index 0000000000..d1f213516b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+ <menu_item_check label="Gezinme ve Favoriler Çubuğunu Göster" name="ShowNavbarNavigationPanel"/>
+ <menu_item_check label="Favoriler Çubuğunu Göster" name="ShowNavbarFavoritesPanel"/>
+ <menu_item_check label="Mini Konum Çubuğunu Göster" name="ShowMiniLocationPanel"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_well_button.xml b/indra/newview/skins/default/xui/tr/menu_im_well_button.xml
new file mode 100644
index 0000000000..c3e559a723
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="IM Well Button Context Menu">
+ <menu_item_call label="Tümünü Kapat" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml
new file mode 100644
index 0000000000..0396ad8fb5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Oturumu Bitir" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml
new file mode 100644
index 0000000000..60a50b114e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Grup Bilgisi" name="Show Profile"/>
+ <menu_item_call label="Oturumu Göster" name="Chat"/>
+ <menu_item_call label="Oturumu Bitir" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml
new file mode 100644
index 0000000000..0ef4471088
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Profili Göster" name="Show Profile"/>
+ <menu_item_call label="Arkadaş Ekle" name="Add Friend"/>
+ <menu_item_call label="Oturumu Göster" name="Send IM"/>
+ <menu_item_call label="Oturumu Bitir" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml
new file mode 100644
index 0000000000..69432e967b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+ <menu_item_call label="Profili Göster" name="view_profile"/>
+ <menu_item_call label="Arkadaş Ekle" name="add_friend"/>
+ <menu_item_call label="Aİ" name="im"/>
+ <menu_item_call label="Ara" name="call"/>
+ <menu_item_call label="Işınla" name="teleport"/>
+ <menu_item_call label="Gruba Davet Et" name="invite_to_group"/>
+ <menu_item_call label="Engelle" name="block"/>
+ <menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+ <menu_item_call label="Raporla" name="report"/>
+ <menu_item_call label="Dondur" name="freeze"/>
+ <menu_item_call label="Çıkar" name="eject"/>
+ <menu_item_call label="Çıkar" name="kick"/>
+ <menu_item_call label="CSR" name="csr"/>
+ <menu_item_call label="Dokularda Hata Ayıkla" name="debug"/>
+ <menu_item_call label="Haritada Bul" name="find_on_map"/>
+ <menu_item_call label="Yakınlaştır" name="zoom_in"/>
+ <menu_item_call label="Öde" name="pay"/>
+ <menu_item_call label="Paylaş" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml
new file mode 100644
index 0000000000..02e5415598
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+ <menu_item_call label="Dokun" name="touch"/>
+ <menu_item_call label="Otur" name="sit"/>
+ <menu_item_call label="Öde" name="pay"/>
+ <menu_item_call label="Satın Al" name="buy"/>
+ <menu_item_call label="Al" name="take"/>
+ <menu_item_call label="Kopya Al" name="take_copy"/>
+ <menu_item_call label="Aç" name="open"/>
+ <menu_item_call label="Düzenle" name="edit"/>
+ <menu_item_call label="Giy" name="wear"/>
+ <menu_item_call label="Ekle" name="add"/>
+ <menu_item_call label="Raporla" name="report"/>
+ <menu_item_call label="Engelle" name="block"/>
+ <menu_item_call label="Yakınlaştır" name="zoom_in"/>
+ <menu_item_call label="Kaldır" name="remove"/>
+ <menu_item_call label="Ek Bilgi" name="more_info"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml
new file mode 100644
index 0000000000..0655db8196
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Self Pie">
+ <menu_item_call label="Otur" name="Sit Down Here"/>
+ <menu_item_call label="Kalk" name="Stand Up"/>
+ <context_menu label="Çıkar" name="Take Off &gt;">
+ <context_menu label="Giysiler" name="Clothes &gt;">
+ <menu_item_call label="Gömlek" name="Shirt"/>
+ <menu_item_call label="Pantolon" name="Pants"/>
+ <menu_item_call label="Etek" name="Skirt"/>
+ <menu_item_call label="Ayakkabılar" name="Shoes"/>
+ <menu_item_call label="Çoraplar" name="Socks"/>
+ <menu_item_call label="Ceket" name="Jacket"/>
+ <menu_item_call label="Eldivenler" name="Gloves"/>
+ <menu_item_call label="Fanila" name="Self Undershirt"/>
+ <menu_item_call label="Külot" name="Self Underpants"/>
+ <menu_item_call label="Dövme" name="Self Tattoo"/>
+ <menu_item_call label="Alfa" name="Self Alpha"/>
+ <menu_item_call label="Tüm Giysiler" name="All Clothes"/>
+ </context_menu>
+ <context_menu label="BÜG" name="Object Detach HUD"/>
+ <context_menu label="Ayır" name="Object Detach"/>
+ <menu_item_call label="Tümünü Ayır" name="Detach All"/>
+ </context_menu>
+ <menu_item_call label="Dış Görünümü Değiştir" name="Chenge Outfit"/>
+ <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/>
+ <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/>
+ <menu_item_call label="Arkadaşlarım" name="Friends..."/>
+ <menu_item_call label="Gruplarım" name="Groups..."/>
+ <menu_item_call label="Profilim" name="Profile..."/>
+ <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml
new file mode 100644
index 0000000000..2e2b17491a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="InvOfferChiclet Menu">
+ <menu_item_call label="Kapat" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml
new file mode 100644
index 0000000000..f14066fd7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Paylaş" name="Share"/>
+ <menu_item_call label="Satın Al" name="Task Buy"/>
+ <menu_item_call label="Aç" name="Task Open"/>
+ <menu_item_call label="Oyna" name="Task Play"/>
+ <menu_item_call label="Özellikler" name="Task Properties"/>
+ <menu_item_call label="Yeniden Adlandır" name="Task Rename"/>
+ <menu_item_call label="Sil" name="Task Remove"/>
+ <menu_item_call label="Çöpü Boşalt" name="Empty Trash"/>
+ <menu_item_call label="Kaybedip Bulduklarımı Boşalt" name="Empty Lost And Found"/>
+ <menu_item_call label="Yeni Klasör" name="New Folder"/>
+ <menu_item_call label="Yeni Komut Dosyası" name="New Script"/>
+ <menu_item_call label="Yeni Not Kartı" name="New Note"/>
+ <menu_item_call label="Yeni Mimik" name="New Gesture"/>
+ <menu label="Yeni Giysiler" name="New Clothes">
+ <menu_item_call label="Yeni Gömlek" name="New Shirt"/>
+ <menu_item_call label="Yeni Pantolon" name="New Pants"/>
+ <menu_item_call label="Yeni Ayakkabılar" name="New Shoes"/>
+ <menu_item_call label="Yeni Çoraplar" name="New Socks"/>
+ <menu_item_call label="Yeni Ceket" name="New Jacket"/>
+ <menu_item_call label="Yeni Etek" name="New Skirt"/>
+ <menu_item_call label="Yeni Eldivenler" name="New Gloves"/>
+ <menu_item_call label="Yeni Fanila" name="New Undershirt"/>
+ <menu_item_call label="Yeni Külot" name="New Underpants"/>
+ <menu_item_call label="Yeni Alfa Maskesi" name="New Alpha Mask"/>
+ <menu_item_call label="Yeni Dövme" name="New Tattoo"/>
+ <menu_item_call label="Yeni Fizik" name="New Physics"/>
+ </menu>
+ <menu label="Yeni Vücut Bölümleri" name="New Body Parts">
+ <menu_item_call label="Yeni Şekil" name="New Shape"/>
+ <menu_item_call label="Yeni Dış Katman" name="New Skin"/>
+ <menu_item_call label="Yeni Saç" name="New Hair"/>
+ <menu_item_call label="Yeni Gözler" name="New Eyes"/>
+ </menu>
+ <menu label="Türü Değiştir" name="Change Type">
+ <menu_item_call label="Varsayılan" name="Default"/>
+ <menu_item_call label="Eldivenler" name="Gloves"/>
+ <menu_item_call label="Ceket" name="Jacket"/>
+ <menu_item_call label="Pantolon" name="Pants"/>
+ <menu_item_call label="Şekil" name="Shape"/>
+ <menu_item_call label="Ayakkabılar" name="Shoes"/>
+ <menu_item_call label="Gömlek" name="Shirt"/>
+ <menu_item_call label="Etek" name="Skirt"/>
+ <menu_item_call label="Külot" name="Underpants"/>
+ <menu_item_call label="Fanila" name="Undershirt"/>
+ </menu>
+ <menu_item_call label="Işınla" name="Landmark Open"/>
+ <menu_item_call label="Aç" name="Animation Open"/>
+ <menu_item_call label="Aç" name="Sound Open"/>
+ <menu_item_call label="Mevcut Dış Görünümü Değiştir" name="Replace Outfit"/>
+ <menu_item_call label="Mevcut Dış Görünüme Ekle" name="Add To Outfit"/>
+ <menu_item_call label="Mevcut Dış Görünümden Kaldır" name="Remove From Outfit"/>
+ <menu_item_call label="Orijinali Bul" name="Find Original"/>
+ <menu_item_call label="Öğeyi Temizle" name="Purge Item"/>
+ <menu_item_call label="Öğeyi Geri Yükle" name="Restore Item"/>
+ <menu_item_call label="Aç" name="Open"/>
+ <menu_item_call label="Orijinali Aç" name="Open Original"/>
+ <menu_item_call label="Özellikler" name="Properties"/>
+ <menu_item_call label="Yeniden Adlandır" name="Rename"/>
+ <menu_item_call label="Varlık UUID&apos;sini Kopyala" name="Copy Asset UUID"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+ <menu_item_call label="Yapıştır" name="Paste"/>
+ <menu_item_call label="Bağlantı Olarak Yapıştır" name="Paste As Link"/>
+ <menu_item_call label="Sil" name="Remove Link"/>
+ <menu_item_call label="Sil" name="Delete"/>
+ <menu_item_call label="Sistem Klasörünü Sil" name="Delete System Folder"/>
+ <menu_item_call label="Konferans Sohbeti Başlat" name="Conference Chat Folder"/>
+ <menu_item_call label="Oyna" name="Sound Play"/>
+ <menu_item_call label="Yer İmi Hakkında" name="About Landmark"/>
+ <menu_item_call label="SL Dünyasında Oynat" name="Animation Play"/>
+ <menu_item_call label="Yerel Olarak Oynat" name="Animation Audition"/>
+ <menu_item_call label="Anlık İleti Gönder" name="Send Instant Message"/>
+ <menu_item_call label="Işınlama Teklif Et..." name="Offer Teleport..."/>
+ <menu_item_call label="Konferans Sohbeti Başlat" name="Conference Chat"/>
+ <menu_item_call label="Etkinleştir" name="Activate"/>
+ <menu_item_call label="Devre Dışı Bırak" name="Deactivate"/>
+ <menu_item_call label="Farklı Kaydet" name="Save As"/>
+ <menu_item_call label="Kendinizden Ayırın" name="Detach From Yourself"/>
+ <menu_item_call label="Giy" name="Wearable And Object Wear"/>
+ <menu label="Şuna Ekle:" name="Attach To"/>
+ <menu label="BÜG&apos;e Ekle" name="Attach To HUD"/>
+ <menu_item_call label="Düzenle" name="Wearable Edit"/>
+ <menu_item_call label="Ekle" name="Wearable Add"/>
+ <menu_item_call label="Çıkar" name="Take Off"/>
+ <menu_item_call label="Satıcı Giden Kutusuna Kopyala" name="Merchant Copy"/>
+ <menu_item_call label="Satıcı Giden Kutusuna Taşı" name="Merchant Move"/>
+ <menu_item_call label="--seçenek yok--" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_add.xml b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml
new file mode 100644
index 0000000000..db2a9a2c8c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+ <menu label="Karşıya Yükle" name="upload">
+ <menu_item_call label="Görüntü (L$[COST])..." name="Upload Image"/>
+ <menu_item_call label="Ses (L$[COST])..." name="Upload Sound"/>
+ <menu_item_call label="Animasyon (L$[COST])..." name="Upload Animation"/>
+ <menu_item_call label="Model..." name="Upload Model"/>
+ <menu_item_call label="Model Sihirbazı..." name="Upload Model Wizard"/>
+ <menu_item_call label="Toplu (dosya başına L$[COST])..." name="Bulk Upload"/>
+ <menu_item_call label="Varsayılan Karşıya Yükleme İzinlerini Ayarla" name="perm prefs"/>
+ </menu>
+ <menu_item_call label="Yeni Klasör" name="New Folder"/>
+ <menu_item_call label="Yeni Komut Dosyası" name="New Script"/>
+ <menu_item_call label="Yeni Not Kartı" name="New Note"/>
+ <menu_item_call label="Yeni Mimik" name="New Gesture"/>
+ <menu label="Yeni Giysiler" name="New Clothes">
+ <menu_item_call label="Yeni Gömlek" name="New Shirt"/>
+ <menu_item_call label="Yeni Pantolon" name="New Pants"/>
+ <menu_item_call label="Yeni Ayakkabılar" name="New Shoes"/>
+ <menu_item_call label="Yeni Çoraplar" name="New Socks"/>
+ <menu_item_call label="Yeni Ceket" name="New Jacket"/>
+ <menu_item_call label="Yeni Etek" name="New Skirt"/>
+ <menu_item_call label="Yeni Eldivenler" name="New Gloves"/>
+ <menu_item_call label="Yeni Fanila" name="New Undershirt"/>
+ <menu_item_call label="Yeni Külot" name="New Underpants"/>
+ <menu_item_call label="Yeni Alfa" name="New Alpha"/>
+ <menu_item_call label="Yeni Dövme" name="New Tattoo"/>
+ <menu_item_call label="Yeni Fizik" name="New Physics"/>
+ </menu>
+ <menu label="Yeni Vücut Bölümleri" name="New Body Parts">
+ <menu_item_call label="Yeni Şekil" name="New Shape"/>
+ <menu_item_call label="Yeni Dış Katman" name="New Skin"/>
+ <menu_item_call label="Yeni Saç" name="New Hair"/>
+ <menu_item_call label="Yeni Gözler" name="New Eyes"/>
+ </menu>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml
new file mode 100644
index 0000000000..5f3e4e8789
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gear_default">
+ <menu_item_call label="Yeni Envanter Penceresi" name="new_window"/>
+ <menu_item_check label="Ada Göre Sırala" name="sort_by_name"/>
+ <menu_item_check label="En Sonunculara Göre Sırala" name="sort_by_recent"/>
+ <menu_item_check label="Klasörleri Her Zaman Ada Göre Sırala" name="sort_folders_by_name"/>
+ <menu_item_check label="Sistem Klasörlerini Üste Sırala" name="sort_system_folders_to_top"/>
+ <menu_item_call label="Filtreleri Göster" name="show_filters"/>
+ <menu_item_call label="Filtreleri Sıfırla" name="reset_filters"/>
+ <menu_item_call label="Tüm Klasörleri Kapat" name="close_folders"/>
+ <menu_item_call label="Kaybedip Bulduklarımı Boşalt" name="empty_lostnfound"/>
+ <menu_item_call label="Dokuyu Farklı Kaydet" name="Save Texture As"/>
+ <menu_item_call label="Paylaş" name="Share"/>
+ <menu_item_call label="Orijinali Bul" name="Find Original"/>
+ <menu_item_call label="Tüm Bağlantıları Bul" name="Find All Links"/>
+ <menu_item_call label="Çöpü Boşalt" name="empty_trash"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_land.xml b/indra/newview/skins/default/xui/tr/menu_land.xml
new file mode 100644
index 0000000000..db65f1af1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Arazi Hakkında" name="Place Information..."/>
+ <menu_item_call label="Buraya Otur" name="Sit Here"/>
+ <menu_item_call label="Bu Araziyi Satın Al" name="Land Buy"/>
+ <menu_item_call label="Geçiş Hakkı Satın Al" name="Land Buy Pass"/>
+ <menu_item_call label="İnşa Et" name="Create"/>
+ <menu_item_call label="Yüzeyi Düzenle" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_landmark.xml b/indra/newview/skins/default/xui/tr/menu_landmark.xml
new file mode 100644
index 0000000000..c68a2f6a90
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="SLurl&apos;i Kopyala" name="copy"/>
+ <menu_item_call label="Sil" name="delete"/>
+ <menu_item_call label="Seçme Oluştur" name="pick"/>
+ <menu_item_call label="Favoriler Çubuğuna Ekle" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml
new file mode 100644
index 0000000000..4c3539b38b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_login.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Login Menu">
+ <menu label="Ben" name="File">
+ <menu_item_call label="Tercihler..." name="Preferences..."/>
+ <menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
+ </menu>
+ <menu label="Yardım" name="Help">
+ <menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
+ <menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
+ </menu>
+ <menu_item_check label="Hata Ayıklama Menüsünü Göster" name="Show Debug Menu"/>
+ <menu label="Hata ayıkla" name="Debug">
+ <menu_item_call label="Hata Ayıklama Ayarlarını Göster" name="Debug Settings"/>
+ <menu_item_call label="KA/Renk Ayarları" name="UI/Color Settings"/>
+ <menu_item_call label="XKA Önizleme Aracı" name="UI Preview Tool"/>
+ <menu label="KA Testleri" name="UI Tests"/>
+ <menu_item_call label="Pencere Büyüklüğünü Ayarla..." name="Set Window Size..."/>
+ <menu_item_call label="Hizmet Şartlarını Göster" name="TOS"/>
+ <menu_item_call label="Kritik İletiyi Göster" name="Critical"/>
+ <menu_item_call label="Ortam Tarayıcı Testi" name="Web Browser Test"/>
+ <menu_item_call label="Web İçeriği Gezdiricisi Hata Ayıklama Testi" name="Web Content Floater Debug Test"/>
+ <menu_item_check label="Izgara Seçiciyi Göster" name="Show Grid Picker"/>
+ <menu_item_call label="Bildirimler Konsolunu Göster" name="Show Notifications Console"/>
+ </menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml
new file mode 100644
index 0000000000..8d04e645fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="media ctrl context menu">
+ <menu_item_call label="Kes" name="Cut"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+ <menu_item_call label="Yapıştır" name="Paste"/>
+ <menu_item_call label="Web Inspector&apos;ı Açın" name="open_webinspector"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_mini_map.xml b/indra/newview/skins/default/xui/tr/menu_mini_map.xml
new file mode 100644
index 0000000000..9abe78931e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_mini_map.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Yakına Zumla" name="Zoom Close"/>
+ <menu_item_call label="Orta Zumla" name="Zoom Medium"/>
+ <menu_item_call label="Uzağa Zumla" name="Zoom Far"/>
+ <menu_item_call label="Varsayılan Yakınlaştırma" name="Zoom Default"/>
+ <menu_item_check label="Haritayı Dönder" name="Rotate Map"/>
+ <menu_item_check label="Otomatik Ortala" name="Auto Center"/>
+ <menu_item_call label="İzlemeyi Durdur" name="Stop Tracking"/>
+ <menu_item_call label="Dünya Haritası" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_mode_change.xml b/indra/newview/skins/default/xui/tr/menu_mode_change.xml
new file mode 100644
index 0000000000..678950b633
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_mode_change.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Mode Change">
+ <menu_item_check label="Temel" name="BasicMode"/>
+ <menu_item_check label="Gelişmiş" name="AdvancedMode"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml
new file mode 100644
index 0000000000..51cf29a4de
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="model_menu_gear_default">
+ <menu_item_check label="Kenarları göster" name="show_edges"/>
+ <menu_item_check label="Fiziki temsili göster" name="show_physics"/>
+ <menu_item_check label="Dokuları göster" name="show_textures"/>
+ <menu_item_check label="Dış katman ağırlığını göster" name="show_skin_weight"/>
+ <menu_item_check label="Eklem konumlarını göster" name="show_joint_positions"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_navbar.xml b/indra/newview/skins/default/xui/tr/menu_navbar.xml
new file mode 100644
index 0000000000..b05b816e64
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+ <menu_item_check label="Koordinatları Göster" name="Show Coordinates"/>
+ <menu_item_check label="Parsel Özelliklerini Göster" name="Show Parcel Properties"/>
+ <menu_item_call label="Yer İmi" name="Landmark"/>
+ <menu_item_call label="Kes" name="Cut"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+ <menu_item_call label="Yapıştır" name="Paste"/>
+ <menu_item_call label="Sil" name="Delete"/>
+ <menu_item_call label="Tümünü Seç" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml
new file mode 100644
index 0000000000..b76a736979
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Yakındaki Kişileri Göster..." name="nearby_people"/>
+ <menu_item_check label="Engellenmiş Metni Göster" name="muted_text"/>
+ <menu_item_check label="Arkadaş Simgelerini Göster" name="show_buddy_icons"/>
+ <menu_item_check label="Adları Göster" name="show_names"/>
+ <menu_item_check label="Simgeleri ve Adları Göster" name="show_icons_and_names"/>
+ <menu_item_call label="Font Büyüklüğü" name="font_size"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml
new file mode 100644
index 0000000000..39c66268f5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification Well Button Context Menu">
+ <menu_item_call label="Tümünü Kapat" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_object.xml b/indra/newview/skins/default/xui/tr/menu_object.xml
new file mode 100644
index 0000000000..d60c68e5e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_object.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+ <menu_item_call label="Dokun" name="Object Touch"/>
+ <menu_item_call label="Düzenle" name="Edit..."/>
+ <menu_item_call label="İnşa Et" name="Build"/>
+ <menu_item_call label="Aç" name="Open"/>
+ <menu_item_call label="Buraya Otur" name="Object Sit"/>
+ <menu_item_call label="Kalk" name="Object Stand Up"/>
+ <menu_item_call label="Nesne Profili" name="Object Inspect"/>
+ <menu_item_call label="Yakınlaştır" name="Zoom In"/>
+ <context_menu label="Üzerine Koy" name="Put On">
+ <menu_item_call label="Giy" name="Wear"/>
+ <menu_item_call label="Ekle" name="Add"/>
+ <context_menu label="Ekle" name="Object Attach"/>
+ <context_menu label="BÜG Ekle" name="Object Attach HUD"/>
+ </context_menu>
+ <context_menu label="Yönet" name="Remove">
+ <menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse..."/>
+ <menu_item_call label="Engelle" name="Object Mute"/>
+ <menu_item_call label="İade Et" name="Return..."/>
+ </context_menu>
+ <menu_item_call label="Al" name="Pie Object Take"/>
+ <menu_item_call label="Kopya Al" name="Take Copy"/>
+ <menu_item_call label="Öde" name="Pay..."/>
+ <menu_item_call label="Satın Al" name="Buy..."/>
+ <menu_item_call label="Sil" name="Delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
new file mode 100644
index 0000000000..34a2661d8a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Nesne Profili..." name="Object Profile"/>
+ <menu_item_call label="Engelle..." name="Block"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
new file mode 100644
index 0000000000..d2e7e7107a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Outfit">
+ <menu_item_call label="Giysi - Mevcut Dış Görünümü Değiştir" name="wear"/>
+ <menu_item_call label="Giysi - Mevcut Dış Görünüme Ekle" name="wear_add"/>
+ <menu_item_call label="Çıkar - Mevcut Dış Görünümden Kaldır" name="take_off"/>
+ <menu label="Yeni Giysiler" name="New Clothes">
+ <menu_item_call label="Yeni Gömlek" name="New Shirt"/>
+ <menu_item_call label="Yeni Pantolon" name="New Pants"/>
+ <menu_item_call label="Yeni Ayakkabılar" name="New Shoes"/>
+ <menu_item_call label="Yeni Çoraplar" name="New Socks"/>
+ <menu_item_call label="Yeni Ceket" name="New Jacket"/>
+ <menu_item_call label="Yeni Etek" name="New Skirt"/>
+ <menu_item_call label="Yeni Eldivenler" name="New Gloves"/>
+ <menu_item_call label="Yeni Fanila" name="New Undershirt"/>
+ <menu_item_call label="Yeni Külot" name="New Underpants"/>
+ <menu_item_call label="Yeni Alfa" name="New Alpha"/>
+ <menu_item_call label="Yeni Fizik" name="New Physics"/>
+ <menu_item_call label="Yeni Dövme" name="New Tattoo"/>
+ </menu>
+ <menu label="Yeni Vücut Bölümleri" name="New Body Parts">
+ <menu_item_call label="Yeni Şekil" name="New Shape"/>
+ <menu_item_call label="Yeni Dış Katman" name="New Skin"/>
+ <menu_item_call label="Yeni Saç" name="New Hair"/>
+ <menu_item_call label="Yeni Gözler" name="New Eyes"/>
+ </menu>
+ <menu_item_call label="Dış Görünümü Yeniden Adlandır" name="rename"/>
+ <menu_item_call label="Dış Görünümü Sil" name="delete_outfit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml
new file mode 100644
index 0000000000..a48529e462
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit">
+ <menu_item_call label="Giysi - Mevcut Dış Görünümü Değiştir" name="wear_replace"/>
+ <menu_item_call label="Giysi - Mevcut Dış Görünüme Ekle" name="wear_add"/>
+ <menu_item_call label="Çıkar - Mevcut Dış Görünümden Kaldır" name="take_off"/>
+ <menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+ <menu_item_call label="Dış Görünümü Yeniden Adlandır" name="rename"/>
+ <menu_item_call label="Dış Görünümü Sil" name="delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_participant_list.xml b/indra/newview/skins/default/xui/tr/menu_participant_list.xml
new file mode 100644
index 0000000000..1d56105e1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_participant_list.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+ <menu_item_check label="Ada Göre Sırala" name="SortByName"/>
+ <menu_item_check label="Son Konuşanlara Göre Sırala" name="SortByRecentSpeakers"/>
+ <menu_item_call label="Profili Göster" name="View Profile"/>
+ <menu_item_call label="Arkadaş Ekle" name="Add Friend"/>
+ <menu_item_call label="Aİ" name="IM"/>
+ <menu_item_call label="Ara" name="Call"/>
+ <menu_item_call label="Paylaş" name="Share"/>
+ <menu_item_call label="Öde" name="Pay"/>
+ <menu_item_check label="Kişi Simgelerini Göster" name="View Icons"/>
+ <menu_item_check label="Sesi Engelle" name="Block/Unblock"/>
+ <menu_item_check label="Metni Engelle" name="MuteText"/>
+ <context_menu label="Moderatör Seçenekleri" name="Moderator Options">
+ <menu_item_check label="Metin sohbetine izin ver" name="AllowTextChat"/>
+ <menu_item_call label="Bu katılımcıyı engelle" name="ModerateVoiceMuteSelected"/>
+ <menu_item_call label="Bu katılımcının engellemesini kaldır" name="ModerateVoiceUnMuteSelected"/>
+ <menu_item_call label="Herkesi engelle" name="ModerateVoiceMute"/>
+ <menu_item_call label="Herkesin engellemesini kaldır" name="ModerateVoiceUnmute"/>
+ </context_menu>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml
new file mode 100644
index 0000000000..404fab17e6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+ <menu_item_check label="Duruma Göre Sırala" name="sort_status"/>
+ <menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+ <menu_item_check label="Verilen İzinleri Göster" name="view_permissions"/>
+ <menu_item_call label="Engellenmiş Sakinleri ve Nesneleri Göster" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups.xml b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
new file mode 100644
index 0000000000..9f2946e310
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+ <menu_item_call label="Bilgileri Görüntüle" name="View Info"/>
+ <menu_item_call label="Sohbet" name="Chat"/>
+ <menu_item_call label="Ara" name="Call"/>
+ <menu_item_call label="Etkinleştir" name="Activate"/>
+ <menu_item_call label="Ayrıl" name="Leave"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml
new file mode 100644
index 0000000000..a1e5ad9a50
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Grup Simgelerini Göster" name="Display Group Icons"/>
+ <menu_item_call label="Seçilen Gruptan Ayrıl" name="Leave Selected Group"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
new file mode 100644
index 0000000000..ee859a9450
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Avatar Context Menu">
+ <menu_item_call label="Profili Göster" name="View Profile"/>
+ <menu_item_call label="Arkadaş Ekle" name="Add Friend"/>
+ <menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
+ <menu_item_call label="Aİ" name="IM"/>
+ <menu_item_call label="Ara" name="Call"/>
+ <menu_item_call label="Harita" name="Map"/>
+ <menu_item_call label="Paylaş" name="Share"/>
+ <menu_item_call label="Öde" name="Pay"/>
+ <menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
+ <menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
new file mode 100644
index 0000000000..5c89f87906
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Multi-Selected People Context Menu">
+ <menu_item_call label="Arkadaş Ekle" name="Add Friends"/>
+ <menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
+ <menu_item_call label="Aİ" name="IM"/>
+ <menu_item_call label="Ara" name="Call"/>
+ <menu_item_call label="Paylaş" name="Share"/>
+ <menu_item_call label="Öde" name="Pay"/>
+ <menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml
new file mode 100644
index 0000000000..0ff2111e9e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="Son Konuşanlara Göre Sırala" name="sort_by_recent_speakers"/>
+ <menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+ <menu_item_check label="Mesafeye Göre Sırala" name="sort_distance"/>
+ <menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+ <menu_item_check label="Haritayı Göster" name="view_map"/>
+ <menu_item_call label="Engellenmiş Sakinleri ve Nesneleri Göster" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml
new file mode 100644
index 0000000000..adfba50138
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+ <menu_item_check label="En Sonunculara Göre Sırala" name="sort_most"/>
+ <menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+ <menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+ <menu_item_call label="Engellenmiş Sakinleri ve Nesneleri Göster" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_picks.xml b/indra/newview/skins/default/xui/tr/menu_picks.xml
new file mode 100644
index 0000000000..3e5375ecc0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+ <menu_item_call label="Bilgi" name="pick_info"/>
+ <menu_item_call label="Düzenle" name="pick_edit"/>
+ <menu_item_call label="Işınla" name="pick_teleport"/>
+ <menu_item_call label="Harita" name="pick_map"/>
+ <menu_item_call label="Sil" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml
new file mode 100644
index 0000000000..d9c4fefc97
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Yeni Seçme" name="create_pick"/>
+ <menu_item_call label="Yeni İlan" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_place.xml b/indra/newview/skins/default/xui/tr/menu_place.xml
new file mode 100644
index 0000000000..ad167a328a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_place.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+ <menu_item_call label="Yer İmi Yap" name="landmark"/>
+ <menu_item_call label="Seçme Oluştur" name="pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_place_add_button.xml b/indra/newview/skins/default/xui/tr/menu_place_add_button.xml
new file mode 100644
index 0000000000..8e52b3f7f2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Klasör Ekle" name="add_folder"/>
+ <menu_item_call label="Yer İmi Ekle" name="add_landmark"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml
new file mode 100644
index 0000000000..b3a2986160
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_folder_gear">
+ <menu_item_call label="Yer İmi Ekle" name="add_landmark"/>
+ <menu_item_call label="Klasör Ekle" name="add_folder"/>
+ <menu_item_call label="Öğeyi Geri Yükle" name="restore_item"/>
+ <menu_item_call label="Kes" name="cut"/>
+ <menu_item_call label="Kopyala" name="copy_folder"/>
+ <menu_item_call label="Yapıştır" name="paste"/>
+ <menu_item_call label="Yeniden Adlandır" name="rename"/>
+ <menu_item_call label="Sil" name="delete"/>
+ <menu_item_call label="Genişlet" name="expand"/>
+ <menu_item_call label="Daralt" name="collapse"/>
+ <menu_item_call label="Tüm klasörleri genişlet" name="expand_all"/>
+ <menu_item_call label="Tüm klasörleri daralt" name="collapse_all"/>
+ <menu_item_check label="Tarihe Göre Sırala" name="sort_by_date"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml
new file mode 100644
index 0000000000..939ee2c7cb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_ladmark_gear">
+ <menu_item_call label="Işınla" name="teleport"/>
+ <menu_item_call label="Ek Bilgi" name="more_info"/>
+ <menu_item_call label="Haritada Göster" name="show_on_map"/>
+ <menu_item_call label="Yer İmi Ekle" name="add_landmark"/>
+ <menu_item_call label="Klasör Ekle" name="add_folder"/>
+ <menu_item_call label="Öğeyi Geri Yükle" name="restore_item"/>
+ <menu_item_call label="Kes" name="cut"/>
+ <menu_item_call label="Yer İmini Kopyala" name="copy_landmark"/>
+ <menu_item_call label="SLurl&apos;i Kopyala" name="copy_slurl"/>
+ <menu_item_call label="Yapıştır" name="paste"/>
+ <menu_item_call label="Yeniden Adlandır" name="rename"/>
+ <menu_item_call label="Sil" name="delete"/>
+ <menu_item_call label="Tüm klasörleri genişlet" name="expand_all"/>
+ <menu_item_call label="Tüm klasörleri daralt" name="collapse_all"/>
+ <menu_item_check label="Tarihe Göre Sırala" name="sort_by_date"/>
+ <menu_item_call label="Seçme Oluştur" name="create_pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml
new file mode 100644
index 0000000000..ed60dec63a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+ <menu_item_call label="Harita" name="show_on_map"/>
+ <menu_item_call label="Öde" name="pay"/>
+ <menu_item_call label="Paylaş" name="share"/>
+ <menu_item_call label="Engelle" name="block"/>
+ <menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+ <menu_item_call label="Çıkar" name="kick"/>
+ <menu_item_call label="Dondur" name="freeze"/>
+ <menu_item_call label="Çöz" name="unfreeze"/>
+ <menu_item_call label="CSR" name="csr"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_save_outfit.xml b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml
new file mode 100644
index 0000000000..b28488fe30
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="save_outfit_menu">
+ <menu_item_call label="Kaydet" name="save_outfit"/>
+ <menu_item_call label="Farklı Kaydet" name="save_as_new_outfit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml
new file mode 100644
index 0000000000..7c1cefc2d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="ScriptChiclet Menu">
+ <menu_item_call label="Kapat" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_slurl.xml b/indra/newview/skins/default/xui/tr/menu_slurl.xml
new file mode 100644
index 0000000000..73ac068b26
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_slurl.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="URL Hakkında" name="about_url"/>
+ <menu_item_call label="URL&apos;ye Işınla" name="teleport_to_url"/>
+ <menu_item_call label="Harita" name="show_on_map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml
new file mode 100644
index 0000000000..b08423be18
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Teleport History Gear Context Menu">
+ <menu_item_call label="Tüm klasörleri genişlet" name="Expand all folders"/>
+ <menu_item_call label="Tüm klasörleri daralt" name="Collapse all folders"/>
+ <menu_item_call label="Işınlama Geçmişini Temizle" name="Clear Teleport History"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml
new file mode 100644
index 0000000000..93984162e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Işınla" name="Teleport"/>
+ <menu_item_call label="Ek Bilgi" name="More Information"/>
+ <menu_item_call label="Panoya Kopyala" name="CopyToClipboard"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml
new file mode 100644
index 0000000000..b1e801c123
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Aç" name="TabOpen"/>
+ <menu_item_call label="Kapat" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_text_editor.xml b/indra/newview/skins/default/xui/tr/menu_text_editor.xml
new file mode 100644
index 0000000000..ffbf309e84
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Kes" name="Cut"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+ <menu_item_call label="Yapıştır" name="Paste"/>
+ <menu_item_call label="Sil" name="Delete"/>
+ <menu_item_call label="Tümünü Seç" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_toolbars.xml b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
new file mode 100644
index 0000000000..7cb3192ec4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+ <menu_item_call label="Düğmeleri seç..." name="Chose Buttons"/>
+ <menu_item_check label="Simgeler ve etiketler" name="icons_with_text"/>
+ <menu_item_check label="Sadece simgeler" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_topinfobar.xml b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml
new file mode 100644
index 0000000000..d9b8d50f18
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_topinfobar">
+ <menu_item_check label="Koordinatları Göster" name="Show Coordinates"/>
+ <menu_item_check label="Parsel Özelliklerini Göster" name="Show Parcel Properties"/>
+ <menu_item_call label="Yer İmi" name="Landmark"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
new file mode 100644
index 0000000000..d82b52aea8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Sakin Profilini Göster" name="show_agent"/>
+ <menu_item_call label="Adı panoya kopyala" name="url_copy_label"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_group.xml b/indra/newview/skins/default/xui/tr/menu_url_group.xml
new file mode 100644
index 0000000000..40fa13b4cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Grup Bilgilerini Göster" name="show_group"/>
+ <menu_item_call label="Grubu panoya kopyala" name="url_copy_label"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_http.xml b/indra/newview/skins/default/xui/tr/menu_url_http.xml
new file mode 100644
index 0000000000..fee8eba150
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Web Sayfasını Aç" name="url_open"/>
+ <menu_item_call label="İnternet Tarayıcıda Aç" name="url_open_internal"/>
+ <menu_item_call label="Harici Tarayıcıda Aç" name="url_open_external"/>
+ <menu_item_call label="URL&apos;yi panoya kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_inventory.xml b/indra/newview/skins/default/xui/tr/menu_url_inventory.xml
new file mode 100644
index 0000000000..3b22c5afec
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Envanter Öğesini Göster" name="show_item"/>
+ <menu_item_call label="Adı panoya kopyala" name="url_copy_label"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_map.xml b/indra/newview/skins/default/xui/tr/menu_url_map.xml
new file mode 100644
index 0000000000..770e330516
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Haritada Göster" name="show_on_map"/>
+ <menu_item_call label="Konuma Işınla" name="teleport_to_location"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
new file mode 100644
index 0000000000..d55e34c11c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Nesne Bilgilerini Göster" name="show_object"/>
+ <menu_item_call label="Haritada Göster" name="show_on_map"/>
+ <menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
+ <menu_item_call label="Nesne Adını panoya kopyala" name="url_copy_label"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_parcel.xml b/indra/newview/skins/default/xui/tr/menu_url_parcel.xml
new file mode 100644
index 0000000000..eac1d743c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Parsel Bilgilerini Göster" name="show_parcel"/>
+ <menu_item_call label="Haritada Göster" name="show_on_map"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_slapp.xml b/indra/newview/skins/default/xui/tr/menu_url_slapp.xml
new file mode 100644
index 0000000000..a2ecfc6a48
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Bu Komutu Çalıştır" name="run_slapp"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_slurl.xml b/indra/newview/skins/default/xui/tr/menu_url_slurl.xml
new file mode 100644
index 0000000000..3f4e51b36c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Yer Bilgilerini Göster" name="show_place"/>
+ <menu_item_call label="Haritada Göster" name="show_on_map"/>
+ <menu_item_call label="Konuma Işınla" name="teleport_to_location"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_teleport.xml b/indra/newview/skins/default/xui/tr/menu_url_teleport.xml
new file mode 100644
index 0000000000..b7035a4d8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Bu Konuma Işınla" name="teleport"/>
+ <menu_item_call label="Haritada Göster" name="show_on_map"/>
+ <menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
new file mode 100644
index 0000000000..75294e38d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Main Menu">
+ <menu label="Ben" name="Me">
+ <menu_item_call label="Kontrol Paneli..." name="Manage My Account"/>
+ <menu_item_call label="Profil..." name="Profile"/>
+ <menu_item_call label="Görünüm..." name="ChangeOutfit"/>
+ <menu_item_check label="Envanter..." name="Inventory"/>
+ <menu_item_check label="Mimikler..." name="Gestures"/>
+ <menu_item_check label="Ses..." name="ShowVoice"/>
+ <menu label="Hareket" name="Movement">
+ <menu_item_call label="Otur" name="Sit Down Here"/>
+ <menu_item_check label="Uç" name="Fly"/>
+ <menu_item_check label="Daima Koş" name="Always Run"/>
+ <menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/>
+ </menu>
+ <menu label="Durum" name="Status">
+ <menu_item_call label="Uzakta" name="Set Away"/>
+ <menu_item_call label="Meşgul" name="Set Busy"/>
+ </menu>
+ <menu_item_call label="Yönetici Durumu Talep Et" name="Request Admin Options"/>
+ <menu_item_call label="Yönetici Durumundan Ayrıl" name="Leave Admin Options"/>
+ <menu_item_call label="L$ Satın Al" name="Buy and Sell L$"/>
+ <menu_item_call label="Tercihler..." name="Preferences"/>
+ <menu_item_call label="Araç çubukları..." name="Toolbars"/>
+ <menu_item_call label="Tüm denetimleri sakla" name="Hide UI"/>
+ <menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
+ </menu>
+ <menu label="İletişim Kur" name="Communicate">
+ <menu_item_call label="Arkadaşlarım" name="My Friends"/>
+ <menu_item_call label="Gruplarım" name="My Groups"/>
+ <menu_item_check label="Yakındaki Sohbet" name="Nearby Chat"/>
+ <menu_item_call label="Yakındaki Kişiler" name="Active Speakers"/>
+ <menu_item_check label="Yakındaki Ses" name="Nearby Voice"/>
+ </menu>
+ <menu label="Dünya" name="World">
+ <menu_item_check label="Mini-harita" name="Mini-Map"/>
+ <menu_item_check label="Dünya Haritası" name="World Map"/>
+ <menu_item_check label="Ara" name="Search"/>
+ <menu_item_call label="Anlık Görüntü" name="Take Snapshot"/>
+ <menu_item_call label="Bu Yeri Yer İmlerine Ekle" name="Create Landmark Here"/>
+ <menu label="Profili Yerleştir" name="Land">
+ <menu_item_call label="Profili Yerleştir" name="Place Profile"/>
+ <menu_item_call label="Arazi Hakkında" name="About Land"/>
+ <menu_item_call label="Bölge/Gayrimenkul" name="Region/Estate"/>
+ </menu>
+ <menu_item_call label="Bu Araziyi Satın Al" name="Buy Land"/>
+ <menu_item_call label="Arazim" name="My Land"/>
+ <menu label="Göster" name="LandShow">
+ <menu_item_check label="Denetimleri Hareket Ettir" name="Movement Controls"/>
+ <menu_item_check label="Denetimleri Göster" name="Camera Controls"/>
+ <menu_item_check label="Yasaklama Çizgileri" name="Ban Lines"/>
+ <menu_item_check label="İşaretler" name="beacons"/>
+ <menu_item_check label="Mülkiyet Çizgileri" name="Property Lines"/>
+ <menu_item_check label="Arazi Sahipleri" name="Land Owners"/>
+ <menu_item_check label="Koordinatlar" name="Coordinates"/>
+ <menu_item_check label="Parsel Özellikleri" name="Parcel Properties"/>
+ <menu_item_check label="Gelişmiş Menü" name="Show Advanced Menu"/>
+ </menu>
+ <menu_item_call label="Ana Konuma Işınla" name="Teleport Home"/>
+ <menu_item_call label="Ana Konumu Burası Olarak Seç" name="Set Home to Here"/>
+ <menu label="Güneş" name="Environment Settings">
+ <menu_item_call label="Gün Doğumu" name="Sunrise"/>
+ <menu_item_call label="Gün Ortası" name="Noon"/>
+ <menu_item_call label="Gün Batımı" name="Sunset"/>
+ <menu_item_call label="Gece Yarısı" name="Midnight"/>
+ </menu>
+ <menu label="Ortam Düzenleyici" name="Enviroment Editor">
+ <menu_item_call label="Ortam Ayarları..." name="Enviroment Settings"/>
+ <menu label="Su Ön Ayarları" name="Water Presets">
+ <menu_item_call label="Yeni ön ayar..." name="new_water_preset"/>
+ <menu_item_call label="Ön ayarı düzenle..." name="edit_water_preset"/>
+ <menu_item_call label="Ön ayarı sil..." name="delete_water_preset"/>
+ </menu>
+ <menu label="Gökyüzü Ön Ayarları" name="Sky Presets">
+ <menu_item_call label="Yeni ön ayar..." name="new_sky_preset"/>
+ <menu_item_call label="Ön ayarı düzenle..." name="edit_sky_preset"/>
+ <menu_item_call label="Ön ayarı sil..." name="delete_sky_preset"/>
+ </menu>
+ <menu label="Gün Ön Ayarları" name="Day Presets">
+ <menu_item_call label="Yeni ön ayar..." name="new_day_preset"/>
+ <menu_item_call label="Ön ayarı düzenle..." name="edit_day_preset"/>
+ <menu_item_call label="Ön ayarı sil..." name="delete_day_preset"/>
+ </menu>
+ </menu>
+ </menu>
+ <menu label="İnşa Et" name="BuildTools">
+ <menu_item_check label="İnşa Et" name="Show Build Tools"/>
+ <menu label="İnşa Et Aracını Seç" name="Select Tool">
+ <menu_item_call label="Odaklanma Aracı" name="Focus"/>
+ <menu_item_call label="Hareket Ettirme Aracı" name="Move"/>
+ <menu_item_call label="Düzenleme Aracı" name="Edit"/>
+ <menu_item_call label="Oluşturma Aracı" name="Create"/>
+ <menu_item_call label="Arazi Aracı" name="Land"/>
+ </menu>
+ <menu_item_call label="Bağla" name="Link"/>
+ <menu_item_call label="Bağlnty. Kopar" name="Unlink"/>
+ <menu_item_check label="Bağlantılı Parçaları Düzenle" name="Edit Linked Parts"/>
+ <menu label="Bağlantılı Parçaları Seç" name="Select Linked Parts">
+ <menu_item_call label="Sonraki Parçayı Seç" name="Select Next Part"/>
+ <menu_item_call label="Önceki Parçayı Seç" name="Select Previous Part"/>
+ <menu_item_call label="Sonraki Parçayı Dahil Et" name="Include Next Part"/>
+ <menu_item_call label="Önceki Parçayı Dahil Et" name="Include Previous Part"/>
+ </menu>
+ <menu_item_call label="Seçime Odaklan" name="Focus on Selection"/>
+ <menu_item_call label="Seçimi Yakınlaştır" name="Zoom to Selection"/>
+ <menu label="Nesne" name="Object">
+ <menu_item_call label="Satın Al" name="Menu Object Buy"/>
+ <menu_item_call label="Al" name="Menu Object Take"/>
+ <menu_item_call label="Kopya Al" name="Take Copy"/>
+ <menu_item_call label="Envanterime Geri Kaydet" name="Save Object Back to My Inventory"/>
+ <menu_item_call label="Nesne İçeriklerine Geri Kaydet" name="Save Object Back to Object Contents"/>
+ <menu_item_call label="Nesneyi İade Et" name="Return Object back to Owner"/>
+ </menu>
+ <menu label="Komut Dosyaları" name="Scripts">
+ <menu_item_call label="Komut Dosyalarını Tekrar Derle (Mono)" name="Mono"/>
+ <menu_item_call label="Komut Dosyalarını Tekrar Derle (LSL)" name="LSL"/>
+ <menu_item_call label="Komut Dosyalarını Sıfırla" name="Reset Scripts"/>
+ <menu_item_call label="Komut Dosyalarını Çalışıyor Olarak Ayarla" name="Set Scripts to Running"/>
+ <menu_item_call label="Komut Dosyalarını Çalışmıyor Olarak Ayarla" name="Set Scripts to Not Running"/>
+ </menu>
+ <menu label="Seçenklr." name="Options">
+ <menu_item_check label="Gelişmiş İzinleri Göster" name="DebugPermissions"/>
+ <menu_item_check label="Sadece Nesnelerimi Seç" name="Select Only My Objects"/>
+ <menu_item_check label="Sadece Hareket Ettirilebilir Nesneleri Seç" name="Select Only Movable Objects"/>
+ <menu_item_check label="Çevreleyerek Seç" name="Select By Surrounding"/>
+ <menu_item_check label="Seçim Ana Hatlarını Göster" name="Show Selection Outlines"/>
+ <menu_item_check label="Gizli Seçimi Göster" name="Show Hidden Selection"/>
+ <menu_item_check label="Seçim İçin Işık Yarı Çapını Göster" name="Show Light Radius for Selection"/>
+ <menu_item_check label="Seçim Işınını Göster" name="Show Selection Beam"/>
+ <menu_item_check label="Ağa Uydur" name="Snap to Grid"/>
+ <menu_item_call label="XY Nesnesini Ağa Uydur" name="Snap Object XY to Grid"/>
+ <menu_item_call label="Ağ İçin Seçimi Kullan" name="Use Selection for Grid"/>
+ <menu_item_call label="Ağ Seçenekleri" name="Grid Options"/>
+ </menu>
+ <menu label="Karşıya Yükle" name="Upload">
+ <menu_item_call label="Görüntü (L$[COST])..." name="Upload Image"/>
+ <menu_item_call label="Ses (L$[COST])..." name="Upload Sound"/>
+ <menu_item_call label="Animasyon (L$[COST])..." name="Upload Animation"/>
+ <menu_item_call label="Model..." name="Upload Model"/>
+ <menu_item_call label="Toplu (dosya başına L$[COST])..." name="Bulk Upload"/>
+ <menu_item_call label="Varsayılan Karşıya Yükleme İzinlerini Ayarla" name="perm prefs"/>
+ </menu>
+ <menu_item_call label="Geri Al" name="Undo"/>
+ <menu_item_call label="Yinele" name="Redo"/>
+ </menu>
+ <menu label="Yardım" name="Help">
+ <menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
+ <menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse"/>
+ <menu_item_call label="Hata Bildir" name="Report Bug"/>
+ <menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
+ </menu>
+ <menu label="Gelişmiş" name="Advanced">
+ <menu_item_call label="Dokuları Tekrar Kaydet" name="Rebake Texture"/>
+ <menu_item_call label="KA Büyüklüğünü Varsayılana Ayarla" name="Set UI Size to Default"/>
+ <menu_item_call label="Pencere Büyüklüğünü Ayarla..." name="Set Window Size..."/>
+ <menu_item_check label="Seçim Mesafesini Sınırla" name="Limit Select Distance"/>
+ <menu_item_check label="Kamera Kısıtlarını Devredışı Bırak" name="Disable Camera Distance"/>
+ <menu_item_check label="Yüksek Çöz. Anlık Görüntü" name="HighResSnapshot"/>
+ <menu_item_check label="Sessiz ve Animasyonsuz Anlık Görüntüleri Diske Kaydet" name="QuietSnapshotsToDisk"/>
+ <menu label="Performans Araçları" name="Performance Tools">
+ <menu_item_call label="Gecikme Ölçer" name="Lag Meter"/>
+ <menu_item_check label="İstatistik Çubuğu" name="Statistics Bar"/>
+ <menu_item_check label="Avatarlar İçin Çizim Ağırlığını Göster" name="Avatar Rendering Cost"/>
+ </menu>
+ <menu label="Vurgulama ve Görünürlük" name="Highlighting and Visibility">
+ <menu_item_check label="Yanıp Sönen İşaret" name="Cheesy Beacon"/>
+ <menu_item_check label="Parçacıkları Gizle" name="Hide Particles"/>
+ <menu_item_check label="Seçilenleri Gizle" name="Hide Selected"/>
+ <menu_item_check label="Saydamı Vurgula" name="Highlight Transparent"/>
+ <menu_item_check label="BÜG Aksesuarlarını Göster" name="Show HUD Attachments"/>
+ <menu_item_check label="Fare Üzerinden Görünüm Artı İşaretini Göster" name="ShowCrosshairs"/>
+ </menu>
+ <menu label="İşleme Türleri" name="Rendering Types">
+ <menu_item_check label="Basit" name="Simple"/>
+ <menu_item_check label="Alfa" name="Alpha"/>
+ <menu_item_check label="Ağaç" name="Tree"/>
+ <menu_item_check label="Avatarlar" name="Character"/>
+ <menu_item_check label="Yüzey Yaması" name="Surface Patch"/>
+ <menu_item_check label="Gökyüzü" name="Sky"/>
+ <menu_item_check label="Su" name="Water"/>
+ <menu_item_check label="Toprak" name="Ground"/>
+ <menu_item_check label="Hacim" name="Volume"/>
+ <menu_item_check label="Çimen" name="Grass"/>
+ <menu_item_check label="Bulutlar" name="Clouds"/>
+ <menu_item_check label="Parçacıklar" name="Particles"/>
+ <menu_item_check label="Tümsek" name="Bump"/>
+ </menu>
+ <menu label="İşleme Özellikleri" name="Rendering Features">
+ <menu_item_check label="KA" name="UI"/>
+ <menu_item_check label="Seçili" name="Selected"/>
+ <menu_item_check label="Vurgulanmış" name="Highlighted"/>
+ <menu_item_check label="Dinamik Dokular" name="Dynamic Textures"/>
+ <menu_item_check label="Ayak Hizası Gölgeleri" name="Foot Shadows"/>
+ <menu_item_check label="Pus" name="Fog"/>
+ <menu_item_check label="FRInfo Testi" name="Test FRInfo"/>
+ <menu_item_check label="Esnek Nesneler" name="Flexible Objects"/>
+ </menu>
+ <menu_item_check label="İş Parçacığı Okuma Eklentisini Kullan" name="Use Plugin Read Thread"/>
+ <menu_item_call label="Grup Ön Belleğini Temizle" name="ClearGroupCache"/>
+ <menu_item_check label="Fare Düzleştirme" name="Mouse Smoothing"/>
+ <menu label="Kısa Yollar" name="Shortcuts">
+ <menu_item_call label="Görüntü (L$[COST])..." name="Upload Image"/>
+ <menu_item_check label="Ara" name="Search"/>
+ <menu_item_call label="Bırakma Anahtarları" name="Release Keys"/>
+ <menu_item_call label="KA Büyüklüğünü Varsayılana Ayarla" name="Set UI Size to Default"/>
+ <menu_item_check label="Gelişmiş Menüyü Göster - eski kısayol" name="Show Advanced Menu - legacy shortcut"/>
+ <menu_item_call label="Pencereyi Kapat" name="Close Window"/>
+ <menu_item_call label="Tüm Pencereleri Kapat" name="Close All Windows"/>
+ <menu_item_call label="Diske Anlık Görüntü" name="Snapshot to Disk"/>
+ <menu_item_call label="Fare Üzerinden Görünüm" name="Mouselook"/>
+ <menu_item_check label="Oyun Çubuğu Flycam" name="Joystick Flycam"/>
+ <menu_item_call label="Görünümü Sıfırla" name="Reset View"/>
+ <menu_item_call label="Son Sohbet Edene Bak" name="Look at Last Chatter"/>
+ <menu label="İnşa Et Aracını Seç" name="Select Tool">
+ <menu_item_call label="Odaklanma Aracı" name="Focus"/>
+ <menu_item_call label="Hareket Ettirme Aracı" name="Move"/>
+ <menu_item_call label="Düzenleme Aracı" name="Edit"/>
+ <menu_item_call label="Oluşturma Aracı" name="Create"/>
+ <menu_item_call label="Arazi Aracı" name="Land"/>
+ </menu>
+ <menu_item_call label="Yakınlaştır" name="Zoom In"/>
+ <menu_item_call label="Varsayılan Yakınlaştırma" name="Zoom Default"/>
+ <menu_item_call label="Uzaklaştırma" name="Zoom Out"/>
+ </menu>
+ <menu_item_call label="Hata Ayıklama Ayarlarını Göster" name="Debug Settings"/>
+ <menu_item_check label="Geliştirme Menüsünü Göster" name="Debug Mode"/>
+ </menu>
+ <menu label="Geliştir" name="Develop">
+ <menu label="Konsollar" name="Consoles">
+ <menu_item_check label="Doku Konsolu" name="Texture Console"/>
+ <menu_item_check label="Hata Ayıklama Konsolu" name="Debug Console"/>
+ <menu_item_call label="Bildirimler Konsolu" name="Notifications"/>
+ <menu_item_check label="Doku Büyüklüğü Konsolu" name="Texture Size"/>
+ <menu_item_check label="Doku Kategorisi Konsolu" name="Texture Category"/>
+ <menu_item_check label="Hızlı Zamanlayıcılar" name="Fast Timers"/>
+ <menu_item_check label="Bellek" name="Memory"/>
+ <menu_item_check label="Sahne İstatistikleri" name="Scene Statistics"/>
+ <menu_item_call label="Hata Ayıklama Konsoluna giden Bölge Bilgisi" name="Region Info to Debug Console"/>
+ <menu_item_call label="Hata Ayıklama Konsoluna giden Grup Bilgisi" name="Group Info to Debug Console"/>
+ <menu_item_call label="Hata Ayıklama Konsoluna giden Özellikler Bilgisi" name="Capabilities Info to Debug Console"/>
+ <menu_item_check label="Kamera" name="Camera"/>
+ <menu_item_check label="Rüzgar" name="Wind"/>
+ <menu_item_check label="Görünüm Alanı" name="FOV"/>
+ <menu_item_check label="Rozet" name="Badge"/>
+ </menu>
+ <menu label="Bilgiyi Göster" name="Display Info">
+ <menu_item_check label="Zamanı Göster" name="Show Time"/>
+ <menu_item_check label="Karşıya Yükleme Maliyetini Göster" name="Show Upload Cost"/>
+ <menu_item_check label="İşleme Bilgisini Göster" name="Show Render Info"/>
+ <menu_item_check label="Doku Bilgisini Göster" name="Show Texture Info"/>
+ <menu_item_check label="Matrisleri Göster" name="Show Matrices"/>
+ <menu_item_check label="İmlecin Altındaki Rengi Göster" name="Show Color Under Cursor"/>
+ <menu_item_check label="Belleği Göster" name="Show Memory"/>
+ <menu_item_check label="Özel Bellek Bilgisini Göster" name="Show Private Mem Info"/>
+ <menu_item_check label="Nesneler İçin Güncelleştirmeleri Göster" name="Show Updates"/>
+ </menu>
+ <menu label="Bir Hatayı Zorla" name="Force Errors">
+ <menu_item_call label="Kesme Noktasını Zorla" name="Force Breakpoint"/>
+ <menu_item_call label="LLError ve Çökme Zorla" name="Force LLError And Crash"/>
+ <menu_item_call label="Hatalı Bellek Erişimini Zorla" name="Force Bad Memory Access"/>
+ <menu_item_call label="Sonsuz Döngüyü Zorla" name="Force Infinite Loop"/>
+ <menu_item_call label="Sürücü Çökmesini Zorla" name="Force Driver Carsh"/>
+ <menu_item_call label="Yazılım Özel Durumunu Zorla" name="Force Software Exception"/>
+ <menu_item_call label="Görüntüleyici Bağlantısının Kesilmesini Zorla" name="Force Disconnect Viewer"/>
+ <menu_item_call label="Bir Bellek Sızıntısı Benzetimini Gerçekleştir" name="Memory Leaking Simulation"/>
+ </menu>
+ <menu label="İşleme Testleri" name="Render Tests">
+ <menu_item_check label="Kamera Kayması" name="Camera Offset"/>
+ <menu_item_check label="Çerçeve Hızını Rastgele Seç" name="Randomize Framerate"/>
+ <menu_item_check label="Düzenli Yavaş Çerçeve" name="Periodic Slow Frame"/>
+ <menu_item_check label="Çerçeve Testi" name="Frame Test"/>
+ </menu>
+ <menu label="Meta Verileri İşle" name="Render Metadata">
+ <menu_item_check label="Sınırlama Kutuları" name="Bounding Boxes"/>
+ <menu_item_check label="Normaller" name="Normals"/>
+ <menu_item_check label="Gölgeleme Ağacı" name="Octree"/>
+ <menu_item_check label="Gölge Kesik Koni" name="Shadow Frusta"/>
+ <menu_item_check label="Fizik Şekilleri" name="Physics Shapes"/>
+ <menu_item_check label="Gölgeleme" name="Occlusion"/>
+ <menu_item_check label="Toplu İşleri İşle" name="Render Batches"/>
+ <menu_item_check label="Güncelleştirme Türü" name="Update Type"/>
+ <menu_item_check label="Doku Animasyonu" name="Texture Anim"/>
+ <menu_item_check label="Doku Önceliği" name="Texture Priority"/>
+ <menu_item_check label="Doku Alanı" name="Texture Area"/>
+ <menu_item_check label="Yüz Alanı" name="Face Area"/>
+ <menu_item_check label="Ayrıntı Seviyesi Bilgisi" name="LOD Info"/>
+ <menu_item_check label="İnşa Kuyruğu" name="Build Queue"/>
+ <menu_item_check label="Işıklar" name="Lights"/>
+ <menu_item_check label="Çarpışma İskeleti" name="Collision Skeleton"/>
+ <menu_item_check label="Işın Yayını" name="Raycast"/>
+ <menu_item_check label="İşleme Karmaşıklığı" name="rendercomplexity"/>
+ <menu_item_check label="Şekillendir" name="Sculpt"/>
+ </menu>
+ <menu label="İşleme" name="Rendering">
+ <menu_item_check label="Eksenler" name="Axes"/>
+ <menu_item_check label="Tanjant Temeli" name="Tangent Basis"/>
+ <menu_item_call label="Seçilen Doku Bilgi Temeli" name="Selected Texture Info Basis"/>
+ <menu_item_check label="Telkafes" name="Wireframe"/>
+ <menu_item_check label="Görünen Nesneler İçin Gölgeleme" name="Object-Object Occlusion"/>
+ <menu_item_check label="Işıklandırma ve Gölgeler" name="Lighting and Shadows"/>
+ <menu_item_check label="Güneş/Ay/Projektörlerden Gelen Gölgeler" name="Shadows from Sun/Moon/Projectors"/>
+ <menu_item_check label="SSAO ve Gölge Yumuşatma" name="SSAO and Shadow Smoothing"/>
+ <menu_item_check label="Küresel Aydınlatma (Deneysel)" name="Global Illumination"/>
+ <menu_item_check label="GL Hata Ayıklama" name="Debug GL"/>
+ <menu_item_check label="Ardışık Hata Ayıklama" name="Debug Pipeline"/>
+ <menu_item_check label="Otomatik Alfa Maskeleri (ertelenmiş)" name="Automatic Alpha Masks (deferred)"/>
+ <menu_item_check label="Otomatik Alfa Maskeleri (ertelenmemiş)" name="Automatic Alpha Masks (non-deferred)"/>
+ <menu_item_check label="Animasyon Dokuları" name="Animation Textures"/>
+ <menu_item_check label="Dokuları Devre Dışı Bırak" name="Disable Textures"/>
+ <menu_item_check label="Tam Çöz. Dokular" name="Rull Res Textures"/>
+ <menu_item_check label="Dokuları Denetle" name="Audit Textures"/>
+ <menu_item_check label="Doku Atlas (deneysel)" name="Texture Atlas"/>
+ <menu_item_check label="Eklenmiş Işıkları İşle" name="Render Attached Lights"/>
+ <menu_item_check label="Eklenmiş Parçacıkları İşle" name="Render Attached Particles"/>
+ <menu_item_check label="Parıldayan Nesneler Üzerine Gel" name="Hover Glow Objects"/>
+ </menu>
+ <menu label="Ağ" name="Network">
+ <menu_item_check label="Aracıyı Durdur" name="AgentPause"/>
+ <menu_item_call label="İleti Günlüğünü Etkinleştir" name="Enable Message Log"/>
+ <menu_item_call label="İleti Günlüğünü Devre Dışı Bırak" name="Disable Message Log"/>
+ <menu_item_check label="Nesnelerin Hızını İnterpole Edin" name="Velocity Interpolate Objects"/>
+ <menu_item_check label="Nesne Konumlarını Ping İle İnterpole Edin" name="Ping Interpolate Object Positions"/>
+ <menu_item_call label="Paket Bırakın" name="Drop a Packet"/>
+ </menu>
+ <menu_item_call label="Komut Dosyalı Kameranın Dökümünü Al" name="Dump Scripted Camera"/>
+ <menu_item_call label="Toslamalar, İtmeler ve Vurmalar" name="Bumps, Pushes &amp;amp; Hits"/>
+ <menu label="Kaydedici" name="Recorder">
+ <menu_item_call label="Oynatmayı Başlat" name="Start Playback"/>
+ <menu_item_call label="Oynatmayı Durdur" name="Stop Playback"/>
+ <menu_item_check label="Döngü Oynatma" name="Loop Playback"/>
+ <menu_item_call label="Kaydı Başlat" name="Start Record"/>
+ <menu_item_call label="Kaydı Durdur" name="Stop Record"/>
+ </menu>
+ <menu label="Dünya" name="World">
+ <menu_item_check label="Sim Güneşi Geçersiz Kıl" name="Sim Sun Override"/>
+ <menu_item_check label="Yanıp Sönen İşaret" name="Cheesy Beacon"/>
+ <menu_item_check label="Sabit Hava Durumu" name="Fixed Weather"/>
+ <menu_item_call label="Bölge Nesne Önbelleğinin Dökümünü Al" name="Dump Region Object Cache"/>
+ </menu>
+ <menu label="KA" name="UI">
+ <menu_item_call label="Ortam Tarayıcı Testi" name="Web Browser Test"/>
+ <menu_item_call label="Web İçerik Tarayıcısı" name="Web Content Browser"/>
+ <menu_item_call label="SelectMgr&apos;i Dökümünü Al" name="Dump SelectMgr"/>
+ <menu_item_call label="Envanterin Dökümünü Al" name="Dump Inventory"/>
+ <menu_item_call label="Zamanlayıcıların Dökümünü Al" name="Dump Timers"/>
+ <menu_item_call label="Odaklayıcı Tutucunun Dökümünü Al" name="Dump Focus Holder"/>
+ <menu_item_call label="Seçilen Nesne Bilgisini Yazdır" name="Print Selected Object Info"/>
+ <menu_item_call label="Aracı Bilgisini Yazdır" name="Print Agent Info"/>
+ <menu_item_call label="Bellek İstatistikleri" name="Memory Stats"/>
+ <menu_item_check label="Bölge Hata Ayıklama Konsolu" name="Region Debug Console"/>
+ <menu_item_check label="SelectMgr İçin Hata Ayıklama" name="Debug SelectMgr"/>
+ <menu_item_check label="Tıklamalar İçin Hata Ayıklama" name="Debug Clicks"/>
+ <menu_item_check label="Görünümler için Hata Ayıklama" name="Debug Views"/>
+ <menu_item_check label="Ad Araç İpuçları İçin Hata Ayıklama" name="Debug Name Tooltips"/>
+ <menu_item_check label="Fare Etkinlikleri İçin Hata Ayıklama" name="Debug Mouse Events"/>
+ <menu_item_check label="Anahtarlar İçin Hata Ayıklama" name="Debug Keys"/>
+ <menu_item_check label="WindowProc İçin Hata Ayıklama" name="Debug WindowProc"/>
+ </menu>
+ <menu label="XUI" name="XUI">
+ <menu_item_call label="Renk Ayarlarını Tekrar Yükle" name="Reload Color Settings"/>
+ <menu_item_call label="Fon Testini Göster" name="Show Font Test"/>
+ <menu_item_check label="XUI Adlarını Göster" name="Show XUI Names"/>
+ <menu_item_call label="Test Amaçlı Aİ&apos;ler Gönder" name="Send Test IMs"/>
+ <menu_item_call label="Ad Önbelleklerini Temizle" name="Flush Names Caches"/>
+ </menu>
+ <menu label="Avatar" name="Character">
+ <menu label="Kaydedilmiş Dokuyu Al" name="Grab Baked Texture">
+ <menu_item_call label="İris" name="Iris"/>
+ <menu_item_call label="Baş" name="Head"/>
+ <menu_item_call label="Üst Gövde" name="Upper Body"/>
+ <menu_item_call label="Alt Gövde" name="Lower Body"/>
+ <menu_item_call label="Etek" name="Skirt"/>
+ </menu>
+ <menu label="Karakter Testleri" name="Character Tests">
+ <menu_item_call label="XML&apos;de Görünüm" name="Appearance To XML"/>
+ <menu_item_call label="Karakter Geometrisini Aç/Kapa" name="Toggle Character Geometry"/>
+ <menu_item_call label="Test Erkeği" name="Test Male"/>
+ <menu_item_call label="Test Dişisi" name="Test Female"/>
+ <menu_item_call label="PG&apos;yi Aç/Kapa" name="Toggle PG"/>
+ <menu_item_check label="Avatar Seçimine İzin Ver" name="Allow Select Avatar"/>
+ </menu>
+ <menu_item_call label="Parametreleri Varsayılana Zorla" name="Force Params to Default"/>
+ <menu_item_check label="Animasyon Bilgisi" name="Animation Info"/>
+ <menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
+ <menu_item_check label="Şuraya Bak&apos;ı Göster" name="Show Look At"/>
+ <menu_item_check label="Şuraya İşaret Et&apos;i Göster" name="Show Point At"/>
+ <menu_item_check label="Eklem Güncelleştirmeleri İçin Hata Ayıklama" name="Debug Joint Updates"/>
+ <menu_item_check label="Ayrıntı Seviyesi Bilgisini Devre Dışı Bırak" name="Disable LOD"/>
+ <menu_item_check label="Debug Character Vis" name="Debug Character Vis"/>
+ <menu_item_check label="Çarpışma İskeletini Göster" name="Show Collision Skeleton"/>
+ <menu_item_check label="Aracı Hedefini Göster" name="Display Agent Target"/>
+ --&gt;
+ <menu_item_call label="Aksesuarların Dökümünü Al" name="Dump Attachments"/>
+ <menu_item_call label="Avatar Dokuları İçin Hata Ayıklama" name="Debug Avatar Textures"/>
+ <menu_item_call label="Yerel Dokuların Dökümünü Al" name="Dump Local Textures"/>
+ </menu>
+ <menu_item_check label="HTTP Dokuları" name="HTTP Textures"/>
+ <menu_item_check label="HTTP Envanteri" name="HTTP Inventory"/>
+ <menu_item_call label="Görüntüleri Sıkıştır" name="Compress Images"/>
+ <menu_item_check label="Mini Döküm Dosyası Hata Ayıklama Çıktısı" name="Output Debug Minidump"/>
+ <menu_item_check label="Sonraki Çalışmada Konsol Penceresi" name="Console Window"/>
+ <menu_item_call label="Yönetici Durumu Talep Et" name="Request Admin Options"/>
+ <menu_item_call label="Yönetici Durumundan Ayrıl" name="Leave Admin Options"/>
+ <menu_item_check label="Yönetici Menüsünü Göster" name="View Admin Options"/>
+ </menu>
+ <menu label="Yönetici" name="Admin">
+ <menu label="Object">
+ <menu_item_call label="Kopya Al" name="Take Copy"/>
+ <menu_item_call label="Mülkiyetime Geçir" name="Force Owner To Me"/>
+ <menu_item_call label="İzinlerle Birlikte Mülkiyetime Geçir" name="Force Owner Permissive"/>
+ <menu_item_call label="Sil" name="Delete"/>
+ <menu_item_call label="Kilitle" name="Lock"/>
+ <menu_item_call label="Varlık Kimliklerini Al" name="Get Assets IDs"/>
+ </menu>
+ <menu label="Parsel" name="Parcel">
+ <menu_item_call label="Mülkiyetime Geçir" name="Owner To Me"/>
+ <menu_item_call label="Linden İçeriğine Ayarla" name="Set to Linden Content"/>
+ <menu_item_call label="Kamu Arazisi Üzerinde Hak Talep Et" name="Claim Public Land"/>
+ </menu>
+ <menu label="Bölge" name="Region">
+ <menu_item_call label="Geçici Varlık Verilerinin Dökümünü Al" name="Dump Temp Asset Data"/>
+ <menu_item_call label="Bölge Durumunu Kaydet" name="Save Region State"/>
+ </menu>
+ <menu_item_call label="Yönetici Araçları" name="God Tools"/>
+ </menu>
+ <menu label="Yönetici" name="Deprecated">
+ <menu label="Nesneyi Ekle" name="Attach Object"/>
+ <menu label="Nesneyi Ayır" name="Detach Object"/>
+ <menu label="Giysiyi Çıkar" name="Take Off Clothing">
+ <menu_item_call label="Gömlek" name="Shirt"/>
+ <menu_item_call label="Pantolon" name="Pants"/>
+ <menu_item_call label="Ayakkabılar" name="Shoes"/>
+ <menu_item_call label="Çoraplar" name="Socks"/>
+ <menu_item_call label="Ceket" name="Jacket"/>
+ <menu_item_call label="Eldivenler" name="Gloves"/>
+ <menu_item_call label="Fanila" name="Menu Undershirt"/>
+ <menu_item_call label="Külot" name="Menu Underpants"/>
+ <menu_item_call label="Etek" name="Skirt"/>
+ <menu_item_call label="Alfa" name="Alpha"/>
+ <menu_item_call label="Dövme" name="Tattoo"/>
+ <menu_item_call label="Fizik" name="Physics"/>
+ <menu_item_call label="Tüm Giysiler" name="All Clothes"/>
+ </menu>
+ <menu label="Yardım" name="Help">
+ <menu_item_call label="Resmi Linden Blog&apos;u" name="Official Linden Blog"/>
+ <menu_item_call label="Komut Dosyası Portalı" name="Scripting Portal"/>
+ <menu label="Hata Raporlama" name="Bug Reporting">
+ <menu_item_call label="Kamuya Açık Sorun İzleyicisi" name="Public Issue Tracker"/>
+ <menu_item_call label="Kamuya Açık Sorun İzleyicisi Yardımı" name="Publc Issue Tracker Help"/>
+ <menu_item_call label="Hata Raporlama 101" name="Bug Reporing 101"/>
+ <menu_item_call label="Güvenlik Sorunları" name="Security Issues"/>
+ <menu_item_call label="Soru ve Yanıt Wiki Sayfası" name="QA Wiki"/>
+ </menu>
+ </menu>
+ </menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml
new file mode 100644
index 0000000000..448202df87
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit Wearable Context Menu">
+ <menu_item_call label="Değiştir" name="wear_replace"/>
+ <menu_item_call label="Giy" name="wear_wear"/>
+ <menu_item_call label="Ekle" name="wear_add"/>
+ <menu_item_call label="Çıkar / Ayır" name="take_off_or_detach"/>
+ <menu_item_call label="Ayır" name="detach"/>
+ <context_menu label="Şuna ekle" name="wearable_attach_to"/>
+ <context_menu label="BÜG&apos;e Ekle" name="wearable_attach_to_hud"/>
+ <menu_item_call label="Çıkar" name="take_off"/>
+ <menu_item_call label="Düzenle" name="edit"/>
+ <menu_item_call label="Öğe Profili" name="object_profile"/>
+ <menu_item_call label="Orijinali Göster" name="show_original"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
new file mode 100644
index 0000000000..438e580cd3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Wearing">
+ <menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+ <menu_item_call label="Çıkar" name="takeoff"/>
+ <menu_item_call label="Dış görünüm listesini panoya kopyala" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
new file mode 100644
index 0000000000..9796546559
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Wearing">
+ <menu_item_call label="Çıkar" name="take_off"/>
+ <menu_item_call label="Ayır" name="detach"/>
+ <menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/mime_types.xml b/indra/newview/skins/default/xui/tr/mime_types.xml
new file mode 100644
index 0000000000..c37f872a65
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/mime_types.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 İçeriği
+ </label>
+ <tooltip name="web_tooltip">
+ Bu konumda Web içeriği var
+ </tooltip>
+ <playtip name="web_playtip">
+ Web içeriğini göster
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Film
+ </label>
+ <tooltip name="movie_tooltip">
+ Burada oynatılacak bir film var
+ </tooltip>
+ <playtip name="movie_playtip">
+ Filmi oynat
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Görüntü
+ </label>
+ <tooltip name="image_tooltip">
+ Bu konumda bir görüntü var
+ </tooltip>
+ <playtip name="image_playtip">
+ Bu konumdaki görüntüyü göster
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Ses
+ </label>
+ <tooltip name="audio_tooltip">
+ Bu konumda ses var
+ </tooltip>
+ <playtip name="audio_playtip">
+ Bu konumdaki sesi çal
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Gerçek Zamanlı Akış
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Hiçbiri -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Hiçbiri -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Ses
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Video
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Görüntü
+ </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 Ses/Video
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ PDF Belgesi
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Postscript Belgesi
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Zengin Metin (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Eşzamanlı Multimedya Tümleştirme Dili (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Web Sayfası (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">
+ Ses (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Ses (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Ses (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Ses (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Görüntü (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Görüntü (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Görüntü (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Görüntü (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Görüntü (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Görüntü (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Web Sayfası
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Metin
+ </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/tr/mime_types_linux.xml b/indra/newview/skins/default/xui/tr/mime_types_linux.xml
new file mode 100644
index 0000000000..c37f872a65
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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 İçeriği
+ </label>
+ <tooltip name="web_tooltip">
+ Bu konumda Web içeriği var
+ </tooltip>
+ <playtip name="web_playtip">
+ Web içeriğini göster
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Film
+ </label>
+ <tooltip name="movie_tooltip">
+ Burada oynatılacak bir film var
+ </tooltip>
+ <playtip name="movie_playtip">
+ Filmi oynat
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Görüntü
+ </label>
+ <tooltip name="image_tooltip">
+ Bu konumda bir görüntü var
+ </tooltip>
+ <playtip name="image_playtip">
+ Bu konumdaki görüntüyü göster
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Ses
+ </label>
+ <tooltip name="audio_tooltip">
+ Bu konumda ses var
+ </tooltip>
+ <playtip name="audio_playtip">
+ Bu konumdaki sesi çal
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Gerçek Zamanlı Akış
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Hiçbiri -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Hiçbiri -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Ses
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Video
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Görüntü
+ </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 Ses/Video
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ PDF Belgesi
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Postscript Belgesi
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Zengin Metin (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Eşzamanlı Multimedya Tümleştirme Dili (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Web Sayfası (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">
+ Ses (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Ses (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Ses (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Ses (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Görüntü (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Görüntü (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Görüntü (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Görüntü (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Görüntü (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Görüntü (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Web Sayfası
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Metin
+ </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/tr/mime_types_mac.xml b/indra/newview/skins/default/xui/tr/mime_types_mac.xml
new file mode 100644
index 0000000000..c37f872a65
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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">
+ Web İçeriği
+ </label>
+ <tooltip name="web_tooltip">
+ Bu konumda Web içeriği var
+ </tooltip>
+ <playtip name="web_playtip">
+ Web içeriğini göster
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Film
+ </label>
+ <tooltip name="movie_tooltip">
+ Burada oynatılacak bir film var
+ </tooltip>
+ <playtip name="movie_playtip">
+ Filmi oynat
+ </playtip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Görüntü
+ </label>
+ <tooltip name="image_tooltip">
+ Bu konumda bir görüntü var
+ </tooltip>
+ <playtip name="image_playtip">
+ Bu konumdaki görüntüyü göster
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Ses
+ </label>
+ <tooltip name="audio_tooltip">
+ Bu konumda ses var
+ </tooltip>
+ <playtip name="audio_playtip">
+ Bu konumdaki sesi çal
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Gerçek Zamanlı Akış
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Hiçbiri -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Hiçbiri -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Ses
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Video
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Görüntü
+ </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 Ses/Video
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ PDF Belgesi
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Postscript Belgesi
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Zengin Metin (RTF)
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ Eşzamanlı Multimedya Tümleştirme Dili (SMIL)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Web Sayfası (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">
+ Ses (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Ses (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Ses (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Ses (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Görüntü (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Görüntü (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Görüntü (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Görüntü (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Görüntü (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Görüntü (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Web Sayfası
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Metin
+ </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/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
new file mode 100644
index 0000000000..6908f6867f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -0,0 +1,3076 @@
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+ <global name="skipnexttime">
+ Bunu bir daha gösterme
+ </global>
+ <global name="alwayschoose">
+ Her zaman bu seçeneği seç
+ </global>
+ <global name="implicitclosebutton">
+ Kapat
+ </global>
+ <template name="okbutton">
+ <form>
+ <button name="OK_okbutton" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore">
+ <form>
+ <button name="OK_okignore" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="OK_okcancelbuttons" text="$yestext"/>
+ <button name="Cancel_okcancelbuttons" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore">
+ <form>
+ <button name="OK_okcancelignore" text="$yestext"/>
+ <button name="Cancel_okcancelignore" text="$notext"/>
+ </form>
+ </template>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="OK_okhelpbuttons" text="$yestext"/>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
+ </form>
+ </template>
+ <notification label="Bilinmeyen Bildirim İletisi" name="MissingAlert">
+ [APP_NAME] sürümünüz alınan bildirimi nasıl görüntüleyeceğini bilmiyor. Lütfen Görüntüleyicinin en son sürümünü yüklemiş olduğunuzdan emin olun.
+
+Hata ayrıntıları: &apos;[_NAME]&apos; adlı bildirim notifications.xml içinde bulunamadı.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="FloaterNotFound">
+ Gezdirici hatası: Aşağıdaki denetimler bulunamadı:
+
+[CONTROLS]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="TutorialNotFound">
+ Şu an için kullanılabilir bir öğretici mevcut değil.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="GenericAlert">
+ [MESSAGE]
+ </notification>
+ <notification name="GenericAlertYesCancel">
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Evet"/>
+ </notification>
+ <notification name="BadInstallation">
+ [APP_NAME] güncellenirken bir hata oluştu. Lütfen Görüntüleyici&apos;nin [http://get.secondlife.com son sürümünü karşıdan yükleyin].
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="LoginFailedNoNetwork">
+ [SECOND_LIFE_GRID] ile bağlantı kurulamadı.
+ &apos;[DIAGNOSTIC]&apos;
+İnternet bağlantınızın düzgün çalıştığından emin olun.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="MessageTemplateNotFound">
+ İleti şablonu [PATH] bulunamadı.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="WearableSave">
+ Geçerli giysi/vücut bölümünde yapılan değişiklikler kaydedilsin mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/>
+ </notification>
+ <notification name="ConfirmNoCopyToOutbox">
+ Bu öğeyi Pazaryeri Giden Kutunuza kopyalama izniniz yok. Aşağıdaki öğeyi taşımak istediğinize emin misiniz?
+ [ITEM_NAME]
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="OutboxUploadComplete">
+ Pazaryerinin karşıya yüklenmesi tamamlandı.
+ <usetemplate name="okbutton" yestext="Yaşasın!"/>
+ </notification>
+ <notification name="OutboxUploadHadErrors">
+ Pazaryerinin karşıya yüklenmesi hatalarla tamamlandı! Lütfen giden kutunuzdaki sorunları düzeltin ve tekrar deneyin. Teşekkürler.
+ <usetemplate name="okbutton" yestext="Yuh!"/>
+ </notification>
+ <notification name="CompileQueueSaveText">
+ Aşağıdaki nedenden dolayı, bir komut dosyası için metin karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="CompileQueueSaveBytecode">
+ Aşağıdaki nedenden dolayı, derlenen komut dosyası karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="WriteAnimationFail">
+ Animasyon verileri yazılırken bir sorun oluştu. Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="UploadAuctionSnapshotFail">
+ Aşağıdaki nedenden dolayı, açık arttırma anlık görüntüsü karşıya yüklenirken bir sorun oluştu: [REASON]
+ </notification>
+ <notification name="UnableToViewContentsMoreThanOne">
+ Aynı anda birden fazla öğenin içeriği görüntülenemiyor.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+ </notification>
+ <notification name="SaveClothingBodyChanges">
+ Giysi/vücut bölümlerinde yapılan tüm değişiklikler kaydedilsin mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Tümünü Kaydet"/>
+ </notification>
+ <notification name="FriendsAndGroupsOnly">
+ Arkadaşınız olmayan kişiler onların çağrılarını ve anlık iletilerini yok saydığınızı bilmeyecek.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="FavoritesOnLogin">
+ Not: Bu seçeneği etkinleştirdiğinizde, bu bilgisayarı kullanan herkes en sevdiğiniz konumlar listenizi görebilecek.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="GrantModifyRights">
+ Başka bir Sakine değişiklik yapma hakkı verdiğinizde, SL dünyasında sahip olduğunuz HERHANGİ BİR nesneyi değiştirebilme, silebilme veya alabilmelerine izin vermiş olursunuz. Bu izni verirken ÇOK dikkatli olun.
+[NAME] adlı kişiye değişiklik yapma hakkı vermek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="GrantModifyRightsMultiple">
+ Başka bir Sakine değişiklik yapma hakkı verdiğinizde, SL dünyasında sahip olduğunuz HERHANGİ BİR nesneyi değiştirebilmelerine izin vermiş olursunuz. Bu izni verirken ÇOK dikkatli olun.
+Seçili Sakinlere değişiklik yapma hakkı vermek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="RevokeModifyRights">
+ [NAME] adlı kişinin değişiklik yapma hakkını iptal etmek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="RevokeModifyRightsMultiple">
+ Seçili Sakinlerin değişiklik yapma hakkını iptal etmek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="UnableToCreateGroup">
+ Grup oluşturulamıyor.
+[MESSAGE]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="PanelGroupApply">
+ [NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Değişiklikleri Yok Say" yestext="Değişiklikleri Uygula"/>
+ </notification>
+ <notification name="MustSpecifyGroupNoticeSubject">
+ Grup notu göndermek için bir konu belirtmelisiniz.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="AddGroupOwnerWarning">
+ Grup üyelerini [ROLE_NAME] rolüne eklemek üzeresiniz.
+Üyeler bu rolden çıkarılamaz.
+Üyeler rolden kendi istekleriyle ayrılabilir.
+Devam etmek istediğinize emin misiniz?
+ <usetemplate ignoretext="Yeni bir grup Sahibi eklemeden önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="AssignDangerousActionWarning">
+ [ROLE_NAME] rolüne &apos;[ACTION_NAME]&apos; Yeteneğini eklemek üzeresiniz.
+
+ *UYARI*
+ Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisini -- ve istediği diğer üyeleri -- şu anda sahip olduklarından daha fazla güce sahip olan Rollere atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun.
+
+Bu Yetenek &apos;[ROLE_NAME]&apos; rolüne eklensin mi?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="AssignDangerousAbilityWarning">
+ [ROLE_NAME] rolüne &apos;[ACTION_NAME]&apos; Yeteneğini eklemek üzeresiniz.
+
+ *UYARI*
+ Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisine -- ve istediği diğer üyelere -- tüm Yetenekleri atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir.
+
+Bu Yetenek &apos;[ROLE_NAME]&apos; rolüne eklensin mi?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="AttachmentDrop">
+ Aksesuarınızı çıkarmak üzeresiniz.
+ Devam etmek istediğinize emin misiniz?
+ <usetemplate ignoretext="Aksesuarları çıkarmadan önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="JoinGroupCanAfford">
+ Bu gruba katılmanın maliyeti: L$ [COST].
+Devam etmek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/>
+ </notification>
+ <notification name="JoinGroupNoCost">
+ [NAME] grubuna katılıyorsunuz.
+Devam etmek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/>
+ </notification>
+ <notification name="JoinGroupCannotAfford">
+ Bu gruba katılmanın maliyeti: L$ [COST].
+Bu gruba katılmak için yeterli L$&apos;na sahip değilsiniz.
+ </notification>
+ <notification name="CreateGroupCost">
+ Bu grubu oluşturmanın maliyeti: L$ 100.
+Grupların birden fazla üyeye sahip olması gereklidir, aksi takdirde grup kalıcı olarak silinir.
+Lütfen 48 saat içinde diğer üyeleri davet edin.
+ <usetemplate canceltext="İptal" name="okcancelbuttons" notext="İptal" yestext="L$ 100 ödeyerek grubu oluştur"/>
+ </notification>
+ <notification name="LandBuyPass">
+ L$ [COST] ödeyerek (&apos;[PARCEL_NAME]&apos;) arazisine [TIME] saat süreyle girebilirsiniz. Giriş hakkı satın almak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="SalePriceRestriction">
+ Herhangi birine satış yaparken satış fiyatı L$ 0&apos;dan daha yüksek bir değere ayarlanmalıdır.
+L$ 0 fiyatla satış yapıyorsanız lütfen satışın yapılacağı kişiyi seçin.
+ </notification>
+ <notification name="ConfirmLandSaleChange">
+ Seçili [LAND_SIZE] m² arazi satışa çıkarılmak üzere ayarlanıyor.
+Satış fiyatınız L$ [SALE_PRICE] olacak ve [NAME] için satışa açık olacaktır.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmLandSaleToAnyoneChange">
+ DİKKAT: &apos;Herkes için satışa açık&apos; seçeneğinin tıklanması, arazinizi tüm [SECOND_LIFE] topluluğuna açık hale getirir, bu bölgede bulunmayanlar da buna dahildir.
+
+Seçili [LAND_SIZE] m² arazi satışa çıkarılmak üzere ayarlanıyor.
+Satış fiyatınız L$ [SALE_PRICE] olacak ve [NAME] için satışa açık olacaktır.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnObjectsDeededToGroup">
+ &apos;[NAME]&apos; grubuyla bu arazi parseli üzerinde paylaşılan tüm nesneleri önceki sahiplerinin envanterine iade etmek istediğinize emin misiniz?
+
+*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
+
+Nesneler: [N]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedByUser">
+ &apos;[NAME]&apos; adlı Sakinin bu arazi parseli üzerinde sahip olduğu tüm nesneleri envanterlerine iade etmek istediğinize emin misiniz?
+
+Nesneler: [N]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedBySelf">
+ Bu arazi parseli üzerinde sahip olduğunuz tüm nesneleri envanterinize iade etmek istediğinize emin misiniz?
+
+Nesneler: [N]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedBySelf">
+ Bu arazi parseli üzerinde sizin sahip OLMADIĞINIZ tüm nesneleri kendi sahiplerinin envanterlerine iade etmek istediğinize emin misiniz?
+Bir gruba devredilen nesnelerden aktarılması mümkün olanlar önceki sahiplerine iade edilecektir.
+
+*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
+
+Nesneler: [N]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByUser">
+ Bu arazi parseli üzerinde [NAME] adlı kişinin sahip OLMADIĞI tüm nesneleri kendi sahiplerinin envanterlerine iade etmek istediğinize emin misiniz?
+Bir gruba devredilen nesnelerden aktarılması mümkün olanlar önceki sahiplerine iade edilecektir.
+
+*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
+
+Nesneler: [N]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnAllTopObjects">
+ Listelenen tüm nesneleri kendi sahiplerinin envanterlerine iade etmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="DisableAllTopObjects">
+ Bu bölgedeki tüm nesneleri devre dışı bırakmak istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByGroup">
+ Bu arazi parseli üzerinde [NAME] grubuyla PAYLAŞILMAYAN nesneler sahiplerinin envanterine iade edilsin mi?
+
+Nesneler: [N]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="UnableToDisableOutsideScripts">
+ Komut dosyaları devre dışı bırakılamıyor.
+Bu bölgenin tamamında hasar özelliği etkin.
+Silahların işlemesi için komut dosyalarının çalışmasına izin verilmelidir.
+ </notification>
+ <notification name="MultipleFacesSelected">
+ Şu anda birden fazla yüz seçili.
+Bu eyleme devam ederseniz, nesnenin birden fazla yüzünde ayrı ortam örnekleri ayarlanacak.
+Ortamı sadece bir yüze yerleştirmek için, Yüz Seç&apos;i seçin ve ardından nesnenin istenen yüzünü tıklayıp Ekle&apos;yi tıklatın.
+ <usetemplate ignoretext="Ortam, seçilen birden fazla yüz üzerinde ayarlanacak" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="MustBeInParcel">
+ İniş Noktasını ayarlamak için arazi parselinin içinde duruyor olmalısınız.
+ </notification>
+ <notification name="PromptRecipientEmail">
+ Lütfen alıcı(lar) için geçerli bir e-posta adresi girin.
+ </notification>
+ <notification name="PromptSelfEmail">
+ Lütfen e-posta adresinizi girin.
+ </notification>
+ <notification name="PromptMissingSubjMsg">
+ Anlık görüntü varsayılan konu ya da iletiyle gönderilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ErrorProcessingSnapshot">
+ Anlık görüntü verileri işlenirken hata oluştu
+ </notification>
+ <notification name="ErrorEncodingSnapshot">
+ Anlık görüntü kodlanırken hata oluştu.
+ </notification>
+ <notification name="ErrorUploadingPostcard">
+ Aşağıdaki nedenden dolayı, anlık görüntü gönderilirken bir sorun oluştu: [REASON]
+ </notification>
+ <notification name="ErrorUploadingReportScreenshot">
+ Aşağıdaki nedenden dolayı, bir raporun ekran görüntüsü karşıya yüklenirken bir sorun oluştu: [REASON]
+ </notification>
+ <notification name="MustAgreeToLogIn">
+ [SECOND_LIFE]&apos;ta oturum açmaya devam etmek için Hizmet Sözleşmesi&apos;ni kabul etmelisiniz.
+ </notification>
+ <notification name="CouldNotPutOnOutfit">
+ Dış görünüm eklenemedi.
+Dış görünüm klasöründe hiç giysi, vücut bölümü ya da aksesuar yok.
+ </notification>
+ <notification name="CannotWearTrash">
+ Çöp kutusundaki giysileri veya vücut bölümlerini kullanamazsınız.
+ </notification>
+ <notification name="MaxAttachmentsOnOutfit">
+ Nesne eklenemedi.
+[MAX_ATTACHMENTS] nesnelik aksesuar sınırı aşıldı. Lütfen önce başka bir nesneyi çıkarın.
+ </notification>
+ <notification name="CannotWearInfoNotComplete">
+ Bu öğe henüz yüklenmediği için kullanamazsınız. Lütfen bir dakika sonra tekrar deneyin.
+ </notification>
+ <notification name="MustHaveAccountToLogIn">
+ Hata! Boş bırakılan alan(lar) var.
+Avatarınızın Kullanıcı adını girmeniz gerekmektedir.
+
+[SECOND_LIFE]&apos;a giriş yapmak için bir hesabınız olması gerekir. Şimdi bir hesap oluşturmak ister misiniz?
+ <url name="url">
+ http://join.secondlife.com/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Tekrar dene" yestext="Yeni bir hesap oluştur"/>
+ </notification>
+ <notification name="InvalidCredentialFormat">
+ Kullanıcı adı alanına Avatarınızın Kullanıcı adını ya da Ad ve Soyadını girmeniz ve yeniden oturum açmanız gerekmektedir.
+ </notification>
+ <notification name="DeleteClassified">
+ &apos;[NAME]&apos; ilanı silinsin mi?
+Ödenen ücretler iade edilmeyecektir.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="DeleteMedia">
+ Bu yüzle ilişkili ortamı silmeyi seçtiniz.
+Devam etmek istediğinize emin misiniz?
+ <usetemplate ignoretext="Bir nesneden ortam silmeden önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="ClassifiedSave">
+ [NAME] ilanına yapılan değişiklikler kaydedilsin mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/>
+ </notification>
+ <notification name="ClassifiedInsufficientFunds">
+ İlan oluşturmak için yeterli fon yok.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="DeleteAvatarPick">
+ Seçme &lt;nolink&gt;[PICK]&lt;/nolink&gt; silinsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="DeleteOutfits">
+ Seçili dış görünüm silinsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="PromptGoToEventsPage">
+ [SECOND_LIFE] etkinlikleri web sayfasına gidilsin mi?
+ <url name="url">
+ http://secondlife.com/events/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="SelectProposalToView">
+ Lütfen görüntülemek için bir teklif seçin.
+ </notification>
+ <notification name="SelectHistoryItemToView">
+ Lütfen görüntülemek için bir geçmiş öğesi seçin.
+ </notification>
+ <notification name="CacheWillClear">
+ Önbellek, [APP_NAME] uygulamasını yeniden başlattıktan sonra temizlenecek.
+ </notification>
+ <notification name="CacheWillBeMoved">
+ Önbellek, [APP_NAME] uygulamasını yeniden başlattıktan sonra taşınacak.
+Not: Bu işlem önbelleği temizleyecek.
+ </notification>
+ <notification name="ChangeConnectionPort">
+ Port ayarları, [APP_NAME] uygulamasını yeniden başlattıktan sonra geçerli olur.
+ </notification>
+ <notification name="ChangeSkin">
+ Yeni dış katman [APP_NAME] uygulamasını yeniden başlattıktan sonra görüntülenecek.
+ </notification>
+ <notification name="ChangeLanguage">
+ Dil değişikliği, [APP_NAME] uygulamasını yeniden başlattıktan sonra geçerli olacak.
+ </notification>
+ <notification name="GoToAuctionPage">
+ Açık arttırma detaylarını görmek veya teklif vermek için [SECOND_LIFE] web sayfasına gidilsin mi?
+ <url name="url">
+ http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+ </url>
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="SaveChanges">
+ Değişiklikler Kaydedilsin mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/>
+ </notification>
+ <notification name="GestureSaveFailedTooManySteps">
+ Mimik kaydedilemedi.
+Bu mimikte çok fazla adım var.
+Bazı adımları çıkarıp yeniden kaydetmeyi deneyin.
+ </notification>
+ <notification name="GestureSaveFailedTryAgain">
+ Mimik kaydedilemedi. Lütfen bir dakika sonra tekrar deneyin.
+ </notification>
+ <notification name="GestureSaveFailedObjectNotFound">
+ Nesne veya ilişkili nesne envanteri bulunamadığı için mimik kaydedilemedi.
+Nesne aralık dışında ya da silinmiş olabilir.
+ </notification>
+ <notification name="GestureSaveFailedReason">
+ Aşağıdaki nedenden dolayı, mimik kaydedilirken bir sorun oluştu: [REASON]. Lütfen mimiği kaydetmeyi daha sonra tekrar deneyin.
+ </notification>
+ <notification name="SaveNotecardFailObjectNotFound">
+ Nesne veya ilişkili nesne envanteri bulunamadığı için not kartı kaydedilemedi.
+Nesne aralık dışında ya da silinmiş olabilir.
+ </notification>
+ <notification name="SaveNotecardFailReason">
+ Aşağıdaki nedenden dolayı, not kartı kaydedilirken bir sorun oluştu: [REASON]. Lütfen not kartını kaydetmeyi daha sonra tekrar deneyin.
+ </notification>
+ <notification name="ScriptCannotUndo">
+ Komut dosyası sürümünüzdeki tüm değişiklikler geri alınamadı.
+Sunucunun son kaydedilmiş sürümünü yüklemek ister misiniz?
+(**Uyarı** Bu işlem geri alınamaz.)
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="SaveScriptFailReason">
+ Aşağıdaki nedenden dolayı, komut dosyası kaydedilirken bir sorun oluştu: [REASON]. Lütfen komut dosyasını kaydetmeyi daha sonra tekrar deneyin.
+ </notification>
+ <notification name="SaveScriptFailObjectNotFound">
+ İçinde olduğu nesne bulunamadığından komut dosyası kaydedilemiyor.
+Nesne aralık dışında ya da silinmiş olabilir.
+ </notification>
+ <notification name="SaveBytecodeFailReason">
+ Aşağıdaki nedenden dolayı, derlenen komut dosyası kaydedilirken bir sorun oluştu: [REASON]. Lütfen komut dosyasını kaydetmeyi daha sonra tekrar deneyin.
+ </notification>
+ <notification name="StartRegionEmpty">
+ Hata. Başlangıç Bölgeniz tanımlanmamış.
+Lütfen Başlangıç Konumu kutusuna Bölge adını yazın ya da Son Konumum veya Ana Konumumu Başlangıç Konumu olarak seçin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="CouldNotStartStopScript">
+ Üzerinde bulunduğu nesne bulunamadığından komut dosyası başlatılamadı veya durdurulamadı.
+Nesne aralık dışında ya da silinmiş olabilir.
+ </notification>
+ <notification name="CannotDownloadFile">
+ Dosya karşıdan yüklenemiyor.
+ </notification>
+ <notification name="CannotWriteFile">
+ [[FILE]] dosyası yazılamıyor.
+ </notification>
+ <notification name="UnsupportedHardware">
+ Bilgisayarınızın [APP_NAME] uygulamasının minimum sistem gereksinimlerini karşılamadığını bildirmek durumundayız. Performans düşüklüğü yaşayabilirsiniz. Ne yazık ki, [SUPPORT_SITE] desteklenmeyen sistem yapılandırmaları için teknik destek verememektedir.
+
+Daha fazla bilgi için [_URL] adresini ziyaret etmek ister misiniz?
+ <url name="url">
+ http://www.secondlife.com/corporate/sysreqs.php
+ </url>
+ <usetemplate ignoretext="Bilgisayar donanımım desteklenmiyor" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="UnknownGPU">
+ Sisteminiz [APP_NAME] uygulamasının tanımadığı bir grafik kartı içeriyor.
+Bu durum genellikle [APP_NAME] uygulaması ile henüz denenmemiş yeni donanımlar kullanıldığında ortaya çıkar. Büyük olasılıkla bir sorun çıkmayacaktır, fakat grafik ayarlarınızı değiştirmeniz gerekebilir.
+(Ben &gt; Tercihler &gt; Grafikler).
+ <form name="form">
+ <ignore name="ignore" text="Grafik kartım tanımlanamadı."/>
+ </form>
+ </notification>
+ <notification name="DisplaySettingsNoShaders">
+ Grafik sürücüleri başlatılırken [APP_NAME] uygulaması kilitlendi.
+Sık görülen bazı sürücü hatalarından kaçınmak için Grafik Kalitesi Düşük olarak ayarlanacak. Bu işlem bazı grafik özelliklerini devre dışı bırakacak.
+Grafik kartı sürücülerinizi güncellemenizi öneririz.
+Grafik Kalitesi, Tercihler &gt; Grafikler sekmesinden yükseltilebilir.
+ </notification>
+ <notification name="RegionNoTerraforming">
+ [REGION] bölgesi yer şekillendirmeye izin vermiyor.
+ </notification>
+ <notification name="CannotCopyWarning">
+ Aşağıdaki öğeleri kopyalamak için gerekli izne sahip değilsiniz:
+[ITEMS]
+Bu öğeleri verdiğiniz takdirde envanterinizden çıkacaklar. Bu öğeleri teklif etmeyi gerçekten istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="CannotGiveItem">
+ Envanter öğesi verilemiyor.
+ </notification>
+ <notification name="TransactionCancelled">
+ İşlem iptal edildi.
+ </notification>
+ <notification name="TooManyItems">
+ Tek bir envanter aktarımında 42 öğeden fazlası verilemez.
+ </notification>
+ <notification name="NoItems">
+ Seçili öğeleri aktarmak için gerekli izne sahip değilsiniz.
+ </notification>
+ <notification name="CannotCopyCountItems">
+ Seçili öğelerin [COUNT] tanesini kopyalamak için gerekli izne sahip değilsiniz. Bu öğeler envanterinizden çıkacak.
+Bu öğeleri vermeyi gerçekten istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="CannotGiveCategory">
+ Seçili klasörü aktarmak için gerekli izne sahip değilsiniz.
+ </notification>
+ <notification name="FreezeAvatar">
+ Bu avatar dondurulsun mu?
+Avatar geçici bir süre için hareket etme, sohbet etme veya dünya ile etkileşim kurma yeteneğini kullanamayacak.
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Çöz" yestext="Dondur"/>
+ </notification>
+ <notification name="FreezeAvatarFullname">
+ [AVATAR_NAME] dondurulsun mu?
+Avatar geçici bir süre için hareket etme, sohbet etme veya dünya ile etkileşim kurma yeteneğini kullanamayacak.
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Çöz" yestext="Dondur"/>
+ </notification>
+ <notification name="EjectAvatarFullname">
+ [AVATAR_NAME] arazinizden çıkarılsın mı?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Çıkar ve Yasakla" yestext="Çıkar"/>
+ </notification>
+ <notification name="EjectAvatarNoBan">
+ Bu avatar arazinizden çıkarılsın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Çıkar"/>
+ </notification>
+ <notification name="EjectAvatarFullnameNoBan">
+ [AVATAR_NAME] arazinizden çıkarılsın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Çıkar"/>
+ </notification>
+ <notification name="EjectAvatarFromGroup">
+ [AVATAR_NAME] adlı kişiyi [GROUP_NAME] grubundan çıkardınız
+ </notification>
+ <notification name="AcquireErrorTooManyObjects">
+ ALMA HATASI: Çok fazla nesne seçilmiş.
+ </notification>
+ <notification name="AcquireErrorObjectSpan">
+ ALMA HATASI: Nesneler bir bölgenin kapsamı dışına yayılıyor.
+Lütfen alınacak tüm nesneleri aynı bölgeye taşıyın.
+ </notification>
+ <notification name="PromptGoToCurrencyPage">
+ [EXTRA]
+
+L$ satın alma ile ilgili bilgi edinmek için [_URL] adresine gidilsin mi?
+ <url name="url">
+ http://secondlife.com/app/currency/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="UnableToLinkObjects">
+ Bu [COUNT] nesne birbirine bağlanamıyor.
+En fazla [MAX] nesneyi birbirine bağlayabilirsiniz.
+ </notification>
+ <notification name="CannotLinkIncompleteSet">
+ Sadece tamamlanmış nesne kümelerini birbirine bağlayabilirsiniz ve birden fazla nesne seçmelisiniz.
+ </notification>
+ <notification name="CannotLinkModify">
+ Tüm nesneler üzerinde değişiklik yapma izniniz olmadığı için nesneler birbirine bağlanamıyor.
+
+Lütfen hiçbirinin kilitli olmadığından ve hepsine sahip olduğunuzdan emin olun.
+ </notification>
+ <notification name="CannotLinkDifferentOwners">
+ Nesnelerin hepsinin sahibi aynı olmadığı için nesneler birbirine bağlanamıyor.
+
+Lütfen seçili nesnelerin hepsine sahip olduğunuzdan emin olun.
+ </notification>
+ <notification name="NoFileExtension">
+ Aşağıdaki dosyanın dosya uzantısı yok: &apos;[FILE]&apos;
+
+Lütfen dosyanın doğru bir dosya uzantısına sahip olduğundan emin olun..
+ </notification>
+ <notification name="InvalidFileExtension">
+ Geçersiz dosya uzantısı [EXTENSION]
+Beklenen [VALIDS]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="CannotUploadSoundFile">
+ Karşıya yüklenen ses dosyası okuma için açılamadı:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotRIFF">
+ Dosya bir RIFF WAVE dosyası gibi görünmüyor:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotPCM">
+ Dosya bir PCM WAVE ses dosyası gibi görünmüyor:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChannelCount">
+ Dosyada geçersiz sayıda kanal mevcut (mono ya da stereo olmalı):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidSampleRate">
+ Dosya desteklenen bir örnek hızına sahip görünmüyor (44.1k olmalı):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidWordSize">
+ Dosya desteklenen bir sözcük boyutuna sahip görünmüyor (8 veya 16 bit olmalı):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidHeader">
+ WAV başlığında &apos;veri&apos; öbeği bulunamadı:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChunkSize">
+ WAV dosyasında yanlış öbek boyutu:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidTooLong">
+ Ses dosyası çok uzun (En fazla 10 saniye olmalı):
+[FILE]
+ </notification>
+ <notification name="ProblemWithFile">
+ [FILE] dosyasında sorun oluştu:
+
+[ERROR]
+ </notification>
+ <notification name="CannotOpenTemporarySoundFile">
+ Geçici sıkıştırılmış ses dosyası yazma için açılamadı: [FILE]
+ </notification>
+ <notification name="UnknownVorbisEncodeFailure">
+ Şu dosyada bilinmeyen Vorbis kodlama arızası: [FILE]
+ </notification>
+ <notification name="CannotEncodeFile">
+ Şu dosya kodlanamıyor: [FILE]
+ </notification>
+ <notification name="CorruptedProtectedDataStore">
+ Kullanıcı adı ve şifre alanlarınızı dolduramıyoruz. Bu durum ağ ayarlarınızı değiştirdiğinizde ortaya çıkabilir.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="CorruptResourceFile">
+ Bozuk kaynak dosyası: [FILE]
+ </notification>
+ <notification name="UnknownResourceFileVersion">
+ Şu dosyada bilinmeyen Linden kaynak dosyası sürümü mevcut: [FILE]
+ </notification>
+ <notification name="UnableToCreateOutputFile">
+ Çıkış dosyası oluşturulamıyor: [FILE]
+ </notification>
+ <notification name="DoNotSupportBulkAnimationUpload">
+ [APP_NAME] şu an için animasyon dosyalarının toplu olarak karşıya yüklenmesini desteklemiyor.
+ </notification>
+ <notification name="CannotUploadReason">
+ Aşağıdaki nedenden dolayı [FILE] dosyası karşıya yüklenemedi: [REASON]
+Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="LandmarkCreated">
+ &quot;[LANDMARK_NAME]&quot; yer imini [FOLDER_NAME] klasörünüze eklediniz.
+ </notification>
+ <notification name="LandmarkAlreadyExists">
+ Bu konum için zaten bir yer iminiz var.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="CannotCreateLandmarkNotOwner">
+ Burada bir yer imi oluşturmazsınız, çünkü arazinin sahibi buna izin vermiyor.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoScripts">
+ &apos;Yeniden derleme&apos; gerçekleştirilemiyor.
+Komut dosyası içeren bir nesne seçin.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoPermission">
+ &apos;Yeniden derleme&apos; gerçekleştirilemiyor.
+
+Değişiklik yapma izniniz olan komut dosyaları içeren nesneler seçin.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoScripts">
+ &apos;Sıfırlama&apos; gerçekleştirilemiyor.
+
+Komut dosyası içeren nesneler seçin.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoPermission">
+ &apos;Sıfırlama&apos; gerçekleştirilemiyor.
+
+Değişiklik yapma izniniz olan komut dosyaları içeren nesneler seçin.
+ </notification>
+ <notification name="CannotOpenScriptObjectNoMod">
+ Değişiklik yapma izniniz olmadığından nesne içindeki komut dosyası açılamıyor.
+ </notification>
+ <notification name="CannotSetRunningSelectObjectsNoScripts">
+ Hiçbir komut dosyası &apos;çalışır&apos; durumuna ayarlanamıyor.
+
+Komut dosyası içeren nesneler seçin.
+ </notification>
+ <notification name="CannotSetRunningNotSelectObjectsNoScripts">
+ Hiçbir komut dosyası &apos;çalışmaz&apos; durumuna ayarlanamıyor.
+
+Komut dosyası içeren nesneler seçin.
+ </notification>
+ <notification name="NoFrontmostFloater">
+ Kaydedilecek en öndeki gezdirici yok.
+ </notification>
+ <notification name="SeachFilteredOnShortWords">
+ Arama sorgunuz değiştirildi ve çok kısa olan sözcükler kaldırıldı.
+
+Arama yapılan sorgu: [FINALQUERY]
+ </notification>
+ <notification name="SeachFilteredOnShortWordsEmpty">
+ Arama terimleriniz çok kısa olduğu için arama yapılmadı.
+ </notification>
+ <notification name="CouldNotTeleportReason">
+ Işınlama başarısız.
+[REASON]
+ </notification>
+ <notification name="invalid_tport">
+ Işınlama talebiniz işlenirken bir sorunla karşılaşıldı. Işınlanabilmek için yeniden oturum açmanız gerekebilir.
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+ </notification>
+ <notification name="invalid_region_handoff">
+ Bölge değiştirme talebiniz işlenirken sorunla karşılaşıldı. Bölge değiştirmek için yeniden oturum açmanız gerekebilir.
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+ </notification>
+ <notification name="blocked_tport">
+ Üzgünüz, ışınlama şu anda engellenmiş durumda. Bir dakika sonra tekrar deneyin. Hala ışınlanamıyorsanız, sorunu çözmek için lütfen çıkış yapıp oturumu tekrar açın.
+ </notification>
+ <notification name="nolandmark_tport">
+ Üzgünüz fakat sistem yer imi hedef konumunu bulamadı.
+ </notification>
+ <notification name="timeout_tport">
+ Üzgünüz fakat sistem ışınlama bağlantısını tamamlayamadı. Bir dakika sonra tekrar deneyin.
+ </notification>
+ <notification name="noaccess_tport">
+ Üzgünüz, bu ışınlanma hedef konumuna erişim hakkına sahip değilsiniz.
+ </notification>
+ <notification name="missing_attach_tport">
+ Aksesuarlarınız henüz ulaşmadı. Işınlanmayı tekrar denemeden önce bir kaç saniye bekleyin veya çıkış yapıp oturumu tekrar açın.
+ </notification>
+ <notification name="too_many_uploads_tport">
+ Bu bölgedeki varlık sırası şu anda yoğunluktan dolayı tıkalı olduğu için ışınlanma talebiniz zamanında gerçekleştirilemeyecek. Lütfen bir kaç dakika sonra tekrar deneyin veya yoğunluğu daha az olan bir bölge seçin.
+ </notification>
+ <notification name="expired_tport">
+ Üzgünüz fakat sistem ışınlanma talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+ </notification>
+ <notification name="expired_region_handoff">
+ Üzgünüz fakat sistem bölge değiştirme talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+ </notification>
+ <notification name="no_host">
+ Işınlanma hedef konumu bulunamıyor. Hedef konumu geçici bir süre için kullanılamıyor ya da artık mevcut değil. Lütfen bir kaç dakika sonra tekrar deneyin.
+ </notification>
+ <notification name="no_inventory_host">
+ Envanter sistemi şu anda kullanılamıyor.
+ </notification>
+ <notification name="CannotSetLandOwnerNothingSelected">
+ Arazi sahibi ayarlanamıyor:
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotSetLandOwnerMultipleRegions">
+ Seçim aralığı birden fazla bölgeyi kapsadığından arazi mülkiyeti alınmaya zorlanamıyor. Lütfen daha küçük bir alan seçin ve tekrar deneyin.
+ </notification>
+ <notification name="ForceOwnerAuctionWarning">
+ Bu parsel açık arttırmada. Mülkiyeti almaya zorlama açık arttırmayı iptal edecek ve açık arttırma için teklif verme başlamışsa büyük olasılıkla bazı Sakinleri mutsuz edecek.
+Mülkiyeti almaya zorlanılsın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="CannotContentifyNothingSelected">
+ İçerik eklenemedi:
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotContentifyNoRegion">
+ İçerik eklenemedi:
+Seçili bölge yok.
+ </notification>
+ <notification name="CannotReleaseLandNothingSelected">
+ Arazi mülkiyeti bırakılamıyor:
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotReleaseLandNoRegion">
+ Arazi mülkiyeti bırakılamıyor:
+Bölge bulunamıyor.
+ </notification>
+ <notification name="CannotBuyLandNothingSelected">
+ Arazi satın alınamıyor:
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotBuyLandNoRegion">
+ Arazi satın alınamıyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+ </notification>
+ <notification name="CannotCloseFloaterBuyLand">
+ [APP_NAME] bu işlemin tutarını hesaplamayı bitirmeden Arazi Satın Al penceresini kapatamazsınız.
+ </notification>
+ <notification name="CannotDeedLandNothingSelected">
+ Arazi devredilemiyor:
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotDeedLandNoGroup">
+ Arazi devredilemiyor:
+Seçili Grup yok.
+ </notification>
+ <notification name="CannotDeedLandNoRegion">
+ Arazi devredilemiyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+ </notification>
+ <notification name="CannotDeedLandMultipleSelected">
+ Arazi devredilemiyor:
+Birden fazla parsel seçili.
+
+Tek bir parsel seçmeyi deneyin.
+ </notification>
+ <notification name="CannotDeedLandWaitingForServer">
+ Arazi devredilemiyor:
+Sunucunun mülkiyet bilgisini bildirmesi bekleniyor.
+
+Lütfen tekrar deneyin.
+ </notification>
+ <notification name="CannotDeedLandNoTransfer">
+ Arazi devredilemiyor:
+[REGION] bölgesi arazi aktarımına izin vermiyor.
+ </notification>
+ <notification name="CannotReleaseLandWatingForServer">
+ Arazi mülkiyeti bırakılamıyor:
+Sunucunun parsel bilgilerini güncellemesi bekleniyor.
+
+Bir kaç saniye sonra tekrar deneyin.
+ </notification>
+ <notification name="CannotReleaseLandSelected">
+ Arazi mülkiyeti bırakılamıyor:
+Seçilen tüm parsellere sahip değilsiniz.
+
+Lütfen tek bir parsel seçin.
+ </notification>
+ <notification name="CannotReleaseLandDontOwn">
+ Arazi mülkiyeti bırakılamıyor:
+Bu parseli bırakma izniniz yok.
+Sahip olduğunuz parseller yeşille gösterilmiştir.
+ </notification>
+ <notification name="CannotReleaseLandRegionNotFound">
+ Arazi mülkiyeti bırakılamıyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+ </notification>
+ <notification name="CannotReleaseLandNoTransfer">
+ Arazi mülkiyeti bırakılamıyor:
+[REGION] bölgesi arazi aktarımına izin vermiyor.
+ </notification>
+ <notification name="CannotReleaseLandPartialSelection">
+ Arazi mülkiyeti bırakılamıyor:
+Bırakmak için bir parselin tamamını seçmelisiniz.
+
+Parselin tamamını seçin veya önce parselinizi bölün.
+ </notification>
+ <notification name="ReleaseLandWarning">
+ [AREA] m² araziyi bırakmak üzeresiniz.
+Bu parseli bırakmak onu sahip olduğunuz arazi parçalarından çıkaracak fakat L$ kazandırmayacak.
+
+Arazi bırakılsın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="CannotDivideLandNothingSelected">
+ Arazi bölünemiyor:
+
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotDivideLandPartialSelection">
+ Arazi bölünemiyor:
+
+Parselin tamamını seçtiniz.
+Parselin bir bölümünü seçmeyi deneyin.
+ </notification>
+ <notification name="LandDivideWarning">
+ Bu parseli bölmek parseli iki parçaya ayıracak ve her bir parselin kendi ayarları olacak. İşlemden sonra bazı ayarlar varsayılan durumlarına sıfırlanacak.
+
+Arazi bölünsün mü?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="CannotDivideLandNoRegion">
+ Arazi bölünemiyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+ </notification>
+ <notification name="CannotJoinLandNoRegion">
+ Arazi birleştirilemiyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+ </notification>
+ <notification name="CannotJoinLandNothingSelected">
+ Arazi birleştirilemiyor:
+Seçili parsel yok.
+ </notification>
+ <notification name="CannotJoinLandEntireParcelSelected">
+ Arazi birleştirilemiyor:
+Sadece bir parsel seçtiniz.
+
+Lütfen iki parseldeki araziyi de seçin.
+ </notification>
+ <notification name="CannotJoinLandSelection">
+ Arazi birleştirilemiyor:
+Birden fazla parseli seçmelisiniz.
+
+Lütfen iki parseldeki araziyi de seçin.
+ </notification>
+ <notification name="JoinLandWarning">
+ Bu araziyi birleştirmek, seçili dikdörtgenle kesişen tüm parsellerden bir büyük parsel oluşturacak.
+Yeni parselin adını ve seçeneklerini yeniden ayarlamanız gerekecektir.
+
+Arazi birleştirilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmNotecardSave">
+ Öğe kopyalanmadan veya görüntülenmeden önce bu not kartının kaydedilmesi gerekiyor. Not kartı kaydedilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmItemCopy">
+ Bu öğe envanterinize kopyalansın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Kopyala"/>
+ </notification>
+ <notification name="ResolutionSwitchFail">
+ Çözünürlük [RESX] x [RESY] değerine değiştirilemedi.
+ </notification>
+ <notification name="ErrorUndefinedGrasses">
+ Hata: Tanımlanmamış çimler: [SPECIES]
+ </notification>
+ <notification name="ErrorUndefinedTrees">
+ Hata: Tanımlanmamış ağaçlar: [SPECIES]
+ </notification>
+ <notification name="CannotSaveWearableOutOfSpace">
+ &apos;[NAME]&apos;, giyilebilir öğe dosyasına kaydedilemiyor. Bilgisayarınızda yer açmalı ve giyilebilir öğeyi yeniden kaydetmelisiniz.
+ </notification>
+ <notification name="CannotSaveToAssetStore">
+ [NAME] ana varlık mağazasına kaydedilemedi.
+Bu genellikle geçici bir arızadır. Lütfen giyilebilir öğeyi birkaç dakika sonra yeniden özelleştirip kaydedin.
+ </notification>
+ <notification name="YouHaveBeenLoggedOut">
+ Üzgünüz. [SECOND_LIFE] oturumunuz kapandı.
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="Çık" yestext="Anlık İleti ve Sohbeti Görüntüle"/>
+ </notification>
+ <notification name="OnlyOfficerCanBuyLand">
+ Grup adına arazi satın alınamıyor:
+Etkin grubunuz adına arazi satın almak için gerekli izne sahip değilsiniz.
+ </notification>
+ <notification label="Arkadaş Ekle" name="AddFriendWithMessage">
+ Arkadaşlar birbirini harita üzerinde izleme ve çevrimiçi durumları hakkında güncellemeler almak için birbirine izin verebilir.
+
+[NAME] adlı kişiye arkadaşlık teklif edilsin mi?
+ <form name="form">
+ <input name="message">
+ Arkadaşım olur musun?
+ </input>
+ <button name="Offer" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification label="Dış Görünümü Kaydet" name="SaveOutfitAs">
+ Üzerimdekileri yeni bir Dış Görünüm olarak kaydet:
+ <form name="form">
+ <input name="message">
+ [DESC] (yeni)
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification label="Giyilebilir Öğeyi Kaydet" name="SaveWearableAs">
+ Öğeyi envanterime farklı kaydet:
+ <form name="form">
+ <input name="message">
+ [DESC] (yeni)
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification label="Dış Görünümü Yeniden Adlandır" name="RenameOutfit">
+ Yeni dış görünüm adı:
+ <form name="form">
+ <input name="new_name">
+ [NAME]
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="RemoveFromFriends">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; adlı kişiyi Arkadaş Listenizden çıkarmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="RemoveMultipleFromFriends">
+ Birden çok arkadaşınızı Arkadaş Listenizden çıkarmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedPublicObjectsByUser">
+ Komut dosyası içeren,
+** [AVATAR_NAME] ** adlı kişiye ait tüm nesneleri
+bu simdeki diğer tüm kişilerin arazisinden silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedObjectsByUser">
+ Komut dosyası içeren,
+** [AVATAR_NAME] ** adlı kişiye ait TÜM nesneleri
+bu simdeki TÜM ARAZİLERDEN SİLMEK istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="GodDeleteAllObjectsByUser">
+ Komut dosyası içeren veya içermeyen,
+** [AVATAR_NAME] ** adlı kişiye ait TÜM nesneleri
+bu simdeki TÜM ARAZİLERDEN SİLMEK istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BlankClassifiedName">
+ İlanınız için bir ad belirtmelisiniz.
+ </notification>
+ <notification name="MinClassifiedPrice">
+ Listeleme için ödenmesi gereken tutar en az L$ [MIN_PRICE] olmalıdır.
+
+Lütfen daha yüksek bir tutar girin.
+ </notification>
+ <notification name="ConfirmItemDeleteHasLinks">
+ Seçtiğiniz öğelerden en az birinin kendisine işaret eden bağlantılı öğeler var. Bu öğeyi silerseniz, bağlantıları kalıcı olarak çalışmaz hale gelecek. Önce bağlantıları silmeniz önemle tavsiye edilir.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLock">
+ Seçtiğiniz öğelerin en az birisi kilitli.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopy">
+ Seçtiğiniz öğelerin en az birisi kopyalanamıyor.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoOwn">
+ Seçtiğiniz öğelerin en az birisine sahip değilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopy">
+ Nesnelerden en az biri kilitli.
+Nesnelerden en az biri kopyalanamıyor.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoOwn">
+ Nesnelerden en az biri kilitli.
+Nesnelerden en az birine sahip değilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopyNoOwn">
+ Nesnelerden en az biri kopyalanamıyor.
+Nesnelerden en az birine sahip değilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+ Nesnelerden en az biri kilitli.
+Nesnelerden en az biri kopyalanamıyor.
+Nesnelerden en az birine sahip değilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLock">
+ Nesnelerden en az biri kilitli.
+
+Bu öğeleri almak istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectTakeNoOwn">
+ Aldığınız nesnelerin hepsine sahip değilsiniz.
+Devam ederseniz, nesnelerin sonraki sahibi için geçerli olan izinler uygulanacak ve büyük olasılıkla bu nesneler üzerinde değişiklik yapma ve onları kopyalama yeteneğiniz kısıtlanacak.
+
+Bu öğeleri almak istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLockNoOwn">
+ Nesnelerden en az biri kilitli.
+Aldığınız nesnelerin hepsine sahip değilsiniz.
+Devam ederseniz, nesnelerin sonraki sahibi için geçerli olan izinler uygulanacak ve büyük olasılıkla bu nesneler üzerinde değişiklik yapma ve onları kopyalama yeteneğiniz kısıtlanacak.
+Ancak, mevcut seçimi yine de alabilirsiniz.
+
+Bu öğeleri almak istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="CantBuyLandAcrossMultipleRegions">
+ Seçim aralığı birden fazla bölgeyi kapsadığından arazi satın alınamıyor.
+
+Lütfen daha küçük bir alan seçin ve tekrar deneyin.
+ </notification>
+ <notification name="DeedLandToGroup">
+ Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir.
+Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür.
+
+[AREA] m²&apos;lik bu arazi &apos;[GROUP_NAME]&apos; grubuna devredilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="DeedLandToGroupWithContribution">
+ Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir.
+Bu devir eş zamanlı olarak &apos;[NAME]&apos; adlı kişiden gruba arazi katkısı sağlayacaktır.
+Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür.
+
+[AREA] m²&apos;lik bu arazi &apos;[GROUP_NAME]&apos; grubuna devredilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="DisplaySetToSafe">
+ Güvenli seçeneği seçtiğiniz için görüntüleme ayarları güvenli düzeye ayarlandı.
+ </notification>
+ <notification name="DisplaySetToRecommended">
+ Görüntüleme ayarları sistem yapılandırmanız için önerilen düzeye ayarlandı.
+ </notification>
+ <notification name="ErrorMessage">
+ [ERROR_MESSAGE]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="AvatarMovedDesired">
+ İstediğiniz konum şu anda kullanılamıyor.
+Yakınındaki başka bir bölgeye taşındınız.
+ </notification>
+ <notification name="AvatarMovedLast">
+ Son konumunuz şu anda kullanılamıyor.
+Yakınındaki başka bir bölgeye taşındınız.
+ </notification>
+ <notification name="AvatarMovedHome">
+ Ana konumunuz şu anda kullanılamıyor.
+Yakınındaki başka bir bölgeye taşındınız.
+Yeni bir ana konum ayarlamak isteyebilirsiniz.
+ </notification>
+ <notification name="ClothingLoading">
+ Giysileriniz hala karşıdan yükleniyor.
+[SECOND_LIFE]&apos;ı normal şekilde kullanmaya devam edebilirsiniz, diğer insanlar sizi düzgün bir şekilde görecektir.
+ <form name="form">
+ <ignore name="ignore" text="Giysilerin karşıdan yüklenmesi uzun zaman alıyor"/>
+ </form>
+ </notification>
+ <notification name="FirstRun">
+ [APP_NAME] kurulumu tamamlandı.
+
+[SECOND_LIFE]&apos;ı ilk kez kullanıyorsanız, oturum açmadan önce bir hesap oluşturmalısınız.
+Yeni bir hesap oluşturmak için [http://join.secondlife.com secondlife.com] adresine dönülsün mü?
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Yeni Hesap..."/>
+ </notification>
+ <notification name="LoginPacketNeverReceived">
+ Bağlantıda sorun yaşıyoruz. İnternet bağlantınızda ya da [SECOND_LIFE_GRID] uygulamasında bir problem olabilir.
+
+İnternet bağlantınızı kontrol edip bir kaç dakika sonra yeniden bağlanmayı deneyebilir, [SUPPORT_SITE] sayfasına gitmek için Yardım&apos;ı tıklatabilir ya da ana konumunuza ışınlanmak için Işınla&apos;yı tıklatabilirsiniz.
+ <url name="url">
+ http://secondlife.com/support/
+ </url>
+ <form name="form">
+ <button name="OK" text="Tamam"/>
+ <button name="Help" text="Yardım"/>
+ <button name="Teleport" text="Işınla"/>
+ </form>
+ </notification>
+ <notification name="WelcomeChooseSex">
+ Karakteriniz birazdan görünecek.
+
+Yürümek için ok tuşlarını kullanın.
+Yardım almak ya da [SECOND_LIFE] hakkında daha fazla bilgi edinmek için istediğiniz zaman F1 tuşuna basın.
+Lütfen bir erkek ya da kadın avatar seçin. Fikrinizi daha sonra değiştirebilirsiniz.
+ <usetemplate name="okcancelbuttons" notext="Kadın" yestext="Erkek"/>
+ </notification>
+ <notification name="CantTeleportToGrid">
+ Geçerli ağdan ([CURRENT_GRID]) farklı bir ağ ([GRID]) üzerinde bulunduğundan [SLURL] adresine ışınlanma gerçekleştirilemedi. Lütfen görüntüleyicinizi kapatın ve tekrar deneyin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="GeneralCertificateError">
+ Sunucu ile bağlantı kurulamadı.
+[REASON]
+
+Konu Adı: [SUBJECT_NAME_STRING]
+Verenin Adı: [ISSUER_NAME_STRING]
+Geçerlilik Başlangıcı: [VALID_FROM]
+Geçerlilik Bitişi: [VALID_TO]
+MD5 Parmak izi: [SHA1_DIGEST]
+SHA1 Parmak izi: [MD5_DIGEST]
+Anahtar Kullanımı: [KEYUSAGE]
+Uzatılmış Anahtar Kullanımı: [EXTENDEDKEYUSAGE]
+Konu Anahtarı Tanımlayıcısı: [SUBJECTKEYIDENTIFIER]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="TrustCertificateError">
+ Bu sunucunun sertifika yetkilisi bilinmiyor.
+
+Sertifika Bilgileri:
+Konu Adı: [SUBJECT_NAME_STRING]
+Verenin Adı: [ISSUER_NAME_STRING]
+Geçerlilik Başlangıcı: [VALID_FROM]
+Geçerlilik Bitişi: [VALID_TO]
+MD5 Parmak izi: [SHA1_DIGEST]
+SHA1 Parmak izi: [MD5_DIGEST]
+Anahtar Kullanımı: [KEYUSAGE]
+Uzatılmış Anahtar Kullanımı: [EXTENDEDKEYUSAGE]
+Konu Anahtarı Tanımlayıcısı: [SUBJECTKEYIDENTIFIER]
+
+Bu yetkiliye güvenilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Güven"/>
+ </notification>
+ <notification name="NotEnoughCurrency">
+ [NAME] [PRICE] L$ Bunu yapmaya yetecek L$&apos;nız yok.
+ </notification>
+ <notification name="GrantedModifyRights">
+ [NAME] size kendi nesnelerini düzenleme izni verdi.
+ </notification>
+ <notification name="RevokedModifyRights">
+ [NAME] adlı kişinin nesneleri üzerinde değişiklik yapma ayrıcalığınız iptal edildi.
+ </notification>
+ <notification name="FlushMapVisibilityCaches">
+ Bu işlem bu bölgedeki harita önbelleklerini temizleyecek.
+Gerçekte bu sadece hata ayıklama için işe yarar.
+(İşlem sırasında 5 dakika bekleyin, herkes yeniden oturum açtıktan sonra haritaları güncellenecektir.)
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BuyOneObjectOnly">
+ Bir seferde birden fazla nesne satın alınamıyor. Lütfen sadece bir nesne seçin ve tekrar deneyin.
+ </notification>
+ <notification name="OnlyCopyContentsOfSingleItem">
+ Aynı anda birden fazla öğenin içeriği kopyalanamıyor.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="KickUsersFromRegion">
+ Bu bölgedeki tüm Sakinler ana konumlarına ışınlansın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="EstateObjectReturn">
+ [USER_NAME] kullanıcısının sahip olduğu tüm nesneleri iade etmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="InvalidTerrainBitDepth">
+ Bölge dokuları ayarlanamadı:
+[TEXTURE_NUM] numaralı yüzey dokusu geçersiz bir bit derinliğine ([TEXTURE_BIT_DEPTH]) sahip.
+
+[TEXTURE_NUM] numaralı dokuyu 24 bit 512x512 veya daha küçük bir resimle değiştirin ve &quot;Uygula&quot; seçeneğini yeniden tıklatın.
+ </notification>
+ <notification name="InvalidTerrainSize">
+ Bölge dokuları ayarlanamadı:
+[TEXTURE_NUM] numaralı yüzey dokusu çok büyük ([TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]).
+
+[TEXTURE_NUM] numaralı dokuyu 24 bit 512x512 veya daha küçük bir resimle değiştirin ve &quot;Uygula&quot; seçeneğini yeniden tıklatın.
+ </notification>
+ <notification name="RawUploadStarted">
+ Karşıya yükleme başlatıldı. Bağlantı hızına bağlı olarak iki dakika kadar sürebilir.
+ </notification>
+ <notification name="ConfirmBakeTerrain">
+ Geçerli yüzeyi bu şekilde kaydetmeyi, yüzey yükseltme/alçaltma sınırları için merkez olarak kullanmayı ve &apos;Geri Çevir&apos; aracı için varsayılan olarak ayarlamayı gerçekten istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="MaxAllowedAgentOnRegion">
+ Sadece [MAX_AGENTS] tane İzin Verilen Sakin belirleyebilirsiniz.
+ </notification>
+ <notification name="MaxBannedAgentsOnRegion">
+ Sadece [MAX_BANNED] tane Yasaklı Sakin belirleyebilirsiniz.
+ </notification>
+ <notification name="MaxAgentOnRegionBatch">
+ [NUM_ADDED] aracı ekleme girişimi başarısız oldu:
+[MAX_AGENTS] [LIST_TYPE] sınırı [NUM_EXCESS] birim aşıldı.
+ </notification>
+ <notification name="MaxAllowedGroupsOnRegion">
+ Sadece [MAX_GROUPS] tane İzin Verilen Grup belirleyebilirsiniz.
+ <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Kaydet"/>
+ </notification>
+ <notification name="MaxManagersOnRegion">
+ Sadece [MAX_MANAGER] tane Gayrimenkul Yöneticisi belirleyebilirsiniz.
+ </notification>
+ <notification name="OwnerCanNotBeDenied">
+ Gayrimenkul sahibi, gayrimenkulün &apos;Yasaklı Sakin&apos; listesine eklenemez.
+ </notification>
+ <notification name="CanNotChangeAppearanceUntilLoaded">
+ Giysi ve şekil yüklenene kadar görünüm değiştirilemez.
+ </notification>
+ <notification name="ClassifiedMustBeAlphanumeric">
+ İlanınızın adı A ile Z arasında bir harfle ya da bir sayıyla başlamalıdır. Noktalama işaretleri kullanılamaz.
+ </notification>
+ <notification name="CantSetBuyObject">
+ Nesne Satın Al komutu ayarlanamadı, çünkü nesne satılık değil.
+Nesneyi satılık olarak ayarlayıp tekrar deneyin.
+ </notification>
+ <notification name="FinishedRawDownload">
+ İşlenmemiş yüzey dosyasının şu konuma karşıdan yüklenmesi tamamlandı:
+[DOWNLOAD_PATH].
+ </notification>
+ <notification name="DownloadWindowsMandatory">
+ [APP_NAME] uygulamasının yeni bir sürümü mevcut.
+[MESSAGE]
+[APP_NAME] uygulamasını kullanabilmek için bu güncellemeyi karşıdan yüklemelisiniz.
+ <usetemplate name="okcancelbuttons" notext="Çık" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadWindows">
+ [APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadWindowsReleaseForDownload">
+ [APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadLinuxMandatory">
+ [APP_NAME] uygulamasının yeni bir sürümü mevcut.
+[MESSAGE]
+[APP_NAME] uygulamasını kullanabilmek için bu güncellemeyi karşıdan yüklemelisiniz.
+ <usetemplate name="okcancelbuttons" notext="Çık" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadLinux">
+ [APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ [APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadMacMandatory">
+ [APP_NAME] uygulamasının yeni bir sürümü mevcut.
+[MESSAGE]
+[APP_NAME] uygulamasını kullanabilmek için bu güncellemeyi karşıdan yüklemelisiniz.
+
+Uygulamalar klasörünüze karşıdan yüklensin mi?
+ <usetemplate name="okcancelbuttons" notext="Çık" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadMac">
+ [APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+
+Uygulamalar klasörünüze karşıdan yüklensin mi?
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="DownloadMacReleaseForDownload">
+ [APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+
+Uygulamalar klasörünüze karşıdan yüklensin mi?
+ <usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+ </notification>
+ <notification name="FailedUpdateInstall">
+ Görüntüleyici güncellemesi yüklenirken bir hata oluştu.
+Lütfen en son görüntüleyiciyi şu adresten karşıdan yükleyin ve kurun:
+http://secondlife.com/download.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="FailedRequiredUpdateInstall">
+ Gerekli bir güncellemeyi yükleyemedik.
+[APP_NAME] güncellenene kadar oturum açamayacaksınız.
+
+Lütfen en son görüntüleyiciyi şu adresten karşıdan yükleyin ve kurun:
+http://secondlife.com/download.
+ <usetemplate name="okbutton" yestext="Çık"/>
+ </notification>
+ <notification name="UpdaterServiceNotRunning">
+ Second Life kurulumunuz için gerekli bir güncelleme var.
+
+Bu güncellemeyi http://www.secondlife.com/downloads adresinden karşıdan yükleyebilir
+veya şimdi kurabilirsiniz.
+ <usetemplate name="okcancelbuttons" notext="Second Life&apos;tan çık" yestext="Karşıdan yükle ve şimdi kur"/>
+ </notification>
+ <notification name="DownloadBackgroundTip">
+ [APP_NAME] kurulumunuz için bir güncellemeyi karşıdan yükledik.
+Sürüm [VERSION] [[RELEASE_NOTES_FULL_URL] Bu güncelleme hakkında ayrıntılı bilgi]
+ <usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi kur ve [APP_NAME] uygulamasını yeniden başlat"/>
+ </notification>
+ <notification name="DownloadBackgroundDialog">
+ [APP_NAME] kurulumunuz için bir güncellemeyi karşıdan yükledik.
+Sürüm [VERSION] [[RELEASE_NOTES_FULL_URL] Bu güncelleme hakkında ayrıntılı bilgi]
+ <usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi kur ve [APP_NAME] uygulamasını yeniden başlat"/>
+ </notification>
+ <notification name="RequiredUpdateDownloadedVerboseDialog">
+ Gerekli bir yazılım güncellemesini karşıdan yükledik.
+Sürüm [VERSION]
+
+Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="RequiredUpdateDownloadedDialog">
+ Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="DeedObjectToGroup">
+ Bu nesnenin devredilmesi grubun şunu yapmasına sebep olacak:
+* Nesneye ödenen L$&apos;nı almasına
+ <usetemplate ignoretext="Bir nesneyi bir gruba devretmeden önce doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Devret"/>
+ </notification>
+ <notification name="WebLaunchExternalTarget">
+ Bu içeriği görüntülemek için Web tarayıcınızı açmak istiyor musunuz?
+ <usetemplate ignoretext="Bir web sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="WebLaunchJoinNow">
+ Hesabınızı yönetmek için [http://secondlife.com/account/ Kontrol Paneli] adresine gidilsin mi?
+ <usetemplate ignoretext="Hesabımı yönetmek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="WebLaunchSecurityIssues">
+ Bir güvenlik sorununun nasıl bildireceği ile ilgili ayrıntıları öğrenmek için [SECOND_LIFE] Wiki&apos;yi aç.
+ <usetemplate ignoretext="Bir Güvenlik Sorununu bildirme şeklini öğrenmek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="WebLaunchQAWiki">
+ [SECOND_LIFE] Wiki&apos;nin Kalite Güvencesi sayfasını ziyaret edin.
+ <usetemplate ignoretext="Wiki Kalite Güvencesi sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="WebLaunchPublicIssue">
+ Hataları ve diğer sorunları bildirebileceğiniz [SECOND_LIFE] Kamuya Açık Sorun Takip sayfasını ziyaret edin.
+ <usetemplate ignoretext="Kamuya Açık Sorun Takip hizmetini kullanmak için tarayıcımı başlat" name="okcancelignore" notext="İptal Et" yestext="Sayfaya git"/>
+ </notification>
+ <notification name="WebLaunchSupportWiki">
+ En son haberler ve bilgiler için Resmi Linden Blog&apos;una git.
+ <usetemplate ignoretext="Blog sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="WebLaunchLSLGuide">
+ Komut dosyası yazma ile ilgili yardım almak için Komut Dosyası Yazma Kılavuzu&apos;nu açmak istiyor musunuz?
+ <usetemplate ignoretext="Komut Dosyası Yazma Kılavuzunu görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="WebLaunchLSLWiki">
+ Komut dosyası yazma ile ilgili yardım almak için LSL Portal&apos;ını açmak istiyor musunuz?
+ <usetemplate ignoretext="LSL Portal&apos;ını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal Et" yestext="Sayfaya git"/>
+ </notification>
+ <notification name="ReturnToOwner">
+ Seçili nesneleri kendi sahiplerine iade etmek istediğinize emin misiniz? Devredilmiş nesnelerin aktarılabilenleri önceki sahiplerine iade edilecektir.
+
+*UYARI* Bu eylem, devredilmiş nesnelerin aktarılamayanlarını silecektir!
+ <usetemplate ignoretext="Nesneleri sahiplerine iade etmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="GroupLeaveConfirmMember">
+ Şu anda [GROUP] grubunun bir üyesisiniz.
+Gruptan ayrılmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmKick">
+ Tüm Sakinleri GERÇEKTEN ağ dışına çıkarmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Tüm Sakinleri Çıkar"/>
+ </notification>
+ <notification name="MuteLinden">
+ Üzgünüz, bir Linden çalışanını engelleyemezsiniz.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="CannotStartAuctionAlreadyForSale">
+ Satılığa çıkarılmış bir parsel için açık arttırma başlatamazsınız. Açık arttırma başlatmak istediğinize eminseniz arazi satışını devre dışı bırakın.
+ </notification>
+ <notification label="Nesneyi ada göre engelleme başarısız" name="MuteByNameFailed">
+ Bu adı zaten engellediniz.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="RemoveItemWarn">
+ İzin veriliyor olsa da, içerikleri silmek nesneye zarar verebilir. Bu öğeyi silmek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="CantOfferCallingCard">
+ Şu anda arama kartı verilemiyor. Lütfen biraz sonra tekrar deneyin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="CantOfferFriendship">
+ Şu anda arkadaşlık teklif edilemiyor. Lütfen biraz sonra tekrar deneyin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="BusyModeSet">
+ Durumunuz Meşgul olarak ayarlandı.
+Sohbet ve anlık iletiler gizlenecek. Anlık iletilere Meşgul durumu için belirlediğiniz yanıt gönderilecek. Tüm ışınlanma teklifleri reddedilecek. Tüm envanter teklifleri Çöp Kutunuza gidecek.
+ <usetemplate ignoretext="Durumumu Meşgul olarak değiştiriyorum" name="okignore" yestext="Tamam"/>
+ </notification>
+ <notification name="JoinedTooManyGroupsMember">
+ Maksimum grup sayısına eriştiniz. Lütfen bu gruba katılmadan önce başka bir gruptan ayrılın ya da bu teklifi reddedin.
+[NAME] sizi bir gruba üye olarak katılmaya davet etti.
+ <usetemplate name="okcancelbuttons" notext="Reddet" yestext="Katıl"/>
+ </notification>
+ <notification name="JoinedTooManyGroups">
+ Maksimum grup sayısına eriştiniz. Lütfen yeni bir gruba katılmadan ya da yeni bir grup oluşturmadan önce grupların bazılarından ayrılın.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="KickUser">
+ Bu Sakin hangi iletiyle çıkarılsın?
+ <form name="form">
+ <input name="message">
+ Bir yönetici oturumunuzu sonlandırdı.
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="KickAllUsers">
+ Şu anda ağ üzerinde yer alan herkes hangi iletiyle çıkarılsın?
+ <form name="form">
+ <input name="message">
+ Bir yönetici oturumunuzu sonlandırdı.
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="FreezeUser">
+ Bu Sakin hangi iletiyle dondurulsun?
+ <form name="form">
+ <input name="message">
+ Donduruldunuz. Hareket ya da sohbet edemezsiniz. Bir yönetici sizinle anlık ileti (Aİ) yoluyla iletişim kuracak.
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="UnFreezeUser">
+ Bu Sakin hangi iletiyle çözülsün?
+ <form name="form">
+ <input name="message">
+ Artık dondurulmuş durumda değilsiniz.
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="SetDisplayNameSuccess">
+ Merhaba [DISPLAY_NAME]!
+
+Aynı gerçek hayatta olduğu gibi, burada da herkesin yeni bir adı öğrenmesi biraz zaman alacaktır. Lütfen nesnelerde, komut dosyalarında, arama vb. hizmetlerde [http://wiki.secondlife.com/wiki/Setting_your_display_name adınızın güncellenmesi için] birkaç gün süre tanıyın.
+ </notification>
+ <notification name="SetDisplayNameBlocked">
+ Üzgünüz, ekran adınızı değiştiremezsiniz. Bunun bir hata olduğunu düşünüyorsanız, lütfen destek ekibine başvurun.
+ </notification>
+ <notification name="SetDisplayNameFailedLength">
+ Üzgünüz, bu ad çok uzun. Ekran adları maksimum [LENGTH] karakter olabilir.
+
+Lütfen daha kısa bir ad deneyin.
+ </notification>
+ <notification name="SetDisplayNameFailedGeneric">
+ Üzgünüz, ekran adınızı ayarlayamadık. Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="SetDisplayNameMismatch">
+ Girdiğiniz ekran adları birbiriyle eşleşmiyor. Lütfen yeniden girin.
+ </notification>
+ <notification name="AgentDisplayNameUpdateThresholdExceeded">
+ Üzgünüz, ekran adınızı değiştirebilmeniz için biraz daha beklemeniz gerekiyor.
+
+Bkz. http://wiki.secondlife.com/wiki/Setting_your_display_name
+
+Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="AgentDisplayNameSetBlocked">
+ Üzgünüz, ekran adınızı ayarlayamadık çünkü kullanılması yasak olan bir kelime içeriyor.
+
+ Lütfen başka bir ad deneyin.
+ </notification>
+ <notification name="AgentDisplayNameSetInvalidUnicode">
+ Ayarlamak istediğiniz ekran adı geçersiz karakterler içeriyor.
+ </notification>
+ <notification name="AgentDisplayNameSetOnlyPunctuation">
+ Ekran adınız noktalama işaretlerinin dışında harfler de içermelidir.
+ </notification>
+ <notification name="DisplayNameUpdate">
+ [OLD_NAME] ([SLID]) artık [NEW_NAME] olarak ayarlandı.
+ </notification>
+ <notification name="OfferTeleport">
+ Aşağıdaki iletiyle konumunuza ışınlanma teklif edilsin mi?
+ <form name="form">
+ <input name="message">
+ [REGION] bölgesinde bana katılır mısın?
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="TooManyTeleportOffers">
+ [OFFERS] ışınlama teklif etmeye kalkıştınız, bu [LIMIT] sınırını aşıyor.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="OfferTeleportFromGod">
+ Sakin sizin konumunuza Yönetici Ayrıcalığı kullanılarak getirilsin mi?
+ <form name="form">
+ <input name="message">
+ [REGION] bölgesinde bana katıl
+ </input>
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="TeleportFromLandmark">
+ &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; konumuna ışınlanmak istediğinize emin misiniz?
+ <usetemplate ignoretext="Bir yer imine ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+ </notification>
+ <notification name="TeleportToPick">
+ [PICK] konumuna ışınlanılsın mı?
+ <usetemplate ignoretext="Seçme sekmesindeki bir konuma ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+ </notification>
+ <notification name="TeleportToClassified">
+ [CLASSIFIED] konumuna ışınlanılsın mı?
+ <usetemplate ignoretext="İlanlardaki bir konuma ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+ </notification>
+ <notification name="TeleportToHistoryEntry">
+ [HISTORY_ENTRY] konumuna ışınlanılsın mı?
+ <usetemplate ignoretext="Geçmiş içinde yer alan bir konuma ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+ </notification>
+ <notification label="Gayrimenkulünüzdeki herkese ileti gönderme" name="MessageEstate">
+ Şu anda gayrimenkulünüzde bulunan herkese gönderilecek kısa bir duyuru yazın.
+ <form name="form">
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification label="Bir Linden Gayrimenkulünü değiştirme" name="ChangeLindenEstate">
+ Linden çalışanlarına ait bir gayrimenkulü (anakara, oryantasyon vb.) değiştirmek üzeresiniz.
+
+Bu, Sakinlerin deneyimlerini temelden etkileyebileceği için SON DERECE TEHLİKELİDİR. Anakara üzerinde, binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır.
+
+Devam edilsin mi?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification label="Linden Gayrimenkulüne Erişimi değiştirme" name="ChangeLindenAccess">
+ Linden çalışanlarına ait bir gayrimenkul (anakara, oryantasyon vb.) için erişim listesini değiştirmek üzeresiniz.
+
+Bu işlem TEHLİKELİDİR ve sadece saldırıya açık nesnelerin/L$&apos;nın ağ içine/dışına aktarılmasını sağlamak için gerçekleştirilmelidir.
+Binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateAllowedAgentAdd">
+ Sadece bu gayrimenkul için mi izin verilenler listesine eklensin, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateAllowedAgentRemove">
+ Sadece bu gayrimenkul için mi izin verilenler listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateAllowedGroupAdd">
+ Sadece bu gayrimenkul için mi izin verilen grup listesine eklensin, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateAllowedGroupRemove">
+ Sadece bu gayrimenkul için mi izin verilen grup listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateBannedAgentAdd">
+ Sadece bu gayrimenkul için mi erişim engellensin, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateBannedAgentRemove">
+ Bu Sakin sadece bu gayrimenkul için mi yasaklı listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateManagerAdd">
+ Sadece bu gayrimenkul için mi gayrimenkul yöneticisi olarak eklensin, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Gayrimenkul seç" name="EstateManagerRemove">
+ Sadece bu gayrimenkul için mi gayrimenkul yöneticiliğinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+ </notification>
+ <notification label="Çıkarmayı Onayla" name="EstateKickUser">
+ [EVIL_USER] bu gayrimenkulden çıkarılsın mı?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="EstateChangeCovenant">
+ Gayrimenkul Sözleşmesini değiştirmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu Bölgeye giremezsiniz. Bu sorun yaşınızı doğrulamak için gerekli bilgilerin eksik olmasından kaynaklanabilir.
+
+Lütfen en son Görüntüleyicinin yüklü olduğunu doğrulayın ve bu erişkinlik seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;nı ziyaret edin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_KB">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu bölgeye giremezsiniz.
+
+Erişkinlik Seviyeleri hakkında daha fazla bilgi edinmek için Bilgi Bankası&apos;nı ziyaret etmek ister misiniz?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+ </url>
+ <usetemplate ignoretext="Erişkinlik Seviyesi ile ilgili kısıtlamalardan dolayı bu Bölgeye giremiyorum" name="okcancelignore" notext="Kapat" yestext="Bilgi Bankası&apos;na Git"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Notify">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu bölgeye giremezsiniz.
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Change">
+ Erişkinlik Seviyesi tercihlerinizden dolayı bu Bölgeye giremezsiniz.
+
+İstenilen bölgeye girmek için, lütfen erişkinlik Seviyesi tercihinizi değiştirin. Bu tercih [REGIONMATURITY] içerikli alanlar içinde arama yapabilmenizi ve bu alanlara erişebilmenizi sağlayacak. Değişiklikleri geri almak için, Ben &gt; Tercihler &gt; Genel sekmesine gidin.
+ <form name="form">
+ <button name="OK" text="Tercihi Değiştir"/>
+ <button name="Cancel" text="Kapat"/>
+ <ignore name="ignore" text="Seçtiğim Seviye tercihleri bir bölgeye girmemi engelliyor"/>
+ </form>
+ </notification>
+ <notification name="PreferredMaturityChanged">
+ Erişkinlik Seviyesi tercihiniz artık [RATING].
+ </notification>
+ <notification name="LandClaimAccessBlocked">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu arazi üzerinde hak talebinde bulunamazsınız. Bu sorun yaşınızı doğrulamak için gerekli bilgilerin eksik olmasından kaynaklanabilir.
+
+Lütfen en son Görüntüleyicinin yüklü olduğunu doğrulayın ve bu erişkinlik seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;nı ziyaret edin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_KB">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu arazi üzerinde hak talebinde bulunamazsınız.
+
+Erişkinlik Seviyeleri hakkında daha fazla bilgi edinmek için Bilgi Bankası&apos;nı ziyaret etmek ister misiniz?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+ </url>
+ <usetemplate ignoretext="Erişkinlik Seviyesi ile ilgili kısıtlandırmalardan dolayı bu Arazi üzerinde hak talebinde bulunamıyorum." name="okcancelignore" notext="Kapat" yestext="Bilgi Bankası&apos;na Git"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_Notify">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu arazi üzerinde hak talebinde bulunamazsınız.
+ </notification>
+ <notification name="LandClaimAccessBlocked_Change">
+ Erişkinlik Seviyesi tercihinizden dolayı bu arazi üzerinde hak talebinde bulunamazsınız.
+
+Erişkinlik Seviyesi tercihinizi şimdi yükseltmek ve araziye girebilmek için &apos;Tercihi Değiştir&apos; seçeneğini tıklatabilirsiniz. Böylece [REGIONMATURITY] içerikli alanlar içinde arama yapabilecek ve bu alanlara erişebileceksiniz. İleride bu ayarı eski haline döndürmek isterseniz, Ben &gt; Tercihler &gt; Genel sekmesine gidin.
+ <usetemplate ignoretext="Seçtiğim Seviye tercihi Arazi üzerinde hak talebinde bulunmamı engelliyor" name="okcancelignore" notext="Kapat" yestext="Tercihi Değiştir"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu araziyi satın alamazsınız. Bu sorun yaşınızı doğrulamak için gerekli bilgilerin eksik olmasından kaynaklanabilir.
+
+Lütfen en son Görüntüleyicinin yüklü olduğunu doğrulayın ve bu erişkinlik seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;nı ziyaret edin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_KB">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu araziyi satın alamazsınız.
+
+Erişkinlik Seviyeleri hakkında daha fazla bilgi edinmek için Bilgi Bankası&apos;nı ziyaret etmek ister misiniz?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+ </url>
+ <usetemplate ignoretext="Erişkinlik Seviyesi ile ilgili kısıtlandırmalardan dolayı bu Araziyi satın alamıyorum" name="okcancelignore" notext="Kapat" yestext="Bilgi Bankası&apos;na Git"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_Notify">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu araziyi satın alamazsınız.
+ </notification>
+ <notification name="LandBuyAccessBlocked_Change">
+ Erişkinlik Seviyesi tercihinizden dolayı bu araziyi satın alamazsınız.
+
+Erişkinlik Seviyesi tercihinizi şimdi yükseltmek ve araziye girebilmek için &apos;Tercihi Değiştir&apos; seçeneğini tıklatabilirsiniz. Böylece [REGIONMATURITY] içerikli alanlar içinde arama yapabilecek ve bu alanlara erişebileceksiniz. İleride bu ayarı eski haline döndürmek isterseniz, Ben &gt; Tercihler &gt; Genel sekmesine gidin.
+ <usetemplate ignoretext="Seçtiğim Seviye tercihi Araziyi satın almamı engelliyor" name="okcancelignore" notext="Kapat" yestext="Tercihi Değiştir"/>
+ </notification>
+ <notification name="TooManyPrimsSelected">
+ Çok fazla prim seçilmiş. Lütfen [MAX_PRIM_COUNT] ya da daha az prim seçin ve tekrar deneyin
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="ProblemImportingEstateCovenant">
+ Gayrimenkul sözleşmesi içeriye aktarılırken problem oluştu.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="ProblemAddingEstateManager">
+ Yeni bir gayrimenkul yöneticisi eklenirken problem oluştu. Bir veya birden fazla gayrimenkulün yönetici listesi dolu olabilir.
+ </notification>
+ <notification name="ProblemAddingEstateGeneric">
+ Bu gayrimenkul listesine eklenirken problem oluştu. Bir veya birden fazla gayrimenkulün listesi dolu olabilir.
+ </notification>
+ <notification name="UnableToLoadNotecardAsset">
+ Not kartı varlığı şu anda yüklenemedi.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="NotAllowedToViewNotecard">
+ İstenen varlık kimliği ile ilişkili not karını görüntülemek için yeterli izniniz yok.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="MissingNotecardAssetID">
+ Not kartının varlık kimliği veri tabanında yer almıyor.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="PublishClassified">
+ Hatırla: İlan ücretleri iade edilmez.
+
+Şimdi L$ [AMOUNT] ödeyerek bu ilanı yayınlamak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="SetClassifiedMature">
+ Bu ilan Orta Seviyede içerik barındırıyor mu?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="SetGroupMature">
+ Bu grup Orta Seviyede içerik barındırıyor mu?
+ <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification label="Yeniden başlatmayı onayla" name="ConfirmRestart">
+ Bu bölgeyi gerçekten 2 dakika sonra yeniden başlatmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification label="Bu bölgedeki herkese ileti gönderme" name="MessageRegion">
+ Bu bölgede bulunan herkese gönderilecek kısa bir duyuru yazın.
+ <form name="form">
+ <button name="OK" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification label="Bölgenin Erişkinlik Seviyesi Değişti" name="RegionMaturityChange">
+ Bu bölgenin erişkinlik seviyesi güncellendi.
+Değişikliğin harita üzerine yansıtılması biraz zaman alabilir.
+
+Yetişkin bölgelerine girebilmek için, Sakinlerin yaş doğrulama ya da ödeme doğrulama yoluyla Doğrulanmış bir Hesaba sahip olmaları gerekmektedir.
+ </notification>
+ <notification label="Sesli Sohbet Sürüm Uyumsuzluğu" name="VoiceVersionMismatch">
+ [APP_NAME] uygulamasının bu sürümü bu bölgedeki Sesli Sohbet özelliği ile uyumlu değil. Sesli Sohbet özelliğinin düzgün bir şekilde çalışabilmesi için [APP_NAME] uygulamasını güncellemeniz gerekiyor.
+ </notification>
+ <notification label="Nesneler Satın Alınamıyor" name="BuyObjectOneOwner">
+ Farklı sahipleri olan nesneler aynı anda satın alınamaz.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+ </notification>
+ <notification label="İçerikler Satın Alınamıyor" name="BuyContentsOneOnly">
+ Aynı anda birden fazla nesnenin içeriği satın alınamaz.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+ </notification>
+ <notification label="İçerikler Satın Alınamıyor" name="BuyContentsOneOwner">
+ Farklı sahipleri olan nesneler aynı anda satın alınamaz.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+ </notification>
+ <notification name="BuyOriginal">
+ Özgün nesne [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı?
+Nesnenin sahibi siz olacaksınız.
+Şu işlemleri yapabileceksiniz:
+ Değiştirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BuyOriginalNoOwner">
+ Özgün nesne L$ [PRICE] karşılığında satın alınsın mı?
+Nesnenin sahibi siz olacaksınız.
+Şu işlemleri yapabileceksiniz:
+ Değiştirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BuyCopy">
+ Bir kopyası [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı?
+Nesne envanterinize kopyalanacak.
+Şu işlemleri yapabileceksiniz:
+ Değiştirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BuyCopyNoOwner">
+ Bir kopyası L$ [PRICE] karşılığında satın alınsın mı?
+Nesne envanterinize kopyalanacak.
+Şu işlemleri yapabileceksiniz:
+ Değiştirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BuyContents">
+ İçerik [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı?
+İçerik envanterinize kopyalanacak.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BuyContentsNoOwner">
+ İçerik L$ [PRICE] karşılığında satın alınsın mı?
+İçerik envanterinize kopyalanacak.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmPurchase">
+ Bu işlem şununla sonuçlanacak:
+[ACTION]
+
+Bu satın alma işlemine devam etmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmPurchasePassword">
+ Bu işlem şununla sonuçlanacak:
+[ACTION]
+
+Bu satın alma işlemine devam etmek istediğinize emin misiniz?
+Lütfen parolanızı yeniden girin ve Tamam&apos;ı tıklatın.
+ <form name="form">
+ <button name="ConfirmPurchase" text="Tamam"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="SetPickLocation">
+ Not:
+Bu seçmenin konumunu güncellediniz fakat diğer detaylar özgün değerlerini koruyacak.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="MoveInventoryFromObject">
+ &apos;Kopyalanamayan&apos; envanter öğeleri seçtiniz.
+Bu öğeler envanterinize taşınacak, kopyalanmayacak.
+
+Envanter öğesi/öğeleri taşınsın mı?
+ <usetemplate ignoretext="Bir nesneden &apos;kopyalanamayan&apos; öğeleri taşımadan önce beni uyar" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="MoveInventoryFromScriptedObject">
+ &apos;Kopyalanamayan&apos; envanter öğeleri seçtiniz. Bu öğeler envanterinize taşınacak, kopyalanmayacak.
+Bu nesnenin içinde komut dosyası bulunduğundan, bu öğelerin envanterinize taşınması komut dosyasının hatalı çalışmasına neden olabilir.
+
+Envanter öğesi/öğeleri taşınsın mı?
+ <usetemplate ignoretext="İçinde komut dosyası bulunan bir nesneyi parçalayabilecek &apos;kopyalanamayan&apos; öğeleri taşımadan önce beni uyar" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ClickActionNotPayable">
+ Uyarı: &apos;Nesne için ödeme yap&apos; tıklama eylemi ayarlanmış fakat sadece bir komut dosyası bir para() olayı ile eklenirse çalışacak.
+ <form name="form">
+ <ignore name="ignore" text="Para() komut dosyası içermeyen bir nesne oluştururken &apos;Nesne için ödeme yap&apos; eylemi ayarladım"/>
+ </form>
+ </notification>
+ <notification name="OpenObjectCannotCopy">
+ Bu nesne içinde kopyalama izniniz olan bir öğe yok.
+ </notification>
+ <notification name="WebLaunchAccountHistory">
+ Hesap geçmişinizi görüntülemek için [http://secondlife.com/account/ Kontrol Paneli] adresine gitmek istiyor musunuz?
+ <usetemplate ignoretext="Hesap geçmişimi görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Sayfaya git"/>
+ </notification>
+ <notification name="ConfirmQuit">
+ Çıkmak istediğinize emin misiniz?
+ <usetemplate ignoretext="Çıkmadan önce doğrulama iste" name="okcancelignore" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification name="ConfirmRestoreToybox">
+ Varsayılan düğmelerinizi ve araç çubuklarınızı geri yüklemek istediğinize emin misiniz?
+
+Bu eylemi geri alamazsınız.
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="DeleteItems">
+ [QUESTION]
+ <usetemplate ignoretext="Öğeleri silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="HelpReportAbuseEmailLL">
+ [http://secondlife.com/corporate/tos.php Hizmet Sözleşmesi] ve [http://secondlife.com/corporate/cs.php Topluluk Standartları] ihlallerini bildirmek için bu aracı kullanın.
+
+Bildirilen tüm kötüye kullanımlar incelenir ve çözüme ulaştırılır.
+ </notification>
+ <notification name="HelpReportAbuseSelectCategory">
+ Lütfen bu kötüye kullanım bildirimi için bir kategori seçin.
+Kategori seçimi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+ </notification>
+ <notification name="HelpReportAbuseAbuserNameEmpty">
+ Lütfen kötüye kullanan kişinin adını yazın.
+Doğru değerlerin girilmesi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+ </notification>
+ <notification name="HelpReportAbuseAbuserLocationEmpty">
+ Lütfen kötüye kullanımın gerçekleştiği konumu yazın.
+Doğru değerlerin girilmesi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+ </notification>
+ <notification name="HelpReportAbuseSummaryEmpty">
+ Lütfen kötüye kullanımın nasıl gerçekleştiğini özetleyin.
+Doğru bir özetin girilmesi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+ </notification>
+ <notification name="HelpReportAbuseDetailsEmpty">
+ Lütfen gerçekleşen kötüye kullanımı ayrıntılı bir şekilde anlatın.
+Bildirdiğiniz olayın ayrıntıları ve adlar dahil olmak üzere olabildiğince detaylı bilgi verin.
+Doğru bir anlatım yapılması, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+ </notification>
+ <notification name="HelpReportAbuseContainsCopyright">
+ Değerli Second Life Sakinimiz,
+
+Fikri mülkiyet ihlali konusunda bir bildirim yapıyorsunuz. Konuyu doğru bir şekilde bildirdiğinizden emin olun:
+
+(1) Kötüye Kullanımı Bildirme Süreci. Bir Second Life Sakininin, CopyBot ya da benzeri bir kopyalama aracı kullanma vb. yollarla, fikri mülkiyet haklarını ihlal edecek şekilde [SECOND_LIFE]&apos;ın verdiği izinleri kötüye kullandığını düşünüyorsanız bir kötüye kullanım bildirimi sunabilirsiniz. Kötüye Kullanımla Mücadele Ekibi [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Hizmet Sözleşmesi] veya [http://secondlife.com/corporate/cs.php Topluluk Standartları] kurallarını ihlal eden davranışları inceleyecek ve uygun disiplin cezalarını verecektir. Ancak, Kötüye Kullanımla Mücadele Ekibi, içeriğin [SECOND_LIFE] ortamından kaldırılma taleplerine yanıt vermeyecektir.
+
+(2) DMCA veya İçerik Kaldırma Süreci. İçeriğin [SECOND_LIFE] ortamından kaldırılmasını talep etmek için, [http://secondlife.com/corporate/dmca.php DMCA İlkeleri]&apos;nde belirtildiği şekilde geçerli bir ihlal bildirimi sunmuş olmanız GEREKLİDİR.
+
+Kötüye kullanım bildirme sürecine devam etmek için, lütfen bu pencereyi kapatın ve bildiriminizi gönderme işlemini tamamlayın. &apos;CopyBot veya İzin İhlali&apos; kategorisini seçmeniz gerekebilir.
+
+Teşekkürler
+
+Linden Lab
+ </notification>
+ <notification name="FailedRequirementsCheck">
+ Aşağıda belirtilen gerekli bileşenler [FLOATER] içinde yok:
+[COMPONENTS]
+ </notification>
+ <notification label="Mevcut Aksesuarı Değiştir" name="ReplaceAttachment">
+ Vücudunuzdaki bu noktaya takılı bir nesne zaten mevcut.
+Bu nesneyi seçilen nesne ile değiştirmek istiyor musunuz?
+ <form name="form">
+ <ignore name="ignore" text="Mevcut aksesuarı seçilen öğe ile değiştir"/>
+ <button ignore="Otomatik Olarak Değiştir" name="Yes" text="Tamam"/>
+ <button ignore="Hiçbir Zaman Değiştirme" name="No" text="İptal"/>
+ </form>
+ </notification>
+ <notification label="Meşgul Durumu Uyarısı" name="BusyModePay">
+ Durumunuz Meşgul olarak ayarlanmış; bu da, bu ödemenin karşılığında teklif edilen hiçbir öğeyi almayacağınız anlamına gelir.
+
+Bu işlemi tamamlamadan önce Meşgul durumundan çıkmak ister misiniz?
+ <form name="form">
+ <ignore name="ignore" text="Meşgul durumundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim."/>
+ <button ignore="Her zaman Meşgul durumundan çık" name="Yes" text="Tamam"/>
+ <button ignore="Hiçbir zaman Meşgul durumundan çıkma" name="No" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="ConfirmDeleteProtectedCategory">
+ &apos;[FOLDERNAME]&apos; klasörü bir sistem klasörüdür. Sistem klasörlerini silmek kararsızlığa neden olabilir. Silmek istediğinize emin misiniz?
+ <usetemplate ignoretext="Bir sistem klasörünü silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmEmptyTrash">
+ Çöp kutunuzun içeriğini kalıcı olarak silmek istediğinize emin misiniz?
+ <usetemplate ignoretext="Envanter Çöp Kutusu klasörünü boşaltmadan önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmClearBrowserCache">
+ Seyahat, web ve arama geçmişinizi silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmClearCache">
+ Görüntüleyici önbelleğinizi temizlemek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ConfirmClearCookies">
+ Çerezlerinizi silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Evet"/>
+ </notification>
+ <notification name="ConfirmClearMediaUrlList">
+ Kayıtlı URL adreslerinizi silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Evet"/>
+ </notification>
+ <notification name="ConfirmEmptyLostAndFound">
+ Kaybedip Bulduklarım klasörünüzün içeriğini kalıcı olarak silmek istediğinize emin misiniz?
+ <usetemplate ignoretext="Kaybedip Bulduğum envanterler klasörünü boşaltmadan önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="CopySLURL">
+ Aşağıdaki SLurl adresi panonuza kopyalandı:
+ [SLURL]
+
+Diğer kişilerin bu konuma kolayca erişmesini sağlamak için bu adrese bir web sayfası üzerinden bağlantı verin veya herhangi bir web tarayıcısının adres çubuğuna yapıştırarak önce siz deneyin.
+ <form name="form">
+ <ignore name="ignore" text="SLurl adresi panoma kopyalandı"/>
+ </form>
+ </notification>
+ <notification name="WLSavePresetAlert">
+ Kayıtlı ön ayarın üzerine yazmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="WLNoEditDefault">
+ Varsayılan olarak ayarlanmış bir ön ayarı değiştiremez ve silemezsiniz.
+ </notification>
+ <notification name="WLMissingSky">
+ Bu gün döngüsü dosyası kayıp bir gökyüzü dosyasına başvuruda bulunuyor: [SKY].
+ </notification>
+ <notification name="WLRegionApplyFail">
+ Üzgünüz, bu ayarlar bölgeye uygulanamadı. Bölgeden ayrılmak ve sonra geri dönmek sorunu çözebilir. Gösterilen neden şuydu: [FAIL_REASON]
+ </notification>
+ <notification name="EnvCannotDeleteLastDayCycleKey">
+ Bu gün döngüsündeki son anahtar silinemedi çünkü boş bir gün döngünüz olamaz. Son kalan anahtarı silmek ve yenisini oluşturmaya kalkışmak yerine bunu değiştirmelisiniz.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="DayCycleTooManyKeyframes">
+ Bu gün döngüsüne daha fazla anahtar kare ekleyemezsiniz. [SCOPE] kapsamı gün döngüleri için maksimum anahtar kare sayısı [MAX] değerini aşamaz.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="EnvUpdateRate">
+ Ortam ayarlarınızı ancak her [WAIT] saniyede bir güncelleştirebilirsiniz. En azından bu kadar bekleyin ve tekrar deneyin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="PPSaveEffectAlert">
+ İşlem Sonrası Efekti mevcut. Hala üzerine yazmak istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="ChatterBoxSessionStartError">
+ [RECIPIENT] ile yeni bir sohbet oturumu başlatılamıyor.
+[REASON]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="ChatterBoxSessionEventError">
+ [EVENT]
+[REASON]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="ForceCloseChatterBoxSession">
+ [NAME] ile sürdürdüğünüz sohbet oturumunun kapatılması gerekiyor.
+[REASON]
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="Cannot_Purchase_an_Attachment">
+ Bir nesne bir avatarın üzerinde takılı iken onu satın alamazsınız.
+ </notification>
+ <notification label="Borç Alma İzni Talep Etme Hakkında" name="DebitPermissionDetails">
+ Bu talebi kabul etmek, bir komut dosyasına, hesabınızdan Linden doları (L$) alma konusunda sürekli bir izin verir. Bu izni iptal etmek için, nesne sahibi nesneyi silmeli ya da nesne içindeki komut dosyalarını yeniden ayarlamalıdır.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="AutoWearNewClothing">
+ Oluşturmak üzere olduğunuz giysiyi otomatik olarak giymek ister misiniz?
+ <usetemplate ignoretext="Görünümümü düzenlerken oluşturduğum giysiyi giy" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="NotAgeVerified">
+ Second Life içinde yetişkinlere yönelik içeriğe ve bölgelere erişmek için en az 18 yaşında olmalısınız. 18 yaşından büyük olduğunuzu onaylamak için lütfen yaş doğrulama sayfamızı ziyaret edin.
+Bu adımda web tarayıcınızın başlatılacağına dikkat edin.
+
+[_URL]
+ <url name="url">
+ https://secondlife.com/my/account/verification.php
+ </url>
+ <usetemplate ignoretext="Yaşımı doğrulatmadım" name="okcancelignore" notext="İptal" yestext="Yaş Doğrulamasına Git"/>
+ </notification>
+ <notification name="Cannot enter parcel: no payment info on file">
+ Bu alanı ziyaret edebilmek için ödeme bilgilerinizin kayıtlı olması gerekir. [SECOND_LIFE] web sitesine gitmek ve bunu ayarlamak istiyor musunuz?
+
+[_URL]
+ <url name="url">
+ https://secondlife.com/account/
+ </url>
+ <usetemplate ignoretext="Ödeme bilgilerim kayıtlı değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="MissingString">
+ [STRING_NAME] dizesi strings.xml dosyasında yer almıyor.
+ </notification>
+ <notification name="SystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="IMSystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="Cancelled">
+ İptal Edildi
+ </notification>
+ <notification name="CancelledSit">
+ Oturma İptal Edildi
+ </notification>
+ <notification name="CancelledAttach">
+ Takma İptal Edildi
+ </notification>
+ <notification name="ReplacedMissingWearable">
+ Eksik giysi/vücut bölümü varsayılan ile değiştirildi.
+ </notification>
+ <notification name="GroupNotice">
+ Konu: [SUBJECT], İleti: [MESSAGE]
+ </notification>
+ <notification name="FriendOnline">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; Çevrimiçi
+ </notification>
+ <notification name="FriendOffline">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; Çevrimdışı
+ </notification>
+ <notification name="AddSelfFriend">
+ Çok iyi biri olduğunuza eminiz fakat kendinizi arkadaş olarak ekleyemezsiniz.
+ </notification>
+ <notification name="UploadingAuctionSnapshot">
+ SL dünyası içinde ve web sitesinde yer alan anlık görüntüler karşıya yükleniyor...
+(Yaklaşık 5 dakika sürecektir.)
+ </notification>
+ <notification name="UploadPayment">
+ Karşıya yüklemek için L$ [AMOUNT] ödediniz.
+ </notification>
+ <notification name="UploadWebSnapshotDone">
+ Web sitesinde yer alan anlık görüntülerin karşıya yüklenmesi tamamlandı.
+ </notification>
+ <notification name="UploadSnapshotDone">
+ SL dünyası içinde yer alan anlık görüntülerin karşıya yüklenmesi tamamlandı.
+ </notification>
+ <notification name="TerrainDownloaded">
+ Terrain.raw karşıdan yüklendi
+ </notification>
+ <notification name="GestureMissing">
+ Hmm. [NAME] mimiği veri tabanında yok.
+ </notification>
+ <notification name="UnableToLoadGesture">
+ [NAME] mimiği karşıya yüklenemiyor.
+ </notification>
+ <notification name="LandmarkMissing">
+ Yer imi veri tabanında yok.
+ </notification>
+ <notification name="UnableToLoadLandmark">
+ Yer imi karşıya yüklenemiyor. Lütfen tekrar deneyin.
+ </notification>
+ <notification name="CapsKeyOn">
+ Caps Lock tuşunuz açık.
+Parolanızı yanlış yazmanıza sebep olabilir.
+ </notification>
+ <notification name="NotecardMissing">
+ Not kartı veri tabanında yok.
+ </notification>
+ <notification name="NotecardNoPermissions">
+ Bu not kartını görüntüleme izniniz yok.
+ </notification>
+ <notification name="RezItemNoPermissions">
+ Nesneyi oluşturmak için yetersiz izin.
+ </notification>
+ <notification name="IMAcrossParentEstates">
+ Ana gayrimenkuller arasında Aİ gönderilemiyor.
+ </notification>
+ <notification name="TransferInventoryAcrossParentEstates">
+ Ana gayrimenkuller arasında envanter aktarımı yapılamıyor.
+ </notification>
+ <notification name="UnableToLoadNotecard">
+ Not kartı karşıya yüklenemiyor.
+Lütfen tekrar deneyin.
+ </notification>
+ <notification name="ScriptMissing">
+ Komut dosyası veri tabanında yok.
+ </notification>
+ <notification name="ScriptNoPermissions">
+ Komut dosyasını görüntülemek için yetersiz izin.
+ </notification>
+ <notification name="UnableToLoadScript">
+ Komut dosyası karşıya yüklenemiyor. Lütfen tekrar deneyin.
+ </notification>
+ <notification name="IncompleteInventory">
+ Teklif etmek istediğiniz içeriğin tamamı henüz yerel olarak kullanılabilir değil. Lütfen bu öğeleri bir dakika içerisinde tekrar teklif etmeyi deneyin.
+ </notification>
+ <notification name="CannotModifyProtectedCategories">
+ Korunmuş kategorileri değiştiremezsiniz.
+ </notification>
+ <notification name="CannotRemoveProtectedCategories">
+ Korunmuş kategorileri kaldıramazsınız.
+ </notification>
+ <notification name="UnableToBuyWhileDownloading">
+ Nesne verileri karşıdan yüklenirken satın alınamıyor.
+Lütfen tekrar deneyin.
+ </notification>
+ <notification name="UnableToLinkWhileDownloading">
+ Nesne verileri karşıdan yüklenirken bağlanılamıyor.
+Lütfen tekrar deneyin.
+ </notification>
+ <notification name="CannotBuyObjectsFromDifferentOwners">
+ Aynı anda sadece bir kullanıcının sahip olduğu nesneleri satın alabilirsiniz.
+Lütfen tek bir nesne seçin.
+ </notification>
+ <notification name="ObjectNotForSale">
+ Bu nesne satılık değil.
+ </notification>
+ <notification name="EnteringGodMode">
+ Yönetici ayrıcalıklarına sahip moda giriliyor, seviye [LEVEL]
+ </notification>
+ <notification name="LeavingGodMode">
+ Yönetici ayrıcalıklarına sahip moddan çıkılıyor, seviye [LEVEL]
+ </notification>
+ <notification name="CopyFailed">
+ Bunu kopyalama izniniz yok.
+ </notification>
+ <notification name="InventoryAccepted">
+ [NAME] envanter teklifinizi aldı.
+ </notification>
+ <notification name="InventoryDeclined">
+ [NAME] envanter teklifinizi reddetti.
+ </notification>
+ <notification name="ObjectMessage">
+ [NAME]: [MESSAGE]
+ </notification>
+ <notification name="CallingCardAccepted">
+ Arama kartınız kabul edildi.
+ </notification>
+ <notification name="CallingCardDeclined">
+ Arama kartınız reddedildi.
+ </notification>
+ <notification name="TeleportToLandmark">
+ Ekranınızın sağ tarafındaki Yerler panelini açıp Yer İmleri sekmesini seçerek &apos;[NAME]&apos; gibi konumlara ışınlanabilirsiniz.
+Seçmek için herhangi bir yer iminin üzerini tıklatın ve ardından panelin en altındaki &apos;Işınla&apos; düğmesini tıklatın.
+(Yer iminin üzerini çift tıklatabilir veya sağ tıklayıp &apos;Işınla&apos;yı seçebilirsiniz.)
+ </notification>
+ <notification name="TeleportToPerson">
+ Ekranınızın sağ tarafındaki İnsanlar panelini açarak &apos;[NAME]&apos; gibi Sakinler ile iletişim kurabilirsiniz.
+Sakini listeden seçin ve panelin altındaki &apos;Aİ&quot; düğmesini tıklatın.
+(Listede adlarını çift tıklatarak veya sağ tıklatıp &quot;Aİ&quot;yi seçerek de bunu yapabilirsiniz.)
+ </notification>
+ <notification name="CantSelectLandFromMultipleRegions">
+ Sunucunun sınırları dışındaki arazi seçilemez.
+Daha küçük bir arazi parçası seçmeyi deneyin.
+ </notification>
+ <notification name="SearchWordBanned">
+ Arama sorgunuzdaki bazı kelimeler Topluluk Standartları&apos;nda belirtilen içerik kısıtlamaları nedeniyle aramaya dahil edilmedi.
+ </notification>
+ <notification name="NoContentToSearch">
+ Lütfen arama yapmak için en az bir içerik türü seçin (Genel, Orta Seviye veya Yetişkin)
+ </notification>
+ <notification name="SystemMessage">
+ [MESSAGE]
+ </notification>
+ <notification name="PaymentReceived">
+ [MESSAGE]
+ </notification>
+ <notification name="PaymentSent">
+ [MESSAGE]
+ </notification>
+ <notification name="EventNotification">
+ Etkinlik Bildirimi
+
+[NAME]
+[DATE]
+ <form name="form">
+ <button name="Details" text="Ayrıntl"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="TransferObjectsHighlighted">
+ Bu parsel üzerinde bulunan ve parseli satın alan kişiye aktarılacak olan tüm nesneler vurgulanmıştır.
+
+* Aktarılacak ağaç ve çimler vurgulanmamıştır.
+ <form name="form">
+ <button name="Done" text="Tamamlandı"/>
+ </form>
+ </notification>
+ <notification name="DeactivatedGesturesTrigger">
+ Aynı tetikleyiciye sahip mimikler devre dışı bırakıldı:
+[NAMES]
+ </notification>
+ <notification name="NoQuickTime">
+ Apple Quick Time yazılımı sisteminizde yüklü görünmüyor.
+Destekleyen parsellerde akış ortamını görüntülemek istiyorsanız [http://www.apple.com/quicktime QuickTime sitesine] gitmeli ve QuickTime Player&apos;ı yüklemelisiniz.
+ </notification>
+ <notification name="NoPlugin">
+ &quot;[MIME_TYPE]&quot; mime türüne uygun bir Ortam Eklentisi bulunamadı. Bu türdeki ortam dosyaları kullanılamayacak.
+ </notification>
+ <notification name="MediaPluginFailed">
+ Aşağıdaki Ortam Eklentisi arızalandı:
+ [PLUGIN]
+
+Sorun yaşamaya devam ederseniz lütfen eklentiyi yeniden yükleyin veya satıcı ile iletişim kurun.
+ <form name="form">
+ <ignore name="ignore" text="Bir Ortam Eklentisi çalıştırılamadı"/>
+ </form>
+ </notification>
+ <notification name="OwnedObjectsReturned">
+ Seçili arazi parseli üzerinde sahip olduğunuz nesneler envanterinize iade edildi.
+ </notification>
+ <notification name="OtherObjectsReturned">
+ [NAME] adlı kullanıcının sahip olduğu seçili arazi parseli üzerinde bulunan nesneler kullanıcının envanterine iade edildi.
+ </notification>
+ <notification name="OtherObjectsReturned2">
+ &apos;[NAME]&apos; adlı Sakinin sahip olduğu seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerine iade edildi.
+ </notification>
+ <notification name="GroupObjectsReturned">
+ [GROUPNAME] ile paylaşılan seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerinin envanterlerine iade edildi.
+Devredilmiş nesnelerin aktarılabilenleri önceki sahiplerine iade edildi.
+Gruba devredilen nesnelerden aktarılamayanlar silindi.
+ </notification>
+ <notification name="UnOwnedObjectsReturned">
+ Seçili parsel üzerinde size ait OLMAYAN nesneler kendi sahiplerine iade edildi.
+ </notification>
+ <notification name="ServerObjectMessage">
+ [NAME] adlı kişiden gelen ileti:
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
+ </notification>
+ <notification name="NotSafe">
+ Bu arazide hasar özelliği etkin.
+Burada zarar görebilirsiniz. Hayatınızı kaybederseniz ana konumunuza ışınlanacaksınız.
+ </notification>
+ <notification name="NoFly">
+ Bu alanda uçma özelliği devre dışı.
+Burada uçamazsınız.
+ </notification>
+ <notification name="PushRestricted">
+ Bu alan başkalarını dışarı itmeye izin vermiyor. Bu arazinin sahibi değilseniz başkalarını dışarı itemezsiniz.
+ </notification>
+ <notification name="NoVoice">
+ Bu alanda sesli sohbet özelliği devre dışı. Kimsenin konuşmasını duyamayacaksınız.
+ </notification>
+ <notification name="NoBuild">
+ Bu alanda inşa etme özelliği devre dışı. Burada nesne inşa edemez ve oluşturamazsınız.
+ </notification>
+ <notification name="SeeAvatars">
+ Bu parsel, avatarları ve metin sohbetini başka bir parselden saklar. Parselin dışındaki diğer sakinleri göremezsiniz, dışardakiler de sizi göremez. 0. kanaldaki normal metin sohbeti de engellenmiştir.
+ </notification>
+ <notification name="ScriptsStopped">
+ Bir yönetici bu bölgedeki komut dosyalarını geçici olarak durdurdu.
+ </notification>
+ <notification name="ScriptsNotRunning">
+ Bu bölgede hiçbir komut dosyası çalışmıyor.
+ </notification>
+ <notification name="NoOutsideScripts">
+ Bu arazide dış komut dosyaları devre dışı.
+
+Arazi sahibine ait olanlar dışında hiçbir komut dosyası çalışmayacak.
+ </notification>
+ <notification name="ClaimPublicLand">
+ İçinde bulunduğunuz Bölgede sadece kamuya ait araziler üzerinde hak talebinde bulunabilirsiniz.
+ </notification>
+ <notification name="RegionTPAccessBlocked">
+ Erişkinlik Seviyesi ayarlarınızdan dolayı bu Bölgeye giremezsiniz. Yaşınızı doğrulatmanız ve/veya en son Görüntüleyici&apos;yi yüklemeniz gerekebilir.
+
+Lütfen bu erişkinlik Seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;na gidin.
+ </notification>
+ <notification name="URBannedFromRegion">
+ Bu bölgeye erişiminiz yasaklandı.
+ </notification>
+ <notification name="NoTeenGridAccess">
+ Hesabınız 18 yaş altı kullanıcılar için hazırlanmış olan ağa bağlanamıyor.
+ </notification>
+ <notification name="ImproperPaymentStatus">
+ Bu bölgeye girmek için gerekli ödeme durumuna sahip değilsiniz.
+ </notification>
+ <notification name="MustGetAgeRgion">
+ Bu bölgeye girebilmek için yaş doğrulamanızın yapılmış olması gerekir.
+ </notification>
+ <notification name="MustGetAgeParcel">
+ Bu parsele girebilmek için yaş doğrulamanızın yapılmış olması gerekir.
+ </notification>
+ <notification name="NoDestRegion">
+ Seçili hedef bölge yok.
+ </notification>
+ <notification name="NotAllowedInDest">
+ Hedef konuma girme izniniz yok.
+ </notification>
+ <notification name="RegionParcelBan">
+ Bölge değiştirerek yasaklı bir parsele giriş yapamazsınız. Başka bir yol deneyin.
+ </notification>
+ <notification name="TelehubRedirect">
+ Bir ışınlanma istasyonuna yeniden yönlendirildiniz.
+ </notification>
+ <notification name="CouldntTPCloser">
+ Hedef konuma daha yakın bir bölgeye ışınlanılamadı.
+ </notification>
+ <notification name="TPCancelled">
+ Işınlanma iptal edildi.
+ </notification>
+ <notification name="FullRegionTryAgain">
+ Girmeye çalıştığınız bölge şu anda dolu.
+Lütfen biraz sonra tekrar deneyin.
+ </notification>
+ <notification name="GeneralFailure">
+ Genel arıza.
+ </notification>
+ <notification name="RoutedWrongRegion">
+ Yanlış bölgeye yönlendirildi. Lütfen tekrar deneyin.
+ </notification>
+ <notification name="NoValidAgentID">
+ Geçerli bir aracı kimliği yok.
+ </notification>
+ <notification name="NoValidSession">
+ Geçerli bir oturum kimliği yok.
+ </notification>
+ <notification name="NoValidCircuit">
+ Geçerli bir devre kodu yok.
+ </notification>
+ <notification name="NoValidTimestamp">
+ Geçerli bir zaman damgası yok.
+ </notification>
+ <notification name="NoPendingConnection">
+ Beklemedeki bağlantı oluşturulamıyor.
+ </notification>
+ <notification name="InternalUsherError">
+ Aracı öncüsüne bağlanılmaya çalışılırken dahili bir hata oluştu.
+ </notification>
+ <notification name="NoGoodTPDestination">
+ Bu bölgede iyi bir ışınlanma hedef konumu bulunamıyor.
+ </notification>
+ <notification name="InternalErrorRegionResolver">
+ Bölge çözümleyicisi etkinleştirilmeye çalışılırken dahili bir hata oluştu.
+ </notification>
+ <notification name="NoValidLanding">
+ Geçerli bir iniş noktası bulunamadı.
+ </notification>
+ <notification name="NoValidParcel">
+ Geçerli bir parsel bulunamadı.
+ </notification>
+ <notification name="ObjectGiveItem">
+ Sahibinin [NAME_SLURL] olduğu, &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; adındaki bir nesne size [OBJECTTYPE] türündeki bu nesneyi verdi:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+ <form name="form">
+ <button name="Keep" text="Sakla"/>
+ <button name="Discard" text="At"/>
+ <button name="Mute" text="Sahibi Engelle"/>
+ </form>
+ </notification>
+ <notification name="OwnObjectGiveItem">
+ &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; adındaki nesneniz size [OBJECTTYPE] türündeki bu nesneyi verdi:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+ <form name="form">
+ <button name="Keep" text="Sakla"/>
+ <button name="Discard" text="At"/>
+ </form>
+ </notification>
+ <notification name="UserGiveItem">
+ [NAME_SLURL] size [OBJECTTYPE] türündeki nesneyi verdi:
+[ITEM_SLURL]
+ <form name="form">
+ <button name="Show" text="Göster"/>
+ <button name="Discard" text="At"/>
+ <button name="Mute" text="Engelle"/>
+ </form>
+ </notification>
+ <notification name="GodMessage">
+ [NAME]
+
+[MESSAGE]
+ </notification>
+ <notification name="JoinGroup">
+ [MESSAGE]
+ <form name="form">
+ <button name="Join" text="Katıl"/>
+ <button name="Decline" text="Reddet"/>
+ <button name="Info" text="Bilgi"/>
+ </form>
+ </notification>
+ <notification name="TeleportOffered">
+ [NAME_SLURL] size kendi konumuna ışınlanmayı teklif etti:
+
+[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
+ <form name="form">
+ <button name="Teleport" text="Işınla"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="TeleportOfferSent">
+ Işınlanma teklifi [TO_NAME] adlı kişiye gönderildi
+ </notification>
+ <notification name="GotoURL">
+ [MESSAGE]
+[URL]
+ <form name="form">
+ <button name="Later" text="Sonra"/>
+ <button name="GoNow..." text="Şimdi Git..."/>
+ </form>
+ </notification>
+ <notification name="OfferFriendship">
+ [NAME_SLURL] arkadaşlık teklif ediyor.
+
+[MESSAGE]
+
+(Varsayılan olarak, birbirinizin çevrimiçi olduğunu görebileceksiniz.)
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ </form>
+ </notification>
+ <notification name="FriendshipOffered">
+ [TO_NAME] adlı kişiye arkadaşlık teklif ettiniz
+ </notification>
+ <notification name="OfferFriendshipNoMessage">
+ [NAME_SLURL] arkadaşlık teklif ediyor.
+
+(Varsayılan olarak, birbirinizin çevrimiçi olduğunu görebileceksiniz.)
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ </form>
+ </notification>
+ <notification name="FriendshipAccepted">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; arkadaşlık teklifinizi kabul etti.
+ </notification>
+ <notification name="FriendshipDeclined">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; arkadaşlık teklifinizi reddetti.
+ </notification>
+ <notification name="FriendshipAcceptedByMe">
+ Arkadaşlık teklifi kabul edildi.
+ </notification>
+ <notification name="FriendshipDeclinedByMe">
+ Arkadaşlık teklifi reddedildi.
+ </notification>
+ <notification name="OfferCallingCard">
+ [NAME] size arama kartı teklif ediyor.
+Kabul ettiğiniz takdirde, bu Sakine hızlı bir şekilde Aİ gönderebilmeniz için envanterinize bir yer imi eklenecek.
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ </form>
+ </notification>
+ <notification name="RegionRestartMinutes">
+ Bu bölge [MINUTES] dakika içinde yeniden başlatılacak.
+Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak.
+ </notification>
+ <notification name="RegionRestartSeconds">
+ Bu bölge [SECONDS] saniye içinde yeniden başlatılacak.
+Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak.
+ </notification>
+ <notification name="LoadWebPage">
+ [URL] web sayfası yüklensin mi?
+
+[MESSAGE]
+
+Şu nesneden: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, sahibi: [NAME]?
+ <form name="form">
+ <button name="Gotopage" text="Sayfaya git"/>
+ <button name="Cancel" text="İptal"/>
+ </form>
+ </notification>
+ <notification name="FailedToFindWearableUnnamed">
+ [TYPE] veri tabanında bulunamadı.
+ </notification>
+ <notification name="FailedToFindWearable">
+ [DESC] adlı [TYPE] veri tabanında bulunamadı.
+ </notification>
+ <notification name="InvalidWearable">
+ Giymeye çalıştığınız öğe Görüntüleyicinizin okuyamadığı bir özellik kullanıyor. Bu öğeyi giymek için lütfen [APP_NAME] sürümünüzü yükseltin.
+ </notification>
+ <notification name="ScriptQuestion">
+ &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, &apos;[NAME]&apos; adlı kişiye ait bir nesne, şunu yapmak istiyor:
+
+[QUESTIONS]
+Kabul ediyor musunuz?
+ <form name="form">
+ <button name="Yes" text="Evet"/>
+ <button name="No" text="Hayır"/>
+ <button name="Mute" text="Engelle"/>
+ </form>
+ </notification>
+ <notification name="ScriptQuestionCaution">
+ &apos;[NAME]&apos; adlı kişiye ait &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; adındaki bir nesne şunu yapmak istiyor:
+
+[QUESTIONS]
+Bu nesneye ya da onu oluşturan kişiye güvenmiyorsanız, bu talebi reddetmelisiniz.
+
+Talep kabul edilsin mi?
+ <form name="form">
+ <button name="Grant" text="Kabul Et"/>
+ <button name="Deny" text="Reddet"/>
+ <button name="Details" text="Ayrıntılar..."/>
+ </form>
+ </notification>
+ <notification name="ScriptDialog">
+ [NAME] adlı kişiye ait &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
+[MESSAGE]
+ <form name="form">
+ <button name="Mute" text="Engelle"/>
+ <button name="Ignore" text="Yok say"/>
+ </form>
+ </notification>
+ <notification name="ScriptDialogGroup">
+ [GROUPNAME] grubuna ait &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
+[MESSAGE]
+ <form name="form">
+ <button name="Mute" text="Engelle"/>
+ <button name="Ignore" text="Yok say"/>
+ </form>
+ </notification>
+ <notification name="BuyLindenDollarSuccess">
+ Ödeme yaptığınız için teşekkürler!
+
+İşlem tamamlandığında L$ bakiyeniz güncellenecektir. İşlem 20 dakikadan daha uzun sürerse, işlem iptal edilebilir. Bu durumda ödenen miktar US$ bakiyenize iade edilecektir.
+
+Ödemenin durumunu [http://secondlife.com/account/ Kontrol Paneli] üzerinde İşlem Geçmişi sayfanızdan kontrol edebilirsiniz.
+ </notification>
+ <notification name="FirstOverrideKeys">
+ Hareket tuşlarınız şu anda bir nesnenin kontrolünde.
+Ok tuşlarını ya da AWSD tuşlarını deneyin.
+Bazı nesneleri (örneğin silahları) kullanmak için fare üzerinden görünüme geçmeniz gerekir.
+Bunu yapmak için &apos;M&apos; tuşuna basın.
+ </notification>
+ <notification name="FirstSandbox">
+ Burası korumalı bir alandır ve Sakinlerin inşa etmeyi öğrenmelerine yardımcı olmayı amaçlamaktadır.
+
+Burada inşa ettiğiniz şeyler burayı terk ettiğinizde silinir, bu sebeple sağ tıklatıp &apos;Al&apos; seçeneğini seçerek oluşturduğunuz şeyi envanterinize taşımayı unutmayın.
+ </notification>
+ <notification name="MaxListSelectMessage">
+ Bu listeden en fazla [MAX_SELECT] öğe seçebilirsiniz.
+ </notification>
+ <notification name="VoiceInviteP2P">
+ [NAME] sizi bir Sesli Sohbete davet ediyor.
+Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ <button name="Mute" text="Engelle"/>
+ </form>
+ </notification>
+ <notification name="AutoUnmuteByIM">
+ [NAME] adlı kişiye bir anlık ileti gönderildi ve otomatik olarak engeli kaldırıldı.
+ </notification>
+ <notification name="AutoUnmuteByMoney">
+ [NAME] adlı kişiye para verildi ve otomatik olarak engeli kaldırıldı.
+ </notification>
+ <notification name="AutoUnmuteByInventory">
+ [NAME] adlı kişiye envanter teklif edildi ve otomatik olarak engeli kaldırıldı.
+ </notification>
+ <notification name="VoiceInviteGroup">
+ [NAME], [GROUP] grubu ile bir Sesli Sohbet&apos;e katıldı.
+Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ <button name="Mute" text="Engelle"/>
+ </form>
+ </notification>
+ <notification name="VoiceInviteAdHoc">
+ [NAME] konferans yoluyla bir sesli sohbete katıldı.
+Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ <button name="Mute" text="Engelle"/>
+ </form>
+ </notification>
+ <notification name="InviteAdHoc">
+ [NAME] sizi bir konferans görüşmesine davet ediyor.
+Sohbete katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+ <form name="form">
+ <button name="Accept" text="Kabul Et"/>
+ <button name="Decline" text="Reddet"/>
+ <button name="Mute" text="Engelle"/>
+ </form>
+ </notification>
+ <notification name="VoiceChannelFull">
+ Katılmaya çalıştığınız sesli arama [VOICE_CHANNEL_NAME] maksimum kapasitesine ulaştı. Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="ProximalVoiceChannelFull">
+ Üzgünüz. Bu alan sesli sohbet için maksimum kapasitesini aştı. Lütfen başka bir alanda sesli sohbet yapmayı deneyin.
+ </notification>
+ <notification name="VoiceChannelDisconnected">
+ [VOICE_CHANNEL_NAME] ile bağlantınız kesildi. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+ </notification>
+ <notification name="VoiceChannelDisconnectedP2P">
+ [VOICE_CHANNEL_NAME] aramayı sonlandırdı. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+ </notification>
+ <notification name="P2PCallDeclined">
+ [VOICE_CHANNEL_NAME] aramanızı reddetti. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+ </notification>
+ <notification name="P2PCallNoAnswer">
+ [VOICE_CHANNEL_NAME] aramanızı kabul etmek için müsait değil. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+ </notification>
+ <notification name="VoiceChannelJoinFailed">
+ [VOICE_CHANNEL_NAME] ile bağlantı kurulamadı, lütfen daha sonra tekrar deneyin. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+ </notification>
+ <notification name="VoiceLoginRetry">
+ Sizin için bir ses kanalı oluşturuyoruz. Bu işlem bir dakika kadar sürebilir.
+ </notification>
+ <notification name="VoiceEffectsExpired">
+ Abone olduğunuz Ses Şekillerinden birinin ya da daha fazlasının süresi dolmuş.
+Aboneliğinizi yenilemek için [[URL] burayı tıklatın].
+ </notification>
+ <notification name="VoiceEffectsExpiredInUse">
+ Etkin Ses Şeklinin süresi dolmuş, normal ses ayarlarınız uygulandı.
+Aboneliğinizi yenilemek için [[URL] burayı tıklatın].
+ </notification>
+ <notification name="VoiceEffectsWillExpire">
+ Abone olduğunuz Ses Şekillerinden birinin ya da daha fazlasının süresi [INTERVAL] gün içinde dolacak.
+Aboneliğinizi yenilemek için [[URL] burayı tıklatın].
+ </notification>
+ <notification name="VoiceEffectsNew">
+ Yeni Ses Şekilleri kullanılabilir!
+ </notification>
+ <notification name="Cannot enter parcel: not a group member">
+ Sadece belli bir grubun üyeleri bu alanı ziyaret edebilir.
+ </notification>
+ <notification name="Cannot enter parcel: banned">
+ Parsele giriş yapamazsınız, erişiminiz yasaklandı.
+ </notification>
+ <notification name="Cannot enter parcel: not on access list">
+ Parsele giriş yapamazsınız, erişim listesinde yer almıyorsunuz.
+ </notification>
+ <notification name="VoiceNotAllowed">
+ [VOICE_CHANNEL_NAME] kanalındaki sesli sohbete bağlanmak için gerekli izne sahip değilsiniz.
+ </notification>
+ <notification name="VoiceCallGenericError">
+ [VOICE_CHANNEL_NAME] kanalındaki sesli sohbete bağlanmaya çalışılırken bir hata oluştu. Lütfen daha sonra tekrar deneyin.
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ Tıklattığınız SLurl desteklenmiyor.
+ </notification>
+ <notification name="BlockedSLURL">
+ Güvenilmeyen bir tarayıcıdan bir SLurl alındı ve güvenliğiniz için engellendi.
+ </notification>
+ <notification name="ThrottledSLURL">
+ Güvenilmeyen bir tarayıcıdan kısa bir süre içinde birden fazla SLurl alındı.
+Güvenliğiniz için birkaç saniye engellenecek.
+ </notification>
+ <notification name="IMToast">
+ [MESSAGE]
+ <form name="form">
+ <button name="respondbutton" text="Yanıtla"/>
+ </form>
+ </notification>
+ <notification name="ConfirmCloseAll">
+ Tüm Anlık İletileri kapatmak istediğinize emin misiniz?
+ <usetemplate ignoretext="Tüm Anlık İletileri kapatmadan önce doğrulama iste." name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="AttachmentSaved">
+ Aksesuar kaydedildi.
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ Bu öğe için yardım başlığı bulunamıyor.
+ </notification>
+ <notification name="ObjectMediaFailure">
+ Sunucu Hatası: Ortam güncelleme ya da alma başarısız oldu.
+&apos;[ERROR]&apos;
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="TextChatIsMutedByModerator">
+ Yazılı sohbetiniz moderatör tarafından engellendi.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="VoiceIsMutedByModerator">
+ Sesli sohbetiniz moderatör tarafından engellendi.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="UploadCostConfirmation">
+ Bu karşıya yükleme işleminin maliyeti L$[PRICE] olacak, karşıya yüklemeye devam etmek istiyor musunuz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Karşıya Yükle"/>
+ </notification>
+ <notification name="ConfirmClearTeleportHistory">
+ Işınlanma geçmişinizi silmek istediğinize emin misiniz?
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="BottomTrayButtonCanNotBeShown">
+ Seçilen düğme şu anda gösterilemiyor.
+Yeterli yer olduğunda düğme gösterilecek.
+ </notification>
+ <notification name="ShareNotification">
+ Paylaşılacak sakinleri seç.
+ </notification>
+ <notification name="MeshUploadError">
+ [LABEL] karşıya yüklenemedi: [MESSAGE] [IDENTIFIER]
+
+Ayrıntılar için günlük dosyasına bakın.
+ </notification>
+ <notification name="MeshUploadPermError">
+ Karşıya örgü yükleme izinleri talep edilirken hata oluştu.
+ </notification>
+ <notification name="RegionCapabilityRequestError">
+ Bölge özelliği &apos;[CAPABILITY]&apos; alınamadı.
+ </notification>
+ <notification name="ShareItemsConfirmation">
+ Aşağıdaki öğeleri paylaşmak istediğinize emin misiniz?
+
+&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
+
+Paylaşmanın yapılacağı Sakinler:
+
+[RESIDENTS]
+ <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification name="ItemsShared">
+ Öğeler başarılı bir şekilde paylaşıldı.
+ </notification>
+ <notification name="DeedToGroupFail">
+ Gruba devretme başarısız oldu.
+ </notification>
+ <notification name="ReleaseLandThrottled">
+ [PARCEL_NAME] parseli şu anda terkedilemez.
+ </notification>
+ <notification name="ReleasedLandWithReclaim">
+ [AREA] m² alana sahip &apos;[PARCEL_NAME]&apos; parseli serbest bırakıldı.
+
+Başkalarına satışa çıkarılmadan önce L$0 karşılığında geri almak için [RECLAIM_PERIOD] saat süreniz olacak.
+ </notification>
+ <notification name="ReleasedLandNoReclaim">
+ [AREA] m² alana sahip &apos;[PARCEL_NAME]&apos; parseli serbest bırakıldı.
+
+Artık herkes tarafından satın alınabilir.
+ </notification>
+ <notification name="AvatarRezNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar [TIME] saniye sonra bulut şeklinden kurtuldu.
+ </notification>
+ <notification name="AvatarRezSelfBakedDoneNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+Dış görünümünüzün kaydedilmesi [TIME] saniye sonra tamamlandı.
+ </notification>
+ <notification name="AvatarRezSelfBakedUpdateNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+[TIME] saniye sonra görünümünüzün bir güncellemesini gönderdiniz.
+[STATUS]
+ </notification>
+ <notification name="AvatarRezCloudNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar bulut şekline döndü.
+ </notification>
+ <notification name="AvatarRezArrivedNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar göründü.
+ </notification>
+ <notification name="AvatarRezLeftCloudNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar bulut şeklinde [TIME] saniye göründükten sonra ayrıldı.
+ </notification>
+ <notification name="AvatarRezEnteredAppearanceNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar görünüm moduna girdi.
+ </notification>
+ <notification name="AvatarRezLeftAppearanceNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar görünüm modundan çıktı.
+ </notification>
+ <notification name="NoConnect">
+ [PROTOCOL] [HOSTID] kullanarak bağlantı kurma konusunda sorun yaşıyoruz.
+Lütfen ağ ve güvenlik duvarı ayarlarınızı kontrol edin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="NoVoiceConnect">
+ Ses sunucunuz ile bağlantı kurma konusunda sorun yaşıyoruz.
+
+[HOSTID]
+
+Ses bağlantıları kullanılamayacak.
+Lütfen ağ ve güvenlik duvarı ayarlarınızı kontrol edin.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="AvatarRezLeftNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar tam olarak yüklenmiş bir şekilde ayrıldı.
+ </notification>
+ <notification name="AvatarRezSelfBakedTextureUploadNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+ &apos;[BODYREGION]&apos; için [RESOLUTION] çözünürlükte kaydedilmiş bir dokuyu [TIME] saniye sonra karşıya yüklediniz.
+ </notification>
+ <notification name="AvatarRezSelfBakedTextureUpdateNotification">
+ ( [EXISTENCE] saniyedir hayatta )
+ &apos;[BODYREGION]&apos; için [RESOLUTION] çözünürlükte kaydedilmiş bir dokuyu [TIME] saniye sonra yerel olarak güncellediniz.
+ </notification>
+ <notification name="ConfirmLeaveCall">
+ Bu aramadan çıkmak istediğinize emin misiniz?
+ <usetemplate ignoretext="Aramadan çıkmadan önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+ </notification>
+ <notification name="ConfirmMuteAll">
+ Bir grup aramasındaki tüm katılımcıları engellemeyi seçtiniz.
+Bu, siz aramadan çıktıktan sonra bile, aramaya daha sonra katılacak tüm sakinlerin
+engellenmesine yol açacak.
+
+Herkes engellensin mi?
+ <usetemplate ignoretext="Bir grup aramasındaki tüm katılımcıları engellemeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <notification label="Sohbet" name="HintChat">
+ Sohbete katılmak için aşağıdaki sohbet alanına yazın.
+ </notification>
+ <notification label="Ayağa Kalk" name="HintSit">
+ Ayağa kalkmak ve oturur konumdan çıkmak için Ayağa Kalk düğmesini tıklatın.
+ </notification>
+ <notification label="Konuş" name="HintSpeak">
+ Mikrofonunuzu açıp kapatmak için Konuş düğmesini tıklatın.
+
+Ses kontrol panelini görmek için yukarı ok tuşunu tıklatın.
+
+Konuş düğmesinin gizlenmesi ses özelliğini devre dışı bırakır.
+ </notification>
+ <notification label="Dünyayı Keşfet" name="HintDestinationGuide">
+ Hedef Kılavuzu, keşfedecek binlerce yeni yer barındırır. Bir konum seçin ve keşfetmeye başlamak için Işınla&apos;yı tıklatın.
+ </notification>
+ <notification label="Yan Panel" name="HintSidePanel">
+ Envanterinize, dış görünümünüze, profillerinize ve daha fazlasına hızlı erişim için yan paneli kullanın.
+ </notification>
+ <notification label="Hareket Et" name="HintMove">
+ Yürümek ya da koşmak için Hareket Panelini açın ve gezmek için yön oklarını tıklatın. Klavyenizdeki ok tuşlarını da kullanabilirsiniz.
+ </notification>
+ <notification label="" name="HintMoveClick">
+ 1. Yürümek için tıklayın
+Zemindeki herhangi bir noktaya gitmek için orayı tıklatın.
+
+2. Görünümü Döndürmek için Tıklatın ve Sürükleyin
+Görünümünüzü döndürmek için dünya üzerindeki herhangi bir yeri tıklatın ve sürükleyin.
+ </notification>
+ <notification label="Ekran Adı" name="HintDisplayName">
+ Özelleştirebileceğiniz ekran adını burada ayarlayın. Ekran Adı, benzersiz ve değiştirilemeyen kullanıcı adınıza ek olarak kullanılır. Diğer insanların adlarını nasıl gördüğünüzü tercihlerinizden değiştirebilirsiniz.
+ </notification>
+ <notification label="Görünüm" name="HintView">
+ Kamera görünümünüzü değiştirmek için Yörünge Değişimi ve Kamerayı Çevirme denetimlerini kullanın. Escape tuşuna basarak ya da yürüyerek görünümü sıfırlayın.
+ </notification>
+ <notification label="Envanter" name="HintInventory">
+ Öğeleri bulmak için envanterinize bakın. Yeni eklenen öğeler Son Eklenenler sekmesinden kolayca bulunabilir.
+ </notification>
+ <notification label="Linden Dolarınız var!" name="HintLindenDollar">
+ L$ hesabınızın mevcut bakiyesini buradan görebilirsiniz. Daha fazla Linden Doları satın almak için L$ Satın Al&apos;ı tıklatın.
+ </notification>
+ <notification name="LowMemory">
+ Bellek havuzunuz yetersiz. Çökmeyi önlemek için SL&apos;nin bazı işlevleri devre dışı bırakıldı. Lütfen diğer uygulamaları kapatın. Bu durum devam ederse SL&apos;yi yeniden başlatın.
+ </notification>
+ <notification name="ForceQuitDueToLowMemory">
+ Yetersiz bellek nedeniyle SL 30 saniye içerisinde kapanacak.
+ </notification>
+ <notification name="PopupAttempt">
+ Açılır bir pencerenin açılması engellendi.
+ <form name="form">
+ <ignore name="ignore" text="Tüm açılır pencerelere izin ver"/>
+ <button name="open" text="Açılır pencereyi aç"/>
+ </form>
+ </notification>
+ <notification name="SOCKS_NOT_PERMITTED">
+ SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; bağlantıyı reddetti; kural kümesi izin vermiyor.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_CONNECT_ERROR">
+ SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; bağlantıyı reddetti, TCP kanalını açamadı.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_NOT_ACCEPTABLE">
+ SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; seçilen kimlik doğrulama sistemini reddetti.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_AUTH_FAIL">
+ SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; kimlik bilgilerinizin geçersiz olduğunu bildirdi.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_UDP_FWD_NOT_GRANTED">
+ SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; UDP ilişkilendirme talebini reddetti.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_HOST_CONNECT_FAILED">
+ SOCKS 5 proxy sunucusu &quot;[HOST]:[PORT]&quot; ile bağlantı kurulamadı.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_UNKNOWN_STATUS">
+ &quot;[HOST]:[PORT]&quot; sunucusu ile bilinmeyen proxy hatası.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_INVALID_HOST">
+ Geçersiz SOCKS proxy adresi veya &quot;[HOST]:[PORT]&quot; portu.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="SOCKS_BAD_CREDS">
+ Geçersiz SOCKS 5 kullanıcı adı veya parolası.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="PROXY_INVALID_HTTP_HOST">
+ Geçersiz HTTP proxy adresi veya &quot;[HOST]:[PORT]&quot; portu.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="PROXY_INVALID_SOCKS_HOST">
+ Geçersiz SOCKS proxy adresi veya &quot;[HOST]:[PORT]&quot; portu.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="ChangeProxySettings">
+ Proxy ayarları [APP_NAME] uygulamasını yeniden başlattıktan sonra geçerli olur.
+ <usetemplate name="okbutton" yestext="Tamam"/>
+ </notification>
+ <notification name="AuthRequest">
+ &apos;[REALM]&apos; erişim alanında &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; üzerinde bulunan site bir kullanıcı adı ve parola gerektiriyor.
+ <form name="form">
+ <input name="username" text="Kullanıcı Adı"/>
+ <input name="password" text="Parola"/>
+ <button name="ok" text="Gönder"/>
+ <button name="cancel" text="İptal Et"/>
+ </form>
+ </notification>
+ <notification label="" name="NoClassifieds">
+ İlan oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoGroupInfo">
+ Grup oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoPlaceInfo">
+ Yer profili görüntülemesi sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoPicks">
+ Seçmeleri oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoWorldMap">
+ Dünya haritasının görüntülenmesi sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoVoiceCall">
+ Sesli aramalar sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoAvatarShare">
+ Paylaşma sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoAvatarPay">
+ Diğer sakinlere ödeme yapma sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoInventory">
+ Envanter görüntülemesi sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoAppearance">
+ Görünüm düzenleyici sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="NoSearch">
+ Arama sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+ <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+ </notification>
+ <notification label="" name="ConfirmHideUI">
+ Bu eylem tüm menü öğelerini ve düğmelerini gizler. Bunları geri almak için [SHORTCUT] üzerine tekrar tıklayın.
+ <usetemplate ignoretext="KA&apos;ni gizlemeden önce onayla" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+ </notification>
+ <global name="UnsupportedGLRequirements">
+ [APP_NAME] uygulaması için gerekli donanım gereksinimlerine sahip olmadığınız görünüyor. [APP_NAME] çoklu doku desteği sunan bir OpenGL grafik kartı gerektiriyor. Eğer grafik kartınız bu özellikteyse, grafik kartınızın en son sürücülerine ve işletim sisteminiz için gerekli Service Pack ve yamalara sahip olup olmadığınızı kontrol etmeyi deneyebilirsiniz.
+
+Sorun yaşamaya devam ederseniz, lütfen [SUPPORT_SITE] bölümünü ziyaret edin.
+ </global>
+ <global name="UnsupportedCPUAmount">
+ 796
+ </global>
+ <global name="UnsupportedRAMAmount">
+ 510
+ </global>
+ <global name="UnsupportedGPU">
+ - Grafik kartınız minimum gereksinimleri karşılamıyor.
+ </global>
+ <global name="UnsupportedRAM">
+ - Sistem belleğiniz minimum gereksinimleri karşılamıyor.
+ </global>
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ Bir arazi parçasına sahipseniz burayı ana konumunuz olarak ayarlayabilirsiniz.
+Bir araziye sahip değilseniz, Harita&apos;ya bakıp &quot;Bilgi İstasyonu&quot; olarak işaretlenen yerleri bulabilirsiniz.
+ </global>
+ <global name="You died and have been teleported to your home location">
+ Hayatınızı kaybettiniz ve ana konumunuza ışınlandınız.
+ </global>
+</notifications>
diff --git a/indra/newview/skins/default/xui/tr/panel_active_object_row.xml b/indra/newview/skins/default/xui/tr/panel_active_object_row.xml
new file mode 100644
index 0000000000..b03ce3ebe5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_active_object_row.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+ <text name="object_name">
+ İsimsiz Nesne
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml
new file mode 100644
index 0000000000..602818de94
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <layout_stack name="vertical_stack">
+ <layout_panel name="call_btn_panel">
+ <button label="Ara" name="call_btn"/>
+ </layout_panel>
+ <layout_panel name="end_call_btn_panel">
+ <button label="Aramadan Ayrıl" name="end_call_btn"/>
+ </layout_panel>
+ <layout_panel name="voice_ctrls_btn_panel">
+ <button label="Ses Denetimleri" name="voice_ctrls_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
new file mode 100644
index 0000000000..7542778aca
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+ <string name="FormatSeconds">
+ [COUNT]sn
+ </string>
+ <string name="FormatMinutes">
+ [COUNT]dk
+ </string>
+ <string name="FormatHours">
+ [COUNT]sa
+ </string>
+ <string name="FormatDays">
+ [COUNT]gn
+ </string>
+ <string name="FormatWeeks">
+ [COUNT]hf
+ </string>
+ <string name="FormatMonths">
+ [COUNT]ay
+ </string>
+ <string name="FormatYears">
+ [COUNT]yl
+ </string>
+ <text name="avatar_name" value="(yükleniyor)"/>
+ <text name="last_interaction" value="0sn"/>
+ <icon name="permission_edit_theirs_icon" tool_tip="Bu arkadaşınızın nesnelerini düzenleyebilirsiniz"/>
+ <icon name="permission_edit_mine_icon" tool_tip="Bu arkadaşınız nesnelerinizi düzenleyebilir, silebilir veya alabilir"/>
+ <icon name="permission_map_icon" tool_tip="Bu arkadaşınız haritada sizi bulabilir"/>
+ <icon name="permission_online_icon" tool_tip="Bu arkadaşınız çevrimiçi olduğunuzda sizi görebilir"/>
+ <button name="profile_btn" tool_tip="Profili göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml
new file mode 100644
index 0000000000..81e04379a1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_tag_notification">
+ <panel name="msg_caption">
+ <text name="sender_tag_name">
+ Angela Tester
+ </text>
+ <text name="tag_time" value="23:30"/>
+ </panel>
+ <text_editor name="msg_text">
+ Hızlı kahverengi tilki tembel köpeğin üzerinden atlıyor.
+ </text_editor>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
new file mode 100644
index 0000000000..0464b7ec07
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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">
+ Listeyi Engelle
+ </text>
+ <scroll_list name="blocked" tool_tip="Şu anda engellenmiş olan Sakinler listesi"/>
+ <button label="Kişiyi engelle" name="Block resident..." tool_tip="Engellenecek bir Sakin seç"/>
+ <button label="Nesneyi ada göre engelle" name="Block object by name..." tool_tip="Ada göre engellenecek bir nesne seç"/>
+ <button label="Engellemeyi Kaldır" name="Unblock" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml
new file mode 100644
index 0000000000..f991c3b688
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+ <text name="item_name" value="..."/>
+ <panel name="btn_lock" tool_tip="Düzenleme izniniz yok"/>
+ <panel name="btn_edit_panel">
+ <button name="btn_edit" tool_tip="Bu şekli düzenle"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml
new file mode 100644
index 0000000000..6c2478cdb7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+ <button label="Değiştir" name="switch_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_bottomtray.xml b/indra/newview/skins/default/xui/tr/panel_bottomtray.xml
new file mode 100644
index 0000000000..26118d8b39
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_bottomtray.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+ <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
+ <string name="SpeakBtnToolTip" value="Mikrofonu açar/kapatır"/>
+ <string name="VoiceControlBtnToolTip" value="Ses kontrol panelini gösterir/gizler"/>
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="speak_panel">
+ <talk_button name="talk">
+ <speak_button label="Konuş" label_selected="Konuş" name="speak_btn"/>
+ </talk_button>
+ </layout_panel>
+ <layout_panel name="gesture_panel">
+ <gesture_combo_list label="Mimik" name="Gesture" tool_tip="Mimikleri gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="movement_panel">
+ <bottomtray_button label="Hareket Et" name="movement_btn" tool_tip="Hareket kontrollerini gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="cam_panel">
+ <bottomtray_button label="Görünüm" name="camera_btn" tool_tip="Kamera kontrollerini gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="snapshot_panel">
+ <bottomtray_button name="snapshots" tool_tip="Anlık görüntü al"/>
+ </layout_panel>
+ <layout_panel name="build_btn_panel">
+ <bottomtray_button label="İnşa Et" name="build_btn" tool_tip="İnşa Et Aracını gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="search_btn_panel">
+ <bottomtray_button label="Ara" name="search_btn" tool_tip="Aramayı gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="world_map_btn_panel">
+ <bottomtray_button label="Harita" name="world_map_btn" tool_tip="Dünya Haritasını gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="mini_map_btn_panel">
+ <bottomtray_button label="Mini-Harita" name="mini_map_btn" tool_tip="Mini Haritayı gösterir/gizler"/>
+ </layout_panel>
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Sohbetler"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Bildirimler"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000..5d7006af2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Mimik" name="Gesture" tool_tip="Mimikleri gösterir/gizler"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_chat_header.xml b/indra/newview/skins/default/xui/tr/panel_chat_header.xml
new file mode 100644
index 0000000000..7916bf5155
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_chat_header.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_header" name="im_header">
+ <text name="time_box" value="23:30"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
new file mode 100644
index 0000000000..a1e8190bbc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+ <layout_stack name="toolbar_stack">
+ <layout_panel name="im_well_panel">
+ <chiclet_im_well name="im_well">
+ <button name="Unread IM messages" tool_tip="Sohbetler"/>
+ </chiclet_im_well>
+ </layout_panel>
+ <layout_panel name="notification_well_panel">
+ <chiclet_notification name="notification_well">
+ <button name="Unread" tool_tip="Bildirimler"/>
+ </chiclet_notification>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_classified_info.xml b/indra/newview/skins/default/xui/tr/panel_classified_info.xml
new file mode 100644
index 0000000000..d412a03e32
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_classified_info.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+ <panel.string name="type_mature">
+ Orta
+ </panel.string>
+ <panel.string name="type_pg">
+ Genel İçerik
+ </panel.string>
+ <panel.string name="l$_price">
+ L$[PRICE]
+ </panel.string>
+ <panel.string name="click_through_text_fmt">
+ [TELEPORT] ışınlama, [MAP] harita, [PROFILE] profil
+ </panel.string>
+ <panel.string name="date_fmt">
+ [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+ </panel.string>
+ <panel.string name="auto_renew_on">
+ Etkin
+ </panel.string>
+ <panel.string name="auto_renew_off">
+ Devre dışı
+ </panel.string>
+ <text name="title" value="İlan Bilgisi"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text_editor name="classified_name" value="[ad]"/>
+ <text name="classified_location_label" value="Konum:"/>
+ <text_editor name="classified_location" value="[yükleniyor...]"/>
+ <text name="content_type_label" value="İçerik Türü:"/>
+ <text_editor name="content_type" value="[içerik türü]"/>
+ <text name="category_label" value="Kategori:"/>
+ <text_editor name="category" value="[kategori]"/>
+ <text name="creation_date_label" value="Oluşturma tarihi:"/>
+ <text_editor name="creation_date" tool_tip="Oluşturma tarihi" value="[tarih]"/>
+ <text name="price_for_listing_label" value="İlan ücreti:"/>
+ <text_editor name="price_for_listing" tool_tip="İlan ücreti." value="[ücret]"/>
+ <layout_stack name="descr_stack">
+ <layout_panel name="clickthrough_layout_panel">
+ <text name="click_through_label" value="Tıklamalar:"/>
+ <text_editor name="click_through_text" tool_tip="Tıklama verileri" value="[tıklamalar]"/>
+ </layout_panel>
+ <layout_panel name="price_layout_panel">
+ <text name="auto_renew_label" value="Otomatik yenileme:"/>
+ <text name="auto_renew" value="Etkin"/>
+ </layout_panel>
+ <layout_panel name="descr_layout_panel">
+ <text name="classified_desc_label" value="Açıklama:"/>
+ <text_editor name="classified_desc" value="[açıklama]"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <layout_stack name="layout_stack1">
+ <layout_panel name="layout_panel1">
+ <button label="Işınla" name="teleport_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Harita" name="show_on_map_btn"/>
+ </layout_panel>
+ <layout_panel name="edit_btn_lp">
+ <button label="Düzenle" name="edit_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml
new file mode 100644
index 0000000000..bb5930ee79
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+ <button label="Ekle +" name="add_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml
new file mode 100644
index 0000000000..e60e291ee8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+ <button name="btn_delete" tool_tip="Dış görünümden çıkar"/>
+ <text name="item_name" value="..."/>
+ <panel name="btn_lock" tool_tip="Düzenleme izniniz yok"/>
+ <panel name="btn_edit_panel">
+ <button name="btn_edit" tool_tip="Bu giyilebilir ögeyi düzenle"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml
new file mode 100644
index 0000000000..7d70177553
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="cof_wearables">
+ <accordion name="cof_wearables_accordion">
+ <accordion_tab name="tab_clothing" title="Giysiler"/>
+ <accordion_tab name="tab_attachments" title="Aksesuarlar"/>
+ <accordion_tab name="tab_body_parts" title="Vücut Bölümleri"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml
new file mode 100644
index 0000000000..47703136b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="deletable_wearable_item">
+ <button name="btn_delete" tool_tip="Dış görünümden çıkar"/>
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml
new file mode 100644
index 0000000000..28e034a357
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="dummy_clothing_item">
+ <text name="item_name" value="..."/>
+ <panel name="btn_add_panel">
+ <button name="btn_add" tool_tip="Bu türden ilave öğeler ekle"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml
new file mode 100644
index 0000000000..e3ba806b0d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+ <scroll_container name="avatar_alpha_color_panel_scroll">
+ <panel name="avatar_alpha_color_panel">
+ <texture_picker label="Düşük Alfa" name="Lower Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Yüksek Alfa" name="Upper Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Baş Alfası" name="Head Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Göz Alfası" name="Eye Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Saç Alfası" name="Hair Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_classified.xml b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml
new file mode 100644
index 0000000000..7584b754f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="İlanı Düzenle" name="panel_edit_classified">
+ <panel.string name="location_notice">
+ (kaydedildikten sonra güncelleştirilir)
+ </panel.string>
+ <string name="publish_label">
+ Yayınla
+ </string>
+ <string name="save_label">
+ Kaydet
+ </string>
+ <text name="title">
+ İlanı Düzenle
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="snapshot_panel">
+ <icon label="" name="edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+ </panel>
+ <text name="Name:">
+ Başlık:
+ </text>
+ <text name="description_label">
+ Açıklama:
+ </text>
+ <text name="location_label">
+ Konum:
+ </text>
+ <text name="classified_location">
+ yükleniyor...
+ </text>
+ <button label="Geçerli Konuma Ayarla" name="set_to_curr_location_btn"/>
+ <text name="category_label" value="Kategori:"/>
+ <text name="content_type_label" value="İçerik türü:"/>
+ <icons_combo_box label="Genel İçerik" name="content_type">
+ <icons_combo_box.item label="Orta Seviyede İçerik" name="mature_ci" value="Orta Seviyede"/>
+ <icons_combo_box.item label="Genel İçerik" name="pg_ci" value="PG"/>
+ </icons_combo_box>
+ <check_box label="Her hafta otomatik yenile" name="auto_renew"/>
+ <text name="price_for_listing_label" value="İlan ücreti:"/>
+ <spinner label="L$" name="price_for_listing" tool_tip="İlan ücreti." value="50"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <layout_stack name="bottom_panel_ls">
+ <layout_panel name="save_changes_btn_lp">
+ <button label="[LABEL]" name="save_changes_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="İptal" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml
new file mode 100644
index 0000000000..42f62b6bbe
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml
@@ -0,0 +1,11 @@
+<?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="Bir resim seçmek için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="eyes_main_tab" title="Gözler"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml
new file mode 100644
index 0000000000..be89e94bbf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+ <panel name="avatar_gloves_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="gloves_main_tab" title="Eldivenler"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_hair.xml b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml
new file mode 100644
index 0000000000..f33a6d6402
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+ <panel name="avatar_hair_color_panel">
+ <texture_picker label="Doku" name="Texture" tool_tip="Bir resim seçmek için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="hair_color_tab" title="Renk"/>
+ <accordion_tab name="hair_style_tab" title="Stil"/>
+ <accordion_tab name="hair_eyebrows_tab" title="Kaşlar"/>
+ <accordion_tab name="hair_facial_tab" title="Yüz"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml
new file mode 100644
index 0000000000..10bc4278db
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+ <panel name="avatar_jacket_color_panel">
+ <texture_picker label="Üst Doku" name="Upper Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Alt Doku" name="Lower Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="jacket_main_tab" title="Ceket"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pants.xml b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml
new file mode 100644
index 0000000000..06e1b7b4ab
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+ <panel name="avatar_pants_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="pants_main_tab" title="Pantolon"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_physics.xml b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml
new file mode 100644
index 0000000000..98dbfd8e42
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_physics_panel">
+ <panel label="" name="accordion_panel">
+ <accordion name="physics_accordion">
+ <accordion_tab name="physics_breasts_updown_tab" title="Göğüs Hoplaması"/>
+ <accordion_tab name="physics_breasts_inout_tab" title="Göğüs Çatalı"/>
+ <accordion_tab name="physics_breasts_leftright_tab" title="Göğüs Sallanması"/>
+ <accordion_tab name="physics_belly_tab" title="Göbek Hoplaması"/>
+ <accordion_tab name="physics_butt_tab" title="Popo Hoplaması"/>
+ <accordion_tab name="physics_butt_leftright_tab" title="Popo Sallanması"/>
+ <accordion_tab name="physics_advanced_tab" title="Gelişmiş Parametreler"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml
new file mode 100644
index 0000000000..98b02d27df
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Favori Düzenle" name="panel_edit_pick">
+ <panel.string name="location_notice">
+ (kaydedildikten sonra güncelleştirilir)
+ </panel.string>
+ <text name="title">
+ Seçme Düzenle
+ </text>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <icon label="" name="edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+ <text name="Name:">
+ Başlık:
+ </text>
+ <text name="description_label">
+ Açıklama:
+ </text>
+ <text name="location_label">
+ Konum:
+ </text>
+ <text name="pick_location">
+ yükleniyor...
+ </text>
+ <button label="Geçerli Konuma Ayarla" name="set_to_curr_location_btn"/>
+ </panel>
+ </scroll_container>
+ <panel label="bottom_panel" name="bottom_panel">
+ <layout_stack name="layout_stack1">
+ <layout_panel name="layout_panel1">
+ <button label="Seçme Kaydet" name="save_changes_btn"/>
+ </layout_panel>
+ <layout_panel name="layout_panel2">
+ <button label="İptal" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_profile.xml b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml
new file mode 100644
index 0000000000..21f4e419bc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil Düzenlemesi" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE]
+[PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="RegisterDateFormat">
+ [REG_DATE] ([AGE])
+ </string>
+ <string name="AcctTypeResident" value="Sakin"/>
+ <string name="AcctTypeTrial" value="Deneme"/>
+ <string name="AcctTypeCharterMember" value="Ayrıcalıklı Üye"/>
+ <string name="AcctTypeEmployee" value="Linden Lab Çalışanı"/>
+ <string name="PaymentInfoUsed" value="Kullanılan Ödeme Bilgisi"/>
+ <string name="PaymentInfoOnFile" value="Dosyadaki Ödeme Bilgisi"/>
+ <string name="NoPaymentInfoOnFile" value="Dosyada Ödeme Bilgisi Yok"/>
+ <string name="AgeVerified" value="Yaşı Doğrulanmış"/>
+ <string name="NotAgeVerified" value="Yaşı Doğrulanmamış"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=en
+ </string>
+ <string name="my_account_link_url">
+ http://secondlife.com/my
+ </string>
+ <string name="no_partner_text" value="Hiçbiri"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <text name="display_name_label" value="Ekran Adı:"/>
+ <text name="solo_username_label" value="Kullanıcı Adı:"/>
+ <button name="set_name" tool_tip="Ekran Adını Ayarla"/>
+ <text name="user_label" value="Kullanıcı Adı:"/>
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/>
+ </panel>
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="real_world_photo_title_text" value="Gerçek Dünya:"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+ <text name="title_homepage_text">
+ Ana sayfa:
+ </text>
+ <line_editor name="homepage_edit" value="http://"/>
+ <text name="title_acc_status_text" value="Hesabım:"/>
+ <text_editor name="acc_status_text" value="Sakin. Dosyada ödeme bilgisi yok."/>
+ <text name="my_account_link" value="[[URL] Kontrol Panelime Git]"/>
+ <text name="title_partner_text" value="Partnerim:"/>
+ <panel name="partner_data_panel">
+ <text initial_value="(alınıyor)" name="partner_text"/>
+ </panel>
+ <text name="partner_edit_link" value="[[URL] Düzenle]"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <layout_stack name="bottom_panel_ls">
+ <layout_panel name="save_changes_btn_lp">
+ <button label="Değişiklikleri Kaydet" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="İptal" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shape.xml b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml
new file mode 100644
index 0000000000..57cd9aca75
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+ <string name="meters">
+ Metre
+ </string>
+ <string name="feet">
+ Ayak
+ </string>
+ <string name="height">
+ Boy:
+ </string>
+ <panel label="Gömlek" name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shape_body_tab" title="Beden"/>
+ <accordion_tab name="shape_head_tab" title="Baş"/>
+ <accordion_tab name="shape_eyes_tab" title="Gözler"/>
+ <accordion_tab name="shape_ears_tab" title="Kulaklar"/>
+ <accordion_tab name="shape_nose_tab" title="Burun"/>
+ <accordion_tab name="shape_mouth_tab" title="Ağız"/>
+ <accordion_tab name="shape_chin_tab" title="Çene"/>
+ <accordion_tab name="shape_torso_tab" title="Gövde"/>
+ <accordion_tab name="shape_legs_tab" title="Bacaklar"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml
new file mode 100644
index 0000000000..2dd417afc6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+ <panel name="avatar_shirt_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shirt_main_tab" title="Gömlek"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml
new file mode 100644
index 0000000000..34acb414b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+ <panel name="avatar_shoes_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="shoes_main_tab" title="Ayakkabılar"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skin.xml b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml
new file mode 100644
index 0000000000..33fb787e08
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+ <panel name="avatar_skin_color_panel">
+ <texture_picker label="Baş Dövmeleri" name="Head Tattoos" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Üst Gövde Dövmeleri" name="Upper Tattoos" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Alt Gövde Dövmeleri" name="Lower Tattoos" tool_tip="Bir resim seçmek için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skin_color_tab" title="Dış Katman Rengi"/>
+ <accordion_tab name="skin_face_tab" title="Yüz Ayrıntısı"/>
+ <accordion_tab name="skin_makeup_tab" title="Makyaj"/>
+ <accordion_tab name="skin_body_tab" title="Vücut Ayrıntısı"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml
new file mode 100644
index 0000000000..2099013fe1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+ <panel name="avatar_skirt_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="skirt_main_tab" title="Etek"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_socks.xml b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml
new file mode 100644
index 0000000000..d386814d31
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+ <panel name="avatar_socks_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="socks_main_tab" title="Çoraplar"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml
new file mode 100644
index 0000000000..7f5590a485
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+ <panel name="avatar_tattoo_color_panel">
+ <texture_picker label="Baş Dövmesi" name="Head Tattoo" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Üst Gövde Dövmesi" name="Upper Tattoo" tool_tip="Bir resim seçmek için tıklayın"/>
+ <texture_picker label="Alt Gövde Dövmesi" name="Lower Tattoo" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml
new file mode 100644
index 0000000000..ed003e1adf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+ <panel name="avatar_underpants_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="underpants_main_tab" title="Külot"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml
new file mode 100644
index 0000000000..e0a0be8abb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+ <panel name="avatar_undershirt_color_panel">
+ <texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+ <color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk Seçiciyi açmak için tıklayın"/>
+ </panel>
+ <panel name="accordion_panel">
+ <accordion name="wearable_accordion">
+ <accordion_tab name="undershirt_main_tab" title="Fanila"/>
+ </accordion>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml
new file mode 100644
index 0000000000..7a4a09aaed
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Giyilebilir" name="panel_edit_wearable">
+ <string name="edit_shape_title">
+ Şekil Düzenleniyor
+ </string>
+ <string name="edit_skin_title">
+ Dış Katman Düzenleniyor
+ </string>
+ <string name="edit_hair_title">
+ Saç Düzenleniyor
+ </string>
+ <string name="edit_eyes_title">
+ Gözler Düzenleniyor
+ </string>
+ <string name="edit_shirt_title">
+ Gömlek Düzenleniyor
+ </string>
+ <string name="edit_pants_title">
+ Pantolon Düzenleniyor
+ </string>
+ <string name="edit_shoes_title">
+ Ayakkabılar Düzenleniyor
+ </string>
+ <string name="edit_socks_title">
+ Çoraplar Düzenleniyor
+ </string>
+ <string name="edit_jacket_title">
+ Ceket Düzenleniyor
+ </string>
+ <string name="edit_skirt_title">
+ Etek Düzenleniyor
+ </string>
+ <string name="edit_gloves_title">
+ Eldivenler Düzenleniyor
+ </string>
+ <string name="edit_undershirt_title">
+ Fanila Düzenleniyor
+ </string>
+ <string name="edit_underpants_title">
+ Külot Düzenleniyor
+ </string>
+ <string name="edit_alpha_title">
+ Alfa Maskesi Düzenleniyor
+ </string>
+ <string name="edit_tattoo_title">
+ Dövme Düzenleniyor
+ </string>
+ <string name="edit_physics_title">
+ Fizik Düzenleniyor
+ </string>
+ <string name="shape_desc_text">
+ Şekil:
+ </string>
+ <string name="skin_desc_text">
+ Dış Katman:
+ </string>
+ <string name="hair_desc_text">
+ Saç:
+ </string>
+ <string name="eyes_desc_text">
+ Gözler:
+ </string>
+ <string name="shirt_desc_text">
+ Gömlek:
+ </string>
+ <string name="pants_desc_text">
+ Pantolon:
+ </string>
+ <string name="shoes_desc_text">
+ Ayakkabılar:
+ </string>
+ <string name="socks_desc_text">
+ Çoraplar:
+ </string>
+ <string name="jacket_desc_text">
+ Ceket:
+ </string>
+ <string name="skirt_desc_text">
+ Etek:
+ </string>
+ <string name="gloves_desc_text">
+ Eldivenler:
+ </string>
+ <string name="undershirt_desc_text">
+ Fanila:
+ </string>
+ <string name="underpants_desc_text">
+ Külot:
+ </string>
+ <string name="alpha_desc_text">
+ Alfa Maskesi:
+ </string>
+ <string name="tattoo_desc_text">
+ Dövme:
+ </string>
+ <string name="physics_desc_text">
+ Fizik:
+ </string>
+ <labeled_back_button label="Kaydet" name="back_btn" tool_tip="Dış Görünümü Düzenlemeye Dön"/>
+ <text name="edit_wearable_title" value="Şekil Düzenleniyor"/>
+ <panel label="Gömlek" name="wearable_type_panel">
+ <text name="description_text" value="Şekil:"/>
+ <radio_group name="sex_radio">
+ <radio_item label="" name="sex_male" tool_tip="Erkek" value="1"/>
+ <radio_item label="" name="sex_female" tool_tip="Kadın" value="0"/>
+ </radio_group>
+ <icon name="male_icon" tool_tip="Erkek"/>
+ <icon name="female_icon" tool_tip="Kadın"/>
+ </panel>
+ <panel name="button_panel">
+ <layout_stack name="button_panel_ls">
+ <layout_panel name="save_as_btn_lp">
+ <button label="Farklı Kaydet" name="save_as_button"/>
+ </layout_panel>
+ <layout_panel name="revert_btn_lp">
+ <button label="Değişiklikleri Geri Al" name="revert_button"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml
new file mode 100644
index 0000000000..58bb68a5c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <layout_stack name="vertical_stack">
+ <layout_panel name="group_info_btn_panel">
+ <button label="Grup Profili" name="group_info_btn"/>
+ </layout_panel>
+ <layout_panel name="call_btn_panel">
+ <button label="Grubu Ara" name="call_btn"/>
+ </layout_panel>
+ <layout_panel name="end_call_btn_panel">
+ <button label="Aramadan Ayrıl" name="end_call_btn"/>
+ </layout_panel>
+ <layout_panel name="voice_ctrls_btn_panel">
+ <button label="Ses Denetimlerini Aç" name="voice_ctrls_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_general.xml b/indra/newview/skins/default/xui/tr/panel_group_general.xml
new file mode 100644
index 0000000000..0462026249
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_general.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Genel" name="general_tab">
+ <panel.string name="help_text">
+ Genel sekmesinde bu grup hakkında genel bilgiler, üyelerin listesi, genel Grup Tercihleri ve üye seçenekleri yer alır.
+
+Daha fazla yardım edinmek için farenizi seçeneklerin üzerine getirin.
+ </panel.string>
+ <panel.string name="group_info_unchanged">
+ Genel grup bilgileri değişti
+ </panel.string>
+ <panel.string name="incomplete_member_data_str">
+ Üye verileri alınıyor
+ </panel.string>
+ <panel name="group_info_top">
+ <texture_picker label="" name="insignia" tool_tip="Bir resim seçmek için tıklayın"/>
+ <text name="prepend_founded_by">
+ Kurucu:
+ </text>
+ <text name="join_cost_text">
+ Ücretsiz
+ </text>
+ <button label="ŞİMDİ KATIL!" name="btn_join"/>
+ </panel>
+ <text_editor name="charter">
+ Grup Bildirgesi
+ </text_editor>
+ <name_list name="visible_members">
+ <name_list.columns label="Üye" name="name"/>
+ <name_list.columns label="Başlık" name="title"/>
+ <name_list.columns label="Durum" name="status"/>
+ </name_list>
+ <text name="my_group_settngs_label">
+ Ben
+ </text>
+ <text name="active_title_label">
+ Başlığım:
+ </text>
+ <combo_box name="active_title" tool_tip="Bu grup etkin olduğunda avatarınızın ad etiketinde görünecek başlığı belirler."/>
+ <check_box label="Grup bildirimleri al" name="receive_notices" tool_tip="Bu gruptan Bildirim almak isteyip istemediğinizi belirler. Bu grup size istemediğiniz bildirimler yolluyorsa bu kutudaki işareti kaldırın."/>
+ <check_box label="Profilimde göster" name="list_groups_in_profile" tool_tip="Bu grubu profilinizde göstermeyi isteyip istemediğinizi belirler"/>
+ <panel name="preferences_container">
+ <text name="group_settngs_label">
+ Grup
+ </text>
+ <check_box label="Herkes katılabilir" name="open_enrollement" tool_tip="Bu grubun davet edilmeden yeni üyelerin katılmasına imkan tanıyıp tanımayacağını belirler."/>
+ <check_box label="Katılma ücreti" name="check_enrollment_fee" tool_tip="Bu gruba katılmak için bir kayıt ücretinin gerekip gerekmeyeceğini belirler"/>
+ <spinner label="L$" name="spin_enrollment_fee" tool_tip="Kayıt Ücreti işaretlendiğinde yeni üyeler gruba katılmak için bu ücreti ödemelidir."/>
+ <combo_box name="group_mature_check" tool_tip="Grubunuzun Orta seviyede içeriğe sahip olup olmadığını belirler">
+ <combo_item name="select_mature">
+ - Erişkinlik seviyesini seçin -
+ </combo_item>
+ <combo_box.item label="Orta Seviyede İçerik" name="mature"/>
+ <combo_box.item label="Genel İçerik" name="pg"/>
+ </combo_box>
+ <check_box initial_value="true" label="Aramada göster" name="show_in_group_list" tool_tip="Kişiler arama sonuçlarında bu grubu görebilsin"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml
new file mode 100644
index 0000000000..32f39da490
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Grup Profili" name="GroupInfo">
+ <panel.string name="default_needs_apply_text">
+ Kaydedilmemiş değişiklikler var
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Bu değişiklikleri kaydetmek istiyor musunuz?
+ </panel.string>
+ <panel.string name="group_join_btn">
+ Katıl (L$[AMOUNT])
+ </panel.string>
+ <panel.string name="group_join_free">
+ Ücretsiz
+ </panel.string>
+ <panel name="group_info_top">
+ <text_editor name="group_name" value="(yükleniyor...)"/>
+ <line_editor label="Grup adınızı buraya girin" 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="Genel"/>
+ <accordion_tab name="group_roles_tab" title="Roller"/>
+ <accordion_tab name="group_notices_tab" title="Bildirimler"/>
+ <accordion_tab name="group_land_tab" title="Arazi/Varlıklar"/>
+ </accordion>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="button_row_ls">
+ <layout_panel name="btn_chat_lp">
+ <button label="Sohbet" name="btn_chat"/>
+ </layout_panel>
+ <layout_panel name="call_btn_lp">
+ <button label="Grup Araması" name="btn_call" tool_tip="Bu grubu ara"/>
+ </layout_panel>
+ <layout_panel name="btn_apply_lp">
+ <button label="Kaydet" label_selected="Kaydet" name="btn_apply"/>
+ <button label="Grup Oluştur" name="btn_create" tool_tip="Yeni bir Grup oluştur"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_invite.xml b/indra/newview/skins/default/xui/tr/panel_group_invite.xml
new file mode 100644
index 0000000000..9b0c7f799a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_invite.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Bir Üyeyi Davet Et" name="invite_panel">
+ <panel.string name="confirm_invite_owner_str">
+ Yeni sahipler davet etmek istediğinize emin misiniz? Bu eylem geri döndürülemez!
+ </panel.string>
+ <panel.string name="loading">
+ (yükleniyor...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ Seçtiğiniz bazı Sakinler zaten grupta yer alıyor, bu yüzden bunlara davetiye gönderilmedi.
+ </panel.string>
+ <text name="help_text">
+ Grubunuza davet etmek için birden fazla Sakin seçebilirsiniz. Başlamak için &quot;Sakin Seçiciyi Aç&quot; üzerine tıklayın.
+ </text>
+ <button label="Sakin Seçiciyi Aç" name="add_button"/>
+ <name_list name="invitee_list" tool_tip="Ctrl tuşunu basılı tutun ve seçmek istediğiniz Sakinlerin adlarına tıklayın"/>
+ <button label="Seçilenleri Listeden Çıkar" name="remove_button" tool_tip="Yukarıda seçilen Sakinleri davet listesinden çıkarır"/>
+ <text name="role_text">
+ Onları hala Role atayacağınızı seçin:
+ </text>
+ <combo_box name="role_name" tool_tip="Üyeleri atamanıza izin verilen Roller listesinden seçin"/>
+ <button label="Davetiye Gönder" name="ok_button"/>
+ <button label="İptal" name="cancel_button"/>
+ <string name="GroupInvitation">
+ Grup Davetiyesi
+ </string>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_land_money.xml b/indra/newview/skins/default/xui/tr/panel_group_land_money.xml
new file mode 100644
index 0000000000..e9112a862b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_land_money.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Arazi ve L$" name="land_money_tab">
+ <panel.string name="help_text">
+ Kullanılan Toplam Arazi, Toplam Katkı&apos;dan daha az veya buna eşit oluncaya kadar bir uyarı görünür.
+ </panel.string>
+ <panel.string name="cant_view_group_land_text">
+ Grupların sahip olduğu araziyi görme izniniz yok
+ </panel.string>
+ <panel.string name="epmty_view_group_land_text">
+ Giriş yok
+ </panel.string>
+ <panel.string name="cant_view_group_accounting_text">
+ Grubun muhasebe bilgilerini görme izniniz yok.
+ </panel.string>
+ <panel.string name="loading_txt">
+ Yükleniyor...
+ </panel.string>
+ <panel.string name="land_contrib_error">
+ Arazi katkınız ayarlanamıyor
+ </panel.string>
+ <panel name="layout_panel_landmoney">
+ <scroll_list name="group_parcel_list">
+ <scroll_list.columns label="Parsel" name="name"/>
+ <scroll_list.columns label="Bölge" name="location"/>
+ <scroll_list.columns label="Tür" name="type"/>
+ <scroll_list.columns label="Alan" name="area"/>
+ <scroll_list.columns label="Saklı" name="hidden"/>
+ </scroll_list>
+ <text name="total_contributed_land_label">
+ Toplam katkı:
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] m²
+ </text>
+ <button label="Harita" label_selected="Harita" name="map_button"/>
+ <text name="total_land_in_use_label">
+ Kullanılan toplam arazi:
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] m²
+ </text>
+ <text name="land_available_label">
+ Kullanılabilir arazi:
+ </text>
+ <text name="land_available_value">
+ [AREA] m²
+ </text>
+ <text name="your_contribution_label">
+ Katkınız:
+ </text>
+ <text name="your_contribution_units">
+ m²
+ </text>
+ <text name="your_contribution_max_value">
+ ([AMOUNT] maks)
+ </text>
+ <text name="group_over_limit_text">
+ Kullanılan alanı desteklemek için daha fazla arazi kredisi lazım
+ </text>
+ <text name="group_money_heading">
+ Grup L$
+ </text>
+ </panel>
+ <tab_container name="group_money_tab_container">
+ <panel label="PLANLAMA" name="group_money_planning_tab">
+ <text_editor name="group_money_planning_text">
+ Yükleniyor...
+ </text_editor>
+ </panel>
+ <panel label="AYRINTILAR" name="group_money_details_tab">
+ <text_editor name="group_money_details_text">
+ Yükleniyor...
+ </text_editor>
+ <button name="earlier_details_button" tool_tip="Geri"/>
+ <button name="later_details_button" tool_tip="Sonraki"/>
+ </panel>
+ <panel label="SATIŞLAR" name="group_money_sales_tab">
+ <text_editor name="group_money_sales_text">
+ Yükleniyor...
+ </text_editor>
+ <button name="earlier_sales_button" tool_tip="Geri"/>
+ <button name="later_sales_button" tool_tip="Sonraki"/>
+ </panel>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
new file mode 100644
index 0000000000..2bc597f2fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+ <text name="group_name" value="Bilinmiyor"/>
+ <button name="profile_btn" tool_tip="Profili göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_notices.xml b/indra/newview/skins/default/xui/tr/panel_group_notices.xml
new file mode 100644
index 0000000000..179b5fff69
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_notices.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Bildirimler" name="notices_tab">
+ <panel.string name="help_text">
+ Bildirimler ile bir ileti ve opsiyonel olarak eklenmiş bir öğe gönderebilirsiniz.
+Bildirimler sadece Bildirim alma imkanına sahip olan Rollerdeki grup üyelerine gider.
+Genel sekmesinde Bildirimleri kapatabilirsiniz.
+ </panel.string>
+ <panel.string name="no_notices_text">
+ Eski bildirimler mevcut değil
+ </panel.string>
+ <text name="lbl2">
+ Bildirimler 14 gün boyunca saklanır.
+Günde grup başına maksimum sınır 200&apos;dür
+ </text>
+ <scroll_list name="notice_list">
+ <scroll_list.columns label="Konu" name="subject"/>
+ <scroll_list.columns label="Kimden" name="from"/>
+ <scroll_list.columns label="Tarih" name="date"/>
+ </scroll_list>
+ <text name="notice_list_none_found">
+ Bildirim yok
+ </text>
+ <button label="Yeni Bildirim" name="create_new_notice" tool_tip="Yeni bir bildirim oluştur"/>
+ <button name="refresh_notices" tool_tip="Bildirimler listesini yenile"/>
+ <panel label="Yeni Bildirim Oluştur" name="panel_create_new_notice">
+ <text name="lbl">
+ Bildirim Oluştur
+ </text>
+ <text name="lbl3">
+ Konu:
+ </text>
+ <text name="lbl4">
+ İleti:
+ </text>
+ <text name="lbl5">
+ Ekle:
+ </text>
+ <text name="string">
+ Bir öğeyi eklemek için buraya sürükleyin ve bırakın:
+ </text>
+ <button label="Envanter" name="open_inventory" tool_tip="Envanteri Aç"/>
+ <button name="remove_attachment" tool_tip="Bildiriminizden aksesuarı kaldır"/>
+ <button label="Gönder" label_selected="Gönder" name="send_notice"/>
+ <group_drop_target name="drop_target" tool_tip="Bu bildirimle bir envanter öğesini göndermek için öğeyi bu hedef kutuya sürükleyin. Öğeyi eklemek için kopyalama ve aktarma iznine sahip olmalısınız."/>
+ </panel>
+ <panel label="Eski Bildirimi Göster" name="panel_view_past_notice">
+ <text name="lbl">
+ Arşivlenmiş Bildirim
+ </text>
+ <text name="lbl2">
+ Yeni bir bildirim göndermek için + düğmesine tıklayın
+ </text>
+ <text name="lbl3">
+ Konu:
+ </text>
+ <text name="lbl4">
+ İleti:
+ </text>
+ <button label="Aksesuarı Aç" name="open_attachment"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_notify.xml b/indra/newview/skins/default/xui/tr/panel_group_notify.xml
new file mode 100644
index 0000000000..bcc5482daa
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_notify.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+ <string name="message_max_lines_count" value="7"/>
+ <string name="subject_font" value="SANSSERIF_BIG"/>
+ <string name="date_font" value="SANSSERIF"/>
+ <panel label="başlık" name="header">
+ <text name="title" value="Gönderici Adı / Grup Adı"/>
+ </panel>
+ <text_editor name="message" value="ileti"/>
+ <text name="attachment" value="Aksesuar"/>
+ <button label="Tamam" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_roles.xml b/indra/newview/skins/default/xui/tr/panel_group_roles.xml
new file mode 100644
index 0000000000..fb03107da8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_roles.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Üyeler ve Roller" name="roles_tab">
+ <panel.string name="default_needs_apply_text">
+ Kaydedilmemiş değişiklikler var
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Değişikliklerinizi kaydetmek istiyor musunuz?
+ </panel.string>
+ <tab_container name="roles_tab_container">
+ <panel label="ÜYELER" name="members_sub_tab" tool_tip="Üyeler">
+ <panel.string name="help_text">
+ Üyelere atanmış Rolleri ekleyebilir veya kaldırabilirsiniz.
+Ctrl tuşuna basıp adlarına tıklayarak birden fazla Üye seçebilirsiniz.
+ </panel.string>
+ <panel.string name="donation_area">
+ [AREA] m²
+ </panel.string>
+ <filter_editor label="Üyeleri Filtrele" name="filter_input"/>
+ <name_list name="member_list">
+ <name_list.columns label="Üye" name="name"/>
+ <name_list.columns label="Bağış" name="donated"/>
+ <name_list.columns label="Durum" name="online"/>
+ </name_list>
+ <button label="Davet Et" name="member_invite"/>
+ <button label="Çıkar" name="member_eject"/>
+ </panel>
+ <panel label="ROLLER" name="roles_sub_tab">
+ <panel.string name="help_text">
+ Roller, birer başlığa ve Üyelerin gerçekleştirmesine izin verilen Yetenekler listesine sahiptir.
+ Bir Üye bir veya daha fazla sayıda Role ait olabilir.
+ Bir grupta 10&apos;a kadar Rol olabilir, buna Herkes ve Sahip Rolü de dahildir.
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ &apos;Herkes&apos; ve &apos;Sahipler&apos; Rolleri özeldir, silinemez.
+ </panel.string>
+ <filter_editor label="Rolleri Filtrele" name="filter_input"/>
+ <scroll_list name="role_list">
+ <scroll_list.columns label="Rol" name="name"/>
+ <scroll_list.columns label="Başlık" name="title"/>
+ <scroll_list.columns label="#" name="members"/>
+ </scroll_list>
+ <button label="Yeni Rol" name="role_create"/>
+ <button label="Rolü Sil" name="role_delete"/>
+ </panel>
+ <panel label="YETENEKLER" name="actions_sub_tab" tool_tip="Bir Yeteneğin Açıklamasını ve bu Yeteneğe hangi Rollerin ve Üyelerin sahip olabileceğini görebilirsiniz.">
+ <panel.string name="help_text">
+ Yetenekler sayesinde Rollerle ilişkili Üyeler bu grup içerisinde belirli şeyler yapabilir.
+ Yeteneklerin kapsamı oldukça geniştir.
+ </panel.string>
+ <filter_editor label="Yetenekleri Filtrele" name="filter_input"/>
+ <scroll_list name="action_list" tool_tip="Bir Yeteneği seçerek daha çok ayrıntı görebilirsiniz"/>
+ </panel>
+ </tab_container>
+ <panel name="members_footer">
+ <text name="static">
+ Atanmış Roller
+ </text>
+ <text name="static2">
+ İzin Verilen Yetenekler
+ </text>
+ <scroll_list name="member_allowed_actions" tool_tip="İzin verilen her bir yeteneğin ayrıntıları için yetenekler sekmesine bakın"/>
+ </panel>
+ <panel name="roles_footer">
+ <text name="static">
+ Rol Adı
+ </text>
+ <text name="static3">
+ Rol Başlığı
+ </text>
+ <text name="static2">
+ Açıklama
+ </text>
+ <text name="static4">
+ Atanmış Üyeler
+ </text>
+ <check_box label="Üyeleri göster" name="role_visible_in_list" tool_tip="Bu rolün üyelerinin, Genel sekmesinde grup dışındaki kişilere görünüp görünmeyeceğini ayarlar."/>
+ <text name="static5">
+ İzin Verilen Yetenekler
+ </text>
+ <scroll_list name="role_allowed_actions" tool_tip="İzin verilen her bir yeteneğin ayrıntıları için yetenekler sekmesine bakın"/>
+ </panel>
+ <panel name="actions_footer">
+ <text_editor name="action_description">
+ Bu Yetenek &apos;Bu Gruptan Üye Çıkarma&apos;dır. Bir Sahibi sadece başka bir Sahip çıkartabilir.
+ </text_editor>
+ <text name="static2">
+ Bu yeteneğe sahip Roller
+ </text>
+ <text name="static3">
+ Bu yeteneğe sahip Üyeler
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml
new file mode 100644
index 0000000000..aebdc6b48d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <layout_stack name="button_stack">
+ <layout_panel name="view_profile_btn_panel">
+ <button label="Profil" name="view_profile_btn"/>
+ </layout_panel>
+ <layout_panel name="add_friend_btn_panel">
+ <button label="Arkadaş Ekle" name="add_friend_btn"/>
+ </layout_panel>
+ <layout_panel name="teleport_btn_panel">
+ <button label="Işınla" name="teleport_btn" tool_tip="Bu kişiyi ışınlamayı teklif et"/>
+ </layout_panel>
+ <layout_panel name="share_btn_panel">
+ <button label="Paylaş" name="share_btn"/>
+ </layout_panel>
+ <layout_panel name="pay_btn_panel">
+ <button label="Öde" name="pay_btn"/>
+ </layout_panel>
+ <layout_panel name="call_btn_panel">
+ <button label="Ara" name="call_btn"/>
+ </layout_panel>
+ <layout_panel name="end_call_btn_panel">
+ <button label="Aramayı Bitir" name="end_call_btn"/>
+ </layout_panel>
+ <layout_panel name="voice_ctrls_btn_panel">
+ <button label="Ses Denetimleri" name="voice_ctrls_btn"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_instant_message.xml b/indra/newview/skins/default/xui/tr/panel_instant_message.xml
new file mode 100644
index 0000000000..cf9bc7fccb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_instant_message.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_panel" name="im_panel">
+ <string name="message_max_lines_count">
+ 6
+ </string>
+ <panel label="im_header" name="im_header">
+ <text name="time_box" value="23:30"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_inventory_item.xml b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml
new file mode 100644
index 0000000000..d18047fbcf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="inventory_item">
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
new file mode 100644
index 0000000000..2cad753f25
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+ <string name="title_create_landmark" value="Yer İmi Oluştur"/>
+ <string name="title_edit_landmark" value="Yer İmini Düzenle"/>
+ <string name="title_landmark" value="Yer İmi"/>
+ <string name="not_available" value="(G/D)"/>
+ <string name="unknown" value="(bilinmiyor)"/>
+ <string name="public" value="(kamuya açık)"/>
+ <string name="server_update_text">
+ Sunucu güncelleştirmesi olmadan yer bilgisi mevcut olmaz.
+ </string>
+ <string name="server_error_text">
+ Bu konum hakkında şu anda bilgi mevcut değil, lütfen daha sonra tekrar deneyin.
+ </string>
+ <string name="server_forbidden_text">
+ Erişim kısıtlamaları nedeniyle bu konum hakkında bilgiye erişilemiyor. Lütfen parsel sahibi nezdinde izinlerinizi kontrol edin.
+ </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>
+ <button name="back_btn" tool_tip="Geri"/>
+ <text name="title" value="Profili Yerleştir"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="region_title" value="Örnek Bölge"/>
+ <text name="parcel_title" value="Örnek Parsel, Uzun Ad (145, 228, 26)"/>
+ <expandable_text name="description" value="Du waltz die spritz"/>
+ <text name="maturity_value" value="bilinmiyor"/>
+ <panel name="landmark_info_panel">
+ <text name="owner_label" value="Sahip:"/>
+ <text name="creator_label" value="Oluşturan:"/>
+ <text name="created_label" value="Oluşturuldu:"/>
+ </panel>
+ <panel name="landmark_edit_panel">
+ <text name="title_label" value="Başlık:"/>
+ <text name="notes_label" value="Notlarım:"/>
+ <text name="folder_label" value="Yer imi konumu:"/>
+ </panel>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_landmarks.xml b/indra/newview/skins/default/xui/tr/panel_landmarks.xml
new file mode 100644
index 0000000000..d40d0c1543
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_landmarks.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+ <accordion name="landmarks_accordion">
+ <accordion_tab name="tab_favorites" title="Favoriler çubuğu"/>
+ <accordion_tab name="tab_landmarks" title="Yer İmlerim"/>
+ <accordion_tab name="tab_inventory" title="Envanterim"/>
+ <accordion_tab name="tab_library" title="Kütüphane"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Yeni yer imi ekle"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="trash_btn" tool_tip="Seçilen yer imini sil"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_login.xml b/indra/newview/skins/default/xui/tr/panel_login.xml
new file mode 100644
index 0000000000..acd6aa1921
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_login.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <panel.string name="create_account_url">
+ http://join.secondlife.com/
+ </panel.string>
+ <panel.string name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </panel.string>
+ <layout_stack name="login_widgets">
+ <layout_panel name="login">
+ <text name="username_text">
+ Kullanıcı Adı:
+ </text>
+ <combo_box name="username_combo" tool_tip="Kaydolduğunuzda seçtiğiniz kullanıcı adı, örn. mustafayalcin12 veya Faruk Gungoren"/>
+ <text name="password_text">
+ Parola:
+ </text>
+ <check_box label="Parolayı hatırla" name="remember_check"/>
+ <button label="Oturum Aç" name="connect_btn"/>
+ <text name="mode_selection_text">
+ Mod:
+ </text>
+ <combo_box name="mode_combo" tool_tip="Modunuzu seçin. Hızlı, kolay keşif yapmak ve sohbet için Temel seçimini yapın. Daha fazla özelliğe erişmek için Gelişmiş seçimini yapın.">
+ <combo_box.item label="Temel" name="Basic"/>
+ <combo_box.item label="Gelişmiş" name="Advanced"/>
+ </combo_box>
+ <text name="start_location_text">
+ Buradan başla:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Son konumum" name="MyLastLocation"/>
+ <combo_box.item label="Ana Konumum" name="MyHome"/>
+ <combo_box.item label="&lt;Bölge adını girin&gt;" name="Typeregionname"/>
+ </combo_box>
+ </layout_panel>
+ <layout_panel name="links">
+ <text name="create_new_account_text">
+ Kaydolun
+ </text>
+ <text name="forgot_password_text">
+ Kullanıcı adınızı veya parolanızı mı unuttunuz?
+ </text>
+ <text name="login_help">
+ Oturum açarken yardım mı gerekiyor?
+ </text>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_main_inventory.xml b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml
new file mode 100644
index 0000000000..c69fb39130
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Eşyalar" name="main inventory panel">
+ <panel.string name="ItemcountFetching">
+ [ITEM_COUNT] Öge Alınıyor... [FILTER]
+ </panel.string>
+ <panel.string name="ItemcountCompleted">
+ [ITEM_COUNT] Öge [FILTER]
+ </panel.string>
+ <text name="ItemcountText">
+ Ögeler:
+ </text>
+ <filter_editor label="Envanteri Filtrele" name="inventory search editor"/>
+ <tab_container name="inventory filter tabs">
+ <inventory_panel label="ENVANTERİM" name="All Items"/>
+ <recent_inventory_panel label="SON" name="Recent Items"/>
+ </tab_container>
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Yeni öge ekle"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="trash_btn" tool_tip="Seçilen öğeyi sil"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_me.xml b/indra/newview/skins/default/xui/tr/panel_me.xml
new file mode 100644
index 0000000000..4b911c9ce6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_me.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profilim" name="panel_me">
+ <panel label="SEÇMELERİM" name="panel_picks"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml
new file mode 100644
index 0000000000..89e78b75de
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Genel" name="Media Settings General">
+ <text name="home_label">
+ Ana Sayfa:
+ </text>
+ <text name="home_fails_whitelist_label">
+ (Bu sayfa belirtilen izin verilenler listesinden geçmez)
+ </text>
+ <line_editor name="home_url" tool_tip="Bu ortam kaynağının ana sayfası"/>
+ <text name="preview_label">
+ Önizleme
+ </text>
+ <text name="current_url_label">
+ Mevcut Sayfa:
+ </text>
+ <text name="current_url" tool_tip="Bu ortam kaynağının şu anki sayfası" value=""/>
+ <button label="Sıfırla" name="current_url_reset_btn"/>
+ <check_box initial_value="false" label="Otomatik Tekrarla" name="auto_loop"/>
+ <check_box initial_value="false" label="İlk Tıklama Etkileşimleri" name="first_click_interact"/>
+ <check_box initial_value="false" label="Otomatik Zumla" name="auto_zoom"/>
+ <check_box initial_value="false" label="Ortamı Otomatik Oynat" name="auto_play"/>
+ <text name="media_setting_note">
+ Not: Sakinler bu ayarı geçersiz kılabilir
+ </text>
+ <check_box initial_value="false" label="Nesne Yüzünde Ortamı Otomatik Ölçekle" name="auto_scale"/>
+ <text name="size_label">
+ Büyüklük:
+ </text>
+ <text name="X_label">
+ X
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml
new file mode 100644
index 0000000000..6c0b14a889
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Özelleştir" name="Media settings for controls">
+ <text name="controls_label">
+ Denetimler:
+ </text>
+ <combo_box name="controls">
+ <combo_item name="Standard">
+ Standart
+ </combo_item>
+ <combo_item name="Mini">
+ Mini
+ </combo_item>
+ </combo_box>
+ <text name="owner_label">
+ Sahip
+ </text>
+ <check_box initial_value="false" label="Gezinme ve Etkileşime İzin Ver" name="perms_owner_interact"/>
+ <check_box initial_value="false" label="Denetim Çubuğunu Göster" name="perms_owner_control"/>
+ <text name="group_label">
+ Grup:
+ </text>
+ <check_box initial_value="false" label="Gezinme ve Etkileşime İzin Ver" name="perms_group_interact"/>
+ <check_box initial_value="false" label="Denetim Çubuğunu Göster" name="perms_group_control"/>
+ <text name="anyone_label">
+ Herkes
+ </text>
+ <check_box initial_value="false" label="Gezinme ve Etkileşime İzin Ver" name="perms_anyone_interact"/>
+ <check_box initial_value="false" label="Denetim Çubuğunu Göster" name="perms_anyone_control"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml
new file mode 100644
index 0000000000..da3ca1bd29
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Güvenlik" name="Media Settings Security">
+ <check_box initial_value="false" label="Sadece Belirlenen URL Desenlerine Erişime İzin Ver" name="whitelist_enable"/>
+ <text name="home_url_fails_some_items_in_whitelist">
+ Ana sayfanın başarısız olduğu girişler işaretli:
+ </text>
+ <button label="Ekle" name="whitelist_add"/>
+ <button label="Sil" name="whitelist_del"/>
+ <text name="home_url_fails_whitelist">
+ Uyarı: Genel sekmesinde belirtilen ana sayfa bu beyaz listede yer almıyor. Geçerli bir giriş ekleninceye kadar devre dışı bırakıldı.
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
new file mode 100644
index 0000000000..8d43e3fb5a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+ <layout_stack name="nvp_stack">
+ <layout_panel name="navigation_layout_panel">
+ <panel name="navigation_panel">
+ <pull_button name="back_btn" tool_tip="Önceki konuma geri git"/>
+ <pull_button name="forward_btn" tool_tip="Bir konum ileri git"/>
+ <button name="home_btn" tool_tip="Ana konumuma ışınla"/>
+ <location_input label="Konum" name="location_combo"/>
+ </panel>
+ </layout_panel>
+ <layout_panel name="favorites_layout_panel">
+ <favorites_bar name="favorite" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
+ <label name="favorites_bar_label" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
+ Favoriler Çubuğu
+ </label>
+ <more_button name="&gt;&gt;" tool_tip="Favorilerimden daha çok göster">
+ Daha Fazla ▼
+ </more_button>
+ </favorites_bar>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
new file mode 100644
index 0000000000..c405105e00
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+ <check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
new file mode 100644
index 0000000000..fd954475ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
+ <button name="show_nearby_chat" tool_tip="yakın sohbet günlüğünü gösterir/gizler"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_media.xml b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml
new file mode 100644
index 0000000000..a654b2ac14
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_media">
+ <string name="media_item_count_format">
+ (%d ortamı ögesi)
+ </string>
+ <string name="empty_item_text">
+ &lt;boş&gt;
+ </string>
+ <string name="parcel_media_name">
+ Parsel Akış Ortamı
+ </string>
+ <string name="parcel_audio_name">
+ Parsel Akış Sesi
+ </string>
+ <string name="playing_suffix">
+ (oynatılıyor)
+ </string>
+ <panel name="minimized_controls">
+ <button label="Tümünü Durdur" name="all_nearby_media_disable_btn" tool_tip="Tüm yakın ortamları kapat"/>
+ <button label="Tümünü Başlat" name="all_nearby_media_enable_btn" tool_tip="Tüm yakın ortamları aç"/>
+ <button name="open_prefs_btn" tool_tip="Ortam tercihlerini getirir"/>
+ <button label="Daha Fazla &gt;&gt;" label_selected="&lt;&lt; Daha Az" name="more_btn" tool_tip="Gelişmiş Kontroller"/>
+ </panel>
+ <panel name="nearby_media_panel">
+ <text name="nearby_media_title">
+ Yakındaki Ortamlar
+ </text>
+ <text name="show_text">
+ Göster :
+ </text>
+ <combo_box name="show_combo">
+ <combo_box.item label="Tümü" name="All"/>
+ <combo_box.item label="Bu Parseldeki" name="WithinParcel"/>
+ <combo_box.item label="Bu Parselin Dışında" name="OutsideParcel"/>
+ <combo_box.item label="Diğer Avatarlarda" name="OnOthers"/>
+ </combo_box>
+ <scroll_list name="media_list">
+ <scroll_list.columns label="Yakınlık" name="media_proximity"/>
+ <scroll_list.columns label="Görünür" name="media_visibility"/>
+ <scroll_list.columns label="Sınıf" name="media_class"/>
+ <scroll_list.columns label="Ad" name="media_name"/>
+ <scroll_list.columns label="Hata ayıkla" name="media_debug"/>
+ </scroll_list>
+ <panel name="media_controls_panel">
+ <layout_stack name="media_controls">
+ <layout_panel name="stop">
+ <button name="stop_btn" tool_tip="Seçilen ortamı durdur"/>
+ </layout_panel>
+ <layout_panel name="play">
+ <button name="play_btn" tool_tip="Seçilen ortamı oynat"/>
+ </layout_panel>
+ <layout_panel name="pause">
+ <button name="pause_btn" tool_tip="Seçilen ortamı duraklat"/>
+ </layout_panel>
+ <layout_panel name="volume_slider_ctrl">
+ <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Seçilen ortamı için ses düzeyi"/>
+ </layout_panel>
+ <layout_panel name="mute">
+ <button name="mute_btn" tool_tip="Seçilen ortamda ses sustur"/>
+ </layout_panel>
+ <layout_panel name="zoom">
+ <button name="zoom_btn" tool_tip="Seçilen ortama yakınlaştır"/>
+ </layout_panel>
+ <layout_panel name="unzoom">
+ <button name="unzoom_btn" tool_tip="Seçilen ortamdan uzaklaştır"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
new file mode 100644
index 0000000000..b893da2a71
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_notify_textbox">
+ <string name="message_max_lines_count" value="7"/>
+ <panel label="info_panel" name="info_panel">
+ <text_editor name="message" value="ileti"/>
+ </panel>
+ <panel label="control_panel" name="control_panel">
+ <button label="Gönder" name="btn_submit"/>
+ <button label="Yok say" name="ignore_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml b/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml
new file mode 100644
index 0000000000..fdc489f375
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_online_status_toast.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/tr/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml
new file mode 100644
index 0000000000..a947eee150
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<outbox_inventory_panel name="inventory_outbox" tool_tip="Öğeleri vitrininizde satışa hazırlamak için sürükleyip buraya bırakın"/>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml
new file mode 100644
index 0000000000..00cd49abcd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray Outfit Edit panel -->
+<panel name="outfit_edit">
+ <string name="No Outfit" value="Dış Görünüm Yok"/>
+ <string name="unsaved_changes" value="Kaydedilmemiş Değişiklikler"/>
+ <string name="now_editing" value="Şimdi Düzenleniyor"/>
+ <panel.string name="not_available">
+ (G/D)
+ </panel.string>
+ <panel.string name="unknown">
+ (bilinmiyor)
+ </panel.string>
+ <string name="Filter.All" value="Tümü"/>
+ <string name="Filter.Clothes/Body" value="Giysiler/Gövde"/>
+ <string name="Filter.Objects" value="Nesneler"/>
+ <string name="Filter.Clothing" value="Giysiler"/>
+ <string name="Filter.Bodyparts" value="Vücut bölümleri"/>
+ <string name="replace_body_part" value="Mevcut şeklinizi değiştirmek için tıklayın"/>
+ <text name="title" value="Dış Görünümü Düzenle"/>
+ <panel name="header_panel">
+ <panel name="outfit_name_and_status">
+ <text name="status" value="Şimdi düzenleniyor..."/>
+ <text name="curr_outfit_name" value="[Mevcut Dış Görünüm]"/>
+ </panel>
+ </panel>
+ <layout_stack name="im_panels">
+ <layout_panel name="outfit_wearables_panel">
+ <layout_stack name="filter_panels">
+ <layout_panel name="add_button_and_combobox">
+ <button label="Daha Fazla Ekle..." name="show_add_wearables_btn" tool_tip="Aç/Kapa"/>
+ </layout_panel>
+ <layout_panel name="filter_panel">
+ <filter_editor label="Giyilebilirler Envanterini Filtrele" name="look_item_filter"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="add_wearables_panel">
+ <button label="Ögeyi Giy" name="plus_btn"/>
+ </layout_panel>
+ </layout_stack>
+ <panel name="no_add_wearables_button_bar">
+ <button name="shop_btn_1" tool_tip="SL Pazarını Ziyaret Et. Ayrıca giymekte olduğunuz bir şeyi de seçebilir ve buraya tıklayarak benzer şeylere bakabilirsiniz"/>
+ </panel>
+ <panel name="add_wearables_button_bar">
+ <button name="shop_btn_2" tool_tip="SL Pazarını Ziyaret Et. Ayrıca giymekte olduğunuz bir şeyi de seçebilir ve buraya tıklayarak benzer şeylere bakabilirsiniz"/>
+ </panel>
+ <panel name="save_revert_button_bar">
+ <layout_stack name="button_bar_ls">
+ <layout_panel name="save_btn_lp">
+ <button label="Kaydet" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="revert_btn_lp">
+ <button label="Değişiklikleri Geri Al" name="revert_btn" tool_tip="Son kaydedilen versiyona dön"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml
new file mode 100644
index 0000000000..550f7ebf10
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Eşyalar" name="Outfits">
+ <panel.string name="wear_outfit_tooltip">
+ Seçilen dış görünümü giy
+ </panel.string>
+ <panel.string name="wear_items_tooltip">
+ Seçilen öğeleri giy
+ </panel.string>
+ <tab_container name="appearance_tabs">
+ <panel label="DIŞ GÖRÜNÜMLERİM" name="outfitslist_tab"/>
+ <panel label="GİYİLEN" name="cof_tab"/>
+ </tab_container>
+ <panel name="bottom_panel">
+ <layout_stack name="bottom_panel_ls">
+ <layout_panel name="save_btn_lp">
+ <button label="Farklı Kaydet" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="wear_btn_lp">
+ <button label="Giy" name="wear_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml
new file mode 100644
index 0000000000..d222f1a6e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+ <menu_item_call label="Mevcut Dış Görünümü Değiştir" name="wear"/>
+ <menu_item_call label="Mevcut Dış Görünümden Kaldır" name="remove"/>
+ <menu_item_call label="Yeniden Adlandır" name="rename"/>
+ <menu_item_call label="Bağlantıyı Kaldır" name="remove_link"/>
+ <menu_item_call label="Dış Görünümü Sil" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml
new file mode 100644
index 0000000000..60a3576d84
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+ <accordion name="outfits_accordion">
+ <no_matched_tabs_text name="no_matched_outfits_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/all/[SEARCH_TERM] Arama] yapmayı deneyin."/>
+ <no_visible_tabs_text name="no_outfits_msg" value="Henüz herhangi bir dış görünümünüz yok. Try [secondlife:///app/search/all/ Arama] yapmayı deneyin"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+ <button name="trash_btn" tool_tip="Seçili dış görünümü sil"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml
new file mode 100644
index 0000000000..462926738f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Wearing">
+ <panel name="bottom_panel">
+ <menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml
new file mode 100644
index 0000000000..1a1e53bac2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_people.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="Kişiler" name="people_panel">
+ <string name="no_recent_people" value="Yakın zamanlı kişi yok. Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/search/people Arayı] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/>
+ <string name="no_filtered_recent_people" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin."/>
+ <string name="no_one_near" value="Yakında kimse yok. Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/search/people Arayın] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/>
+ <string name="no_one_filtered_near" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin."/>
+ <string name="no_friends_online" value="Çevrimiçi arkadaş yok"/>
+ <string name="no_friends" value="Arkadaş yok"/>
+ <string name="no_friends_msg">
+ [secondlife:///app/search/people Ara] kullanarak arkadaş bulun veya arkadaş olarak eklemek için bir Sakin üzerine sağ tıklayın.
+Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/worldmap Dünya Haritasını] deneyin.
+ </string>
+ <string name="no_filtered_friends_msg">
+ Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin.
+ </string>
+ <string name="people_filter_label" value="Kişileri Filtrele"/>
+ <string name="groups_filter_label" value="Grupları Filtrele"/>
+ <string name="no_filtered_groups_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/groups/[SEARCH_TERM] Ara] deneyin."/>
+ <string name="no_groups_msg" value="Katılacak Gruplar mı arıyorsunuz? [secondlife:///app/search/groups Ara] deneyin."/>
+ <string name="MiniMapToolTipMsg" value="[REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)"/>
+ <string name="AltMiniMapToolTipMsg" value="[REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)"/>
+ <filter_editor label="Filtrele" name="filter_input"/>
+ <tab_container name="tabs">
+ <panel label="YAKIN" name="nearby_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="nearby_view_sort_btn" tool_tip="Seçenklr."/>
+ <button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
+ </panel>
+ </panel>
+ <panel label="ARKADAŞLARIM" name="friends_panel">
+ <accordion name="friends_accordion">
+ <accordion_tab name="tab_online" title="Çevrimiçi"/>
+ <accordion_tab name="tab_all" title="Tümü"/>
+ </accordion>
+ <panel label="bottom_panel" name="bottom_panel">
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <menu_button name="friends_viewsort_btn" tool_tip="İlave seçenekleri göster"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Bir Sakine arkadaşlık öner"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="del_btn" tool_tip="Seçilen kişiyi arkadaş Listenden çıkar"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+ <panel label="GRUPLARIM" name="groups_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="groups_viewsort_btn" tool_tip="Seçenklr."/>
+ <button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
+ <button name="activate_btn" tool_tip="Seçilen grubu etkinleştir"/>
+ </panel>
+ </panel>
+ <panel label="SON" name="recent_panel">
+ <panel label="bottom_panel" name="bottom_panel">
+ <menu_button name="recent_viewsort_btn" tool_tip="Seçenklr."/>
+ <button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
+ </panel>
+ </panel>
+ </tab_container>
+ <panel name="button_bar">
+ <layout_stack name="bottom_bar_ls">
+ <layout_panel name="view_profile_btn_lp">
+ <button label="Profil" name="view_profile_btn" tool_tip="Resim, grup ve diğer Sakin bilgilerini göster"/>
+ </layout_panel>
+ <layout_panel name="im_btn_lp">
+ <button label="Aİ" name="im_btn" tool_tip="Anlık ileti oturumu aç"/>
+ </layout_panel>
+ <layout_panel name="call_btn_lp">
+ <button label="Ara" name="call_btn" tool_tip="Bu Sakini ara"/>
+ </layout_panel>
+ <layout_panel name="share_btn_lp">
+ <button label="Paylaş" name="share_btn" tool_tip="Bir envanter öğesini paylaş"/>
+ </layout_panel>
+ <layout_panel name="teleport_btn_lp">
+ <button label="Işınla" name="teleport_btn" tool_tip="Işınlama teklif et"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_ls1">
+ <layout_panel name="group_info_btn_lp">
+ <button label="Grup Profili" name="group_info_btn" tool_tip="Grup bilgilerini göster"/>
+ </layout_panel>
+ <layout_panel name="chat_btn_lp">
+ <button label="Grup Sohbeti" name="chat_btn" tool_tip="Sohbet oturumu aç"/>
+ </layout_panel>
+ <layout_panel name="group_call_btn_lp">
+ <button label="Grup Araması" name="group_call_btn" tool_tip="Bu grubu ara"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_pick_info.xml b/indra/newview/skins/default/xui/tr/panel_pick_info.xml
new file mode 100644
index 0000000000..f2bbfac232
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_pick_info.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="Seçme Bilgileri"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text_editor name="pick_name" value="[ad]"/>
+ <text_editor name="pick_location" value="[yükleniyor...]"/>
+ <text_editor name="pick_desc" value="[açıklama]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <layout_stack name="layout_stack1">
+ <layout_panel name="layout_panel1">
+ <button label="Işınla" name="teleport_btn"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Harita" name="show_on_map_btn"/>
+ </layout_panel>
+ <layout_panel name="edit_btn_lp">
+ <button label="Düzenle" name="edit_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_picks.xml b/indra/newview/skins/default/xui/tr/panel_picks.xml
new file mode 100644
index 0000000000..26beac7854
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_picks.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Favorilerim" name="panel_picks">
+ <string name="no_picks" value="Seçme Yok"/>
+ <string name="no_classifieds" value="İlan Yok"/>
+ <accordion name="accordion">
+ <accordion_tab name="tab_picks" title="Seçmelerim"/>
+ <accordion_tab name="tab_classifieds" title="İlanlar"/>
+ </accordion>
+ <panel label="bottom_panel" name="edit_panel">
+ <layout_stack name="edit_panel_ls">
+ <layout_panel name="gear_menu_btn">
+ <button name="new_btn" tool_tip="Mevcut konumda yeni bir seçme veya ilan oluşturun"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ <panel name="buttons_cucks">
+ <layout_stack name="buttons_cucks_ls">
+ <layout_panel name="info_btn_lp">
+ <button label="Bilgi" name="info_btn" tool_tip="Seçme bilgilerini göster"/>
+ </layout_panel>
+ <layout_panel name="teleport_btn_lp">
+ <button label="Işınla" name="teleport_btn" tool_tip="İlişkili alana ışınlanın"/>
+ </layout_panel>
+ <layout_panel name="show_on_map_btn_lp">
+ <button label="Harita" name="show_on_map_btn" tool_tip="İlişkili alanı Dünya Haritasında göster"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_place_profile.xml b/indra/newview/skins/default/xui/tr/panel_place_profile.xml
new file mode 100644
index 0000000000..f42cde0ace
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_place_profile.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+ <string name="on" value="Açık"/>
+ <string name="off" value="Kapalı"/>
+ <string name="anyone" value="Herkes"/>
+ <string name="available" value="kullanılabilir"/>
+ <string name="allocated" value="tahsis edilen"/>
+ <string name="title_place" value="Profili Yerleştir"/>
+ <string name="title_teleport_history" value="Işınlanma Geçmişi"/>
+ <string name="not_available" value="(G/D)"/>
+ <string name="unknown" value="(bilinmiyor)"/>
+ <string name="public" value="(kamuya açık)"/>
+ <string name="none_text" value="(hiçbiri)"/>
+ <string name="sale_pending_text" value="(Satış Bekliyor)"/>
+ <string name="group_owned_text" value="(Sahibi Olunan Grup)"/>
+ <string name="price_text" value="L$"/>
+ <string name="area_text" value="m²"/>
+ <string name="all_residents_text" value="Tüm Second Life Sakinleri"/>
+ <string name="group_text" value="Grup"/>
+ <string name="can_resell">
+ Bu bölgede satın alınan arazi tekrar satılabilir.
+ </string>
+ <string name="can_not_resell">
+ Bu bölgede satın alınan arazi tekrar satılamayabilir.
+ </string>
+ <string name="can_change">
+ Bu bölgede satın alınan arazi birleştirilebilir veya bölünebilir.
+ </string>
+ <string name="can_not_change">
+ Bu bölgede satın alınan arazi birleştirilemeyebilir veya bölünemeyebilir.
+ </string>
+ <string name="server_update_text">
+ Sunucu güncelleştirmesi olmadan yer bilgisi mevcut olmaz.
+ </string>
+ <string name="server_error_text">
+ Bu konum hakkında şu anda bilgi mevcut değil, lütfen daha sonra tekrar deneyin.
+ </string>
+ <string name="server_forbidden_text">
+ Erişim kısıtlamaları nedeniyle bu konum hakkında bilgiye erişilemiyor. Lütfen parsel sahibi nezdinde izinlerinizi kontrol edin.
+ </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>
+ <button name="back_btn" tool_tip="Geri"/>
+ <text name="title" value="Profili Yerleştir"/>
+ <scroll_container name="place_scroll">
+ <panel name="scrolling_panel">
+ <text name="region_title" value="Örnek Bölge"/>
+ <text name="parcel_title" value="Örnek Parsel, Uzun Ad (145, 228, 26)"/>
+ <expandable_text name="description" value="Du waltz die spritz"/>
+ <text name="owner_label" value="Sahip:"/>
+ <text name="owner_value" value="Alex Superduperlongenamenton"/>
+ <text name="maturity_value" value="bilinmiyor"/>
+ <accordion name="advanced_info_accordion">
+ <accordion_tab name="parcel_characteristics_tab" title="Parsel">
+ <panel name="parcel_characteristics_panel">
+ <text name="rating_label" value="Seviye:"/>
+ <text name="rating_value" value="bilinmiyor"/>
+ <text name="voice_label" value="Sesli:"/>
+ <text name="voice_value" value="Açık"/>
+ <text name="fly_label" value="Uçma:"/>
+ <text name="fly_value" value="Açık"/>
+ <text name="push_label" value="İtme:"/>
+ <text name="push_value" value="Kapalı"/>
+ <text name="build_label" value="İnşa Et:"/>
+ <text name="build_value" value="Açık"/>
+ <text name="scripts_label" value="Komut Dosyaları:"/>
+ <text name="scripts_value" value="Açık"/>
+ <text name="damage_label" value="Hasar:"/>
+ <text name="damage_value" value="Kapalı"/>
+ <text name="see_avatars_label" value="Avatarları Gör:"/>
+ <text name="see_avatars_value" value="Kapalı"/>
+ <button label="Arazi Hakkında" name="about_land_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="region_information_tab" title="Bölge">
+ <panel name="region_information_panel">
+ <text name="region_name_label" value="Bölge:"/>
+ <text name="region_name" value="Geyik arazisi"/>
+ <text name="region_type_label" value="Tür:"/>
+ <text name="region_type" value="Geyik"/>
+ <text name="region_rating_label" value="Seviye:"/>
+ <text name="region_rating" value="Yetişkin"/>
+ <text name="region_owner_label" value="Sahip:"/>
+ <text name="region_owner" value="geyik Can Geyik ekstra uzun ad geyik"/>
+ <text name="region_group_label" value="Grup:"/>
+ <text name="region_group">
+ Geyik Şehrinin Güçlü Geyiği soundvillemoose
+ </text>
+ <button label="Bölge/Gayrimenkul" name="region_info_btn"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="estate_information_tab" title="Gayrimenkul">
+ <panel name="estate_information_panel">
+ <text name="estate_name_label" value="Gayrimenkul:"/>
+ <text name="estate_rating_label" value="Seviye:"/>
+ <text name="estate_owner_label" value="Sahip:"/>
+ <text name="estate_owner" value="Sahip adının uzunluğu uzun adla deneniyor"/>
+ <text name="covenant_label" value="Sözleşme:"/>
+ </panel>
+ </accordion_tab>
+ <accordion_tab name="sales_tab" title="Satılık">
+ <panel name="sales_panel">
+ <text name="sales_price_label" value="Fiyat:"/>
+ <text name="area_label" value="Alan:"/>
+ <text name="traffic_label" value="Trafik:"/>
+ <text name="primitives_label" value="Temel öğeler:"/>
+ <text name="parcel_scripts_label" value="Komut Dosyaları:"/>
+ <text name="terraform_limits_label" value="Yer şekillendirme limitleri:"/>
+ <text name="subdivide_label" value="Bölme/Katma yeteneği:"/>
+ <text name="resale_label" value="Tekrar Satış yeteneği:"/>
+ <text name="sale_to_label" value="Şu Alıcıya Satılık:"/>
+ </panel>
+ </accordion_tab>
+ </accordion>
+ </panel>
+ </scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_places.xml b/indra/newview/skins/default/xui/tr/panel_places.xml
new file mode 100644
index 0000000000..c2a3acf9c5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_places.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Yerler" name="places panel">
+ <string name="landmarks_tab_title" value="YER İMLERİM"/>
+ <string name="teleport_history_tab_title" value="IŞINLAMA GEÇMİŞİ"/>
+ <filter_editor label="Yerlerimi Filtrele" name="Filter"/>
+ <panel name="button_panel">
+ <layout_stack name="bottom_bar_ls0">
+ <layout_panel name="lp1">
+ <layout_stack name="bottom_bar_ls1">
+ <layout_panel name="teleport_btn_lp">
+ <button label="Işınla" name="teleport_btn" tool_tip="Seçilen alana ışınla"/>
+ </layout_panel>
+ <layout_panel name="chat_btn_lp">
+ <button label="Harita" name="map_btn" tool_tip="İlişkili alanı Dünya Haritasında göster"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="lp2">
+ <layout_stack name="bottom_bar_ls3">
+ <layout_panel name="edit_btn_lp">
+ <button label="Düzenle" name="edit_btn" tool_tip="Yer imi bilgisini düzenle"/>
+ </layout_panel>
+ <layout_panel name="overflow_btn_lp">
+ <menu_button name="overflow_btn" tool_tip="İlave seçenekleri göster"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_profile_ls">
+ <layout_panel name="profile_btn_lp">
+ <button label="Profil" name="profile_btn" tool_tip="Yer profilini göster"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_close_ls3">
+ <layout_panel name="close_btn_lp">
+ <button label="Kapat" name="close_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="bottom_bar_ls2">
+ <layout_panel name="save_btn_lp">
+ <button label="Kaydet" name="save_btn"/>
+ </layout_panel>
+ <layout_panel name="cancel_btn_lp">
+ <button label="İptal" name="cancel_btn"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml
new file mode 100644
index 0000000000..770cdc6efd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Gelişmiş" name="advanced">
+ <panel.string name="aspect_ratio_text">
+ [NUM]:[DEN]
+ </panel.string>
+ <text name="Cache:">
+ Önbellek:
+ </text>
+ <spinner label="Önbellek boyutu (64-9984 MB)" name="cachesizespinner"/>
+ <text name="text_box5">
+ MB
+ </text>
+ <button label="Önbelleği Sil" label_selected="Önbelleği Sil" name="clear_cache"/>
+ <text name="Cache location">
+ Önbellek konumu:
+ </text>
+ <button label="Gözat" label_selected="Gözat" name="set_cache"/>
+ <button label="Varsayılan Konum" label_selected="Varsayılan Konum" name="default_cache_location"/>
+ <text name="UI Size:">
+ KA büyüklüğü:
+ </text>
+ <check_box label="Şuradaki komut dosyası hatalarını göster:" name="show_script_errors"/>
+ <radio_group name="show_location">
+ <radio_item label="Yakındaki sohbet" name="0"/>
+ <radio_item label="Ayrı pencere" name="1"/>
+ </radio_group>
+ <check_box label="Birden Çok Görüntüleyiciye İzin Ver" name="allow_multiple_viewer_check"/>
+ <check_box label="Oturum açarken Ağ Seçimini göster" name="show_grid_selection_check"/>
+ <check_box label="Gelişmiş Menüyü Göster" name="show_advanced_menu_check"/>
+ <check_box label="Geliştirici Menüsünü Göster" name="show_develop_menu_check"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml
new file mode 100644
index 0000000000..46a4793c53
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Açılır Uyarılar" name="popups">
+ <text name="tell_me_label">
+ Bana söyle:
+ </text>
+ <check_box label="L$ harcadığımda veya aldığımda" name="notify_money_change_checkbox"/>
+ <check_box label="Arkadaşlarım oturum açtığında veya kapattığında" name="friends_online_notify_checkbox"/>
+ <text name="show_label">
+ Daima göster:
+ </text>
+ <text name="dont_show_label">
+ Asla gösterme:
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
new file mode 100644
index 0000000000..f7f0698a31
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Metin Sohbeti" name="chat">
+ <text name="font_size">
+ Font büyüklüğü:
+ </text>
+ <radio_group name="chat_font_size">
+ <radio_item label="Küçük" name="radio" value="0"/>
+ <radio_item label="Orta" name="radio2" value="1"/>
+ <radio_item label="Büyük" name="radio3" value="2"/>
+ </radio_group>
+ <check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
+ <check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
+ <check_box label="Düz metin Aİ&apos;ler ve sohbet geçmişini etkinleştir" name="plain_text_chat_history"/>
+ <check_box label="Balon Sohbeti" name="bubble_text_chat"/>
+ <text name="show_ims_in_label">
+ Aİ&apos;leri şurada göster:
+ </text>
+ <text name="requires_restart_label">
+ (tekrar başlatma gerekir)
+ </text>
+ <radio_group name="chat_window" tool_tip="Anlık İletileri ayrı gezdiricilerde veya çoklu sekmelere sahip tek bir gezdiricide gösterin (tekrar başlatma gerekir)">
+ <radio_item label="Ayrı Pencereler" name="radio" value="0"/>
+ <radio_item label="Sekmeler" name="radio2" value="1"/>
+ </radio_group>
+ <text name="disable_toast_label">
+ Gelen sohbet için açılır pencereleri etkinleştir:
+ </text>
+ <check_box label="Grup Sohbetleri" name="EnableGroupChatPopups" tool_tip="Bir Grup Sohbet iletisi gönderildiğinde açılır pencereleri görmek için işaretle"/>
+ <check_box label="Aİ Sohbetleri" name="EnableIMChatPopups" tool_tip="Bir anlık ileti geldiğinde açılır pencereleri görmek için işaretle"/>
+ <spinner label="Yakındaki sohbet iletilerinin vurgulanma süresi:" name="nearby_toasts_lifetime"/>
+ <spinner label="Yakındaki sohbet iletilerinin sönme süresi:" name="nearby_toasts_fadingtime"/>
+ <text name="translate_chb_label">
+ Sohbet ederken makine çevirisi kullanılsın
+ </text>
+ <text name="translate_language_text">
+ Sohbeti şu dile çevir:
+ </text>
+ <combo_box name="translate_language_combobox">
+ <combo_box.item label="Sistem Varsayılanı" name="System Default Language"/>
+ <combo_box.item label="İngilizce" name="English"/>
+ <combo_box.item label="Dansk (Danca)" name="Danish"/>
+ <combo_box.item label="Deutsch (Almanca)" name="German"/>
+ <combo_box.item label="Español (İspanyolca)" name="Spanish"/>
+ <combo_box.item label="Français (Fransızca)" name="French"/>
+ <combo_box.item label="Italiano (İtalyanca)" name="Italian"/>
+ <combo_box.item label="Magyar (Macarca)" name="Hungarian"/>
+ <combo_box.item label="Nederlands (Flemenkçe)" name="Dutch"/>
+ <combo_box.item label="Polski (Lehçe)" name="Polish"/>
+ <combo_box.item label="Português (Portekizce)" name="Portugese"/>
+ <combo_box.item label="Русский (Rusça)" name="Russian"/>
+ <combo_box.item label="Türkçe (Türkçe)" name="Turkish"/>
+ <combo_box.item label="Українська (Ukraynaca)" name="Ukrainian"/>
+ <combo_box.item label="中文 (正體) (Çince)" name="Chinese"/>
+ <combo_box.item label="日本語 (Japonca)" name="Japanese"/>
+ <combo_box.item label="한국어 (Korece)" name="Korean"/>
+ </combo_box>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml
new file mode 100644
index 0000000000..f6e9d0948c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Renkler" name="colors_panel">
+ <text name="effects_color_textbox">
+ Efektlerim (seçim ışını):
+ </text>
+ <color_swatch name="effect_color_swatch" tool_tip="Renk Seçiciyi açmak için tıklayın"/>
+ <text name="font_colors">
+ Sohbet font renkleri:
+ </text>
+ <text name="text_box1">
+ Ben
+ </text>
+ <text name="text_box2">
+ Diğerleri
+ </text>
+ <text name="text_box3">
+ Nesneler
+ </text>
+ <text name="text_box4">
+ Sistem
+ </text>
+ <text name="text_box5">
+ Hatalar
+ </text>
+ <text name="text_box10">
+ Doğrudan
+ </text>
+ <text name="text_box7">
+ Sahip
+ </text>
+ <text name="text_box9">
+ URL&apos;ler
+ </text>
+ <text name="bubble_chat">
+ Ad etiketinin arka plan rengi (ayrıca Balon Sohbeti de etkiler):
+ </text>
+ <color_swatch name="background" tool_tip="Ad etiketi rengini seç"/>
+ <slider label="Geçirgenlik:" name="bubble_chat_opacity" tool_tip="Ad etiketi geçirgenliğini seç"/>
+ <text name="floater_opacity">
+ Gezdirici Geçirgenliği:
+ </text>
+ <slider label="Etkin:" name="active"/>
+ <slider label="Etkin değil:" name="inactive"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
new file mode 100644
index 0000000000..4a48b1588c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Genel" name="general_panel">
+ <text name="language_textbox">
+ Dil:
+ </text>
+ <combo_box name="language_combobox">
+ <combo_box.item label="Sistem varsayılanı" name="System Default Language"/>
+ <combo_box.item label="English (İngilizce)" name="English"/>
+ <combo_box.item label="Dansk (Danca) - Beta" name="Danish"/>
+ <combo_box.item label="Deutsch (Almanca) - Beta" name="Deutsch(German)"/>
+ <combo_box.item label="Español (İspanyolca) - Beta" name="Spanish"/>
+ <combo_box.item label="Français (Fransızca) - Beta" name="French"/>
+ <combo_box.item label="Italiano (İtalyanca) - Beta" name="Italian"/>
+ <combo_box.item label="Polski (Lehçe) - Beta" name="Polish"/>
+ <combo_box.item label="Português (Portekizce) - Beta" name="Portugese"/>
+ <combo_box.item label="Русский (Rusça) - Beta" name="Russian"/>
+ <combo_box.item label="Türkçe - Beta" name="Turkish"/>
+ <combo_box.item label="日本語 (Japonca) - Beta" name="(Japanese)"/>
+ <combo_box.item label="正體中文 (Geleneksel Çince) - Beta" name="Traditional Chinese"/>
+ </combo_box>
+ <text name="language_textbox2">
+ (Yeniden başlatma gerekir)
+ </text>
+ <text name="maturity_desired_prompt">
+ Seviyelndrl. içeriğe erişim istiyorum::
+ </text>
+ <combo_box name="maturity_desired_combobox">
+ <combo_box.item label="Genel, Orta, Yetişkin" name="Desired_Adult"/>
+ <combo_box.item label="Genel ve Orta" name="Desired_Mature"/>
+ <combo_box.item label="Genel" name="Desired_PG"/>
+ </combo_box>
+ <text name="start_location_textbox">
+ Standart konum:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Son konumum" name="MyLastLocation"/>
+ <combo_box.item label="Ana Konumum" name="MyHome"/>
+ </combo_box>
+ <check_box initial_value="true" label="Oturumu açarken göster" name="show_location_checkbox"/>
+ <text name="name_tags_textbox">
+ Ad etiketleri:
+ </text>
+ <radio_group name="Name_Tag_Preference">
+ <radio_item label="Kapalı" name="radio" value="0"/>
+ <radio_item label="Açık" name="radio2" value="1"/>
+ <radio_item label="Kısaca göster" name="radio3" value="2"/>
+ </radio_group>
+ <check_box label="Adım" name="show_my_name_checkbox1"/>
+ <check_box label="Kullanıcı adları" name="show_slids" tool_tip="Kullanıcı adını göster, bobsmith123 gibi"/>
+ <check_box label="Grup unvanları" name="show_all_title_checkbox1" tool_tip="Grup unvanlarını göster, Görevli veya Üye gibi"/>
+ <check_box label="Arkadaşları vurgula" name="show_friends" tool_tip="Arkadaşlarının ad etiketlerini vurgula"/>
+ <check_box label="Ekran Adlarını Görüntüle" name="display_names_check" tool_tip="Sohbet, Aİ, ad etiketleri, vb.de ekran adlarını kullanmak için işaretle"/>
+ <text name="inworld_typing_rg_label">
+ Basılacak harf tuşları:
+ </text>
+ <radio_group name="inworld_typing_preference">
+ <radio_item label="Yerel sohbet başlat" name="radio_start_chat" value="1"/>
+ <radio_item label="Hareketi etkiler (yani WASD)" name="radio_move" value="0"/>
+ </radio_group>
+ <text name="title_afk_text">
+ Uzakta süre sonu:
+ </text>
+ <combo_box label="Uzakta süre sonu:" name="afk">
+ <combo_box.item label="2 dakika" name="item0"/>
+ <combo_box.item label="5 dakika" name="item1"/>
+ <combo_box.item label="10 dakika" name="item2"/>
+ <combo_box.item label="30 dakika" name="item3"/>
+ <combo_box.item label="asla" name="item4"/>
+ </combo_box>
+ <text name="text_box3">
+ Meşgul durumu cevabı:
+ </text>
+ <text_editor name="busy_response">
+ log_in_to_change
+ </text_editor>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
new file mode 100644
index 0000000000..ddb83ffc69
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Grafikler" name="Display panel">
+ <text name="QualitySpeed">
+ Kalite ve hız:
+ </text>
+ <text name="FasterText">
+ Daha hızlı
+ </text>
+ <text name="BetterText">
+ Daha iyi
+ </text>
+ <text name="ShadersPrefText">
+ Düşük
+ </text>
+ <text name="ShadersPrefText2">
+ Orta
+ </text>
+ <text name="ShadersPrefText3">
+ Yüksek
+ </text>
+ <text name="ShadersPrefText4">
+ Ultra
+ </text>
+ <panel label="ÖzelGrafikler" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Gölgelendiriciler:
+ </text>
+ <check_box initial_value="true" label="Saydam Su" name="TransparentWater"/>
+ <check_box initial_value="true" label="Tümsek eşleme ve parlaklık" name="BumpShiny"/>
+ <check_box initial_value="true" label="Yerel Işıklar" name="LocalLights"/>
+ <check_box initial_value="true" label="Temel gölgeleyiciler" name="BasicShaders" tool_tip="Bu seçeneğin devre dışı bırakılması bazı grafik kartlarının sürücülerinin kilitlenmesini önleyebilir"/>
+ <check_box initial_value="true" label="Atmosferik gölgeleyiciler" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Işıklandırma ve Gölgeler" name="UseLightShaders"/>
+ <check_box initial_value="true" label="Ortam Gölgeleme" name="UseSSAO"/>
+ <check_box initial_value="true" label="Alan Derinliği" name="UseDoF"/>
+ <text name="shadows_label">
+ Gölgeler:
+ </text>
+ <combo_box name="ShadowDetail">
+ <combo_box.item label="Hiçbiri" name="0"/>
+ <combo_box.item label="Güneş/Ay" name="1"/>
+ <combo_box.item label="Güneş/Ay + Projektörler" name="2"/>
+ </combo_box>
+ <text name="reflection_label">
+ Su Yansımaları:
+ </text>
+ <combo_box name="Reflections">
+ <combo_box.item label="Minimal" name="0"/>
+ <combo_box.item label="Yüzey ve ağaçlar" name="1"/>
+ <combo_box.item label="Tüm statik nesneler" name="2"/>
+ <combo_box.item label="Tüm avatarlar ve nesneler" name="3"/>
+ <combo_box.item label="Her şey" name="4"/>
+ </combo_box>
+ <slider label="Avatar Fzk. Özlk.:" name="AvatarPhysicsDetail"/>
+ <text name="AvatarPhysicsDetailText">
+ Düşük
+ </text>
+ <slider label="Mesafeyi çiz:" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Maks. parçacık sayısı:" name="MaxParticleCount"/>
+ <slider label="Düşük gr. özl. olmayan mks. avatar:" name="MaxNumberAvatarDrawn"/>
+ <slider label="Son işleme kalitesi:" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ Örgü detayı:
+ </text>
+ <slider label="Nesneler:" name="ObjectMeshDetail"/>
+ <slider label="Esnek primler:" name="FlexibleMeshDetail"/>
+ <slider label="Ağaçlar:" name="TreeMeshDetail"/>
+ <slider label="Avatarlar:" name="AvatarMeshDetail"/>
+ <slider label="Yüzey:" name="TerrainMeshDetail"/>
+ <slider label="Gökyüzü:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Düşük
+ </text>
+ <text name="ObjectMeshDetailText">
+ Düşük
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Düşük
+ </text>
+ <text name="TreeMeshDetailText">
+ Düşük
+ </text>
+ <text name="AvatarMeshDetailText">
+ Düşük
+ </text>
+ <text name="TerrainMeshDetailText">
+ Düşük
+ </text>
+ <text name="SkyMeshDetailText">
+ Düşük
+ </text>
+ <text name="AvatarRenderingText">
+ Avatar İşleme:
+ </text>
+ <check_box initial_value="true" label="Düşük grafik özellikli avatarlar" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Donanım ile kaplama" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="Avatar giysisi" name="AvatarCloth"/>
+ <text name="TerrainDetailText">
+ Yüzey detayı:
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item label="Düşük" name="0"/>
+ <radio_item label="Yüksek" name="2"/>
+ </radio_group>
+ --&gt;
+ </panel>
+ <button label="Uygula" label_selected="Uygula" name="Apply"/>
+ <button label="Sıfırla" name="Defaults"/>
+ <button label="Gelişmiş" name="Advanced"/>
+ <button label="Donanım" label_selected="Donanım" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
new file mode 100644
index 0000000000..c35eaec9c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Hareket Et" name="move_panel">
+ <slider label="Gröünüm açısı" name="camera_fov"/>
+ <slider label="Mesafe" name="camera_offset_scale"/>
+ <text name="heading2">
+ Şunun için otomatik konum:
+ </text>
+ <check_box label="İnşa Et/Düzenle" name="edit_camera_movement" tool_tip="Düzenleme moduna girerken ve düzenleme modundan çıkarken otomatik kamera konumunu kullanın"/>
+ <check_box label="Görünüm" name="appearance_camera_movement" tool_tip="Düzenleme modundayken otomatik kamera konumunu kullan"/>
+ <text name="keyboard_lbl">
+ Klavye:
+ </text>
+ <check_box label="Ok tuşları beni her zaman hareket ettirir" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Koşmak için iki kez dokun ve tut" name="tap_tap_hold_to_run"/>
+ <text name="mouse_lbl">
+ Fare:
+ </text>
+ <check_box label="Fare üzerinden görünümde beni göster" name="first_person_avatar_visible"/>
+ <text name=" Mouse Sensitivity">
+ Fare üzerinden görünümde fare hassasiyeti
+ </text>
+ <check_box label="Tersine çevir" name="invert_mouse"/>
+ <text name="single_click_action_lbl">
+ Arazi üzerine tek tıklama:
+ </text>
+ <combo_box name="single_click_action_combo">
+ <combo_box.item label="Eylem yok" name="0"/>
+ <combo_box.item label="Tıklanan noktaya hareket et" name="1"/>
+ </combo_box>
+ <text name="double_click_action_lbl">
+ Arazi üzerine çift tıklama:
+ </text>
+ <combo_box name="double_click_action_combo">
+ <combo_box.item label="Eylem yok" name="0"/>
+ <combo_box.item label="Tıklanan noktaya hareket et" name="1"/>
+ <combo_box.item label="Tıklanan noktaya ışınla" name="2"/>
+ </combo_box>
+ <button label="Diğer Aygıtlar" name="joystick_setup_button"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
new file mode 100644
index 0000000000..9111594979
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="İletişim" name="im">
+ <panel.string name="log_in_to_change">
+ değiştirmek için oturum açın
+ </panel.string>
+ <button label="Geçmişi Temizle" name="clear_cache" tool_tip="Oturum açma görüntüsünü, son konumu, ışınlama geçmişini, web ve dokulama önbelleğini temizleyin."/>
+ <text name="cache_size_label_l">
+ (Konumlar, görüntüler, web, arama geçmişi)
+ </text>
+ <check_box label="Arama sonuçlarında beni göster" name="online_searchresults"/>
+ <check_box label="Çevrimiçi olduğumu sadece arkadaşlar ve gruplar bilsin" name="online_visibility"/>
+ <check_box label="Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/>
+ <check_box label="Aramaları sonlandırırken mikrofonu kapat" name="auto_disengage_mic_check"/>
+ <check_box label="Oturum Açarken Favori Yer İmlerimi Göster (&apos;Buradan başla&apos; menüsünden)" name="favorites_on_login_check"/>
+ <text name="Logs:">
+ Sohbet Günlükleri:
+ </text>
+ <check_box label="Yakındaki sohbet günlüklerini bilgisayarımda göster" name="log_nearby_chat"/>
+ <check_box label="Aİ günlüklerini bilgisayarıma kaydet" name="log_instant_messages"/>
+ <check_box label="Sohbet günlüğünde her satıra zaman damgası eklensin" name="show_timestamps_check_im"/>
+ <check_box label="Günlük dosyası adına tarih damgası eklensin." name="logfile_name_datestamp"/>
+ <text name="log_path_desc">
+ Günlüklerin konumu:
+ </text>
+ <button label="Gözat" label_selected="Gözat" name="log_path_button"/>
+ <button label="Listeyi engelle" name="block_list"/>
+ <text name="block_list_label">
+ (Engellediğiniz Kişiler ve/veya Nesneler)
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
new file mode 100644
index 0000000000..12c175b8f5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ayarlar" name="Input panel">
+ <text name="Network:">
+ Ağ:
+ </text>
+ <text name="Maximum bandwidth">
+ Maksimum bant genişliği
+ </text>
+ <text name="text_box2">
+ kbps
+ </text>
+ <check_box label="Özel port" name="connection_port_enabled"/>
+ <spinner label="Port numarası:" name="connection_port"/>
+ <text name="Web:">
+ Web:
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="Tarayıcımı kullan (IE, Firefox, Safari)" name="external" tool_tip="Yardım, web bağlantıları vs. için sistemin varsayılan web tarayıcısını kullanın. Tam ekran çalıştırılıyorsa tavsiye edilmez." value="1"/>
+ <radio_item label="Yerleşik tarayıcıyı kullan" name="internal" tool_tip="Yardım, web bağlantıları vs. için dahili web tarayıcısını kullanın. Bu tarayıcı [APP_NAME] içerisinde yeni bir pencere olarak açılır." value=""/>
+ </radio_group>
+ <check_box initial_value="true" label="Eklentileri etkinleştir" name="browser_plugins_enabled"/>
+ <check_box initial_value="true" label="Çerezleri kabul et" name="cookies_enabled"/>
+ <check_box initial_value="true" label="Javascript&apos;i etkinleştir" name="browser_javascript_enabled"/>
+ <check_box initial_value="false" label="Ortam tarayıcısı açılır pencerelerini etkinleştir" name="media_popup_enabled"/>
+ <text name="Software updates:">
+ Yazılım güncelleştirmeleri:
+ </text>
+ <combo_box name="updater_service_combobox">
+ <combo_box.item label="Otomatik olarak kurulsun" name="Install_automatically"/>
+ <combo_box.item label="Güncelleştirmeler manuel olarak karşıdan yüklensin ve kurulsun" name="Install_manual"/>
+ </combo_box>
+ <text name="Proxy Settings:">
+ Proxy Ayarları:
+ </text>
+ <button label="Proxy ayarlarını yap" label_selected="Gözat" name="set_proxy"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml
new file mode 100644
index 0000000000..9256f1d324
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sesler" name="Preference Media panel">
+ <panel.string name="middle_mouse">
+ Orta Fare
+ </panel.string>
+ <slider label="Ana ses düzeyi" name="System Volume"/>
+ <check_box initial_value="true" name="mute_when_minimized"/>
+ <text name="mute_chb_label">
+ Küçültüldüğünde sustur
+ </text>
+ <slider label="Düğmeler" name="UI Volume"/>
+ <slider label="Ortam" name="Wind Volume"/>
+ <slider label="Ses Efektleri" name="SFX Volume"/>
+ <slider label="Müzik akışı" name="Music Volume"/>
+ <check_box label="Etkin" name="enable_music"/>
+ <slider label="Ortam" name="Media Volume"/>
+ <check_box label="Etkin" name="enable_media"/>
+ <slider label="Sesli Sohbet" name="Voice Volume"/>
+ <check_box label="Etkin" name="enable_voice_check"/>
+ <check_box label="Ortamı otomatik oynatmaya izin ver" name="media_auto_play_btn" tool_tip="istiyorsa ortamı otomatik oynatmak için bunu işaretleyin" value="true"/>
+ <check_box label="Diğer avatarlara eklenen ortamı oynat" name="media_show_on_others_btn" tool_tip="Yakınlardaki diğer avatarlara eklenen ortamı gizlemek için bunun işaretini kaldırın" value="true"/>
+ <check_box label="Mimiklere ses eşlik etsin" name="gesture_audio_play_btn" tool_tip="Mimiklerle beraber ses duymak için bunu işaretleyin" value="true"/>
+ <text name="voice_chat_settings">
+ Sesli Sohbet Ayarları
+ </text>
+ <text name="Listen from">
+ Şuradan dinle:
+ </text>
+ <radio_group name="ear_location">
+ <radio_item label="Kamera konumu" name="0"/>
+ <radio_item label="Avatar konumu" name="1"/>
+ </radio_group>
+ <check_box label="Konuşurken avatar dudaklarını hareket ettir" name="enable_lip_sync"/>
+ <check_box label="Aşağıdaki düğmeye bastığımda konuşmayı aç/kapat:" name="push_to_talk_toggle_check" tool_tip="Toggle (dönüşümlü) modda mikrofonunuzu açıp kapatmak için tetikleyici tuşuna BİR KERE basıp bırakın. Toggle (dönüşümlü) modda değilken mikrofonunuz sadece tetikleyici tuş basılı tutulurken sesinizi yayınlar."/>
+ <line_editor label="Bas-Konuş tetikleyici" name="modifier_combo"/>
+ <button label="Tuş Ayarla" name="set_voice_hotkey_button"/>
+ <button name="set_voice_middlemouse_button" tool_tip="Orta Fare Düğmesine Sıfırla"/>
+ <button label="Giriş/Çıkış cihazları" name="device_settings_btn"/>
+ <panel label="Cihaz Ayarları" name="device_settings_panel"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml
new file mode 100644
index 0000000000..0433d03450
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+ <string name="control_background_image_name">
+ Inspector_Background
+ </string>
+ <string name="skip_step">
+ 0.2
+ </string>
+ <string name="min_width">
+ 300
+ </string>
+ <string name="min_height">
+ 75
+ </string>
+ <string name="zoom_near_padding">
+ 1.0
+ </string>
+ <string name="zoom_medium_padding">
+ 1.1
+ </string>
+ <string name="zoom_far_padding">
+ 1.5
+ </string>
+ <string name="top_world_view_avoid_zone">
+ 50
+ </string>
+ <layout_stack name="progress_indicator_area">
+ <layout_panel name="media_progress_indicator">
+ <progress_bar name="media_progress_bar" tool_tip="Ortam Yükleniyor"/>
+ </layout_panel>
+ </layout_stack>
+ <layout_stack name="media_controls">
+ <layout_panel name="back">
+ <button name="back_btn" tool_tip="Geri Git"/>
+ </layout_panel>
+ <layout_panel name="fwd">
+ <button name="fwd_btn" tool_tip="İleri Git"/>
+ </layout_panel>
+ <layout_panel name="home">
+ <button name="home_btn" tool_tip="Ana sayfa"/>
+ </layout_panel>
+ <layout_panel name="media_stop">
+ <button name="media_stop_btn" tool_tip="Ortamı durdur"/>
+ </layout_panel>
+ <layout_panel name="reload">
+ <button name="reload_btn" tool_tip="Yeniden Yükle"/>
+ </layout_panel>
+ <layout_panel name="stop">
+ <button name="stop_btn" tool_tip="Yüklemeyi durdur"/>
+ </layout_panel>
+ <layout_panel name="play">
+ <button name="play_btn" tool_tip="Ortamı oynat"/>
+ </layout_panel>
+ <layout_panel name="pause">
+ <button name="pause_btn" tool_tip="Ortamı duraklat"/>
+ </layout_panel>
+ <layout_panel name="media_address">
+ <line_editor name="media_address_url" tool_tip="Ortam URL&apos;si"/>
+ <layout_stack name="media_address_url_icons">
+ <layout_panel>
+ <icon name="media_whitelist_flag" tool_tip="Beyaz Liste etkin"/>
+ </layout_panel>
+ <layout_panel>
+ <icon name="media_secure_lock_flag" tool_tip="Güvenli Tarama"/>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="media_play_position">
+ <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Filmi oynatma ilerlemesi"/>
+ </layout_panel>
+ <layout_panel name="skip_back">
+ <button name="skip_back_btn" tool_tip="Geriletme"/>
+ </layout_panel>
+ <layout_panel name="skip_forward">
+ <button name="skip_forward_btn" tool_tip="İlerletme"/>
+ </layout_panel>
+ <layout_panel name="media_volume">
+ <button name="media_mute_button" tool_tip="Bu Ortamı Sustur"/>
+ <slider name="volume_slider" tool_tip="Ortam Volümü"/>
+ </layout_panel>
+ <layout_panel name="zoom_frame">
+ <button name="zoom_frame_btn" tool_tip="Ortama yakınlaştır"/>
+ </layout_panel>
+ <layout_panel name="close">
+ <button name="close_btn" tool_tip="Geri Zumla"/>
+ </layout_panel>
+ <layout_panel name="new_window">
+ <button name="new_window_btn" tool_tip="URL&apos;yi Tarayıcıda Aç"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_covenant.xml b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml
new file mode 100644
index 0000000000..5c46365aea
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sözleşme" name="Covenant">
+ <panel.string name="can_resell">
+ Bu bölgede satın alınan arazi tekrar satılabilir.
+ </panel.string>
+ <panel.string name="can_not_resell">
+ Bu bölgede satın alınan arazi tekrar satılamayabilir.
+ </panel.string>
+ <panel.string name="can_change">
+ Bu bölgede satın alınan arazi birleştirilebilir veya bölünebilir.
+ </panel.string>
+ <panel.string name="can_not_change">
+ Bu bölgede satın alınan arazi birleştirilemeyebilir veya bölünemeyebilir.
+ </panel.string>
+ <text name="estate_section_lbl">
+ Gayrimenkul
+ </text>
+ <text name="estate_name_lbl">
+ Ad:
+ </text>
+ <text name="estate_name_text">
+ anakara
+ </text>
+ <text name="estate_owner_lbl">
+ Sahip:
+ </text>
+ <text name="estate_owner_text">
+ (hiçbiri)
+ </text>
+ <text name="estate_cov_lbl">
+ Sözleşme:
+ </text>
+ <text name="covenant_timestamp_text">
+ Son Değiştirme: 31 Ara, Çar 16:00:00 1969
+ </text>
+ <text_editor name="covenant_editor">
+ Bu Gayrimenkul için Sözleşmesi yok.
+ </text_editor>
+ <button label="Sıfırla" name="reset_covenant"/>
+ <text name="covenant_help_text">
+ Sözleşmede yapılan değişiklikler gayrimenkul içerisindeki tüm parsellerde gösterilir.
+ </text>
+ <text name="covenant_instructions">
+ Bu gayrimenkul için Sözleşmeyi değiştirmek amacıyla bir not kartını sürükleyin ve bırakın.
+ </text>
+ <text name="region_section_lbl">
+ Bölge
+ </text>
+ <text name="region_name_lbl">
+ Ad:
+ </text>
+ <text name="region_name_text">
+ Erica
+ </text>
+ <text name="region_landtype_lbl">
+ Tür:
+ </text>
+ <text name="region_landtype_text">
+ Anakara / Banliyö
+ </text>
+ <text name="region_maturity_lbl">
+ Seviye:
+ </text>
+ <text name="region_maturity_text">
+ Yetişkin
+ </text>
+ <text name="resellable_lbl">
+ Tekrar Satış:
+ </text>
+ <text name="resellable_clause">
+ Bu bölgedeki arazi tekrar satılamayabilir.
+ </text>
+ <text name="changeable_lbl">
+ Böl:
+ </text>
+ <text name="changeable_clause">
+ Bu bölgedeki arazi birleştirilemeyebilir/bölünemeyebilir.
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_debug.xml b/indra/newview/skins/default/xui/tr/panel_region_debug.xml
new file mode 100644
index 0000000000..6e15e0f6f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_debug.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Hata ayıkla" name="Debug">
+ <text name="region_text_lbl">
+ Bölge:
+ </text>
+ <text name="region_text">
+ bilinmiyor
+ </text>
+ <check_box label="Komut Dosyalarını Devre Dışı Bırak" name="disable_scripts_check" tool_tip="Bu bölgedeki tüm komut dosyalarını devre dışı bırak"/>
+ <check_box label="Çarpışmaları Devre Dışı Bırak" name="disable_collisions_check" tool_tip="Bu bölgedeki avatar dışı çarpışmaları devre dışı bırak"/>
+ <check_box label="Fiziği Devre Dışı Bırak" name="disable_physics_check" tool_tip="Bu bölgedeki tüm fiziği devre dışı bırak"/>
+ <button label="Uygula" name="apply_btn"/>
+ <text name="objret_text_lbl">
+ Nesne İadesi
+ </text>
+ <text name="resident_text_lbl">
+ Sakin:
+ </text>
+ <line_editor name="target_avatar_name">
+ (hiçbiri)
+ </line_editor>
+ <button label="Seç" name="choose_avatar_btn"/>
+ <text name="options_text_lbl">
+ Seçenklr.:
+ </text>
+ <check_box label="Komut dosyaları ile" name="return_scripts" tool_tip="Sadece komut dosyaları olan nesneler iade edilsin"/>
+ <check_box label="Başkasına ait arazi üzerinde" name="return_other_land" tool_tip="Sadece başkasına ait arazi üzerinde olan nesneler iade edilsin"/>
+ <check_box label="Bu gayrimenkulu oluşturan bölgelerin tümünde" name="return_estate_wide" tool_tip="Bu gayrimenkulu oluşturan bölgelerin tümündeki nesneler iade edilsin"/>
+ <button label="İade Et" name="return_btn"/>
+ <button label="En Çok Çarpışanlar..." name="top_colliders_btn" tool_tip="En çok potansiyel çarpışma yaşayan nesnelerin listesi"/>
+ <button label="En Çok Komut Dsy. Çalştr...." name="top_scripts_btn" tool_tip="Komut dosyalarını çalıştırırken en çok zaman harcayan nesnelerin listesi"/>
+ <button label="Bölgeyi Yeniden Başlat" name="restart_btn" tool_tip="2 dakikalık bir geri sayımdan sonra bölgeyi yeniden başlat"/>
+ <button label="Yeniden Başlatmayı Ertele" name="cancel_restart_btn" tool_tip="Bölgenin yeniden başlatılmasını 1 saat ertele"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_environment.xml b/indra/newview/skins/default/xui/tr/panel_region_environment.xml
new file mode 100644
index 0000000000..058ea91b70
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ortam" name="panel_env_info">
+ <text name="water_settings_title">
+ Bölgenize gelen tüm ziyaretçilerin görmesini istediğiniz Su ve Gökyüzü/Gündüz Döngüsü Ayarlarını seçin. Ek bilgi
+ </text>
+ <radio_group name="region_settings_radio_group">
+ <radio_item label="Second Life varsayılanını kullan" name="use_sl_default_settings"/>
+ <radio_item label="Aşağıdaki ayarları kullan" name="use_my_settings"/>
+ </radio_group>
+ <panel name="user_environment_settings">
+ <text name="water_settings_title">
+ Su Ayarı
+ </text>
+ <combo_box name="water_settings_preset_combo">
+ <combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+ </combo_box>
+ <text name="sky_dayc_settings_title">
+ Gökyüzü/Gün Dön.
+ </text>
+ <radio_group name="sky_dayc_settings_radio_group">
+ <radio_item label="Sabit gökyüzü" name="my_sky_settings"/>
+ <radio_item label="Gün döngüsü" name="my_dayc_settings"/>
+ </radio_group>
+ <combo_box name="sky_settings_preset_combo">
+ <combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+ </combo_box>
+ <combo_box name="dayc_settings_preset_combo">
+ <combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+ </combo_box>
+ </panel>
+ <button label="Uygula" name="apply_btn"/>
+ <button label="İptal" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_estate.xml b/indra/newview/skins/default/xui/tr/panel_region_estate.xml
new file mode 100644
index 0000000000..4ba55cafb6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_estate.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Gayrimenkul" name="Estate">
+ <text name="estate_help_text">
+ Bu sekmedeki ayarlarda yapılan değişiklikler gayrimenkul içerisindeki tüm bölgeleri etkiler.
+ </text>
+ <text name="estate_text">
+ Gayrimenkul:
+ </text>
+ <text name="estate_name">
+ (bilinmiyor)
+ </text>
+ <text name="owner_text">
+ Gayrimenkul sahibi:
+ </text>
+ <text name="estate_owner">
+ (bilinmiyor)
+ </text>
+ <check_box label="Küresel Saati Kullan" name="use_global_time_check"/>
+ <check_box label="Sabit Güneş" name="fixed_sun_check"/>
+ <slider label="Faz" name="sun_hour_slider"/>
+ <check_box label="Kamusal Erişime İzin Ver" name="externally_visible_check"/>
+ <text name="Only Allow">
+ Erişimi şununla doğrulanan hesaplarla sınırla:
+ </text>
+ <check_box label="Dosyadaki Ödeme Bilgileri" name="limit_payment" tool_tip="Tanınmayan Sakinleri Yasakla"/>
+ <check_box label="Yaş Doğrulama" name="limit_age_verified" tool_tip="Yaşını doğrulamayan Sakinleri yasakla Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
+ <check_box label="Sesli Sohbete İzin Ver" name="voice_chat_check"/>
+ <check_box label="Doğrudan Işınlamaya İzin Ver" name="allow_direct_teleport"/>
+ <button label="Uygula" name="apply_btn"/>
+ <button label="Gayrimenkule İleti Gönder..." name="message_estate_btn"/>
+ <button label="Sakinlerini Gayrimenkulden Çıkar..." name="kick_user_from_estate_btn"/>
+ <text name="estate_manager_label">
+ Gayrimenkul Yöneticileri:
+ </text>
+ <button label="Kaldır..." name="remove_estate_manager_btn"/>
+ <button label="Ekle..." name="add_estate_manager_btn"/>
+ <text name="allow_resident_label">
+ İzin verilen Sakinler:
+ </text>
+ <button label="Kaldır..." name="remove_allowed_avatar_btn"/>
+ <button label="Ekle..." name="add_allowed_avatar_btn"/>
+ <text name="allow_group_label">
+ İzin verilen Gruplar:
+ </text>
+ <button label="Kaldır..." name="remove_allowed_group_btn"/>
+ <button label="Ekle..." name="add_allowed_group_btn"/>
+ <text name="ban_resident_label">
+ Yasaklı Sakinler:
+ </text>
+ <button label="Kaldır..." name="remove_banned_avatar_btn"/>
+ <button label="Ekle..." name="add_banned_avatar_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_general.xml b/indra/newview/skins/default/xui/tr/panel_region_general.xml
new file mode 100644
index 0000000000..37da0f2cca
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_general.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Bölge" name="General">
+ <text name="region_text_lbl">
+ Bölge:
+ </text>
+ <text name="region_text">
+ bilinmiyor
+ </text>
+ <text name="version_channel_text_lbl">
+ Sürüm:
+ </text>
+ <text name="version_channel_text">
+ bilinmiyor
+ </text>
+ <text name="region_type_lbl">
+ Tür:
+ </text>
+ <text name="region_type">
+ bilinmiyor
+ </text>
+ <check_box label="Yer Şekillendirmeyi Engelle" name="block_terraform_check"/>
+ <check_box label="Uçmayı Engelle" name="block_fly_check"/>
+ <check_box label="Hasara İzin Ver" name="allow_damage_check"/>
+ <check_box label="İtmeyi Kısıtla" name="restrict_pushobject"/>
+ <check_box label="Arazinin Tekrar Satışına İzin Ver" name="allow_land_resell_check"/>
+ <check_box label="Arazinin Birleşmesine/Bölünmesine İzin Ver" name="allow_parcel_changes_check"/>
+ <check_box label="Aramada Arazinin Gösterilmesini Engelle" name="block_parcel_search_check" tool_tip="Arama sonuçlarında bu bölge ve parselleri görünsün"/>
+ <check_box label="Örgü Nesnelere İzin Ver" name="mesh_rez_enabled_check" tool_tip="Bu bölgede insanların örgü nesneleri oluşturmasına izin verilsin"/>
+ <spinner label="Aracı Limiti" name="agent_limit_spin"/>
+ <spinner label="Nesne Bonusu" name="object_bonus_spin"/>
+ <text label="Erişkinlik" name="access_text">
+ Seviye:
+ </text>
+ <icons_combo_box label="Orta" name="access_combo">
+ <icons_combo_box.item label="Yetişkin" name="Adult" value="42"/>
+ <icons_combo_box.item label="Orta" name="Mature" value="21"/>
+ <icons_combo_box.item label="Genel" name="PG" value="13"/>
+ </icons_combo_box>
+ <button label="Uygula" name="apply_btn"/>
+ <button label="Bir Sakini Ana Konuma Işınla..." name="kick_btn"/>
+ <button label="Tüm Sakinleri Ana Konuma Işınla..." name="kick_all_btn"/>
+ <button label="Bölgeye İleti Gönder..." name="im_btn"/>
+ <button label="Işınlanma İstasyonu Yönet..." name="manage_telehub_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_terrain.xml b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml
new file mode 100644
index 0000000000..3226ee008e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Yüzey" name="Terrain">
+ <text name="region_text_lbl">
+ Bölge:
+ </text>
+ <text name="region_text">
+ bilinmiyor
+ </text>
+ <spinner label="Su Yüksekliği" name="water_height_spin"/>
+ <spinner label="Yüzey Yükslt. Limiti" name="terrain_raise_spin"/>
+ <spinner label="Yüzey Alçatma Limiti" name="terrain_lower_spin"/>
+ <text name="detail_texture_text">
+ Yüzey Dokuları (512x512, 24 bit .tga dosyalar gerektirir)
+ </text>
+ <text name="height_text_lbl">
+ 1 (Düşük)
+ </text>
+ <text name="height_text_lbl2">
+ 2
+ </text>
+ <text name="height_text_lbl3">
+ 3
+ </text>
+ <text name="height_text_lbl4">
+ 4 (Yüksek)
+ </text>
+ <text name="height_text_lbl5">
+ Doku Yükselti Aralıkları
+ </text>
+ <text name="height_text_lbl10">
+ Bu değerler yukarıdaki dokular için karışım aralığını temsil eder.
+ </text>
+ <text name="height_text_lbl11">
+ Metre cinsinden olan bu değerler için, DÜŞÜK değer 1. Dokunun MAKSİMUM yüksekliği, YÜKSEK değer ise 4. Dokunun MİNİMUM yüksekliğidir.
+ </text>
+ <text name="height_text_lbl6">
+ Kuzeybatı
+ </text>
+ <text name="height_text_lbl7">
+ Kuzeydoğu
+ </text>
+ <spinner label="Düşük" name="height_start_spin_1"/>
+ <spinner label="Düşük" name="height_start_spin_3"/>
+ <spinner label="Yüksek" name="height_range_spin_1"/>
+ <spinner label="Yüksek" name="height_range_spin_3"/>
+ <text name="height_text_lbl8">
+ Güneybatı
+ </text>
+ <text name="height_text_lbl9">
+ Güneydoğu
+ </text>
+ <spinner label="Düşük" name="height_start_spin_0"/>
+ <spinner label="Düşük" name="height_start_spin_2"/>
+ <spinner label="Yüksek" name="height_range_spin_0"/>
+ <spinner label="Yüksek" name="height_range_spin_2"/>
+ <button label="Ham yüzeyi indir..." name="download_raw_btn" tool_tip="Sadece gayrimenkul sahipleri kullanabilir, yöneticiler kullanamaz"/>
+ <button label="Ham yüzeyi karşıya yükle..." name="upload_raw_btn" tool_tip="Sadece gayrimenkul sahipleri kullanabilir, yöneticiler kullanamaz"/>
+ <button label="Yüzeyi Kaydet" name="bake_terrain_btn" tool_tip="Yükseltme/alçaltma limitleri için mevcut yüzeyi orta nokta olarak ayarla"/>
+ <button label="Uygula" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_texture.xml b/indra/newview/skins/default/xui/tr/panel_region_texture.xml
new file mode 100644
index 0000000000..fd7ca2a893
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_texture.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Zemin Dokuları" name="Textures">
+ <text name="region_text_lbl">
+ Bölge:
+ </text>
+ <text name="region_text">
+ bilinmiyor
+ </text>
+ <text name="detail_texture_text">
+ Yüzey Dokuları (512x512, 24 bit .tga dosyalar gerektirir)
+ </text>
+ <text name="height_text_lbl">
+ 1 (Düşük)
+ </text>
+ <text name="height_text_lbl2">
+ 2
+ </text>
+ <text name="height_text_lbl3">
+ 3
+ </text>
+ <text name="height_text_lbl4">
+ 4 (Yüksek)
+ </text>
+ <text name="height_text_lbl5">
+ Doku Yükselti Aralıkları
+ </text>
+ <text name="height_text_lbl6">
+ Kuzeybatı
+ </text>
+ <text name="height_text_lbl7">
+ Kuzeydoğu
+ </text>
+ <spinner label="Düşük" name="height_start_spin_1"/>
+ <spinner label="Düşük" name="height_start_spin_3"/>
+ <spinner label="Yüksek" name="height_range_spin_1"/>
+ <spinner label="Yüksek" name="height_range_spin_3"/>
+ <text name="height_text_lbl8">
+ Güneybatı
+ </text>
+ <text name="height_text_lbl9">
+ Güneydoğu
+ </text>
+ <spinner label="Düşük" name="height_start_spin_0"/>
+ <spinner label="Düşük" name="height_start_spin_2"/>
+ <spinner label="Yüksek" name="height_range_spin_0"/>
+ <spinner label="Yüksek" name="height_range_spin_2"/>
+ <text name="height_text_lbl10">
+ Bu değerler yukarıdaki dokular için karışım aralığını temsil eder.
+ </text>
+ <text name="height_text_lbl11">
+ Metre cinsinden olan bu değerler için, DÜŞÜK değer 1. Dokunun MAKSİMUM yüksekliği, YÜKSEK değer ise 4. Dokunun MİNİMUM yüksekliğidir.
+ </text>
+ <button label="Uygula" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_script_ed.xml b/indra/newview/skins/default/xui/tr/panel_script_ed.xml
new file mode 100644
index 0000000000..bc30320fa5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_script_ed.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ Yükleniyor...
+ </panel.string>
+ <panel.string name="can_not_view">
+ Bu komut dosyasını görüntüleyemez veya düzenleyemezsiniz, çünkü &quot;kopyalanamaz&quot; olarak ayarlanmıştır. Bir nesnenin içerisindeki bir komut dosyasını görüntülemek veya düzenlemek için tam izinlere ihtiyacınız var.
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ Kamuya Açık Nesneler komut dosyalarını çalıştıramaz
+ </panel.string>
+ <panel.string name="script_running">
+ Çalışıyor
+ </panel.string>
+ <panel.string name="Title">
+ Komut Dosyası: [NAME]
+ </panel.string>
+ <panel.string name="external_editor_not_set">
+ Ortam değişkeni LL_SCRIPT_EDITOR&apos;ü ayarlayarak veya ExternalEditor ayarını yaparak bir düzenleyici seçin.
+ </panel.string>
+ <menu_bar name="script_menu">
+ <menu label="Dosya" name="File">
+ <menu_item_call label="Kaydet" name="Save"/>
+ <menu_item_call label="Tüm Değişiklikleri Geri Çevir" name="Revert All Changes"/>
+ </menu>
+ <menu label="Düzenle" name="Edit">
+ <menu_item_call label="Geri Al" name="Undo"/>
+ <menu_item_call label="Yinele" name="Redo"/>
+ <menu_item_call label="Kes" name="Cut"/>
+ <menu_item_call label="Kopyala" name="Copy"/>
+ <menu_item_call label="Yapıştır" name="Paste"/>
+ <menu_item_call label="Tümünü Seç" name="Select All"/>
+ <menu_item_call label="Seçimi Kaldır" name="Deselect"/>
+ <menu_item_call label="Ara / Değiştir..." name="Search / Replace..."/>
+ </menu>
+ <menu label="Yardım" name="Help">
+ <menu_item_call label="Yardım..." name="Help..."/>
+ <menu_item_call label="Anahtar Sözcük Yardımı..." name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+ <text_editor name="Script Editor">
+ Yükleniyor...
+ </text_editor>
+ <combo_box label="Ekle..." name="Insert..."/>
+ <button label="Kaydet" label_selected="Kaydet" name="Save_btn"/>
+ <button label="Düzenle..." name="Edit_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml
new file mode 100644
index 0000000000..c821dc45c1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="AVATARIM" name="script_limits_my_avatar_panel">
+ <text name="script_memory">
+ Avatar Komut Dosyası Kullanımı
+ </text>
+ <text name="loading_text">
+ Yükleniyor...
+ </text>
+ <scroll_list name="scripts_list">
+ <scroll_list.columns label="Büyüklük (kb)" name="size"/>
+ <scroll_list.columns label="URL&apos;ler" name="urls"/>
+ <scroll_list.columns label="Nesne Adı" name="name"/>
+ <scroll_list.columns label="Konum" name="location"/>
+ </scroll_list>
+ <button label="Listeyi Yenile" name="refresh_list_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml
new file mode 100644
index 0000000000..2994aba39b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="BÖLGE BELLEĞİ" name="script_limits_region_memory_panel">
+ <text name="script_memory">
+ Parsel Komut Dosyası Belleği
+ </text>
+ <text name="loading_text">
+ Yükleniyor...
+ </text>
+ <scroll_list name="scripts_list">
+ <scroll_list.columns label="Büyüklük (kb)" name="size"/>
+ <scroll_list.columns label="URL&apos;ler" name="urls"/>
+ <scroll_list.columns label="Nesne Adı" name="name"/>
+ <scroll_list.columns label="Nesne Sahibi" name="owner"/>
+ <scroll_list.columns label="Parsel" name="parcel"/>
+ <scroll_list.columns label="Konum" name="location"/>
+ </scroll_list>
+ <button label="Listeyi Yenile" name="refresh_list_btn"/>
+ <button label="Vurgula" name="highlight_btn"/>
+ <button label="İade Et" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml
new file mode 100644
index 0000000000..aabdc7358b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParam">
+ <text name="Loading...">
+ Yükleniyor...
+ </text>
+ <text name="Loading...2">
+ Yükleniyor...
+ </text>
+ <slider label="[DESC]" name="param slider"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml
new file mode 100644
index 0000000000..fa659040ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParamBase">
+ <slider label="[DESC]" name="param slider"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_side_tray.xml b/indra/newview/skins/default/xui/tr/panel_side_tray.xml
new file mode 100644
index 0000000000..97bca38a50
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_side_tray.xml
@@ -0,0 +1,29 @@
+<?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="Yan Çubuğu Aç/Kapa." name="sidebar_openclose" tab_title="Yan Çubuğu Aç/Kapa"/>
+ <sidetray_tab description="Ana konum." name="sidebar_home" tab_title="Ana konum">
+ <panel label="ana konum" name="panel_home"/>
+ </sidetray_tab>
+ <sidetray_tab description="Kamuya açık profilinizi ve Favorilerinizi düzenleyin." name="sidebar_me" tab_title="Profilim">
+ <panel_container name="panel_container">
+ <panel label="Ben" name="panel_me"/>
+ </panel_container>
+ </sidetray_tab>
+ <sidetray_tab description="Yakındaki arkadaşlarınızı, irtibatları ve kişileri bulun." name="sidebar_people" tab_title="Kişiler">
+ <panel_container name="panel_container">
+ <panel label="Grup Profili" name="panel_group_info_sidetray"/>
+ <panel label="Engellenmiş Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+ </panel_container>
+ </sidetray_tab>
+ <sidetray_tab description="Gitmek istediğiniz yerleri ve daha önce uğradığınız yerleri bulun." label="Yerler" name="sidebar_places" tab_title="Yerler">
+ <panel label="Yerler" name="panel_places"/>
+ </sidetray_tab>
+ <sidetray_tab description="Envanterinize göz atın." name="sidebar_inventory" tab_title="Envanterim">
+ <panel label="Envanteri Düzenle" name="sidepanel_inventory"/>
+ </sidetray_tab>
+ <sidetray_tab description="Görünümünüzü değiştirin." name="sidebar_appearance" tab_title="Görünümüm">
+ <panel label="Görünümü Düzenle" name="sidepanel_appearance"/>
+ </sidetray_tab>
+</side_tray>
diff --git a/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml
new file mode 100644
index 0000000000..b9c39ef8cb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+ <text name="sidetray_tab_title" value="Yan Panel"/>
+ <button name="undock" tool_tip="Ayır"/>
+ <button name="dock" tool_tip="Yerleştir"/>
+ <button name="show_help" tool_tip="Yardımı Göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_sound_devices.xml b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml
new file mode 100644
index 0000000000..982ef2ea3b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Cihaz Ayarları" name="device_settings_panel">
+ <panel.string name="default_text">
+ Varsayılan
+ </panel.string>
+ <string name="name_no_device">
+ Cihaz Yok
+ </string>
+ <string name="name_default_system_device">
+ Varsayılan Sistem Cihazı
+ </string>
+ <text name="Input">
+ Girdi
+ </text>
+ <text name="Output">
+ Çıktı
+ </text>
+ <text name="My volume label">
+ Ses düzeyim:
+ </text>
+ <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Bu kaydırıcıyı kullanarak ses düzeyini değiştirin"/>
+ <text name="wait_text">
+ Lütfen bekleyin
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml
new file mode 100644
index 0000000000..91d07a3b0c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/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="Ayağa Kalk" name="stand_btn" tool_tip="Kalkmak için buraya tıklayın."/>
+ <button label="Uçmayı Durdur" name="stop_fly_btn" tool_tip="Uçmayı durdur"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_status_bar.xml b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
new file mode 100644
index 0000000000..63726b94e2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+ <panel.string name="packet_loss_tooltip">
+ Paket Kaybı
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
+ Bant genişliği
+ </panel.string>
+ <panel.string name="time">
+ [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
+ </panel.string>
+ <panel.string name="timeTooltip">
+ [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+ </panel.string>
+ <panel.string name="buycurrencylabel">
+ L$ [AMT]
+ </panel.string>
+ <panel name="balance_bg">
+ <text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$20"/>
+ <button label="L$ Satın Al" name="buyL" tool_tip="Daha fazla L$ satın almak için tıklayın"/>
+ <button label="Alışveriş yap" name="goShop" tool_tip="Second Life Pazaryeri Aç"/>
+ </panel>
+ <text name="TimeText" tool_tip="Geçerli zaman (Pasifik)">
+ 24:00 AM PST
+ </text>
+ <button name="media_toggle_btn" tool_tip="Tüm Ortam Öğelerini Başlat/Durdur (Müzik, Video, Web sayfaları)"/>
+ <button name="volume_btn" tool_tip="Küresel Ses Kontrolü"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml
new file mode 100644
index 0000000000..f5b1175029
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+ <accordion name="history_accordion">
+ <no_matched_tabs_text name="no_matched_teleports_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/places/[SEARCH_TERM] Arama] ile bulmayı deneyin."/>
+ <no_visible_tabs_text name="no_teleports_msg" value="Işınlanma geçmişi boş. [secondlife:///app/search/places/ Arama] yapmayı deneyin."/>
+ <accordion_tab name="today" title="Bugün"/>
+ <accordion_tab name="yesterday" title="Dün"/>
+ <accordion_tab name="2_days_ago" title="2 gün önce"/>
+ <accordion_tab name="3_days_ago" title="3 gün önce"/>
+ <accordion_tab name="4_days_ago" title="4 gün önce"/>
+ <accordion_tab name="5_days_ago" title="5 gün önce"/>
+ <accordion_tab name="6_days_and_older" title="6 gün önce ve daha eski"/>
+ <accordion_tab name="1_month_and_older" title="1 ay önce ve daha eski"/>
+ <accordion_tab name="6_months_and_older" title="6 ay önce ve daha eski"/>
+ </accordion>
+ <panel name="bottom_panel">
+ <menu_button name="gear_btn" tool_tip="İlave seçenekleri göster"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml
new file mode 100644
index 0000000000..a3a5c70c7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="teleport_history_item">
+ <text name="region" value="..."/>
+ <button name="profile_btn" tool_tip="Envanter bilgilerini göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
new file mode 100644
index 0000000000..b46833d7e6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_voice_effect">
+ <string name="no_voice_effect">
+ Ses Şekillendirme Kapalı
+ </string>
+ <string name="preview_voice_effects">
+ Ses Şekillendirme Önizleme ▶
+ </string>
+ <string name="get_voice_effects">
+ Ses Şekillendirmeyi Etkinleştir ▶
+ </string>
+ <combo_box name="voice_effect" tool_tip="Sesinizi değiştirmek için bir Ses Şekli seçin">
+ <combo_box.item label="Ses Şekillendirme Kapalı" name="no_voice_effect"/>
+ </combo_box>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_world_map.xml b/indra/newview/skins/default/xui/tr/panel_world_map.xml
new file mode 100644
index 0000000000..5595c13a7c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_world_map.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+ <panel.string name="Loading">
+ Yükleniyor...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Geçersiz Konum
+ </panel.string>
+ <panel.string name="world_map_north">
+ K
+ </panel.string>
+ <panel.string name="world_map_east">
+ D
+ </panel.string>
+ <panel.string name="world_map_west">
+ B
+ </panel.string>
+ <panel.string name="world_map_south">
+ G
+ </panel.string>
+ <panel.string name="world_map_southeast">
+ GD
+ </panel.string>
+ <panel.string name="world_map_northeast">
+ KD
+ </panel.string>
+ <panel.string name="world_map_southwest">
+ GB
+ </panel.string>
+ <panel.string name="world_map_northwest">
+ KB
+ </panel.string>
+ <panel.string name="world_map_person">
+ 1 kişi
+ </panel.string>
+ <panel.string name="world_map_people">
+ [NUMBER] kişi
+ </panel.string>
+ <text label="K" name="floater_map_north">
+ K
+ </text>
+ <text label="D" name="floater_map_east">
+ D
+ </text>
+ <text label="B" name="floater_map_west">
+ B
+ </text>
+ <text label="G" name="floater_map_south">
+ G
+ </text>
+ <text label="GD" name="floater_map_southeast">
+ GD
+ </text>
+ <text label="KD" name="floater_map_northeast">
+ KD
+ </text>
+ <text label="GB" name="floater_map_southwest">
+ GB
+ </text>
+ <text label="KB" name="floater_map_northwest">
+ KB
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/role_actions.xml b/indra/newview/skins/default/xui/tr/role_actions.xml
new file mode 100644
index 0000000000..655ac64172
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/role_actions.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<role_actions>
+ <action_set description="Bu Yetenekler arasında gruba Üye ekleme ve çıkarma ile davetiye olmadan yeni Üyelerin katılmasına imkan tanıma yer alır." name="Membership">
+ <action description="Kişileri Bu Gruba Davet Et" longdescription="Roller bölümü &gt; Üyeler sekmesindeki &quot;Davet Et&quot; düğmesini kullanarak Kişileri Bu Gruba davet et" name="member invite" value="1"/>
+ <action description="Üyeleri Bu Gruptan Çıkar" longdescription="Roller bölümü &gt; Üyeler sekmesindeki &quot;Çıkar&quot; düğmesini kullanarak Üyeleri Bu Gruptan çıkar. Bir Sahip, başka bir Sahip dışında herkesi çıkartabilir. Eğer bir Sahip değilseniz, bir Üyenin bir gruptan çıkarılmasının tek yolu, Herkes Rolünde olmaları ve başka hiçbir Rolde OLMAMALARIDIR. Üyeleri Rollerden çıkarmak için, &quot;Üyeleri Rollerden Çıkar&quot; Yeteneğine sahip olmalısınız." name="member eject" value="2"/>
+ <action description="&quot;Katılıma Açık&quot; için Aç/Kapa yapın ve &quot;Kayıt Ücretini&quot; değiştirin" longdescription="Yeni üyelerin davetiye olmadan katılmasına imkan tanımak amacıyla &quot;Katılıma Açık&quot; için Aç/Kapa yapın ve Genel bölümünde &quot;Kayıt Ücretini&quot; değiştirin" name="member options" value="3"/>
+ </action_set>
+ <action_set description="Bu Yetenekler arasında grup Rolleri ekleme, kaldırma ve değiştirme; Rollere Üye ekleme ve kaldırma ile Rollere Yetenek atama imkanları yer alır." name="Roles">
+ <action description="Yeni Roller Oluştur" longdescription="Roller bölümü &gt; Roller sekmesinde yeni Roller oluşturun." name="role create" value="4"/>
+ <action description="Rolleri Silin" longdescription="Roller bölümü &gt; Roller sekmesinde Rolleri silin." name="role delete" value="5"/>
+ <action description="Rol adlarını, başlıklarını, açıklamalarını ve Rol üyelerinin kamuyla paylaşılıp paylaşılmadığını değiştirin" longdescription="Rol adlarını, başlıklarını, açıklamalarını ve Rol üyelerinin kamuyla paylaşılıp paylaşılmadığını değiştirin. Bu işlem, bir Rol seçtikten sonra Roller bölümü &gt; Roller sekmesinin altında yapılır." name="role properties" value="6"/>
+ <action description="Üyeleri Atayan Rollerine Atama" longdescription="Üyeleri Atanmış Roller listesindeki Rollere atayın (Roller bölümü &gt; Üyeler sekmesi). Bu Yeteneğe sahip bir Üye, sadece atayanın zaten olduğu bir Role Üye ekleyebilir." name="role assign member limited" value="7"/>
+ <action description="Üyelere Herhangi bir Role Atama" longdescription="Üyeleri Atanmış Roller listesindeki Herhangi Bir Role atayın (Roller bölümü &gt; Üyeler sekmesi). *UYARI* Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisini -- ve başka herhangi bir Sahip olmayan Üyeyi -- şu anda sahip olduklarından daha fazla güce sahip olan Rollere atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="role assign member" value="8"/>
+ <action description="Üyeleri Rollerden Çıkarma" longdescription="Üyeleri Atanmış Roller listesindeki Rollerden çıkartın (Roller bölümü &gt; Üyeler sekmesi). Sahipler çıkartılamaz." name="role remove member" value="9"/>
+ <action description="Rollere Yetenek Atama ve Kaldırma" longdescription="İzin Verilen Yetenekler listesindeki her bir Rol için Rollere Yetenek Atayın ve Kaldırın ((Roller bölümü &gt; Üyeler sekmesi). *UYARI* Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisine -- ve diğer tüm Sahip olmayan Üyelere -- tüm Yetenekleri atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="role change actions" value="10"/>
+ </action_set>
+ <action_set description="Bu Yetenekler arasında grubun kimliğini değiştirme imkanları bulunmaktadır: Örneğin bilgilerin kamuya açıklığı, grup bildirgesi ve işaretleri." name="Group Identity">
+ <action description="Grup Bildirgesini, İşaretlerini ve &quot;Aramada gösterilsin&quot; ayarını değiştirme" longdescription="Grup Bildirgesini, İşaretlerini ve &quot;Aramada gösterilsin&quot; ayarını değiştirin. Bu işlem Genel bölümde yapılır." name="group change identity" value="11"/>
+ </action_set>
+ <action_set description="Bu Yetenekler arasında grubun sahip olduğu arazileri devretme, değiştirme ve satma imkanları vardır. Arazi Hakkında penceresine gitmek için, zemine sağ tıklayın ve &quot;Arazi Hakkında&quot; seçimini yapın ya da Gezinme Çubuğunda &quot;i&quot; simgesine tıklayın." name="Parcel Management">
+ <action description="Arazi devretme ve grup için arazi satın alma" longdescription="Arazi devredin ve grup için arazi satın alın. Bu işlem Arazi Hakkında &gt; Genel sekmesinde yapılır." name="land deed" value="12"/>
+ <action description="Vali Linden&apos;e arazi terketme" longdescription="Vali Linden&apos;e arazi terkedin. *UYARI* Bu Yeteneğe sahip bir Roldeki herhangi bir Üye, Arazi Hakkında &gt; Genel sekmesinde grubun sahip olduğu araziyi terkedebilir ve bir satış olmaksızın bunu Linden mülkiyetine geçirebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="land release" value="13"/>
+ <action description="Araziyi satışa çıkarma" longdescription="Araziyi satışa çıkarın. *UYARI* Bu Yeteneğe sahip bir Roldeki herhangi bir Üye, Arazi Hakkında &gt; Genel sekmesinde grubun sahip olduğu arazileri istedikleri gibi satabilir! Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="land set sale info" value="14"/>
+ <action description="Parselleri bölme ve birleştirme" longdescription="Parselleri bölün ve birleştirin. Bunu yapmak için zemine sağ tıklayın, &quot;Yüzeyi Düzenle&quot; seçimini yapın ve farenizi arazi üzerinde sürükleyerek bir seçim yapın. Araziyi bölmek için, bölmek istediğiniz araziyi seçin ve &quot;Böl&quot; üzerine tıklayın. Birleştirmek için, birbirine komşu iki veya daha fazla sayıda parsel seçin ve &quot;Birleştir&quot; üzerine tıklayın." name="land divide join" value="15"/>
+ </action_set>
+ <action_set description="Bu yetenekler arasında parsel adını ve yayınlama ayarlarını, Bul dizinindeki görünürlük ile iniş noktası ve TP yönlendirme seçeneklerini değiştirme imkanları yer alır." name="Parcel Identity">
+ <action description="&apos;Konumu Arama Sonuçlarında Göster&apos; seçeneğini Aç/Kapa ve kategoriyi ayarla" longdescription="Arazi Hakkında &gt; Seçenekler sekmesinden &apos;Konumu Arama Sonuçlarında Göster&apos; seçeneğini Açın/Kapayın ve parsel kategorisini ayarlayın." name="land find places" value="17"/>
+ <action description="Parsel adını, açıklamasını ve &quot;Konumu Arama Sonuçlarında Göster&quot; ayarlarını değiştir" longdescription="Parsel adını, açıklamasını ve &quot;Konumu Arama Sonuçlarında Göster&quot; ayarlarını değiştirin. Bu işlem Arazi Hakkında &gt; Seçenekler sekmesinde yapılır." name="land change identity" value="18"/>
+ <action description="İniş noktasını ve ışınlama yönlendirmesini ayarlayın" longdescription="Bir grubun sahip olduğu parsel üzerinde, bu Yeteneğe sahip olan bir Roldeki Üyeler gelen ışınlanmaların varacağı iniş noktasını ve daha fazla kontrol için ışınlama yönlendirmesini ayarlayabilirler. Bu işlem Arazi Hakkında &gt; Seçenekler sekmesinde yapılır." name="land set landing point" value="19"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere &apos;Nesneleri Oluştur&apos;, &apos;Yüzeyi Düzenle&apos;, müzik ve ortam ayarları gibi parsel seçeneklerini etkileyen güçler de dahildir." name="Parcel Settings">
+ <action description="Müziği &amp; ortam ayarlarını değiştir" longdescription="Akış müziğini ve film ayarlarını Arazi Hakkında &gt; Ortam sekmesinden değiştirin." name="land change media" value="20"/>
+ <action description="&apos;Yüzeyi Düzenle&apos; seçeneğini Aç/Kapa" longdescription="&apos;Yüzeyi Düzenle&apos; seçeneğini açın/kapatın. *UYARI* Arazi Hakkında &gt; Seçenekler sekmesi &gt; Yüzeyi Düzenle seçeneği, herhangi bir kişinin arazinizin şeklini değiştirmesine, Linden bitkileri yerleştirmesine ve bu bitkilerin yerlerini değiştirmesine izin verir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun. Yüzey düzenleme seçeneği Arazi Hakkında &gt; Seçenekler sekmesinden açılıp kapanır." name="land edit" value="21"/>
+ <action description="Arazi Hakkında &gt; Seçenekler sekmesindeki çeşitli ayarları Aç/Kapa" longdescription="&apos;Güvenli (hasar yok)&apos;, &apos;Uç&apos; ve diğer Second Life Sakinlerinin &apos;Yüzeyi Düzenle&apos;, &apos;İnşa Et&apos;, &apos;Yer İmleri Oluştur&apos; ve &apos;Komut Dosyalarını Çalıştır&apos; yeteneklerini grubun sahip olduğu arazi üzerinde kullanmalarına izin verme tercihini Arazi Hakkında &gt; Seçenekler sekmesinden açın/kapayın." name="land options" value="22"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere Üyelerin grubun sahip olduğu parseller üzerindeki kısıtlamaları geçmesine izin veren güçler de dahildir." name="Parcel Powers">
+ <action description="&apos;Yüzeyi Düzenle&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde yüzey düzenleme yapabilir." name="land allow edit land" value="23"/>
+ <action description="&apos;Uç&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde uçabilir." name="land allow fly" value="24"/>
+ <action description="&apos;Nesneleri Oluştur&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde nesne oluşturabilirler." name="land allow create" value="25"/>
+ <action description="&apos;Yer İmi Oluştur&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde yer imi oluşturabilirler." name="land allow landmark" value="26"/>
+ <action description="Grup arazisi üzerinde &apos;Ana Konumu Burası Olarak Seç&apos; yeteneğine izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, bu gruba devrediilmiş bir parsel üzerinde Dünya menüsü &gt; Yer imleri &gt; Ana Konumu Burası Olarak Seç seçeneğini kullanabilirler." name="land allow set home" value="28"/>
+ <action description="Grup arazisi üzerinde &apos;Etkinliğe Ev Sahipliği Yap&apos; yeteneğine izin ver" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler bir etkinliğe ev sahipliği yapmak için grubun sahip olduğu parselleri mekan olarak seçebilirler." name="land allow host event" value="41"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere, grubun sahip olduğu parsellere erişime izin verme veya buralara erişimi yasaklama ve Second Life Sakinlerini dondurma veya parselden dışarı çıkarma da dahildir." name="Parcel Access">
+ <action description="Parselin Erişim listelerini yönet" longdescription="Parselin Erişim listelerini Arazi Hakkında &gt; Erişim sekmesinden yönetin." name="land manage allowed" value="29"/>
+ <action description="Parselin Yasaklama listelerini yönet" longdescription="Parselin Yasaklama listelerini Arazi Hakkında &gt; Erişim sekmesinden yönetin." name="land manage banned" value="30"/>
+ <action description="Parselin &apos;Geçiş haklr. şuna sat&apos; ayarlarını değiştir" longdescription="Parselin &apos;Geçiş haklr. şuna sat&apos; ayarlarını Arazi Hakkında &gt; Erişim sekmesinden değiştirin." name="land manage passes" value="31"/>
+ <action description="Parsel üzerindeki Second Life Sakinlerini dışarı çıkar veya dondur" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, grubun sahip olduğu bir parsel üzerinde olmasını istemedikleri bir Second Life sakininin üzerini sağ tıklatıp &apos;Dışarı Çıkar&apos; veya &apos;Dondur&apos;u seçebilirler." name="land admin" value="32"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere üyelerin nesneleri iade etmelerine, Linden bitkilerini yerleştirmelerine ve bu bitkilerin yerlerini değiştirmelerine izin veren güçler de dahildir. Bu özellik, Üyelerin çöpleri temizlemeleri ve bahçe düzenlemesi yapmaları için kullanışlıdır; fakat dikkatle kullanılmalıdır, çünkü nesneleri iade etmenin geri alınma imkanı yoktur." name="Parcel Content">
+ <action description="Grubun sahip olduğu nesneleri iade et" longdescription="Grubun sahip olduğu parseller üzerinde grubun sahip olduğu nesneleri Arazi Hakkında &gt; Nesneler sekmesinden iade edin." name="land return group owned" value="48"/>
+ <action description="Gruba ayrılan nesneleri iade et" longdescription="Grubun sahip olduğu parseller üzerinde gruba ayrılan nesneleri Arazi Hakkında &gt; Nesneler sekmesinden iade edin." name="land return group set" value="33"/>
+ <action description="Gruba ait olmayan nesneleri iade et" longdescription="Grubun sahip olduğu parseller üzerinde gruba ait olmayan nesneleri Arazi Hakkında &gt; Nesneler sekmesinden iade edin." name="land return non group" value="34"/>
+ <action description="Linden bitkilerini kullanarak bahçe düzenleme" longdescription="Linden ağaçlarını, bitkilerini ve çimleri yerleştirerek veya yerlerini değiştirerek bahçe düzenleme yeteneği. Bu öğeler envanterinizin Kütüphane &gt; Nesneler klasörü içinde bulunabilir veya İnşa Et menüsünden oluşturulabilir." name="land gardening" value="35"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere grubun sahip olduğu nesneleri devretme, değiştirme ve satma güçleri de dahildir. Bu değişiklikler İnşa Et Araçları &gt; Genel sekmesinden yapılabilir. Bir nesneyi sağ tıklatıp Düzenle&apos;yi seçerek ayarlarını görebilirsiniz." name="Object Management">
+ <action description="Nesneleri gruba devret" longdescription="Nesneleri İnşa Et Araçları &gt; Genel sekmesinden gruba devredin." name="object deed" value="36"/>
+ <action description="Grubun sahip olduğu nesneleri kullan (taşı, kopyala, değiştir)" longdescription="Grubun sahip olduğu nesneleri, İnşa Et Araçları &gt; Genel sekmesi üzerinden kullanın (taşıyın, kopyalayın, değiştirin)." name="object manipulate" value="38"/>
+ <action description="Grubun sahip olduğu nesneleri satışa çıkar" longdescription="Grubun sahip olduğu nesneleri İnşa Et Araçları &gt; Genel sekmesinden satışa çıkarın." name="object set sale" value="39"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere Üyelerin grup borçlarını ödemesini ve grup kâr paylarını almasını sağlayan ve grup hesabının geçmiş bilgilerine erişimi sınırlandıran güçler de dahildir." name="Accounting">
+ <action description="Grup borçlarını öde ve grup kâr paylarını al" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler otomatik olarak grup borçlarını ödeyecek ve grup kâr paylarını alacaktır. Bu da grubun sahip olduğu arazi satışlarından kendilerine düşen ve günlük olarak dağıtılan ksımı alacakları gibi parsel için ilan verme ücreti gibi masraflara da katkıda bulunacakları anlamına gelir." name="accounting accountable" value="40"/>
+ </action_set>
+ <action_set description="Bu Yeteneklere Üyelerin grup Bildirimlerini gönderme, alma ve görüntüleme imkanı tanıyan güçler de dahildir." name="Notices">
+ <action description="Bildirimleri Gönder" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler Grup &gt; Bildirimler bölümünden Bildirimleri gönderebilir." name="notices send" value="42"/>
+ <action description="Bildirimleri Al ve eski Bildirimleri görüntüle" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler Bildirim alabilir ve Grup &gt; Bildirimler bölümündeki eski Bildirimleri görüntüleyebilir." name="notices receive" value="43"/>
+ </action_set>
+ <action_set description="Bu Yetenekler arasında grup sohbet oturumlarına ve grup sesli sohbetlerine izin verme veya bunları kısıtlama yetkileri de dahildir." name="Chat">
+ <action description="Grup Sohbetine Katıl" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler yazılı ve sesli grup sohbet oturumlarına katılabilir." name="join group chat" value="16"/>
+ <action description="Grup Sesli Sohbetine Katıl" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler grup sesli sohbet oturumlarına katılabilir. NOT: Sesli sohbet oturumuna erişim için Grup Sohbetine Katıl yeteneği gereklidir." name="join voice chat" value="27"/>
+ <action description="Grup Sohbetini Yönet" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler grup sesli ve yazılı sohbet oturumlarına errişimi ve katılımı kontrol edebilir." name="moderate group chat" value="37"/>
+ </action_set>
+</role_actions>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml
new file mode 100644
index 0000000000..b632f21cf5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Dış Görünümler" name="appearance panel">
+ <string name="No Outfit" value="Dış Görünüm Yok"/>
+ <string name="Unsaved Changes" value="Kaydedilmemiş değişiklikler"/>
+ <string name="Now Wearing" value="Şimdi giyiyor..."/>
+ <string name="Changing outfits" value="Dış görünümler değiştiriliyor"/>
+ <panel name="panel_currentlook">
+ <button label="E" name="editappearance_btn"/>
+ <button label="O" name="openoutfit_btn"/>
+ <text name="currentlook_status">
+ (Durum)
+ </text>
+ <text name="currentlook_name">
+ MOOSE gibi gerçekten Uzun bir Adla Dış Görünümüm
+ </text>
+ <button label="" name="edit_outfit_btn" tool_tip="Bu dış görünümü düzenle"/>
+ </panel>
+ <filter_editor label="Dış Görünümleri Filtrele" name="Filter"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
new file mode 100644
index 0000000000..70c449b402
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Eşyalar" name="objects panel">
+ <panel label="" name="sidepanel__inventory_panel">
+ <layout_stack name="inventory_layout_stack">
+ <layout_panel name="inbox_outbox_layout_panel">
+ <layout_stack name="inbox_outbox_layout_stack">
+ <layout_panel name="inbox_layout_panel">
+ <panel label="" name="marketplace_inbox">
+ <string name="InboxLabelWithArg">
+ Alınan öğeler ([NUM])
+ </string>
+ <string name="InboxLabelNoArg">
+ Alınan öğeler
+ </string>
+ <button label="Alınan öğeler" name="inbox_btn"/>
+ <text name="inbox_fresh_new_count">
+ [NUM] yeni
+ </text>
+ <panel tool_tip="Drag and drop items to your inventory to manage and use them">
+ <text name="inbox_inventory_placeholder">
+ Pazaryerinden satın alınan öğeler buraya teslim edilir.
+ </text>
+ </panel>
+ </panel>
+ </layout_panel>
+ <layout_panel name="outbox_layout_panel">
+ <panel label="" name="marketplace_outbox">
+ <string name="OutboxLabelWithArg">
+ Satıcı giden kutusu ([NUM])
+ </string>
+ <string name="OutboxLabelNoArg">
+ Satıcı giden kutusu
+ </string>
+ <button label="Satıcı giden kutusu" name="outbox_btn"/>
+ <button label="" name="outbox_sync_btn" tool_tip="Pazaryeri Vitrinime Gönder"/>
+ <panel>
+ <panel name="outbox_inventory_placeholder_panel">
+ <text name="outbox_inventory_placeholder_title">
+ Yükleniyor...
+ </text>
+ </panel>
+ </panel>
+ </panel>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ </layout_stack>
+ <panel name="button_panel">
+ <layout_stack name="button_panel_ls">
+ <layout_panel name="info_btn_lp">
+ <button label="Profil" name="info_btn" tool_tip="Nesne profilini göster"/>
+ </layout_panel>
+ <layout_panel name="share_btn_lp">
+ <button label="Paylaş" name="share_btn" tool_tip="Bir envanter öğesini paylaş"/>
+ </layout_panel>
+ <layout_panel name="shop_btn_lp">
+ <button label="Alışveriş yap" name="shop_btn" tool_tip="Pazaryeri web sayfasını aç"/>
+ <button label="Giy" name="wear_btn" tool_tip="Seçilen dış görünümü giy"/>
+ <button label="Oyna" name="play_btn"/>
+ <button label="Işınla" name="teleport_btn" tool_tip="Seçilen alana ışınla"/>
+ </layout_panel>
+ </layout_stack>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
new file mode 100644
index 0000000000..81291a431c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Öğe Profili">
+ <panel.string name="unknown">
+ (bilinmiyor)
+ </panel.string>
+ <panel.string name="public">
+ (kamuya açık)
+ </panel.string>
+ <panel.string name="you_can">
+ Şunu yapabilirsiniz:
+ </panel.string>
+ <panel.string name="owner_can">
+ Sahip şunu yapabilir:
+ </panel.string>
+ <panel.string name="acquiredDate">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </panel.string>
+ <panel.string name="origin_inventory">
+ (Envanter)
+ </panel.string>
+ <panel.string name="origin_inworld">
+ (SL Dünyası)
+ </panel.string>
+ <text name="title" value="Öğe Profili"/>
+ <text name="origin" value="(Envanter)"/>
+ <scroll_container name="item_profile_scroll">
+ <panel label="" name="item_profile">
+ <text name="LabelItemNameTitle">
+ Ad:
+ </text>
+ <text name="LabelItemDescTitle">
+ Açıklama:
+ </text>
+ <text name="LabelCreatorTitle">
+ Oluşturan:
+ </text>
+ <text name="LabelOwnerTitle">
+ Sahip:
+ </text>
+ <text name="LabelAcquiredTitle">
+ Alınan:
+ </text>
+ <panel name="perms_inv">
+ <text name="perm_modify">
+ Şunu yapabilirsiniz:
+ </text>
+ <check_box label="Değiştir" name="CheckOwnerModify"/>
+ <check_box label="Kopyala" name="CheckOwnerCopy"/>
+ <check_box label="Aktar" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ Herkes:
+ </text>
+ <check_box label="Kopyala" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Grup:
+ </text>
+ <check_box label="Paylaş" name="CheckShareWithGroup" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/>
+ <text name="NextOwnerLabel">
+ Sonraki sahip:
+ </text>
+ <check_box label="Değiştir" name="CheckNextOwnerModify"/>
+ <check_box label="Kopyala" name="CheckNextOwnerCopy"/>
+ <check_box label="Aktar" name="CheckNextOwnerTransfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+ </panel>
+ <check_box label="Satılık" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Kopyala" name="Copy"/>
+ <combo_box.item label="Orijinal" name="Original"/>
+ </combo_box>
+ <spinner label="Fiyat: L$" name="Edit Cost"/>
+ </panel>
+ </scroll_container>
+ <panel name="button_panel">
+ <button label="İptal" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
new file mode 100644
index 0000000000..2fa6281f05
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Nesne Profili">
+ <panel.string name="text deed continued">
+ Devret
+ </panel.string>
+ <panel.string name="text deed">
+ Devret
+ </panel.string>
+ <panel.string name="text modify info 1">
+ Bu nesneyi değiştirebilirsiniz
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Bu nesneleri değiştirebilirsiniz
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Bu nesneyi değiştiremezsiniz
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Bu nesneleri değiştiremezsiniz
+ </panel.string>
+ <panel.string name="text modify warning">
+ Bu nesne bağlantılı parçalara sahip
+ </panel.string>
+ <panel.string name="Cost Default">
+ Fiyat: L$
+ </panel.string>
+ <panel.string name="Cost Total">
+ Toplam Fiyat: L$
+ </panel.string>
+ <panel.string name="Cost Per Unit">
+ Birim Fiyatı: L$
+ </panel.string>
+ <panel.string name="Cost Mixed">
+ Karma Fiyat
+ </panel.string>
+ <panel.string name="Sale Mixed">
+ Karma Satış
+ </panel.string>
+ <text name="title" value="Nesne Profili"/>
+ <text name="where" value="(SL Dünyası)"/>
+ <panel label="" name="properties_panel">
+ <text name="Name:">
+ Ad:
+ </text>
+ <text name="Description:">
+ Açıklama:
+ </text>
+ <text name="CreatorNameLabel">
+ Oluşturan:
+ </text>
+ <text name="Owner:">
+ Sahip:
+ </text>
+ <text name="Group_label">
+ Grup:
+ </text>
+ <button name="button set group" tool_tip="Bu nesnenin izinlerini paylaşmak için bir grup seçin"/>
+ <name_box initial_value="Yükleniyor..." name="Group Name Proxy"/>
+ <button label="Devret" label_selected="Devret" name="button deed" tool_tip="Bu nesne devredilerek verildiğinde, nesnenin sonraki sahibi için izinler geçerli olur. Grup içerisinde paylaşılan nesneler bir grup yetkilisi tarafından devredilebilir."/>
+ <text name="label click action">
+ Şu eylem için tıklayın:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="Dokun (varsayılan)" name="Touch/grab(default)"/>
+ <combo_box.item label="Nesnenin üzerine otur" name="Sitonobject"/>
+ <combo_box.item label="Nesneyi satın al" name="Buyobject"/>
+ <combo_box.item label="Nesneye ödeme yap" name="Payobject"/>
+ <combo_box.item label="Aç" name="Open"/>
+ </combo_box>
+ <panel name="perms_inv">
+ <text name="perm_modify">
+ Bu nesneyi değiştirebilirsiniz
+ </text>
+ <text name="Anyone can:">
+ Herkes:
+ </text>
+ <check_box label="Kopyala" name="checkbox allow everyone copy"/>
+ <check_box label="Hareket Et" name="checkbox allow everyone move"/>
+ <text name="GroupLabel">
+ Grup:
+ </text>
+ <check_box label="Paylaş" name="checkbox share with group" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/>
+ <text name="NextOwnerLabel">
+ Sonraki sahip:
+ </text>
+ <check_box label="Değiştir" name="checkbox next owner can modify"/>
+ <check_box label="Kopyala" name="checkbox next owner can copy"/>
+ <check_box label="Aktar" name="checkbox next owner can transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+ </panel>
+ <check_box label="Satılık" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <combo_box.item label="Kopyala" name="Copy"/>
+ <combo_box.item label="İçerik" name="Contents"/>
+ <combo_box.item label="Orijinal" name="Original"/>
+ </combo_box>
+ <spinner label="Fiyat: L$" name="Edit Cost"/>
+ <check_box label="Aramada göster" name="search_check" tool_tip="Kişiler arama sonuçlarında bu nesneyi görebilsin"/>
+ <text name="B:">
+ B:
+ </text>
+ <text name="O:">
+ O:
+ </text>
+ <text name="G:">
+ G:
+ </text>
+ <text name="E:">
+ E:
+ </text>
+ <text name="N:">
+ N:
+ </text>
+ <text name="F:">
+ F:
+ </text>
+ </panel>
+ <panel name="button_panel">
+ <button label="Aç" name="open_btn"/>
+ <button label="Öde" name="pay_btn"/>
+ <button label="Satın Al" name="buy_btn"/>
+ <button label="Ayrıntl" name="details_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
new file mode 100644
index 0000000000..bf331dc3cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -0,0 +1,4950 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+ It is only for those strings which do not belong in a floater.
+ 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="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Second Life
+ </string>
+ <string name="CAPITALIZED_APP_NAME">
+ SECOND LIFE
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Second Life Ağı
+ </string>
+ <string name="SUPPORT_SITE">
+ Second Life Destek Portalı
+ </string>
+ <string name="StartupDetectingHardware">
+ Donanım saptanıyor...
+ </string>
+ <string name="StartupLoading">
+ [APP_NAME] yükleniyor...
+ </string>
+ <string name="StartupClearingCache">
+ Önbellek temizleniyor...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Doku önbelleği başlatılıyor...
+ </string>
+ <string name="StartupInitializingVFS">
+ VFS Başlatılıyor...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Grafik başlatma başarılamadı. Lütfen grafik sürücünüzü güncelleştirin!
+ </string>
+ <string name="ProgressRestoring">
+ Geri yükleniyor...
+ </string>
+ <string name="ProgressChangingResolution">
+ Çözünürlük değiştiriliyor...
+ </string>
+ <string name="Fullbright">
+ Tam parlak (eski)
+ </string>
+ <string name="LoginInProgress">
+ Oturum açılıyor. [APP_NAME] kilitlenmiş görünebilir. Lütfen bekleyin.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Oturum açılıyor...
+ </string>
+ <string name="LoginAuthenticating">
+ Kimlik doğrulaması yapılıyor
+ </string>
+ <string name="LoginMaintenance">
+ Hesap bakımı yapılıyor...
+ </string>
+ <string name="LoginAttempt">
+ Önceki oturum açma girişimi başarılamadı. Oturum açılıyor, [NUMBER]. girişim.
+ </string>
+ <string name="LoginPrecaching">
+ Dünya yükleniyor...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Katıştırılmış web tarayıcısı başlatılıyor...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Multimedya başlatılıyor...
+ </string>
+ <string name="LoginInitializingFonts">
+ Fontlar yükleniyor...
+ </string>
+ <string name="LoginVerifyingCache">
+ Önbellek dosyaları doğrulanıyor (60-90 saniye zaman alabilir)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Yanıt işleniyor...
+ </string>
+ <string name="LoginInitializingWorld">
+ Dünya başlatılıyor...
+ </string>
+ <string name="LoginDecodingImages">
+ Görüntülerin kodu çözülüyor...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ QuickTime Başlatılıyor...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ QuickTime bulunamadı - başlatılamadı.
+ </string>
+ <string name="LoginQuicktimeOK">
+ QuickTime başarıyla başlatıldı.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Bölge özellikleri talep ediliyor...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Bölge özellikleri talep ediliyor: [NUMBER]. girişim...
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Bölge el sıkışması bekleniyor...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Bölgeye bağlanılıyor...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Giysiler karşıdan yükleniyor...
+ </string>
+ <string name="InvalidCertificate">
+ Sunucu geçersiz veya bozuk bir sertifika döndürdü. Lütfen Ağ yöneticisine başvurun.
+ </string>
+ <string name="CertInvalidHostname">
+ Sunucuya erişmek için geçersiz bir ana bilgisayar adı kullanıldı, lütfen SLURL veya Ağ ana bilgisayar adınızı kontrol edin.
+ </string>
+ <string name="CertExpired">
+ Ağ tarafından döndürülen sertifikanın süresi sona ermiş görünüyor. Lütfen sistem saatinizi kontrol edin veya Ağ yöneticinize başvurun.
+ </string>
+ <string name="CertKeyUsage">
+ Sunucu tarafından döndürülen sertifika SSL için kullanılamadı. Lütfen Ağ yöneticinize başvurun.
+ </string>
+ <string name="CertBasicConstraints">
+ Sunucunun Sertifika zincirinde çok fazla sertifika vardı. Lütfen Ağ yöneticinize başvurun.
+ </string>
+ <string name="CertInvalidSignature">
+ Ağ sunucusu tarafından döndürülen sertifika imzası doğrulanamadı. Lütfen Ağ yöneticinize başvurun.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Ağ hatası: Bağlantı kurulamadı, lütfen ağ bağlantınızı kontrol edin.
+ </string>
+ <string name="LoginFailed">
+ Oturum açılamadı.
+ </string>
+ <string name="Quit">
+ Çık
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ Kullandığınız görüntüleyici ile artık Second Life&apos;a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin:
+http://secondlife.com/download
+
+Daha fazla bilgi edinmek için asağıdaki SSS sayfamızı ziyaret edin:
+http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Opsiyonel görüntüleyici güncelleştirmesi mevcut: [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Gerekli görüntüleyici güncelleştirmesi: [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ Bu aracı zaten oturum açmış durumda.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Üzgünüz! Oturumunuzu açamadık.
+Lütfen şunları doğru girdiğinizi kontrol edin:
+ * Kullanıcı adı (mustafayalcin12 veya faruk.gungoren gibi)
+ * Parola:
+Ayrıca lütfen Caps Lock tuşuna basmadığınıza emin olun.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ Güvenlik önlemi olarak parolanız değiştirildi.
+Lütfen hesap sayfanıza gidin: http://secondlife.com/password
+ve parolanızı sıfırlamak için güvenlik sorusunu yanıtlayın.
+Bu sorun için özür dileriz.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ Sistemimizde bazı değişiklikler yaptık, parolanızı sıfırlamanız gerekecek.
+Lütfen hesap sayfanıza gidin: http://secondlife.com/password
+ve parolanızı sıfırlamak için güvenlik sorusunu yanıtlayın.
+Bu sorun için özür dileriz.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ Second Life bakım amacıyla geçici olarak kapatıldı.
+Şu anda sadece çalışanlar oturum açabilir.
+Güncelleştirmeler için www.secondlife.com/status adresini kontrol edin.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ Second Life üzerindeki aktif kullanıcıların olası en iyi deneyimi yaşamasını sağlamak için, oturum açılması geçici olarak kısıtlanmıştır.
+
+Second Life için ödeme yapmış olan kişilere öncelik tanımak amacıyla, ücretsiz hesaplara sahip kişiler bu süre içerisinde Second Life&apos;a erişemeyecekler.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ Second Life&apos;a bu bilgisayardan erişemezsiniz.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun:
+support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ Hesabınıza şu zamana kadar erişemeyeceksiniz:
+Pasifik Saati ile [TIME].
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ Talebinizi şu anda tamamlayamıyoruz.
+Lütfen yardım almak için Second Life destek bölümüne başvurun: http://secondlife.com/support
+Eğer parolanızı değiştiremiyorsanız, lütfen şu numarayı arayın: (866) 476-9763.
+ </string>
+ <string name="LoginFailedTransformError">
+ Oturum açılması sırasında veri tutarsızlığı saptandı.
+Lütfen şu adrese başvurun: support@secondlife.com
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ Hesabınızda küçük çaplı bir bakım işlemi sürüyor.
+Hesabınıza şu zamana kadar erişemeyeceksiniz:
+Pasifik Saati ile [TIME].
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ Oturum kapatma talebi simülatörden bir hata yanıtı gelmesine neden oldu.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ Sistem şu anda oturumunuzu sonlandırıyor.
+Hesabınıza şu zamana kadar erişemeyeceksiniz:
+Pasifik Saati ile [TIME].
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ Geçerli bir oturum oluşturulamadı.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ Bir simülatöre bağlanılamadı.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Hesabınız Second Life&apos;a sadece
+Pasifik Saati ile [START] ve [END] arasında erişebilir.
+Lütfen bu saatler arasında tekrar uğrayın.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Yanlış parametreler.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ Ad parametresi alfasayısal olmalıdır.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ Soyadı parametresi alfasayısal olmalıdır.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ Bölge şu anda çevrimdışı oluyor.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ Aracı bölgede değil.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ Bu bölge başka bir oturum açmaktaydı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ Bu bölge önceki oturumu sonlandırmaktaydı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ Bu bölge hala bir önceki oturumu sonlandırma işlemini sürdürüyor.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LogoutSucceeded">
+ Bu bölge son oturumu sonlandırdı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ Bölge oturumu sonlandırma işlemini başlattı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ Sistem son oturumunuzu sonlandırma işlemini başlattı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+ </string>
+ <string name="AgentLostConnection">
+ Bu bölgede sorun yaşanıyor olabilir. Lütfen İnternet bağlantınızı kontrol edin.
+ </string>
+ <string name="SavingSettings">
+ Ayarlarınız kaydediliyor...
+ </string>
+ <string name="LoggingOut">
+ Oturum kapatılıyor...
+ </string>
+ <string name="ShuttingDown">
+ Kapatılıyor...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Bulunduğunuz bölgeyle bağlantınız kesildi.
+ </string>
+ <string name="SentToInvalidRegion">
+ Geçersiz bir bölgeye gönderildiniz.
+ </string>
+ <string name="TestingDisconnect">
+ Görüntüleyici bağlantısının kesilmesi test ediliyor
+ </string>
+ <string name="TooltipPerson">
+ Kişi
+ </string>
+ <string name="TooltipNoName">
+ (adsız)
+ </string>
+ <string name="TooltipOwner">
+ Sahip:
+ </string>
+ <string name="TooltipPublic">
+ Kamuya Açık
+ </string>
+ <string name="TooltipIsGroup">
+ (Grup)
+ </string>
+ <string name="TooltipForSaleL$">
+ Satılık: L$[AMOUNT]
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Grup İnşası
+ </string>
+ <string name="TooltipFlagNoBuild">
+ İnşa Edilemez
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Grup İnşası
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Güvenli Değil
+ </string>
+ <string name="TooltipFlagNoFly">
+ Uçamaz
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Grup Komut Dosyaları
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Komut Dosyası Yok
+ </string>
+ <string name="TooltipLand">
+ Arazi:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Buraya sadece bir öğe sürüklenebilir.
+ </string>
+ <string name="TooltipPrice" value="L$[AMOUNT]:"/>
+ <string name="TooltipOutboxNoTransfer">
+ Bu nesnelerden bir veya daha fazlası başka bir kullanıcıya satılamaz veya aktarılamaz.
+ </string>
+ <string name="TooltipOutboxWorn">
+ Bu nesnelerden bir veya daha fazlasını giyiyorsunuz. Bunları avatarınızdan kaldırın ve tekrar taşımayı deneyin.
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ Bu klasörde çok fazla alt klasör seviyesi var. Dahili klasörleri tekrar düzenleyerek maksimum 4 seviye derinliğe azaltın (Kök Klasör içinde A içinde B içinde C şeklinde).
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ Bu klasörde 200&apos;den fazla nesne var. Nesne sayısını azaltmak için öğelerden bazılarını kutuya koyun.
+ </string>
+ <string name="TooltipHttpUrl">
+ Bu web sayfasını görmek için tıklayın
+ </string>
+ <string name="TooltipSLURL">
+ Bu konumun bilgisini görmek için tıklayın
+ </string>
+ <string name="TooltipAgentUrl">
+ Bu Sakinin profilini görmek için tıklayın
+ </string>
+ <string name="TooltipAgentInspect">
+ Bu Sakin hakkında daha fazla bilgi öğrenin
+ </string>
+ <string name="TooltipAgentMute">
+ Bu Sakini engellemek için tıklayın
+ </string>
+ <string name="TooltipAgentUnmute">
+ Bu Sakinin engellemesini kaldırmak için tıklayın
+ </string>
+ <string name="TooltipAgentIM">
+ Bu Sakine Aİ göndermek için tıklayın
+ </string>
+ <string name="TooltipAgentPay">
+ Bu Sakine ödeme yapmak için tıklayın
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Bu Sakine bir ışınlama talebi teklif etmek için tıklayın
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Bu Sakine bir arkadaşlık talebi teklif etmek için tıklayın
+ </string>
+ <string name="TooltipGroupUrl">
+ Bu grubun açıklamasını görmek için tıklayın
+ </string>
+ <string name="TooltipEventUrl">
+ Bu etkinliğin açıklamasını görmek için tıklayın
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Bu ilanı görmek için tıklayın
+ </string>
+ <string name="TooltipParcelUrl">
+ Bu parselin açıklamasını görmek için tıklayın
+ </string>
+ <string name="TooltipTeleportUrl">
+ Bu konuma ışınlama yapmak için tıklayın
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Bu nesnenin açıklamasını görmek için tıklayın
+ </string>
+ <string name="TooltipMapUrl">
+ Bu konumu bir haritada görmek için tıklayın
+ </string>
+ <string name="TooltipSLAPP">
+ secondlife:// komutunu çalıştırmak için tıklayın
+ </string>
+ <string name="CurrentURL" value="Geçerli URL: [CurrentURL]"/>
+ <string name="SLurlLabelTeleport">
+ Şuraya ışınla:
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Şunun için Harita göster:
+ </string>
+ <string name="SLappAgentMute">
+ Engelle
+ </string>
+ <string name="SLappAgentUnmute">
+ Engellemeyi kaldır
+ </string>
+ <string name="SLappAgentIM">
+ Aİ
+ </string>
+ <string name="SLappAgentPay">
+ Öde
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Şuraya Işınlama Teklif Et:
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Arkadaşlık Talebi
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Kapat (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Kapat (Ctrl+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Kapat
+ </string>
+ <string name="BUTTON_RESTORE">
+ Geri Yükle
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Simge Durumuna Küçült
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Böl
+ </string>
+ <string name="BUTTON_DOCK">
+ Yerleştir
+ </string>
+ <string name="BUTTON_HELP">
+ Yardımı Göster
+ </string>
+ <string name="Searching">
+ Arıyor...
+ </string>
+ <string name="NoneFound">
+ Hiçbiri bulunamadı.
+ </string>
+ <string name="RetrievingData">
+ Alınıyor...
+ </string>
+ <string name="ReleaseNotes">
+ Sürüm Notları
+ </string>
+ <string name="LoadingData">
+ Yükleniyor...
+ </string>
+ <string name="AvatarNameNobody">
+ (hiçbiri)
+ </string>
+ <string name="AvatarNameWaiting">
+ (bekliyor)
+ </string>
+ <string name="AvatarNameMultiple">
+ (birden çok)
+ </string>
+ <string name="GroupNameNone">
+ (hiçbiri)
+ </string>
+ <string name="AvalineCaller">
+ Avaline Arayanı [ORDER]
+ </string>
+ <string name="AssetErrorNone">
+ Hata yok
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Varlık talebi: başarısız oldu
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Varlık talebi: var olmayan dosya
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Varlık talebi: veri tabanında varlık bulunamadı
+ </string>
+ <string name="AssetErrorEOF">
+ Dosya sonu
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Dosya açılamadı
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Dosya bulunamadı
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Dosya aktarımı zaman aşımı
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Devre yok
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Görüntüleyici ile sunucu fiyatta anlaşmadı
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Bilinmeyen durum
+ </string>
+ <string name="texture">
+ doku
+ </string>
+ <string name="sound">
+ ses
+ </string>
+ <string name="calling card">
+ arama kartı
+ </string>
+ <string name="landmark">
+ yer imi
+ </string>
+ <string name="legacy script">
+ eski komut dosyası
+ </string>
+ <string name="clothing">
+ giysi
+ </string>
+ <string name="object">
+ nesne
+ </string>
+ <string name="note card">
+ not kartı
+ </string>
+ <string name="folder">
+ klasör
+ </string>
+ <string name="root">
+ kök
+ </string>
+ <string name="lsl2 script">
+ LSL2 komut dosyası
+ </string>
+ <string name="lsl bytecode">
+ LSL bayt kodu
+ </string>
+ <string name="tga texture">
+ tga dokusu
+ </string>
+ <string name="body part">
+ vücut bölümü
+ </string>
+ <string name="snapshot">
+ anlık görüntü
+ </string>
+ <string name="lost and found">
+ Kaybedip Bulduklarım
+ </string>
+ <string name="targa image">
+ targa görüntüsü
+ </string>
+ <string name="trash">
+ Çöp
+ </string>
+ <string name="jpeg image">
+ jpeg görüntüsü
+ </string>
+ <string name="animation">
+ animasyon
+ </string>
+ <string name="gesture">
+ mimik
+ </string>
+ <string name="simstate">
+ sim durumu
+ </string>
+ <string name="favorite">
+ favori
+ </string>
+ <string name="symbolic link">
+ bağlantı
+ </string>
+ <string name="symbolic folder link">
+ klasör bağlantısı
+ </string>
+ <string name="mesh">
+ örgü
+ </string>
+ <string name="AvatarEditingAppearance">
+ (Görünümü Düzenliyor)
+ </string>
+ <string name="AvatarAway">
+ Uzakta
+ </string>
+ <string name="AvatarBusy">
+ Meşgul
+ </string>
+ <string name="AvatarMuted">
+ Engellenmiş
+ </string>
+ <string name="anim_express_afraid">
+ Korkmuş
+ </string>
+ <string name="anim_express_anger">
+ Kızgın
+ </string>
+ <string name="anim_away">
+ Uzakta
+ </string>
+ <string name="anim_backflip">
+ Geriye salto
+ </string>
+ <string name="anim_express_laugh">
+ İçten Kahkaha
+ </string>
+ <string name="anim_express_toothsmile">
+ Büyük Gülümseme
+ </string>
+ <string name="anim_blowkiss">
+ Öpücük Atma
+ </string>
+ <string name="anim_express_bored">
+ Canı Sıkılmış
+ </string>
+ <string name="anim_bow">
+ Selamlama
+ </string>
+ <string name="anim_clap">
+ Alkış
+ </string>
+ <string name="anim_courtbow">
+ Reverans
+ </string>
+ <string name="anim_express_cry">
+ Ağlama
+ </string>
+ <string name="anim_dance1">
+ Dans 1
+ </string>
+ <string name="anim_dance2">
+ Dans 2
+ </string>
+ <string name="anim_dance3">
+ Dans 3
+ </string>
+ <string name="anim_dance4">
+ Dans 4
+ </string>
+ <string name="anim_dance5">
+ Dans 5
+ </string>
+ <string name="anim_dance6">
+ Dans 6
+ </string>
+ <string name="anim_dance7">
+ Dans 7
+ </string>
+ <string name="anim_dance8">
+ Dans 8
+ </string>
+ <string name="anim_express_disdain">
+ Dudak Bükme
+ </string>
+ <string name="anim_drink">
+ İçme
+ </string>
+ <string name="anim_express_embarrased">
+ Utanmış
+ </string>
+ <string name="anim_angry_fingerwag">
+ İşaret Etme
+ </string>
+ <string name="anim_fist_pump">
+ Yumruk Sallama
+ </string>
+ <string name="anim_yoga_float">
+ Uçan Yoga
+ </string>
+ <string name="anim_express_frown">
+ Kaş Çatma
+ </string>
+ <string name="anim_impatient">
+ Sabırsız
+ </string>
+ <string name="anim_jumpforjoy">
+ Sevinçten Zıplama
+ </string>
+ <string name="anim_kissmybutt">
+ Kıçımı Öp
+ </string>
+ <string name="anim_express_kiss">
+ Öpücük
+ </string>
+ <string name="anim_laugh_short">
+ Gülme
+ </string>
+ <string name="anim_musclebeach">
+ Muscle Beach
+ </string>
+ <string name="anim_no_unhappy">
+ Hayır (Mutsuz)
+ </string>
+ <string name="anim_no_head">
+ Hayır
+ </string>
+ <string name="anim_nyanya">
+ Ha-ha-ha
+ </string>
+ <string name="anim_punch_onetwo">
+ Peşpeşe İki Yumruk
+ </string>
+ <string name="anim_express_open_mouth">
+ Ağız Açık
+ </string>
+ <string name="anim_peace">
+ Barış
+ </string>
+ <string name="anim_point_you">
+ Diğerini Göster
+ </string>
+ <string name="anim_point_me">
+ Kendini Göster
+ </string>
+ <string name="anim_punch_l">
+ Sola Yumruk At
+ </string>
+ <string name="anim_punch_r">
+ Sağa Yumruk At
+ </string>
+ <string name="anim_rps_countdown">
+ RPS sayımı
+ </string>
+ <string name="anim_rps_paper">
+ RPS kağıdı
+ </string>
+ <string name="anim_rps_rock">
+ RPS kayası
+ </string>
+ <string name="anim_rps_scissors">
+ RPS makası
+ </string>
+ <string name="anim_express_repulsed">
+ Tiksinmiş
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Döner Tekme
+ </string>
+ <string name="anim_express_sad">
+ Üzgün
+ </string>
+ <string name="anim_salute">
+ Selam
+ </string>
+ <string name="anim_shout">
+ Bağırma
+ </string>
+ <string name="anim_express_shrug">
+ Omuz Silkme
+ </string>
+ <string name="anim_express_smile">
+ Gülümseme
+ </string>
+ <string name="anim_smoke_idle">
+ Duman Tüttürme
+ </string>
+ <string name="anim_smoke_inhale">
+ Duman Çekme
+ </string>
+ <string name="anim_smoke_throw_down">
+ Yere İzmarit Atma
+ </string>
+ <string name="anim_express_surprise">
+ Sürpriz
+ </string>
+ <string name="anim_sword_strike_r">
+ Kılıç Darbesi
+ </string>
+ <string name="anim_angry_tantrum">
+ Öfke Nöbeti
+ </string>
+ <string name="anim_express_tongue_out">
+ Dil Çıkarma
+ </string>
+ <string name="anim_hello">
+ El Sallama
+ </string>
+ <string name="anim_whisper">
+ Fısıldama
+ </string>
+ <string name="anim_whistle">
+ Islık Çalma
+ </string>
+ <string name="anim_express_wink">
+ Göz Kırpma
+ </string>
+ <string name="anim_wink_hollywood">
+ Göz Kırpma (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Endişelenme
+ </string>
+ <string name="anim_yes_happy">
+ Evet (Mutlu)
+ </string>
+ <string name="anim_yes_head">
+ Evet
+ </string>
+ <string name="texture_loading">
+ Yükleniyor...
+ </string>
+ <string name="worldmap_offline">
+ Çevrimdışı
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ [AREA] m² L$[PRICE]
+ </string>
+ <string name="worldmap_results_none_found">
+ Hiçbiri bulunamadı.
+ </string>
+ <string name="Ok">
+ Tamam
+ </string>
+ <string name="Premature end of file">
+ Dosyanın zamanından önce sonu
+ </string>
+ <string name="ST_NO_JOINT">
+ KÖK veya EKLEM bulunamıyor.
+ </string>
+ <string name="whisper">
+ fısıldar:
+ </string>
+ <string name="shout">
+ bağırır:
+ </string>
+ <string name="ringing">
+ SL dünyası içindeki Sesli Sohbete bağlanılıyor...
+ </string>
+ <string name="connected">
+ Bağlı
+ </string>
+ <string name="unavailable">
+ Geçerli konumunuzda ses mevcut değil
+ </string>
+ <string name="hang_up">
+ SL dünyası içindeki Sesli Sohbet ile bağlantı kesildi
+ </string>
+ <string name="reconnect_nearby">
+ Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ &apos;[OWNERNAME]&apos; adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan &apos;[OBJECTNAME]&apos; nesnesine şunu yapma izni verildi: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ &apos;[OWNERNAME]&apos; adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan &apos;[OBJECTNAME]&apos; nesnesine şunu yapma izni verilmedi: [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ Sizden Linden dolar (L$) almak
+ </string>
+ <string name="ActOnControlInputs">
+ Denetim girişlerinizle ilgili eylem gerçekleştirmek
+ </string>
+ <string name="RemapControlInputs">
+ Denetim girişleriniz için yeniden eşleme yapmak
+ </string>
+ <string name="AnimateYourAvatar">
+ Avatarınızı canlandırmak
+ </string>
+ <string name="AttachToYourAvatar">
+ Avatarınıza eklemek
+ </string>
+ <string name="ReleaseOwnership">
+ Mülkiyeti bırakmak ve kamuya açık hale gelmek
+ </string>
+ <string name="LinkAndDelink">
+ Başka nesnelerle bağlantı kurmak veya koparmak
+ </string>
+ <string name="AddAndRemoveJoints">
+ Başka nesnelerle eklem eklemek ve kaldırmak
+ </string>
+ <string name="ChangePermissions">
+ İzinlerini değiştirmek
+ </string>
+ <string name="TrackYourCamera">
+ Kameranızı takip etmek
+ </string>
+ <string name="ControlYourCamera">
+ Kameranızı kontrol etmek
+ </string>
+ <string name="NotConnected">
+ Bağlı Değil
+ </string>
+ <string name="SIM_ACCESS_PG">
+ Genel
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Orta
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Yetişkin
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Çevrimdışı
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Bilinmiyor
+ </string>
+ <string name="land_type_unknown">
+ (bilinmiyor)
+ </string>
+ <string name="Estate / Full Region">
+ Gayrimenkul / Tam Bölge
+ </string>
+ <string name="Estate / Homestead">
+ Gayrimenkul / Banliyö
+ </string>
+ <string name="Mainland / Homestead">
+ Anakara / Banliyö
+ </string>
+ <string name="Mainland / Full Region">
+ Anakara / Tam Bölge
+ </string>
+ <string name="all_files">
+ Tüm Dosyalar
+ </string>
+ <string name="sound_files">
+ Sesler
+ </string>
+ <string name="animation_files">
+ Animasyonlar
+ </string>
+ <string name="image_files">
+ Görüntüler
+ </string>
+ <string name="save_file_verb">
+ Kaydet
+ </string>
+ <string name="load_file_verb">
+ Yükle
+ </string>
+ <string name="targa_image_files">
+ Targa Görüntüleri
+ </string>
+ <string name="bitmap_image_files">
+ Bitmap Görüntüler
+ </string>
+ <string name="avi_movie_file">
+ AVI Film Dosyası
+ </string>
+ <string name="xaf_animation_file">
+ XAF Animasyon Dosyası
+ </string>
+ <string name="xml_file">
+ XML Dosyası
+ </string>
+ <string name="raw_file">
+ Ham Dosya
+ </string>
+ <string name="compressed_image_files">
+ Sıkıştırılmış Görüntüler
+ </string>
+ <string name="load_files">
+ Dosyalar Yükle
+ </string>
+ <string name="choose_the_directory">
+ Dizin Seç
+ </string>
+ <string name="AvatarSetNotAway">
+ Uzakta Değil
+ </string>
+ <string name="AvatarSetAway">
+ Uzakta
+ </string>
+ <string name="AvatarSetNotBusy">
+ Meşgul Değil
+ </string>
+ <string name="AvatarSetBusy">
+ Meşgul
+ </string>
+ <string name="shape">
+ Şekil
+ </string>
+ <string name="skin">
+ Dış Katman
+ </string>
+ <string name="hair">
+ Saç
+ </string>
+ <string name="eyes">
+ Gözler
+ </string>
+ <string name="shirt">
+ Gömlek
+ </string>
+ <string name="pants">
+ Pantolon
+ </string>
+ <string name="shoes">
+ Ayakkabılar
+ </string>
+ <string name="socks">
+ Çoraplar
+ </string>
+ <string name="jacket">
+ Ceket
+ </string>
+ <string name="gloves">
+ Eldivenler
+ </string>
+ <string name="undershirt">
+ Fanila
+ </string>
+ <string name="underpants">
+ Külot
+ </string>
+ <string name="skirt">
+ Etek
+ </string>
+ <string name="alpha">
+ Alfa
+ </string>
+ <string name="tattoo">
+ Dövme
+ </string>
+ <string name="physics">
+ Fizik
+ </string>
+ <string name="invalid">
+ geçersiz
+ </string>
+ <string name="none">
+ hiçbiri
+ </string>
+ <string name="shirt_not_worn">
+ Giyilmemiş gömlek
+ </string>
+ <string name="pants_not_worn">
+ Giyilmemiş pantolon
+ </string>
+ <string name="shoes_not_worn">
+ Giyilmemiş ayakkabılar
+ </string>
+ <string name="socks_not_worn">
+ Giyilmemiş çoraplar
+ </string>
+ <string name="jacket_not_worn">
+ Giyilmemiş ceket
+ </string>
+ <string name="gloves_not_worn">
+ Giyilmemiş eldivenler
+ </string>
+ <string name="undershirt_not_worn">
+ Giyilmemiş fanila
+ </string>
+ <string name="underpants_not_worn">
+ Giyilmemiş külot
+ </string>
+ <string name="skirt_not_worn">
+ Giyilmemiş etek
+ </string>
+ <string name="alpha_not_worn">
+ Giyilmemiş alfa
+ </string>
+ <string name="tattoo_not_worn">
+ Giyilmemiş dövme
+ </string>
+ <string name="physics_not_worn">
+ Giyilmemiş fizik
+ </string>
+ <string name="invalid_not_worn">
+ geçersiz
+ </string>
+ <string name="create_new_shape">
+ Yeni şekil oluştur
+ </string>
+ <string name="create_new_skin">
+ Yeni dış katman oluştur
+ </string>
+ <string name="create_new_hair">
+ Yeni saç oluştur
+ </string>
+ <string name="create_new_eyes">
+ Yeni gözler oluştur
+ </string>
+ <string name="create_new_shirt">
+ Yeni gömlek oluştur
+ </string>
+ <string name="create_new_pants">
+ Yeni pantolon oluştur
+ </string>
+ <string name="create_new_shoes">
+ Yeni ayakkabılar oluştur
+ </string>
+ <string name="create_new_socks">
+ Yeni çoraplar oluştur
+ </string>
+ <string name="create_new_jacket">
+ Yeni ceket oluştur
+ </string>
+ <string name="create_new_gloves">
+ Yeni eldivenler oluştur
+ </string>
+ <string name="create_new_undershirt">
+ Yeni fanila oluştur
+ </string>
+ <string name="create_new_underpants">
+ Yeni külot oluştur
+ </string>
+ <string name="create_new_skirt">
+ Yeni etek oluştur
+ </string>
+ <string name="create_new_alpha">
+ Yeni alfa oluştur
+ </string>
+ <string name="create_new_tattoo">
+ Yeni dövme oluştur
+ </string>
+ <string name="create_new_physics">
+ Yeni fizik oluştur
+ </string>
+ <string name="create_new_invalid">
+ geçersiz
+ </string>
+ <string name="NewWearable">
+ Yeni [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Sonraki
+ </string>
+ <string name="ok">
+ Tamam
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Grup Bildirimi
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Grup Bildirimleri
+ </string>
+ <string name="GroupNotifySentBy">
+ Gönderen:
+ </string>
+ <string name="GroupNotifyAttached">
+ Eklenmiş:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Burada eski bildirimleri görüntüleyin veya bu iletilerin alınmasını iptal edin.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Aksesuarı Aç
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Aksesuarı Kaydet
+ </string>
+ <string name="TeleportOffer">
+ Işınlama teklifi
+ </string>
+ <string name="StartUpNotifications">
+ Siz yokken yeni bildirimler geldi.
+ </string>
+ <string name="OverflowInfoChannelString">
+ %d ilave bildiriminiz var
+ </string>
+ <string name="BodyPartsRightArm">
+ Sağ Kol
+ </string>
+ <string name="BodyPartsHead">
+ Baş
+ </string>
+ <string name="BodyPartsLeftArm">
+ Sol Kol
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Sol Bacak
+ </string>
+ <string name="BodyPartsTorso">
+ Gövde
+ </string>
+ <string name="BodyPartsRightLeg">
+ Sağ Bacak
+ </string>
+ <string name="GraphicsQualityLow">
+ Düşük
+ </string>
+ <string name="GraphicsQualityMid">
+ Orta
+ </string>
+ <string name="GraphicsQualityHigh">
+ Yüksek
+ </string>
+ <string name="LeaveMouselook">
+ Dünya Görünümüne dönmek için ESC&apos;e basın
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Aradığınızı bulamadınız mı? [secondlife:///app/search/all/[SEARCH_TERM] Arama] ile bulmayı deneyin.
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Aradığınızı bulamadınız mı? [secondlife:///app/search/places/[SEARCH_TERM] Arama] ile bulmayı deneyin.
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Bir yer imini favorilerinize eklemek için buraya sürükleyin.
+ </string>
+ <string name="InventoryNoTexture">
+ Envanterinizde bu dokunun kopyası yok
+ </string>
+ <string name="InventoryInboxNoItems">
+ Pazaryeri üzerinden satın alınan öğeler buraya teslim edilir.
+ </string>
+ <string name="MarketplaceURL">
+ http://marketplace.[DOMAIN_NAME]
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://marketplace.[DOMAIN_NAME]/create_store
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ http://marketplace.[DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryOutboxCreationErrorTitle">
+ Satıcı Giden Kutunuz düzgün yapılandırılmamıştır
+ </string>
+ <string name="InventoryOutboxCreationErrorTooltip">
+ Satıcı Giden Kutusu yapılandırma hatası
+ </string>
+ <string name="InventoryOutboxCreationError">
+ Sorunu düzeltmek için lütfen Müşteri Hizmetlerine başvurun.
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Pazaryerinde herkes öğe satabilir
+ </string>
+ <string name="InventoryOutboxNotMerchantTooltip">
+ Bir satıcı olun!
+ </string>
+ <string name="InventoryOutboxNotMerchant">
+ [[MARKETPLACE_URL] Second Life Pazaryeri] içerisinde bir milyondan fazla sanal ürün satışa sunulmuştur, bunların tümü Sakinler tarafından oluşturulmuştur. Siz de oluşturduğunuz öğeleri ve satın aldığınız öğelerin bazılarını satabilirsiniz. Bunu yapmak kolaydır, kurulum da ücretsizdir. [[LEARN_MORE_URL] Daha fazla bilgi edinin] veya başlamak için Pazaryerinde [[CREATE_STORE_URL] bir mağaza açın].
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ Pazaryerine öğe göndermek için yeni bir yol
+ </string>
+ <string name="InventoryOutboxNoItemsTooltip">
+ Öğeleri Pazaryerinde satışa hazırlamak için sürükleyip buraya bırakın
+ </string>
+ <string name="InventoryOutboxNoItems">
+ Satmak istediğiniz öğeleri veya klasörleri bu alana sürükleyin. Öğenin bir kopyası burada görünür ve kopyalanamaz bir öğeyi sürüklemediyseniz, envanteriniz aynı kalır. Öğeleri Pazaryerine göndermeye hazır olduğunuzda Karşıya Yükle düğmesine tıklayın. Öğeleriniz Pazaryeri Envanterinize taşındığında bu klasörden kaybolurlar.
+ </string>
+ <string name="Marketplace Error None">
+ Hata yok
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ Hata: Öğeleri Pazaryerine göndermeden önce kendinizi bir satıcı olarak belirlemelisiniz (ücretsizdir).
+ </string>
+ <string name="Marketplace Error Empty Folder">
+ Hata: Bu klasörün içeriği boş.
+ </string>
+ <string name="Marketplace Error Unassociated Products">
+ Hata: Bu öğe karşıya yüklenemedi çünkü satıcı hesabınızda ürünlerle ilişkisiz çok fazla öğe mevcut. Bu hatayı düzeltmek için Pazaryeri web sitesine oturum açın ve ilişkisiz öğe sayınızı azaltın.
+ </string>
+ <string name="Marketplace Error Object Limit">
+ Hata: Bu öğe çok fazla nesne içeriyor. Bu hatayı düzeltmek için nesneleri birlikte kutulara yerleştirerek, toplam nesne sayısını 200&apos;ün altına düşürün.
+ </string>
+ <string name="Marketplace Error Folder Depth">
+ Hata: Bu öğede çok fazla iç içe geçmiş klasör seviyesi var. Bunu tekrar düzenleyerek maksimum 3 iç içe geçmiş klasör seviyesine indirin.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Hata: Bu öğe Pazaryerinde satılamaz.
+ </string>
+ <string name="Marketplace Error Internal Import">
+ Hata: Bu öğede bir sorun var. Daha sonra tekrar deneyin.
+ </string>
+ <string name="Open landmarks">
+ Açık yer imleri
+ </string>
+ <string name="no_transfer" value="(aktarım yok)"/>
+ <string name="no_modify" value="(değiştirme yok)"/>
+ <string name="no_copy" value="(kopya yok)"/>
+ <string name="worn" value="(giyilmiş)"/>
+ <string name="link" value="(bağlantı)"/>
+ <string name="broken_link" value="(broken_link)"/>
+ <string name="LoadingContents">
+ İçerik yükleniyor...
+ </string>
+ <string name="NoContents">
+ İçerik yok
+ </string>
+ <string name="WornOnAttachmentPoint" value="([ATTACHMENT_POINT] üzerinde giyilmiş)"/>
+ <string name="ActiveGesture" value="[GESLABEL] (etkin)"/>
+ <string name="PermYes">
+ Evet
+ </string>
+ <string name="PermNo">
+ Hayır
+ </string>
+ <string name="Chat Message" value="Sohbet:"/>
+ <string name="Sound" value="Ses:"/>
+ <string name="Wait" value="--- Bekleyin:"/>
+ <string name="AnimFlagStop" value="Animasyonu Durdur:"/>
+ <string name="AnimFlagStart" value="Animasyonu Başlat:"/>
+ <string name="Wave" value="El Sallama"/>
+ <string name="GestureActionNone" value="Hiçbiri"/>
+ <string name="HelloAvatar" value="Merhaba avatar!"/>
+ <string name="ViewAllGestures" value="Tümünü Göster &gt;&gt;"/>
+ <string name="GetMoreGestures" value="İlave Al &gt;&gt;"/>
+ <string name="Animations" value="Animasyonlar,"/>
+ <string name="Calling Cards" value="Arama Kartları,"/>
+ <string name="Clothing" value="Giysiler,"/>
+ <string name="Gestures" value="Mimikler,"/>
+ <string name="Landmarks" value="Yer İmleri,"/>
+ <string name="Notecards" value="Not Kartları,"/>
+ <string name="Objects" value="Nesneler,"/>
+ <string name="Scripts" value="Komut Dosyaları,"/>
+ <string name="Sounds" value="Sesler,"/>
+ <string name="Textures" value="Dokular,"/>
+ <string name="Snapshots" value="Anlık Görüntüler,"/>
+ <string name="No Filters" value="Hayır"/>
+ <string name="Since Logoff" value="- Oturum Kapandıktan Beri"/>
+ <string name="InvFolder My Inventory">
+ Envanterim
+ </string>
+ <string name="InvFolder Library">
+ Kütüphane
+ </string>
+ <string name="InvFolder Textures">
+ Dokular
+ </string>
+ <string name="InvFolder Sounds">
+ Sesler
+ </string>
+ <string name="InvFolder Calling Cards">
+ Arama Kartları
+ </string>
+ <string name="InvFolder Landmarks">
+ Yer İmleri
+ </string>
+ <string name="InvFolder Scripts">
+ Komut Dosyaları
+ </string>
+ <string name="InvFolder Clothing">
+ Giysiler
+ </string>
+ <string name="InvFolder Objects">
+ Nesneler
+ </string>
+ <string name="InvFolder Notecards">
+ Not Kartları
+ </string>
+ <string name="InvFolder New Folder">
+ Yeni Klasör
+ </string>
+ <string name="InvFolder Inventory">
+ Envanter
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Sıkıştırılmamış Görüntüler
+ </string>
+ <string name="InvFolder Body Parts">
+ Vücut Bölümleri
+ </string>
+ <string name="InvFolder Trash">
+ Çöp
+ </string>
+ <string name="InvFolder Photo Album">
+ Fotoğraf Albümü
+ </string>
+ <string name="InvFolder Lost And Found">
+ Kaybedip Bulduklarım
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sıkıştırılmamış Sesler
+ </string>
+ <string name="InvFolder Animations">
+ Animasyonlar
+ </string>
+ <string name="InvFolder Gestures">
+ Mimikler
+ </string>
+ <string name="InvFolder Favorite">
+ Favorilerim
+ </string>
+ <string name="InvFolder favorite">
+ Favorilerim
+ </string>
+ <string name="InvFolder Current Outfit">
+ Mevcut Dış Görünüm
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Başlangıçtakı Dış Görünümler
+ </string>
+ <string name="InvFolder My Outfits">
+ Benim Dış Görünümlerim
+ </string>
+ <string name="InvFolder Accessories">
+ Aksesuarlar
+ </string>
+ <string name="InvFolder Meshes">
+ Örgüler
+ </string>
+ <string name="InvFolder Friends">
+ Arkadaşlar
+ </string>
+ <string name="InvFolder All">
+ Tümü
+ </string>
+ <string name="no_attachments">
+ Giyilen aksesuar yok
+ </string>
+ <string name="Buy">
+ Satın Al
+ </string>
+ <string name="BuyforL$">
+ L$&apos;a Satın Al
+ </string>
+ <string name="Stone">
+ Taş
+ </string>
+ <string name="Metal">
+ Metal
+ </string>
+ <string name="Glass">
+ Cam
+ </string>
+ <string name="Wood">
+ Ahşap
+ </string>
+ <string name="Flesh">
+ Et
+ </string>
+ <string name="Plastic">
+ Plastik
+ </string>
+ <string name="Rubber">
+ Lastik
+ </string>
+ <string name="Light">
+ Işık
+ </string>
+ <string name="KBShift">
+ Shift
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Göğüs
+ </string>
+ <string name="Skull">
+ Kafatası
+ </string>
+ <string name="Left Shoulder">
+ Sol Omuz
+ </string>
+ <string name="Right Shoulder">
+ Sağ Omuz
+ </string>
+ <string name="Left Hand">
+ Sol El
+ </string>
+ <string name="Right Hand">
+ Sağ El
+ </string>
+ <string name="Left Foot">
+ Sol Ayak
+ </string>
+ <string name="Right Foot">
+ Sağ Ayak
+ </string>
+ <string name="Spine">
+ Omurga
+ </string>
+ <string name="Pelvis">
+ Leğen Kemiği
+ </string>
+ <string name="Mouth">
+ Ağız
+ </string>
+ <string name="Chin">
+ Çene
+ </string>
+ <string name="Left Ear">
+ Sol Kulak
+ </string>
+ <string name="Right Ear">
+ Sağ Kulak
+ </string>
+ <string name="Left Eyeball">
+ Sol Göz Küresi
+ </string>
+ <string name="Right Eyeball">
+ Sağ Göz Küresi
+ </string>
+ <string name="Nose">
+ Burun
+ </string>
+ <string name="R Upper Arm">
+ Sağ Üst Kol
+ </string>
+ <string name="R Forearm">
+ Sağ Ön Kol
+ </string>
+ <string name="L Upper Arm">
+ Sol Üst Kol
+ </string>
+ <string name="L Forearm">
+ Sol Ön Kol
+ </string>
+ <string name="Right Hip">
+ Sağ Kalça
+ </string>
+ <string name="R Upper Leg">
+ Sağ Üst Bacak
+ </string>
+ <string name="R Lower Leg">
+ Sağ Alt Bacak
+ </string>
+ <string name="Left Hip">
+ Sol Kalça
+ </string>
+ <string name="L Upper Leg">
+ Sol Üst Bacak
+ </string>
+ <string name="L Lower Leg">
+ Sol Alt Bacak
+ </string>
+ <string name="Stomach">
+ Karın
+ </string>
+ <string name="Left Pec">
+ Sol Göğüs
+ </string>
+ <string name="Right Pec">
+ Sağ Göğüs
+ </string>
+ <string name="Invalid Attachment">
+ Geçersiz Aksesuar Noktası
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS]&apos;lık
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] yaşında
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS]&apos;lık
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS]&apos;lık
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS]&apos;lük
+ </string>
+ <string name="TodayOld">
+ Bugün katıldı
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] yıl
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] yıl
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] yıl
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] ay
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] ay
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] ay
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] hafta
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] hafta
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] hafta
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] gün
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] gün
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] gün
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] üye
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] üye
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] üye
+ </string>
+ <string name="AcctTypeResident">
+ Sakin
+ </string>
+ <string name="AcctTypeTrial">
+ Deneme
+ </string>
+ <string name="AcctTypeCharterMember">
+ Ayrıcalıklı Üye
+ </string>
+ <string name="AcctTypeEmployee">
+ Linden Lab Çalışanı
+ </string>
+ <string name="PaymentInfoUsed">
+ Kullanılan Ödeme Bilgisi
+ </string>
+ <string name="PaymentInfoOnFile">
+ Dosyadaki Ödeme Bilgisi
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Dosyada Ödeme Bilgisi Yok
+ </string>
+ <string name="AgeVerified">
+ Yaşı Doğrulanmış
+ </string>
+ <string name="NotAgeVerified">
+ Yaşı Doğrulanmamış
+ </string>
+ <string name="Center 2">
+ 2. Merkez
+ </string>
+ <string name="Top Right">
+ Sağ Üst
+ </string>
+ <string name="Top">
+ Üst
+ </string>
+ <string name="Top Left">
+ Sol Üst
+ </string>
+ <string name="Center">
+ Merkez
+ </string>
+ <string name="Bottom Left">
+ Sol Alt
+ </string>
+ <string name="Bottom">
+ Alt
+ </string>
+ <string name="Bottom Right">
+ Sağ Alt
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Karşıdan yüklendi, şimdi derleniyor
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Komut dosyası sunucuda bulunamadı.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Karşıdan yüklenirken sorun oluştu
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Komut dosyasını karşıdan yüklemek için yeterli izin yok.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Şunun için yeterli izin yok:
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Karşıdan yüklerken bilinmeyen hata
+ </string>
+ <string name="CompileQueueTitle">
+ Tekrar Derleme İlerlemesi
+ </string>
+ <string name="CompileQueueStart">
+ tekrar derle
+ </string>
+ <string name="ResetQueueTitle">
+ Sıfırlama İlerlemesi
+ </string>
+ <string name="ResetQueueStart">
+ sıfırla
+ </string>
+ <string name="RunQueueTitle">
+ Çalışan Süreçlerin İlerlemesini Ayarla
+ </string>
+ <string name="RunQueueStart">
+ çalıştırmayı ayarla
+ </string>
+ <string name="NotRunQueueTitle">
+ Çalışmayan Süreçlerin İlerlemesini Ayarla
+ </string>
+ <string name="NotRunQueueStart">
+ çalıştırmamayı ayarla
+ </string>
+ <string name="CompileSuccessful">
+ Derleme başarılı oldu!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Derleme başarılı, kaydediliyor...
+ </string>
+ <string name="SaveComplete">
+ Kaydetme tamamlandı.
+ </string>
+ <string name="ObjectOutOfRange">
+ Komut dosyası (nesne kapsam dışı)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ [OWNER] mülkiyetindeki [OBJECT] nesnesi
+ </string>
+ <string name="GroupsNone">
+ hiçbiri
+ </string>
+ <string name="Group" value="(grup)"/>
+ <string name="Unknown">
+ (Bilinmiyor)
+ </string>
+ <string name="SummaryForTheWeek" value="Bu haftanın özeti, şu tarihten itibaren:"/>
+ <string name="NextStipendDay" value="Sonraki ödeme günü şudur:"/>
+ <string name="GroupPlanningDate">
+ [mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]
+ </string>
+ <string name="GroupIndividualShare" value="Grup Bireysel Pay"/>
+ <string name="GroupColumn" value="Grup"/>
+ <string name="Balance">
+ Bakiye
+ </string>
+ <string name="Credits">
+ Katkıda Bulunanlar
+ </string>
+ <string name="Debits">
+ Borçlar
+ </string>
+ <string name="Total">
+ Toplam
+ </string>
+ <string name="NoGroupDataFound">
+ Bu grup için grup verisi bulunamadı
+ </string>
+ <string name="IMParentEstate">
+ ana gayrimenkul
+ </string>
+ <string name="IMMainland">
+ anakara
+ </string>
+ <string name="IMTeen">
+ on sekiz yaş altı
+ </string>
+ <string name="Anyone">
+ herkes
+ </string>
+ <string name="RegionInfoError">
+ hata
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ [OWNER] mülkiyetindeki tüm gayrimenkuller
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ sahip olduğunuz tüm gayrimenkuller
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ [OWNER] adına yönettiğiniz tüm gayrimenkuller
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ İzin verilen Sakinler: ([ALLOWEDAGENTS], maks [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ İzin verilen gruplar: ([ALLOWEDGROUPS], maks [MAXACCESS])
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Parsel Komut Dosyası Belleği
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Listelenen Parseller: [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Kullanılan bellek: [COUNT] kb / [MAX] kb içerisinden; [AVAILABLE] kb serbest
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Kullanılan bellek: [COUNT] kb
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ Parsel Komut Dosyası URL&apos;leri
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ Kullanılan URL&apos;ler: [COUNT] / [MAX] içerisinden; [AVAILABLE] serbest
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ Kullanılan URL&apos;ler: [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Bilgi talep edilirken hata oluştu
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Seçili Parsel Yok
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Hata: Komut dosyası bilgisi sadece mevcut bölgenizde geçerli
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Bilgiler alınıyor...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ Bu parseli inceleme izniniz yok
+ </string>
+ <string name="SITTING_ON">
+ Üzerinde Oturuyor
+ </string>
+ <string name="ATTACH_CHEST">
+ Göğüs
+ </string>
+ <string name="ATTACH_HEAD">
+ Baş
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Sol Omuz
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Sağ Omuz
+ </string>
+ <string name="ATTACH_LHAND">
+ Sol El
+ </string>
+ <string name="ATTACH_RHAND">
+ Sağ El
+ </string>
+ <string name="ATTACH_LFOOT">
+ Sol Ayak
+ </string>
+ <string name="ATTACH_RFOOT">
+ Sağ Ayak
+ </string>
+ <string name="ATTACH_BACK">
+ Geri
+ </string>
+ <string name="ATTACH_PELVIS">
+ Leğen Kemiği
+ </string>
+ <string name="ATTACH_MOUTH">
+ Ağız
+ </string>
+ <string name="ATTACH_CHIN">
+ Çene
+ </string>
+ <string name="ATTACH_LEAR">
+ Sol Kulak
+ </string>
+ <string name="ATTACH_REAR">
+ Sağ Kulak
+ </string>
+ <string name="ATTACH_LEYE">
+ Sol Göz
+ </string>
+ <string name="ATTACH_REYE">
+ Sağ Göz
+ </string>
+ <string name="ATTACH_NOSE">
+ Burun
+ </string>
+ <string name="ATTACH_RUARM">
+ Sol Üst Kol
+ </string>
+ <string name="ATTACH_RLARM">
+ Sağ Alt Kol
+ </string>
+ <string name="ATTACH_LUARM">
+ Sol Üst Kol
+ </string>
+ <string name="ATTACH_LLARM">
+ Sol Alt Kol
+ </string>
+ <string name="ATTACH_RHIP">
+ Sağ Kalça
+ </string>
+ <string name="ATTACH_RULEG">
+ Sağ Üst Bacak
+ </string>
+ <string name="ATTACH_RLLEG">
+ Sağ Alt Bacak
+ </string>
+ <string name="ATTACH_LHIP">
+ Sol Kalça
+ </string>
+ <string name="ATTACH_LULEG">
+ Sol Üst Bacak
+ </string>
+ <string name="ATTACH_LLLEG">
+ Sol Alt Bacak
+ </string>
+ <string name="ATTACH_BELLY">
+ Göbek
+ </string>
+ <string name="ATTACH_RPEC">
+ Sağ Göğüs
+ </string>
+ <string name="ATTACH_LPEC">
+ Sol Göğüs
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ BÜG 2. Merkez
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ BÜG Sağ Üst
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ BÜG Merkez Üst
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ BÜG Sol Üst
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ BÜG 1. Merkez
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ BÜG Sol Alt
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ BÜG Alt
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ BÜG Sağ Alt
+ </string>
+ <string name="CursorPos">
+ Satır [LINE], Sütun [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] bulundu
+ </string>
+ <string name="PanelDirTimeStr">
+ [hour,datetime,slt]:[min,datetime,slt]
+ </string>
+ <string name="PanelDirEventsDateText">
+ [mthnum,datetime,slt]/[day,datetime,slt]
+ </string>
+ <string name="PanelContentsTooltip">
+ Nesnenin içeriği
+ </string>
+ <string name="PanelContentsNewScript">
+ Yeni Komut Dosyası
+ </string>
+ <string name="BusyModeResponseDefault">
+ İleti gönderdiğiniz Sakin &apos;meşgul modu&apos;nda, bu da rahatsız edilmek istemediği anlamına geliyor. İletiniz daha sonra incelenmesi için kendisine ait Aİ panelinde gösterilecektir.
+ </string>
+ <string name="MuteByName">
+ (Adına göre)
+ </string>
+ <string name="MuteAgent">
+ (Sakin)
+ </string>
+ <string name="MuteObject">
+ (Nesne)
+ </string>
+ <string name="MuteGroup">
+ (Grup)
+ </string>
+ <string name="MuteExternal">
+ (Harici)
+ </string>
+ <string name="RegionNoCovenant">
+ Bu Gayrimenkul için Sözleşmesi yok.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Bu Gayrimenkul için Sözleşmesi yok. Bu gayrimenkul üzerindeki arazi Linden Lab. değil, Gayrimenkul sahibi tarafından satılmaktadır. Satış ayrıntılarını öğrenmek için lütfen Gayrimenkul Sahibiyle bağlantıya geçin.
+ </string>
+ <string name="covenant_last_modified" value="Son Değiştirildiği Tarih:"/>
+ <string name="none_text" value="(hiçbiri)"/>
+ <string name="never_text" value="(asla)"/>
+ <string name="GroupOwned">
+ Sahibi Olunan Grup
+ </string>
+ <string name="Public">
+ Kamuya Açık
+ </string>
+ <string name="LocalSettings">
+ Yerel Ayarlar
+ </string>
+ <string name="RegionSettings">
+ Bölge Ayarları
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Tıklamalar: [TELEPORT] ışınlama, [MAP] harita, [PROFILE] profil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (yayınlandıktan sonra güncelleştirilir)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ Herhangi bir Seçme veya İlan oluşturmadınız. Bir Seçme veya İlan oluşturmak için aşağıdaki Artı düğmesine tıklayın.
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ Kullanıcının herhangi bir seçmesi veya ilanı yok
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Yükleniyor...
+ </string>
+ <string name="MultiPreviewTitle">
+ Önizleme
+ </string>
+ <string name="MultiPropertiesTitle">
+ Özellikler
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Şu ada sahip bir nesne:
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ grubun sahip olduğu:
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ bilinmeyen grubun sahip olduğu:
+ </string>
+ <string name="InvOfferOwnedBy">
+ sahibi:
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ bilinmeyen bir kullanıcının sahip olduğu:
+ </string>
+ <string name="InvOfferGaveYou">
+ size verdi:
+ </string>
+ <string name="InvOfferDecline">
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; tarafından gönderilen [DESC]&apos;i reddettiniz.
+ </string>
+ <string name="GroupMoneyTotal">
+ Toplam
+ </string>
+ <string name="GroupMoneyBought">
+ alınan:
+ </string>
+ <string name="GroupMoneyPaidYou">
+ size ödenen:
+ </string>
+ <string name="GroupMoneyPaidInto">
+ şuraya ödenen:
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ şuraya geçiş hakkı alınan:
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ etkinlik için ödenen ücret:
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ etkinlik için verilen ödül:
+ </string>
+ <string name="GroupMoneyBalance">
+ Bakiye
+ </string>
+ <string name="GroupMoneyCredits">
+ Katkıda Bulunanlar
+ </string>
+ <string name="GroupMoneyDebits">
+ Borçlar
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
+ </string>
+ <string name="ViewerObjectContents">
+ İçerik
+ </string>
+ <string name="AcquiredItems">
+ Alınan Öğeler
+ </string>
+ <string name="Cancel">
+ İptal
+ </string>
+ <string name="UploadingCosts">
+ [NAME] için karşıya yükleme maliyeti: L$ [AMOUNT]
+ </string>
+ <string name="BuyingCosts">
+ Bunu satın almanın maliyeti: L$ [AMOUNT]
+ </string>
+ <string name="UnknownFileExtension">
+ Bilinmeyen dosya uzantısı .%s
+.wav, .tga, .bmp, .jpg, .jpeg veya .bvh bekleniyordu
+ </string>
+ <string name="MuteObject2">
+ Engelle
+ </string>
+ <string name="MuteAvatar">
+ Engelle
+ </string>
+ <string name="UnmuteObject">
+ Engellemeyi Kaldır
+ </string>
+ <string name="UnmuteAvatar">
+ Engellemeyi Kaldır
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Yer İmlerime Ekle...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Yer İmimi Düzenle...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Shift+
+ </string>
+ <string name="FileSaved">
+ Dosya Kaydedildi
+ </string>
+ <string name="Receiving">
+ Alınıyor
+ </string>
+ <string name="AM">
+ ÖÖ
+ </string>
+ <string name="PM">
+ ÖS
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Direction_Forward">
+ İleri
+ </string>
+ <string name="Direction_Left">
+ Sol
+ </string>
+ <string name="Direction_Right">
+ Sağ
+ </string>
+ <string name="Direction_Back">
+ Geri
+ </string>
+ <string name="Direction_North">
+ Kuzey
+ </string>
+ <string name="Direction_South">
+ Güney
+ </string>
+ <string name="Direction_West">
+ Batı
+ </string>
+ <string name="Direction_East">
+ Doğu
+ </string>
+ <string name="Direction_Up">
+ Yukarı
+ </string>
+ <string name="Direction_Down">
+ Aşağı
+ </string>
+ <string name="Any Category">
+ Herh. Bir Kategori
+ </string>
+ <string name="Shopping">
+ Alışveriş
+ </string>
+ <string name="Land Rental">
+ Arazi Kiralama
+ </string>
+ <string name="Property Rental">
+ Mülk Kiralama
+ </string>
+ <string name="Special Attraction">
+ Özel Atraksiyon
+ </string>
+ <string name="New Products">
+ Yeni Ürünler
+ </string>
+ <string name="Employment">
+ İstihdam
+ </string>
+ <string name="Wanted">
+ Arananlar
+ </string>
+ <string name="Service">
+ Hizmet
+ </string>
+ <string name="Personal">
+ Kişisel
+ </string>
+ <string name="None">
+ Renksiz
+ </string>
+ <string name="Linden Location">
+ Linden Konumu
+ </string>
+ <string name="Adult">
+ Yetişkin
+ </string>
+ <string name="Arts&amp;Culture">
+ Sanat ve Kültür
+ </string>
+ <string name="Business">
+ İş
+ </string>
+ <string name="Educational">
+ Eğitim
+ </string>
+ <string name="Gaming">
+ Oyun
+ </string>
+ <string name="Hangout">
+ Uğrak Mekan
+ </string>
+ <string name="Newcomer Friendly">
+ Yeni Gelenlere Yardım Sunan
+ </string>
+ <string name="Parks&amp;Nature">
+ Park ve Doğa
+ </string>
+ <string name="Residential">
+ Yerleşim
+ </string>
+ <string name="Stage">
+ Sahne
+ </string>
+ <string name="Other">
+ Diğer
+ </string>
+ <string name="Rental">
+ Kiralık
+ </string>
+ <string name="Any">
+ Herhangi
+ </string>
+ <string name="You">
+ Siz
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="&apos;">
+ &apos;
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="Multiple Media">
+ Birden Çok Ortam
+ </string>
+ <string name="Play Media">
+ Ortamı Oynat/Durdur
+ </string>
+ <string name="MBCmdLineError">
+ Komut satırı ayrıştırılırken bir hata oluştu.
+Lütfen bakınız: http://wiki.secondlife.com/wiki/Client_parameters
+Hata:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Komut satırı kullanımı:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] ihtiyaç duyduğu bir dosyaya erişemiyor.
+
+Bunun nedeni bir şekilde birden fazla kopyanın çalışıyor olması veya sisteminizin, bir dosyanın açık olduğunu sanması olabilir.
+Bu iletiyi görmeye devam ederseniz, bilgisayarınızı yeniden başlatın ve tekrar deneyin.
+Sorun devam ederse [APP_NAME] uygulamasını tümüyle kaldırmanız ve tekrar yüklemeniz gerekebilir.
+ </string>
+ <string name="MBFatalError">
+ Önemli Hata
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME], AltiVec (G4 veya üzeri) bir işlemciye ihtiyaç duyuyor.
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] zaten çalışıyor.
+Programın simge durumuna küçültülmüş bir kopyası için görev çubuğunuza bakın.
+Bu iletiyi görmeye devam ederseniz, bilgisayarınızı tekrar başlatın.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] uygulaması bir önceki çalıştırmada kilitlenmiş görünüyor.
+Bir kilitlenme raporu göndermek ister misiniz?
+ </string>
+ <string name="MBAlert">
+ Bildirim
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME], DirectX 9.0b veya üzerini saptayamıyor.
+[APP_NAME], kararlılık problemleri, kötü performans ve çökmelere neden olabilecek donanım ve/veya süresi geçmiş sürücüleri saptamak için DirectX kullanır. [APP_NAME] uygulamasını bu olmadan da çalıştırmanız mümkündür, ancak DirectX 9.0b ile çalıştırmanızı kuvvetle tavsiye ederiz.
+
+Devam etmek istiyor musunuz?
+ </string>
+ <string name="MBWarning">
+ Uyarı
+ </string>
+ <string name="MBNoAutoUpdate">
+ Linux için henüz otomatik güncelleştirme uygulanmamıştır.
+Lütfen www.secondlife.com adresinden son sürümü karşıdan yükleyin.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass başarısız oldu
+ </string>
+ <string name="MBError">
+ Hata
+ </string>
+ <string name="MBFullScreenErr">
+ [WIDTH] x [HEIGHT] çözünürlüğünde tam ekran çalıştırma yapılamıyor.
+Pencerede çalışıyor.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Pencere yok edilirken Kapatma Hatası oluştu (DestroyWindow() başarısız oldu)
+ </string>
+ <string name="MBShutdownErr">
+ Kapatma Hatası
+ </string>
+ <string name="MBDevContextErr">
+ GL cihazı içeriği oluşturulamıyor
+ </string>
+ <string name="MBPixelFmtErr">
+ Uygun piksel formatı bulunamadı
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Piksel formatı açıklaması alınamıyor
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] uygulamasının çalışması için Gerçek Renk (32 bit) gerekiyor.
+Lütfen bilgisayarınızın ekran ayarlarına gidin ve renk modunu 32 bit olarak ayarlayın.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] çalışamıyor çünkü 8 bit bir alfa kanalı alamıyor. Bunun nedeni genellikle video kartı sürücü sorunlarıdır.
+Lütfen en yeni video sürücülerinin yüklü olduğuna emin olun.
+Ayrıca Denetim Masaları &gt; Ekran &gt; Ayarlar içerisinde ekranınız için Gerçek Renk (32 bit) ayarı yapıldığına emin olun.
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Piksel formatı ayarlanamıyor
+ </string>
+ <string name="MBGLContextErr">
+ GL işlemi bağlamı oluşturulamıyor
+ </string>
+ <string name="MBGLContextActErr">
+ GL işlemi bağlamı etkinleştirilemiyor
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] çalışamıyor çünkü video kartı sürücüleriniz düzgün yüklenemedi, süresi geçmiş durumda veya desteklenmeyen donanımlar için geliştirilmiş. Lütfen en yeni video kartı sürücülerine sahip olduğunuza emin olun; en yeni sürücüler mevcutsa da bunları tekrar yüklemeyi deneyin.
+
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Bir Günlük Sakal
+ </string>
+ <string name="All White">
+ Tümü Beyaz
+ </string>
+ <string name="Anime Eyes">
+ Anime Gözler
+ </string>
+ <string name="Arced">
+ Yay Şeklinde
+ </string>
+ <string name="Arm Length">
+ Kol Uzunluğu
+ </string>
+ <string name="Attached">
+ Bitişik
+ </string>
+ <string name="Attached Earlobes">
+ Kafaya Bitişik Kulak Memeleri
+ </string>
+ <string name="Back Fringe">
+ Arka Perçem
+ </string>
+ <string name="Baggy">
+ Torbalı
+ </string>
+ <string name="Bangs">
+ Kahküller
+ </string>
+ <string name="Beady Eyes">
+ Boncuk Gözler
+ </string>
+ <string name="Belly Size">
+ Göbek Büyüklüğü
+ </string>
+ <string name="Big">
+ Büyük
+ </string>
+ <string name="Big Butt">
+ Büyük Kıç
+ </string>
+ <string name="Big Hair Back">
+ Kabarık Saç: Arkada
+ </string>
+ <string name="Big Hair Front">
+ Kabarık Saç: Önde
+ </string>
+ <string name="Big Hair Top">
+ Kabarık Saç: Tepede
+ </string>
+ <string name="Big Head">
+ Büyük Kafa
+ </string>
+ <string name="Big Pectorals">
+ Büyük Göğüs Kasları
+ </string>
+ <string name="Big Spikes">
+ Büyük Dik Kısımlar
+ </string>
+ <string name="Black">
+ Siyah
+ </string>
+ <string name="Blonde">
+ Sarışın
+ </string>
+ <string name="Blonde Hair">
+ Sarı Saç
+ </string>
+ <string name="Blush">
+ Allık
+ </string>
+ <string name="Blush Color">
+ Allık Rengi
+ </string>
+ <string name="Blush Opacity">
+ Allık Geçirgenliği
+ </string>
+ <string name="Body Definition">
+ Vücut Tanımı
+ </string>
+ <string name="Body Fat">
+ Vücut Yağı
+ </string>
+ <string name="Body Freckles">
+ Vücut Çilleri
+ </string>
+ <string name="Body Thick">
+ Kalın Vücut
+ </string>
+ <string name="Body Thickness">
+ Vücut Kalınlığı
+ </string>
+ <string name="Body Thin">
+ İnce Vücut
+ </string>
+ <string name="Bow Legged">
+ Çarpık Bacaklı
+ </string>
+ <string name="Breast Buoyancy">
+ Göğüs Kalkıklığı
+ </string>
+ <string name="Breast Cleavage">
+ Göğüs Çatalı
+ </string>
+ <string name="Breast Size">
+ Göğüs Büyüklüğü
+ </string>
+ <string name="Bridge Width">
+ Burun Kemiği Genişliği
+ </string>
+ <string name="Broad">
+ Geniş
+ </string>
+ <string name="Brow Size">
+ Alın Genişliği
+ </string>
+ <string name="Bug Eyes">
+ Patlak Gözlü
+ </string>
+ <string name="Bugged Eyes">
+ Patlak Gözlü
+ </string>
+ <string name="Bulbous">
+ Patates Burunlu
+ </string>
+ <string name="Bulbous Nose">
+ Patates Burunlu
+ </string>
+ <string name="Breast Physics Mass">
+ Göğüs Kütlesi
+ </string>
+ <string name="Breast Physics Smoothing">
+ Göğüs Düzleştirme
+ </string>
+ <string name="Breast Physics Gravity">
+ Göğüs Yerçekimi
+ </string>
+ <string name="Breast Physics Drag">
+ Göğüs Direnci
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Maks Etki
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Yaylanma
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Kazanç
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Sönüm
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Maks Etki
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Yaylanma
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Kazanç
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Sönüm
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Maks Etki
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Yaylanma
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Kazanç
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Sönüm
+ </string>
+ <string name="Belly Physics Mass">
+ Göbek Kütlesi
+ </string>
+ <string name="Belly Physics Smoothing">
+ Göbek Düzleştirme
+ </string>
+ <string name="Belly Physics Gravity">
+ Göbek Yerçekimi
+ </string>
+ <string name="Belly Physics Drag">
+ Göbek Direnci
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Maks Etki
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Yaylanma
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Kazanç
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Sönüm
+ </string>
+ <string name="Butt Physics Mass">
+ Kıç Kütlesi
+ </string>
+ <string name="Butt Physics Smoothing">
+ Kıç Düzleştirme
+ </string>
+ <string name="Butt Physics Gravity">
+ Kıç Yerçekimi
+ </string>
+ <string name="Butt Physics Drag">
+ Kıç Direnci
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Maks Etki
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Yaylanma
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Kazanç
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Sönüm
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Maks Etki
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Yaylanma
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Kazanç
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Sönüm
+ </string>
+ <string name="Bushy Eyebrows">
+ Gür Kaşlar
+ </string>
+ <string name="Bushy Hair">
+ Gür Saç
+ </string>
+ <string name="Butt Size">
+ Kıç Büyüklüğü
+ </string>
+ <string name="Butt Gravity">
+ Kıç Yerçekimi
+ </string>
+ <string name="bustle skirt">
+ Tarlatanlı Etek
+ </string>
+ <string name="no bustle">
+ Tarlatansız
+ </string>
+ <string name="more bustle">
+ Çok Tarlatanlı
+ </string>
+ <string name="Chaplin">
+ Chaplin pantalon
+ </string>
+ <string name="Cheek Bones">
+ Elmacık Kemikleri
+ </string>
+ <string name="Chest Size">
+ Göğüs Büyüklüğü
+ </string>
+ <string name="Chin Angle">
+ Çene Açısı
+ </string>
+ <string name="Chin Cleft">
+ Çene Çukuru
+ </string>
+ <string name="Chin Curtains">
+ Lincoln Sakal
+ </string>
+ <string name="Chin Depth">
+ Çene Derinliği
+ </string>
+ <string name="Chin Heavy">
+ Geniş Çene
+ </string>
+ <string name="Chin In">
+ Çene İçeri
+ </string>
+ <string name="Chin Out">
+ Çene Dışarı
+ </string>
+ <string name="Chin-Neck">
+ Çene-Boyun
+ </string>
+ <string name="Clear">
+ Temizle
+ </string>
+ <string name="Cleft">
+ Çukur
+ </string>
+ <string name="Close Set Eyes">
+ Yakın Gözler
+ </string>
+ <string name="Closed">
+ Kapalı
+ </string>
+ <string name="Closed Back">
+ Arkası Kapalı
+ </string>
+ <string name="Closed Front">
+ Önü Kapalı
+ </string>
+ <string name="Closed Left">
+ Solu Kapalı
+ </string>
+ <string name="Closed Right">
+ Sağı Kapalı
+ </string>
+ <string name="Coin Purse">
+ Para Cüzdanı
+ </string>
+ <string name="Collar Back">
+ Yaka Arkası
+ </string>
+ <string name="Collar Front">
+ Yaka Önü
+ </string>
+ <string name="Corner Down">
+ Köşesi Aşağıda
+ </string>
+ <string name="Corner Up">
+ Köşesi Yukarıda
+ </string>
+ <string name="Creased">
+ Kırışık
+ </string>
+ <string name="Crooked Nose">
+ Yamuk Burun
+ </string>
+ <string name="Cuff Flare">
+ Geniş Paça
+ </string>
+ <string name="Dark">
+ Karanlık
+ </string>
+ <string name="Dark Green">
+ Koyu Yeşil
+ </string>
+ <string name="Darker">
+ Daha Koyu
+ </string>
+ <string name="Deep">
+ Derin
+ </string>
+ <string name="Default Heels">
+ Varsayılan Topuklar
+ </string>
+ <string name="Dense">
+ Yoğun
+ </string>
+ <string name="Double Chin">
+ Çift Çene
+ </string>
+ <string name="Downturned">
+ Aşağı Dönük
+ </string>
+ <string name="Duffle Bag">
+ Spor Çanta
+ </string>
+ <string name="Ear Angle">
+ Kulak Açısı
+ </string>
+ <string name="Ear Size">
+ Kulak Büyüklüğü
+ </string>
+ <string name="Ear Tips">
+ Kulak Uçları
+ </string>
+ <string name="Egg Head">
+ Yumurta Kafa
+ </string>
+ <string name="Eye Bags">
+ Göz Altı Torbaları
+ </string>
+ <string name="Eye Color">
+ Göz Rengi
+ </string>
+ <string name="Eye Depth">
+ Gözün İçeri Çöküklüğü
+ </string>
+ <string name="Eye Lightness">
+ Göz Parlaklığı
+ </string>
+ <string name="Eye Opening">
+ Göz Açıklığı
+ </string>
+ <string name="Eye Pop">
+ Gözlerin Dışarı Çıkıklığı
+ </string>
+ <string name="Eye Size">
+ Göz Büyüklüğü
+ </string>
+ <string name="Eye Spacing">
+ Gözlerin Aralığı
+ </string>
+ <string name="Eyebrow Arc">
+ Kaş Kavisi
+ </string>
+ <string name="Eyebrow Density">
+ Kaş Kalınlığı
+ </string>
+ <string name="Eyebrow Height">
+ Kaş Yüksekliği
+ </string>
+ <string name="Eyebrow Points">
+ Kaş Yapısı
+ </string>
+ <string name="Eyebrow Size">
+ Kaş Büyüklüğü
+ </string>
+ <string name="Eyelash Length">
+ Kirpik Uzunluğu
+ </string>
+ <string name="Eyeliner">
+ Göz Kalemi
+ </string>
+ <string name="Eyeliner Color">
+ Göz Kalemi Rengi
+ </string>
+ <string name="Eyes Bugged">
+ Patlak Gözler
+ </string>
+ <string name="Face Shear">
+ Dikey Yüz Kaydırma
+ </string>
+ <string name="Facial Definition">
+ Yüz İfadesi
+ </string>
+ <string name="Far Set Eyes">
+ Ayrık Gözler
+ </string>
+ <string name="Fat Lips">
+ Kalın Dudaklar
+ </string>
+ <string name="Female">
+ Kadın
+ </string>
+ <string name="Fingerless">
+ Parmaksız
+ </string>
+ <string name="Fingers">
+ Parmaklar
+ </string>
+ <string name="Flared Cuffs">
+ Geniş Paçalar
+ </string>
+ <string name="Flat">
+ Düz
+ </string>
+ <string name="Flat Butt">
+ Düz Kıç
+ </string>
+ <string name="Flat Head">
+ Düz Kafa
+ </string>
+ <string name="Flat Toe">
+ Düz Ayak Ucu
+ </string>
+ <string name="Foot Size">
+ Ayak Büyüklüğü
+ </string>
+ <string name="Forehead Angle">
+ Alın Açısı
+ </string>
+ <string name="Forehead Heavy">
+ Belirgin Alın
+ </string>
+ <string name="Freckles">
+ Çiller
+ </string>
+ <string name="Front Fringe">
+ Ön Perçem
+ </string>
+ <string name="Full Back">
+ Arkası Düz
+ </string>
+ <string name="Full Eyeliner">
+ Çift Taraflı Göz Kalemi
+ </string>
+ <string name="Full Front">
+ Önü Düz
+ </string>
+ <string name="Full Hair Sides">
+ Saçlar Yanda
+ </string>
+ <string name="Full Sides">
+ Saçlar Yanda
+ </string>
+ <string name="Glossy">
+ Parlak
+ </string>
+ <string name="Glove Fingers">
+ Eldiven Parmakları
+ </string>
+ <string name="Glove Length">
+ Eldiven Uzunluğu
+ </string>
+ <string name="Hair">
+ Saç
+ </string>
+ <string name="Hair Back">
+ Saç: Arka
+ </string>
+ <string name="Hair Front">
+ Saç: Ön
+ </string>
+ <string name="Hair Sides">
+ Saç: Yanlar
+ </string>
+ <string name="Hair Sweep">
+ Saçı Yana Tarama
+ </string>
+ <string name="Hair Thickess">
+ Saç Kalınlığı
+ </string>
+ <string name="Hair Thickness">
+ Saç Kalınlığı
+ </string>
+ <string name="Hair Tilt">
+ Saç Eğimi
+ </string>
+ <string name="Hair Tilted Left">
+ Sola Eğimli Saç
+ </string>
+ <string name="Hair Tilted Right">
+ Sağa Eğimli Saç
+ </string>
+ <string name="Hair Volume">
+ Saç: Hacim
+ </string>
+ <string name="Hand Size">
+ El Büyüklüğü
+ </string>
+ <string name="Handlebars">
+ Gidon tipi
+ </string>
+ <string name="Head Length">
+ Kafa Uzunluğu
+ </string>
+ <string name="Head Shape">
+ Kafa Şekli
+ </string>
+ <string name="Head Size">
+ Kafa Büyüklüğü
+ </string>
+ <string name="Head Stretch">
+ Kafayı Uzatma
+ </string>
+ <string name="Heel Height">
+ Topuk Yüksekliği
+ </string>
+ <string name="Heel Shape">
+ Topuk Şekli
+ </string>
+ <string name="Height">
+ Yükseklik
+ </string>
+ <string name="High">
+ Yüksek
+ </string>
+ <string name="High Heels">
+ Yüksek Topuklar
+ </string>
+ <string name="High Jaw">
+ Ayrık
+ </string>
+ <string name="High Platforms">
+ Yüksek Topuklu
+ </string>
+ <string name="High and Tight">
+ Düşük
+ </string>
+ <string name="Higher">
+ Daha Yüksek
+ </string>
+ <string name="Hip Length">
+ Kalça Uzunluğu
+ </string>
+ <string name="Hip Width">
+ Kalça Genişliği
+ </string>
+ <string name="In">
+ İçeri
+ </string>
+ <string name="In Shdw Color">
+ İç Gölge Rengi
+ </string>
+ <string name="In Shdw Opacity">
+ İç Gölge Opaklığı
+ </string>
+ <string name="Inner Eye Corner">
+ Gözün İç Köşesi
+ </string>
+ <string name="Inner Eye Shadow">
+ İç Göz Gölgesi
+ </string>
+ <string name="Inner Shadow">
+ İç Gölge
+ </string>
+ <string name="Jacket Length">
+ Ceket Uzunluğu
+ </string>
+ <string name="Jacket Wrinkles">
+ Ceket Kırışıklıkları
+ </string>
+ <string name="Jaw Angle">
+ Çenenin Boyuna Uzaklığı
+ </string>
+ <string name="Jaw Jut">
+ Alt Çene Uzunluğu
+ </string>
+ <string name="Jaw Shape">
+ Çene Kemiği Genişliği
+ </string>
+ <string name="Join">
+ Birleşik
+ </string>
+ <string name="Jowls">
+ Avurtlar
+ </string>
+ <string name="Knee Angle">
+ Diz Açısı
+ </string>
+ <string name="Knock Kneed">
+ Çarpık Bacaklı
+ </string>
+ <string name="Large">
+ Büyük
+ </string>
+ <string name="Large Hands">
+ Büyük Eller
+ </string>
+ <string name="Left Part">
+ Sola Ayırma
+ </string>
+ <string name="Leg Length">
+ Bacak Uzunluğu
+ </string>
+ <string name="Leg Muscles">
+ Bacak Kasları
+ </string>
+ <string name="Less">
+ Daha Az
+ </string>
+ <string name="Less Body Fat">
+ Daha Az Vücut Yağı
+ </string>
+ <string name="Less Curtains">
+ Daha Az Lincoln Sakal
+ </string>
+ <string name="Less Freckles">
+ Daha Az Çil
+ </string>
+ <string name="Less Full">
+ Daha Az Dolgun
+ </string>
+ <string name="Less Gravity">
+ Dik Göğüs
+ </string>
+ <string name="Less Love">
+ Daha İnce Bel
+ </string>
+ <string name="Less Muscles">
+ Daha Az Kas
+ </string>
+ <string name="Less Muscular">
+ Daha Az Kaslı
+ </string>
+ <string name="Less Rosy">
+ Daha Az Pembe
+ </string>
+ <string name="Less Round">
+ Daha Az Yuvarlak
+ </string>
+ <string name="Less Saddle">
+ Basensiz
+ </string>
+ <string name="Less Square">
+ Daha Az Küt
+ </string>
+ <string name="Less Volume">
+ Daha Az Hacim
+ </string>
+ <string name="Less soul">
+ Daha az ruh
+ </string>
+ <string name="Lighter">
+ Daha Hafif
+ </string>
+ <string name="Lip Cleft">
+ Dudak Çukuru
+ </string>
+ <string name="Lip Cleft Depth">
+ Dudak Çukuru Derinliği
+ </string>
+ <string name="Lip Fullness">
+ Dudak Dolgunluğu
+ </string>
+ <string name="Lip Pinkness">
+ Dudak Pembeliği
+ </string>
+ <string name="Lip Ratio">
+ Dudak Oranı
+ </string>
+ <string name="Lip Thickness">
+ Dudak Kalınlığı
+ </string>
+ <string name="Lip Width">
+ Dudak Genişliği
+ </string>
+ <string name="Lipgloss">
+ Dudak Parlatıcısı
+ </string>
+ <string name="Lipstick">
+ Ruj
+ </string>
+ <string name="Lipstick Color">
+ Ruj Rengi
+ </string>
+ <string name="Long">
+ Uzun
+ </string>
+ <string name="Long Head">
+ Uzun Kafa
+ </string>
+ <string name="Long Hips">
+ Yüksek kalça
+ </string>
+ <string name="Long Legs">
+ Uzun Bacaklar
+ </string>
+ <string name="Long Neck">
+ Uzun Boyun
+ </string>
+ <string name="Long Pigtails">
+ Yandan Uzun Kuyruk
+ </string>
+ <string name="Long Ponytail">
+ Uzun Atkuyruğu
+ </string>
+ <string name="Long Torso">
+ Uzun Gövde
+ </string>
+ <string name="Long arms">
+ Uzun kollar
+ </string>
+ <string name="Loose Pants">
+ Bol Pantolon
+ </string>
+ <string name="Loose Shirt">
+ Bol Gömlek
+ </string>
+ <string name="Loose Sleeves">
+ Bol Kollu
+ </string>
+ <string name="Love Handles">
+ Bel Kalınlığı
+ </string>
+ <string name="Low">
+ Düşük
+ </string>
+ <string name="Low Heels">
+ Alçak Topuklar
+ </string>
+ <string name="Low Jaw">
+ Bitişik
+ </string>
+ <string name="Low Platforms">
+ Alçak Topuklu
+ </string>
+ <string name="Low and Loose">
+ Yüksek
+ </string>
+ <string name="Lower">
+ Daha Alçak
+ </string>
+ <string name="Lower Bridge">
+ Alt Burun Kemiği
+ </string>
+ <string name="Lower Cheeks">
+ Daha Alçak Yanaklar
+ </string>
+ <string name="Male">
+ Erkek
+ </string>
+ <string name="Middle Part">
+ Ortadan Ayırma
+ </string>
+ <string name="More">
+ Daha Fazla
+ </string>
+ <string name="More Blush">
+ Daha Fazla Allık
+ </string>
+ <string name="More Body Fat">
+ Daha Fazla Vücut Yağı
+ </string>
+ <string name="More Curtains">
+ Daha Çok Lincoln Sakal
+ </string>
+ <string name="More Eyeshadow">
+ Daha Fazla Göz Farı
+ </string>
+ <string name="More Freckles">
+ Daha Çok Çil
+ </string>
+ <string name="More Full">
+ Daha Dolgun
+ </string>
+ <string name="More Gravity">
+ Sarkık Göğüs
+ </string>
+ <string name="More Lipstick">
+ Daha Çok Ruj
+ </string>
+ <string name="More Love">
+ Daha Kalın Bel
+ </string>
+ <string name="More Lower Lip">
+ Daha Dolgun Alt Dudak
+ </string>
+ <string name="More Muscles">
+ Daha Çok Kas
+ </string>
+ <string name="More Muscular">
+ Daha Kaslı
+ </string>
+ <string name="More Rosy">
+ Daha Pembe
+ </string>
+ <string name="More Round">
+ Daha Yuvarlak
+ </string>
+ <string name="More Saddle">
+ Basenli
+ </string>
+ <string name="More Sloped">
+ Daha Eğimli
+ </string>
+ <string name="More Square">
+ Daha Küt
+ </string>
+ <string name="More Upper Lip">
+ Daha Dolgun Üst Dudak
+ </string>
+ <string name="More Vertical">
+ Daha Dikey
+ </string>
+ <string name="More Volume">
+ Daha Hacimli
+ </string>
+ <string name="More soul">
+ Daha çok ruh
+ </string>
+ <string name="Moustache">
+ Bıyık
+ </string>
+ <string name="Mouth Corner">
+ Ağız Köşesi
+ </string>
+ <string name="Mouth Position">
+ Ağzın Konumu
+ </string>
+ <string name="Mowhawk">
+ Mowhawk Saçı
+ </string>
+ <string name="Muscular">
+ Kaslı
+ </string>
+ <string name="Mutton Chops">
+ Geniş Favori
+ </string>
+ <string name="Nail Polish">
+ Tırnak Cilası
+ </string>
+ <string name="Nail Polish Color">
+ Tırnak Cilası Rengi
+ </string>
+ <string name="Narrow">
+ Dar
+ </string>
+ <string name="Narrow Back">
+ Arkası Dar
+ </string>
+ <string name="Narrow Front">
+ Önü Dar
+ </string>
+ <string name="Narrow Lips">
+ Küçük Dudaklar
+ </string>
+ <string name="Natural">
+ Doğal
+ </string>
+ <string name="Neck Length">
+ Boyun Uzunluğu
+ </string>
+ <string name="Neck Thickness">
+ Boyun Kalınlığı
+ </string>
+ <string name="No Blush">
+ Allık Yok
+ </string>
+ <string name="No Eyeliner">
+ Göz Kalemi Yok
+ </string>
+ <string name="No Eyeshadow">
+ Göz Farı Yok
+ </string>
+ <string name="No Lipgloss">
+ Dudak Parlatıcısı Yok
+ </string>
+ <string name="No Lipstick">
+ Ruj Yok
+ </string>
+ <string name="No Part">
+ Ayırma Yok
+ </string>
+ <string name="No Polish">
+ Cila Yok
+ </string>
+ <string name="No Red">
+ Kırmızı Yok
+ </string>
+ <string name="No Spikes">
+ Dikleştirme Yok
+ </string>
+ <string name="No White">
+ Beyaz Yok
+ </string>
+ <string name="No Wrinkles">
+ Kırışıklık Yok
+ </string>
+ <string name="Normal Lower">
+ Normal Alt
+ </string>
+ <string name="Normal Upper">
+ Normal Üst
+ </string>
+ <string name="Nose Left">
+ Sola Eğimli Burun
+ </string>
+ <string name="Nose Right">
+ Sağa Eğimli Burun
+ </string>
+ <string name="Nose Size">
+ Burun Büyüklüğü
+ </string>
+ <string name="Nose Thickness">
+ Burun Kalınlığı
+ </string>
+ <string name="Nose Tip Angle">
+ Burun Ucu Açısı
+ </string>
+ <string name="Nose Tip Shape">
+ Burun Ucu Şekli
+ </string>
+ <string name="Nose Width">
+ Burun Genişliği
+ </string>
+ <string name="Nostril Division">
+ Burun Deliği Ayrımı
+ </string>
+ <string name="Nostril Width">
+ Burun Deliği Genişliği
+ </string>
+ <string name="Opaque">
+ Opak
+ </string>
+ <string name="Open">
+ Aç
+ </string>
+ <string name="Open Back">
+ Arkayı Aç
+ </string>
+ <string name="Open Front">
+ Önü Aç
+ </string>
+ <string name="Open Left">
+ Solu Aç
+ </string>
+ <string name="Open Right">
+ Sağı Aç
+ </string>
+ <string name="Orange">
+ Turuncu
+ </string>
+ <string name="Out">
+ Dışarı
+ </string>
+ <string name="Out Shdw Color">
+ Dış Gölge Rengi
+ </string>
+ <string name="Out Shdw Opacity">
+ Dış Gölge Opaklığı
+ </string>
+ <string name="Outer Eye Corner">
+ Gözün Dış Köşesi
+ </string>
+ <string name="Outer Eye Shadow">
+ Dış Göz Gölgesi
+ </string>
+ <string name="Outer Shadow">
+ Dış Gölge
+ </string>
+ <string name="Overbite">
+ Öne Doğru
+ </string>
+ <string name="Package">
+ Apış Arası Şişkinliği
+ </string>
+ <string name="Painted Nails">
+ Ojeli Tırnaklar
+ </string>
+ <string name="Pale">
+ Soluk
+ </string>
+ <string name="Pants Crotch">
+ Pantolon Ağı
+ </string>
+ <string name="Pants Fit">
+ Pantolon Oturması
+ </string>
+ <string name="Pants Length">
+ Pantolon Uzunluğu
+ </string>
+ <string name="Pants Waist">
+ Pantolon Bel Ölçüsü
+ </string>
+ <string name="Pants Wrinkles">
+ Pantolon Kırışıklıkları
+ </string>
+ <string name="Part">
+ Ayırma
+ </string>
+ <string name="Part Bangs">
+ Ayrılmış Kahküller
+ </string>
+ <string name="Pectorals">
+ Göğüs Kasları
+ </string>
+ <string name="Pigment">
+ Pigment
+ </string>
+ <string name="Pigtails">
+ Yan Kuyruklar
+ </string>
+ <string name="Pink">
+ Pembe
+ </string>
+ <string name="Pinker">
+ Daha Pembe
+ </string>
+ <string name="Platform Height">
+ Topuk Yüksekliği
+ </string>
+ <string name="Platform Width">
+ Topuk Genişliği
+ </string>
+ <string name="Pointy">
+ Dar
+ </string>
+ <string name="Pointy Heels">
+ Sivri Topuklar
+ </string>
+ <string name="Ponytail">
+ Atkuyruğu
+ </string>
+ <string name="Poofy Skirt">
+ Kabarık Etek
+ </string>
+ <string name="Pop Left Eye">
+ Sol Gözü Dışarı Çıkar
+ </string>
+ <string name="Pop Right Eye">
+ Sağ Gözü Dışarı Çıkar
+ </string>
+ <string name="Puffy">
+ Şişkin
+ </string>
+ <string name="Puffy Eyelids">
+ Şişkin Göz Kapakları
+ </string>
+ <string name="Rainbow Color">
+ Gökkuşağı Rengi
+ </string>
+ <string name="Red Hair">
+ Kırmızı Saç
+ </string>
+ <string name="Regular">
+ Normal
+ </string>
+ <string name="Right Part">
+ Sağa Ayırma
+ </string>
+ <string name="Rosy Complexion">
+ Kırmızı Yanaklı
+ </string>
+ <string name="Round">
+ Yuvarlak
+ </string>
+ <string name="Ruddiness">
+ Kırmızılık
+ </string>
+ <string name="Ruddy">
+ Kırmızı
+ </string>
+ <string name="Rumpled Hair">
+ Dağınık Saç
+ </string>
+ <string name="Saddle Bags">
+ Basen Genişliği
+ </string>
+ <string name="Scrawny Leg">
+ Sıska Bacak
+ </string>
+ <string name="Separate">
+ Ayrık
+ </string>
+ <string name="Shallow">
+ Sığ
+ </string>
+ <string name="Shear Back">
+ Arka Dolgunluğu
+ </string>
+ <string name="Shear Face">
+ Yüzü Dikey Kaydır
+ </string>
+ <string name="Shear Front">
+ Ön Dolgunluğu
+ </string>
+ <string name="Shear Left Up">
+ Solu Yukarı Kaydır
+ </string>
+ <string name="Shear Right Up">
+ Sağı Yukarı Kaydır
+ </string>
+ <string name="Sheared Back">
+ Arkası Dolgun
+ </string>
+ <string name="Sheared Front">
+ Önü Dolgun
+ </string>
+ <string name="Shift Left">
+ Sola Kaydır
+ </string>
+ <string name="Shift Mouth">
+ Ağzı Kaydırma
+ </string>
+ <string name="Shift Right">
+ Sağa Kaydır
+ </string>
+ <string name="Shirt Bottom">
+ Gömlek Eteği
+ </string>
+ <string name="Shirt Fit">
+ Gömlek Boyu
+ </string>
+ <string name="Shirt Wrinkles">
+ Gömlek Kırışıklıkları
+ </string>
+ <string name="Shoe Height">
+ Ayakkabı Yüksekliği
+ </string>
+ <string name="Short">
+ Kısa
+ </string>
+ <string name="Short Arms">
+ Kısa Kollar
+ </string>
+ <string name="Short Legs">
+ Kısa Bacaklar
+ </string>
+ <string name="Short Neck">
+ Kısa Boyun
+ </string>
+ <string name="Short Pigtails">
+ Yandan Kısa Kuyruk
+ </string>
+ <string name="Short Ponytail">
+ Kısa Atkuyruğu
+ </string>
+ <string name="Short Sideburns">
+ Kısa Favoriler
+ </string>
+ <string name="Short Torso">
+ Kısa Gövde
+ </string>
+ <string name="Short hips">
+ Düşük kalça
+ </string>
+ <string name="Shoulders">
+ Omuzlar
+ </string>
+ <string name="Side Fringe">
+ Yan Perçem
+ </string>
+ <string name="Sideburns">
+ Favoriler
+ </string>
+ <string name="Sides Hair">
+ Yan Saçlar
+ </string>
+ <string name="Sides Hair Down">
+ Aşağı Doğru Yan Saç
+ </string>
+ <string name="Sides Hair Up">
+ Yukarı Doğru Yan Saç
+ </string>
+ <string name="Skinny Neck">
+ İnce Boyun
+ </string>
+ <string name="Skirt Fit">
+ Etek Boyu
+ </string>
+ <string name="Skirt Length">
+ Etek Uzunluğu
+ </string>
+ <string name="Slanted Forehead">
+ Eğimli Alın
+ </string>
+ <string name="Sleeve Length">
+ Kol Uzunluğu
+ </string>
+ <string name="Sleeve Looseness">
+ Kol Bolluğu
+ </string>
+ <string name="Slit Back">
+ Yırtmaç: Geri
+ </string>
+ <string name="Slit Front">
+ Yırtmaç: Ön
+ </string>
+ <string name="Slit Left">
+ Yırtmaç: Sol
+ </string>
+ <string name="Slit Right">
+ Yırtmaç: Sağ
+ </string>
+ <string name="Small">
+ Küçük
+ </string>
+ <string name="Small Hands">
+ Küçük Eller
+ </string>
+ <string name="Small Head">
+ Küçük Kafa
+ </string>
+ <string name="Smooth">
+ Düz
+ </string>
+ <string name="Smooth Hair">
+ Düz Saç
+ </string>
+ <string name="Socks Length">
+ Çorap Uzunluğu
+ </string>
+ <string name="Soulpatch">
+ Dudak Altı Sakal
+ </string>
+ <string name="Sparse">
+ Seyrek
+ </string>
+ <string name="Spiked Hair">
+ Dikleştirilmiş Saç
+ </string>
+ <string name="Square">
+ Geniş
+ </string>
+ <string name="Square Toe">
+ Küt Burunlu
+ </string>
+ <string name="Squash Head">
+ Kafayı Bastır
+ </string>
+ <string name="Stretch Head">
+ Kafayı Uzat
+ </string>
+ <string name="Sunken">
+ Çökük
+ </string>
+ <string name="Sunken Chest">
+ Çökük Göğüs
+ </string>
+ <string name="Sunken Eyes">
+ Çökük Gözler
+ </string>
+ <string name="Sweep Back">
+ Arkaya Tarama
+ </string>
+ <string name="Sweep Forward">
+ Öne Tarama
+ </string>
+ <string name="Tall">
+ Uzun
+ </string>
+ <string name="Taper Back">
+ Arkası Kısa
+ </string>
+ <string name="Taper Front">
+ Önü Kısa
+ </string>
+ <string name="Thick Heels">
+ Kalın Topuklar
+ </string>
+ <string name="Thick Neck">
+ Kalın Boyun
+ </string>
+ <string name="Thick Toe">
+ Kalın Ayak Ucu
+ </string>
+ <string name="Thin">
+ İnce
+ </string>
+ <string name="Thin Eyebrows">
+ İnce Kaşlar
+ </string>
+ <string name="Thin Lips">
+ İnce Dudaklar
+ </string>
+ <string name="Thin Nose">
+ İnce Burun
+ </string>
+ <string name="Tight Chin">
+ Çift Çene
+ </string>
+ <string name="Tight Cuffs">
+ Dar Paçalar
+ </string>
+ <string name="Tight Pants">
+ Dar Pantolon
+ </string>
+ <string name="Tight Shirt">
+ Dar Gömlek
+ </string>
+ <string name="Tight Skirt">
+ Dar Etek
+ </string>
+ <string name="Tight Sleeves">
+ Dar Kollu
+ </string>
+ <string name="Toe Shape">
+ Ayakkabu Burnu Şekli
+ </string>
+ <string name="Toe Thickness">
+ Ayakkabu Burnu Kalınlığı
+ </string>
+ <string name="Torso Length">
+ Gövde Uzunluğu
+ </string>
+ <string name="Torso Muscles">
+ Gövde Kasları
+ </string>
+ <string name="Torso Scrawny">
+ Sıska Gövde
+ </string>
+ <string name="Unattached">
+ Ayrık
+ </string>
+ <string name="Uncreased">
+ Buruşuk olmayan
+ </string>
+ <string name="Underbite">
+ Geriye Doğru
+ </string>
+ <string name="Unnatural">
+ Doğal Olmayan
+ </string>
+ <string name="Upper Bridge">
+ Üst Burun Kemiği
+ </string>
+ <string name="Upper Cheeks">
+ Üst Yanaklar
+ </string>
+ <string name="Upper Chin Cleft">
+ Üst Çene Çukuru
+ </string>
+ <string name="Upper Eyelid Fold">
+ Üst Göz Kapağı Kıvrımı
+ </string>
+ <string name="Upturned">
+ Yukarı dönük
+ </string>
+ <string name="Very Red">
+ Çok Kırmızı
+ </string>
+ <string name="Waist Height">
+ Bel Yüksekliği
+ </string>
+ <string name="Well-Fed">
+ Dolgun
+ </string>
+ <string name="White Hair">
+ Beyaz Saç
+ </string>
+ <string name="Wide">
+ Geniş
+ </string>
+ <string name="Wide Back">
+ Geniş Arka
+ </string>
+ <string name="Wide Front">
+ Geniş Ön
+ </string>
+ <string name="Wide Lips">
+ Geniş Dudaklar
+ </string>
+ <string name="Wild">
+ Çılgın
+ </string>
+ <string name="Wrinkles">
+ Kırışıklıklar
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Yer İmlerime Ekle
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Yer İmimi Düzenle
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Geçerli konum hakkında daha fazla bilgi gör
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Konum geçmişim
+ </string>
+ <string name="LocationCtrlForSaleTooltip">
+ Bu araziyi satın al
+ </string>
+ <string name="LocationCtrlVoiceTooltip">
+ Ses burada kullanılamaz
+ </string>
+ <string name="LocationCtrlFlyTooltip">
+ Uçmaya izin verilmiyor
+ </string>
+ <string name="LocationCtrlPushTooltip">
+ İtme yok
+ </string>
+ <string name="LocationCtrlBuildTooltip">
+ Nesne inşa etmeye/düşürmeye izin verilmiyor
+ </string>
+ <string name="LocationCtrlScriptsTooltip">
+ Komut dosyalarına izin verilmiyor
+ </string>
+ <string name="LocationCtrlDamageTooltip">
+ Sağlık
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Yetişkin Bölgesi
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Orta Bölge
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Genel Bölge
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Bu parselin dışında avatarlar görünür durumda ve sohbete izin veriliyor
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Güncelleştirme
+ </string>
+ <string name="UpdaterNowUpdating">
+ [APP_NAME] güncelleştiriliyor...
+ </string>
+ <string name="UpdaterNowInstalling">
+ [APP_NAME] yükleniyor...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ [APP_NAME] Görüntüleyiciniz en son sürüme güncelleştiriliyor. Bu biraz zaman alabilir, bu nedenle sabırlı olun.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Güncelleştirme karşıdan yükleniyor...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Güncelleştirme karşıdan yükleniyor
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Güncelleştirmenin karşıdan yüklenmesi başarılamadı
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ [APP_NAME] güncellenirken bir hata oluştu. Lütfen www.secondlife.com adresinden son sürümü karşıdan yükleyin.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Güncelleştirmenin yüklenmesi başarılamadı
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Görüntüleyici başlatılamadı
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME]: [FROM_NAME]&apos;den öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME]: Öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
+ </string>
+ <string name="IM_logging_string">
+ -- Anlık ileti günlük tutulması etkin --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] yazıyor...
+ </string>
+ <string name="Unnamed">
+ (İsimsiz)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Yönetilen: Varsayılan durumda sesler kapalı)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Bu aramada metin sohbeti kullanılamaz.
+ </string>
+ <string name="IM_muted_text_label">
+ Bir Grup Moderatörü tarafından metin sohbetiniz devre dışı bırakıldı.
+ </string>
+ <string name="IM_default_text_label">
+ Anlık ileti göndermek için buraya tıklayın.
+ </string>
+ <string name="IM_to_label">
+ Kime
+ </string>
+ <string name="IM_moderator_label">
+ (Moderatör)
+ </string>
+ <string name="Saved_message">
+ (Kaydedildi [LONG_TIMESTAMP])
+ </string>
+ <string name="answered_call">
+ Aramanız yanıtlandı
+ </string>
+ <string name="you_started_call">
+ Bir sesli arama başlattınız
+ </string>
+ <string name="you_joined_call">
+ Sesli aramaya katıldınız
+ </string>
+ <string name="name_started_call">
+ [NAME] bir sesli arama başlattı
+ </string>
+ <string name="ringing-im">
+ Sesli aramaya katılınılıyor...
+ </string>
+ <string name="connected-im">
+ Bağlandı, kapatmak için Aramadan Çık üzerine tıklayın
+ </string>
+ <string name="hang_up-im">
+ Sesli aramadan çıkıldı
+ </string>
+ <string name="answering-im">
+ Bağlanıyor...
+ </string>
+ <string name="conference-title">
+ Özel Konferans
+ </string>
+ <string name="conference-title-incoming">
+ [AGENT_NAME] ile konferans
+ </string>
+ <string name="inventory_item_offered-im">
+ Teklif edilen envanter öğesi:
+ </string>
+ <string name="share_alert">
+ Envanterinizden buraya öğeler sürükleyin
+ </string>
+ <string name="no_session_message">
+ (Aİ Oturumu Mevcut Değil)
+ </string>
+ <string name="only_user_message">
+ Bu oturumdaki tek kullanıcısınız.
+ </string>
+ <string name="offline_message">
+ [NAME] çevrim dışı.
+ </string>
+ <string name="invite_message">
+ Bu sesli sohbeti kabul etmek/bağlanmak için [BUTTON NAME] düğmesine tıklayın.
+ </string>
+ <string name="muted_message">
+ Bu Sakini engellediniz. Bir ileti gönderdiğinizde engelleme otomatik olarak kaldırılır.
+ </string>
+ <string name="generic">
+ Talep gönderilirken hata oluştu, lütfen daha sonra tekrar deneyin.
+ </string>
+ <string name="generic_request_error">
+ Talep gönderilirken hata oluştu, lütfen daha sonra tekrar deneyin.
+ </string>
+ <string name="insufficient_perms_error">
+ Yeterli izne sahip değilsiniz.
+ </string>
+ <string name="session_does_not_exist_error">
+ Bu oturum artık mevcut değil.
+ </string>
+ <string name="no_ability_error">
+ Bu yeteneğe sahip değilsiniz.
+ </string>
+ <string name="no_ability">
+ Bu yeteneğe sahip değilsiniz.
+ </string>
+ <string name="not_a_mod_error">
+ Bir oturum moderatörü değilsiniz.
+ </string>
+ <string name="muted">
+ Bir grup moderatörü metin sohbetinizi devre dışı bıraktı.
+ </string>
+ <string name="muted_error">
+ Bir grup moderatörü metin sohbetinizi devre dışı bıraktı.
+ </string>
+ <string name="add_session_event">
+ [RECIPIENT] ile sohbet oturumuna kullanıcı eklenemiyor.
+ </string>
+ <string name="message">
+ İletiniz [RECIPIENT] ile sohbet oturumuna gönderilemedi.
+ </string>
+ <string name="message_session_event">
+ İletiniz [RECIPIENT] ile sohbet oturumuna gönderilemedi.
+ </string>
+ <string name="mute">
+ Yönetme sırasında hata oluştu.
+ </string>
+ <string name="removed">
+ Gruptan çıkarıldınız.
+ </string>
+ <string name="removed_from_group">
+ Gruptan çıkarıldınız.
+ </string>
+ <string name="close_on_no_ability">
+ Sohbet oturumunda bulunma yeteneğine artık sahip değilsiniz.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] yeni bir şey söyledi
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] yeni bir şey söyledi
+ </string>
+ <string name="session_initialization_timed_out_error">
+ Oturum başlatılması zaman aşımına uğradı.
+ </string>
+ <string name="Home position set.">
+ Ana konum ayarlandı.
+ </string>
+ <string name="voice_morphing_url">
+ http://secondlife.com/landing/voicemorphing
+ </string>
+ <string name="paid_you_ldollars">
+ [NAME] size [REASON] L$[AMOUNT] ödedi.
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ [NAME] size L$[AMOUNT] ödedi.
+ </string>
+ <string name="you_paid_ldollars">
+ [NAME]&apos;e [REASON] L$[AMOUNT] ödediniz.
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ L$[AMOUNT] ödediniz.
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ [NAME]&apos;e L$[AMOUNT] ödediniz.
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ [REASON] L$[AMOUNT] ödediniz.
+ </string>
+ <string name="for item">
+ [ITEM] için.
+ </string>
+ <string name="for a parcel of land">
+ bir arazi parseli için.
+ </string>
+ <string name="for a land access pass">
+ bir arazi erişim hakkı için
+ </string>
+ <string name="for deeding land">
+ arazi devretmek için
+ </string>
+ <string name="to create a group">
+ bir grup oluşturmak için
+ </string>
+ <string name="to join a group">
+ bir grupa katılmak için
+ </string>
+ <string name="to upload">
+ karşıya yüklemek için
+ </string>
+ <string name="to publish a classified ad">
+ bir ilan yayınlamak için
+ </string>
+ <string name="giving">
+ L$ [AMOUNT] veriliyor
+ </string>
+ <string name="uploading_costs">
+ Karşıya yüklemenin maliyeti: L$ [AMOUNT]
+ </string>
+ <string name="this_costs">
+ Bunun maliyeti: L$ [AMOUNT]
+ </string>
+ <string name="buying_selected_land">
+ L$ [AMOUNT] karşılığında seçilen arazi satın alınıyor
+ </string>
+ <string name="this_object_costs">
+ Bu nesnenin maliyeti: L$ [AMOUNT]
+ </string>
+ <string name="group_role_everyone">
+ Herkes
+ </string>
+ <string name="group_role_officers">
+ Yetkililer
+ </string>
+ <string name="group_role_owners">
+ Sahipler
+ </string>
+ <string name="group_member_status_online">
+ Çevrimiçi
+ </string>
+ <string name="uploading_abuse_report">
+ Karşıya Yükleniyor...
+
+Kötüye Kullanımı Bildirme
+ </string>
+ <string name="New Shape">
+ Yeni Şekil
+ </string>
+ <string name="New Skin">
+ Yeni Dış Katman
+ </string>
+ <string name="New Hair">
+ Yeni Saç
+ </string>
+ <string name="New Eyes">
+ Yeni Gözler
+ </string>
+ <string name="New Shirt">
+ Yeni Gömlek
+ </string>
+ <string name="New Pants">
+ Yeni Pantolon
+ </string>
+ <string name="New Shoes">
+ Yeni Ayakkabılar
+ </string>
+ <string name="New Socks">
+ Yeni Çoraplar
+ </string>
+ <string name="New Jacket">
+ Yeni Ceket
+ </string>
+ <string name="New Gloves">
+ Yeni Eldivenler
+ </string>
+ <string name="New Undershirt">
+ Yeni Fanila
+ </string>
+ <string name="New Underpants">
+ Yeni Külot
+ </string>
+ <string name="New Skirt">
+ Yeni Etek
+ </string>
+ <string name="New Alpha">
+ Yeni Alfa
+ </string>
+ <string name="New Tattoo">
+ Yeni Dövme
+ </string>
+ <string name="New Physics">
+ Yeni Fizik
+ </string>
+ <string name="Invalid Wearable">
+ Geçersiz Giyilebilir
+ </string>
+ <string name="New Gesture">
+ Yeni Mimik
+ </string>
+ <string name="New Script">
+ Yeni Komut Dosyası
+ </string>
+ <string name="New Note">
+ Yeni Not
+ </string>
+ <string name="New Folder">
+ Yeni Klasör
+ </string>
+ <string name="Contents">
+ İçerik
+ </string>
+ <string name="Gesture">
+ Mimik
+ </string>
+ <string name="Male Gestures">
+ Erkek Mimikleri
+ </string>
+ <string name="Female Gestures">
+ Kadın Mimikleri
+ </string>
+ <string name="Other Gestures">
+ Diğer Mimikler
+ </string>
+ <string name="Speech Gestures">
+ Konuşma Mimikleri
+ </string>
+ <string name="Common Gestures">
+ Favori Mimikler
+ </string>
+ <string name="Male - Excuse me">
+ Erkek - Afedersiniz
+ </string>
+ <string name="Male - Get lost">
+ Erkek - İşine bak
+ </string>
+ <string name="Male - Blow kiss">
+ Erkek - Öpücük gönderme
+ </string>
+ <string name="Male - Boo">
+ Erkek - Yuh çekme
+ </string>
+ <string name="Male - Bored">
+ Erkek - Canı sıkılmış
+ </string>
+ <string name="Male - Hey">
+ Erkek - Hey
+ </string>
+ <string name="Male - Laugh">
+ Erkek - Gülme
+ </string>
+ <string name="Male - Repulsed">
+ Erkek - Tiksinmiş
+ </string>
+ <string name="Male - Shrug">
+ Erkek - Omuz Silkme
+ </string>
+ <string name="Male - Stick tougue out">
+ Erkek - Dil çıkarma
+ </string>
+ <string name="Male - Wow">
+ Erkek - Vay be
+ </string>
+ <string name="Female - Chuckle">
+ Kadın - Kıkırdama
+ </string>
+ <string name="Female - Cry">
+ Kadın - Ağlama
+ </string>
+ <string name="Female - Embarrassed">
+ Kadın - Utanmış
+ </string>
+ <string name="Female - Excuse me">
+ Kadın - Afedersiniz
+ </string>
+ <string name="Female - Get lost">
+ Kadın - İşine bak
+ </string>
+ <string name="Female - Blow kiss">
+ Kadın - Öpücük gönderme
+ </string>
+ <string name="Female - Boo">
+ Kadın - Yuh çekme
+ </string>
+ <string name="Female - Bored">
+ Kadın - Canı sıkılmış
+ </string>
+ <string name="Female - Hey">
+ Kadın - Hey
+ </string>
+ <string name="Female - Hey baby">
+ Kadın - Hey bebek
+ </string>
+ <string name="Female - Laugh">
+ Kadın - Gülme
+ </string>
+ <string name="Female - Looking good">
+ Kadın - Yakışıklı
+ </string>
+ <string name="Female - Over here">
+ Kadın - Buraya baksana
+ </string>
+ <string name="Female - Please">
+ Kadın - Lütfen
+ </string>
+ <string name="Female - Repulsed">
+ Kadın - Tiksinmiş
+ </string>
+ <string name="Female - Shrug">
+ Kadın - Omuz Silkme
+ </string>
+ <string name="Female - Stick tougue out">
+ Kadın - Dil çıkarma
+ </string>
+ <string name="Female - Wow">
+ Kadın - Vay be
+ </string>
+ <string name="/bow">
+ /selamlama
+ </string>
+ <string name="/clap">
+ /alkış
+ </string>
+ <string name="/count">
+ /sayım
+ </string>
+ <string name="/extinguish">
+ /söndürme
+ </string>
+ <string name="/kmb">
+ /hib
+ </string>
+ <string name="/muscle">
+ /kas
+ </string>
+ <string name="/no">
+ /hayır
+ </string>
+ <string name="/no!">
+ /hayır!
+ </string>
+ <string name="/paper">
+ /kağıt
+ </string>
+ <string name="/pointme">
+ /beni göster
+ </string>
+ <string name="/pointyou">
+ /seni göster
+ </string>
+ <string name="/rock">
+ /kaya
+ </string>
+ <string name="/scissor">
+ /makas
+ </string>
+ <string name="/smoke">
+ /duman
+ </string>
+ <string name="/stretch">
+ /uzatma
+ </string>
+ <string name="/whistle">
+ /ıslık
+ </string>
+ <string name="/yes">
+ /evet
+ </string>
+ <string name="/yes!">
+ /evet!
+ </string>
+ <string name="afk">
+ kbd
+ </string>
+ <string name="dance1">
+ dans1
+ </string>
+ <string name="dance2">
+ dans2
+ </string>
+ <string name="dance3">
+ dans3
+ </string>
+ <string name="dance4">
+ dans4
+ </string>
+ <string name="dance5">
+ dans5
+ </string>
+ <string name="dance6">
+ dans6
+ </string>
+ <string name="dance7">
+ dans7
+ </string>
+ <string name="dance8">
+ dans8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ hiçbiri/hiçbiri
+ </string>
+ <string name="texture_load_dimensions_error">
+ [WIDTH]*[HEIGHT] çözünürlüğünden büyük görüntüler yüklenemez
+ </string>
+ <string name="words_separator" value=","/>
+ <string name="server_is_down">
+ Tüm çabalarımıza rağmen beklenmeyen bir hata meydana geldi.
+
+ Hizmetle ilişkili bilinen bir sorun olup olmadığını görmek için lütfen status.secondlifegrid.net adresine bakın.
+ Sorun yaşamaya devam ederseniz lütfen ağınızın ve güvenlik duvarınızın ayarlarına bakın.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ Pazar:Pazartesi:Salı:Çarşamba:Perşembe:Cuma:Cumartesi
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ Paz:Pzt:Sal:Çar:Per:Cum:Cmt
+ </string>
+ <string name="dateTimeMonthNames">
+ Ocak:Şubat:Mart:Nisan:Mayıs:Haziran:Temmuz:Ağustos:Eylül:Ekim:Kasım:Aralık
+ </string>
+ <string name="dateTimeMonthShortNames">
+ Oca:Şub:Mar:Nis:May:Haz:Tem:Ağu:Eyl:Eki:Kas:Ara
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ ÖÖ
+ </string>
+ <string name="dateTimePM">
+ ÖS
+ </string>
+ <string name="LocalEstimateUSD">
+ US$ [AMOUNT]
+ </string>
+ <string name="Membership">
+ Üyelik
+ </string>
+ <string name="Roles">
+ Roller
+ </string>
+ <string name="Group Identity">
+ Grup Kimliği
+ </string>
+ <string name="Parcel Management">
+ Parsel Yönetimi
+ </string>
+ <string name="Parcel Identity">
+ Parsel Kimliği
+ </string>
+ <string name="Parcel Settings">
+ Parsel Ayarları
+ </string>
+ <string name="Parcel Powers">
+ Parsel Güçleri
+ </string>
+ <string name="Parcel Access">
+ Parsel Erişimi
+ </string>
+ <string name="Parcel Content">
+ Parsel İçeriği
+ </string>
+ <string name="Object Management">
+ Nesne Yönetimi
+ </string>
+ <string name="Accounting">
+ Muhasebe
+ </string>
+ <string name="Notices">
+ Bildirimler
+ </string>
+ <string name="Chat">
+ Sohbet
+ </string>
+ <string name="DeleteItems">
+ Seçili öğeler silinsin mi?
+ </string>
+ <string name="DeleteItem">
+ Seçili öğe silinsin mi?
+ </string>
+ <string name="EmptyOutfitText">
+ Bu dış görünümde herhangi bir öğe yok
+ </string>
+ <string name="ExternalEditorNotSet">
+ ExternalEditor ayarını kullanarak bir düzenleyici seçin.
+ </string>
+ <string name="ExternalEditorNotFound">
+ Belirttiğiniz harici düzenleyici bulunamadı.
+Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
+(örn. &quot;/yolum/duzenleyici&quot; &quot;%s&quot;)
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Harici düzenleyici komutu ayrıştırılırken hata oluştu.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ Harici düzenleyici çalışmadı.
+ </string>
+ <string name="Esc">
+ Esc
+ </string>
+ <string name="Space">
+ Boşluk
+ </string>
+ <string name="Enter">
+ Enter
+ </string>
+ <string name="Tab">
+ Sekme
+ </string>
+ <string name="Ins">
+ Ins
+ </string>
+ <string name="Del">
+ Del
+ </string>
+ <string name="Backsp">
+ Geri tuşu
+ </string>
+ <string name="Shift">
+ Shift
+ </string>
+ <string name="Ctrl">
+ Ctrl
+ </string>
+ <string name="Alt">
+ Alt
+ </string>
+ <string name="CapsLock">
+ CapsLock
+ </string>
+ <string name="Left">
+ Sol
+ </string>
+ <string name="Right">
+ Sağ
+ </string>
+ <string name="Up">
+ Yukarı
+ </string>
+ <string name="Down">
+ Aşağı
+ </string>
+ <string name="Home">
+ Home
+ </string>
+ <string name="End">
+ End
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ Ekle
+ </string>
+ <string name="Subtract">
+ Çıkar
+ </string>
+ <string name="Multiply">
+ Çarp
+ </string>
+ <string name="Divide">
+ Böl
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Parçacık işaretleri gösteriliyor (mavi)
+ </string>
+ <string name="BeaconPhysical">
+ Fiziksel nesne işaretleri gösteriliyor (yeşil)
+ </string>
+ <string name="BeaconScripted">
+ Komut dosyalı nesne işaretleri gösteriliyor (kırmızı)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Dokunma işlevli komut dosyalı nesne işaretleri gösteriliyor (kırmızı)
+ </string>
+ <string name="BeaconSound">
+ Ses işaretleri gösteriliyor (sarı)
+ </string>
+ <string name="BeaconMedia">
+ Ortam işaretleri gösteriliyor (beyaz)
+ </string>
+ <string name="ParticleHiding">
+ Parçacıklar Gizleniyor
+ </string>
+ <string name="Command_AboutLand_Label">
+ Arazi hakkında
+ </string>
+ <string name="Command_Appearance_Label">
+ Görünüm
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ İnşa Et
+ </string>
+ <string name="Command_Chat_Label">
+ Sohbet
+ </string>
+ <string name="Command_Compass_Label">
+ Pusula
+ </string>
+ <string name="Command_Destinations_Label">
+ Hedef Konum
+ </string>
+ <string name="Command_Gestures_Label">
+ Mimikler
+ </string>
+ <string name="Command_HowTo_Label">
+ Nasıl yapılır
+ </string>
+ <string name="Command_Inventory_Label">
+ Envanter
+ </string>
+ <string name="Command_Map_Label">
+ Harita
+ </string>
+ <string name="Command_Marketplace_Label">
+ Pazaryeri
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini-harita
+ </string>
+ <string name="Command_Move_Label">
+ Hareket Et
+ </string>
+ <string name="Command_People_Label">
+ Kişiler
+ </string>
+ <string name="Command_Picks_Label">
+ Seçmeler
+ </string>
+ <string name="Command_Places_Label">
+ Yerler
+ </string>
+ <string name="Command_Preferences_Label">
+ Tercihler
+ </string>
+ <string name="Command_Profile_Label">
+ Profil
+ </string>
+ <string name="Command_Search_Label">
+ Ara
+ </string>
+ <string name="Command_Snapshot_Label">
+ Anlık görüntü
+ </string>
+ <string name="Command_Speak_Label">
+ Konuş
+ </string>
+ <string name="Command_View_Label">
+ Görünüm
+ </string>
+ <string name="Command_Voice_Label">
+ Yakındaki ses
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Ziyaret ettiğiniz araziyle ilgili bilgi
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Avatarınızı değiştirin
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Eksiksiz bir avatar seçin
+ </string>
+ <string name="Command_Build_Tooltip">
+ Nesneler oluşturma ve yüzeyi şekillendirme
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Metin kullanarak yakındaki kişilerle sohbet etmek
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Pusula
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ İlgilendiğiniz hedef konumlar
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Avatarınız için mimikler
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Genel görevleri nasıl yapacağınız
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Eşyalarınızı görüntüleyin ve kullanın
+ </string>
+ <string name="Command_Map_Tooltip">
+ Dünya haritası
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Alışveriş yap
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Yakındaki kişileri göster
+ </string>
+ <string name="Command_Move_Tooltip">
+ Avatarınızı hareket ettirmek
+ </string>
+ <string name="Command_People_Tooltip">
+ Arkadaşlar, gruplar ve yakındaki kişiler
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Profilinizde favori olarak gösterilecek yerler
+ </string>
+ <string name="Command_Places_Tooltip">
+ Kaydettiğiniz yerler
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Tercihler
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Profilinizi düzenleyin veya görüntüleyin
+ </string>
+ <string name="Command_Search_Tooltip">
+ Yerler, etkinlikler ve kişiler bulmak
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Resim çekin
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Mikrofonunuzu kullanarak yakındaki kişilerle konuşun
+ </string>
+ <string name="Command_View_Tooltip">
+ Kamera açısını değiştirmek
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Ses imkanına sahip yakındaki kişiler
+ </string>
+ <string name="Retain%">
+ Koru %
+ </string>
+ <string name="Detail">
+ Ayrıntı
+ </string>
+ <string name="Better Detail">
+ Daha İyi Ayrıntı
+ </string>
+ <string name="Surface">
+ Yüzey
+ </string>
+ <string name="Solid">
+ Katı
+ </string>
+ <string name="Wrap">
+ Sar
+ </string>
+ <string name="Preview">
+ Önizleme
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
+</strings>
diff --git a/indra/newview/skins/default/xui/tr/teleport_strings.xml b/indra/newview/skins/default/xui/tr/teleport_strings.xml
new file mode 100644
index 0000000000..c506bb8a58
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/teleport_strings.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages>
+ <message_set name="errors">
+ <message name="invalid_tport">
+ Işınlama talebiniz işlenirken bir sorunla karşılaşıldı. Işınlanabilmek için yeniden oturum açmanız gerekebilir.
+Bu mesajı almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+ </message>
+ <message name="invalid_region_handoff">
+ Bölge değiştirme talebiniz işlenirken sorunla karşılaşıldı. Bölge geçebilmek için yeniden oturum açmanız gerekebilir.
+Bu mesajı almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+ </message>
+ <message name="blocked_tport">
+ Üzgünüz, ışınlama şu anda engellenmiş durumda. Bir dakika sonra tekrar deneyin.
+Hala ışınlanamıyorsanız, sorunu çözmek için lütfen çıkış yapıp oturumu tekrar açın.
+ </message>
+ <message name="nolandmark_tport">
+ Üzgünüz fakat sistem yer imi hedef konumunu bulamadı.
+ </message>
+ <message name="timeout_tport">
+ Üzgünüz fakat sistem ışınlama bağlantısını tamamlayamadı.
+Bir dakika sonra tekrar deneyin.
+ </message>
+ <message name="NoHelpIslandTP">
+You cannot teleport back to Welcome Island.
+Go to &apos;Welcome Island Public&apos; to repeat the tutorial.
+ </message>
+ <message name="noaccess_tport">
+ Üzgünüz, bu ışınlanma hedef konumuna erişim hakkına sahip değilsiniz.
+ </message>
+ <message name="missing_attach_tport">
+ Aksesuarlarınız henüz ulaşmadı. Işınlanmayı tekrar denemeden önce bir kaç saniye bekleyin veya çıkış yapıp oturumu tekrar açın.
+ </message>
+ <message name="too_many_uploads_tport">
+ Bu bölgedeki varlık sırası şu anda yoğunluktan dolayı tıkalı olduğu için ışınlanma talebiniz zamanında gerçekleştirilemeyecek. Lütfen bir kaç dakika sonra tekrar deneyin veya yoğunluğu daha az olan bir bölge seçin.
+ </message>
+ <message name="expired_tport">
+ Üzgünüz fakat sistem ışınlanma talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+ </message>
+ <message name="expired_region_handoff">
+ Üzgünüz fakat sistem bölge değiştirme talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+ </message>
+ <message name="no_host">
+ Işınlanma hedef konumu bulunamıyor. Hedef konumu geçici bir süre için kullanılamıyor ya da artık mevcut değil. Lütfen bir kaç dakika sonra tekrar deneyin.
+ </message>
+ <message name="no_inventory_host">
+ Envanter sistemi şu anda kullanılamıyor.
+ </message>
+ </message_set>
+ <message_set name="progress">
+ <message name="sending_dest">
+ Hedef konuma gönderiliyor.
+ </message>
+ <message name="redirecting">
+ Farklı konuma tekrar yönlendiriliyor.
+ </message>
+ <message name="relaying">
+ Hedefe aktarılıyor.
+ </message>
+ <message name="sending_home">
+ Ana konum talebi gönderiliyor.
+ </message>
+ <message name="sending_landmark">
+ Yer imi konumu talebi gönderiliyor.
+ </message>
+ <message name="completing">
+ Işınlanma tamamlanıyor.
+ </message>
+ <message name="completed_from">
+ [T_SLURL] konumundan ışınlanma tamamlandı.
+ </message>
+ <message name="resolving">
+ Hedef konum çözümleniyor.
+ </message>
+ <message name="contacting">
+ Yeni bölgeye bağlanılıyor.
+ </message>
+ <message name="arriving">
+ Konuma varılıyor...
+ </message>
+ <message name="requesting">
+ Işınlanma talep ediliyor...
+ </message>
+ </message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml
index 0ac85d399e..7e19c124a1 100644
--- a/indra/newview/skins/default/xui/zh/floater_about.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about.xml
@@ -10,7 +10,7 @@
<floater.string name="AboutPosition">
You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &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]
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
index d63e73c6f1..9f6591faf9 100644
--- a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
@@ -46,7 +46,7 @@
L$ [AMT]
</text>
<text name="currency_links">
- [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+ [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
</text>
<text name="exchange_rate_note">
Re-enter amount to see the latest exchange rate.
diff --git a/indra/newview/skins/default/xui/zh/floater_camera.xml b/indra/newview/skins/default/xui/zh/floater_camera.xml
index f4db20684c..b75474340c 100644
--- a/indra/newview/skins/default/xui/zh/floater_camera.xml
+++ b/indra/newview/skins/default/xui/zh/floater_camera.xml
@@ -9,15 +9,6 @@
<floater.string name="move_tooltip">
Move Camera Up and Down, Left and Right
</floater.string>
- <floater.string name="camera_modes_title">
- 攝影機模式
- </floater.string>
- <floater.string name="pan_mode_title">
- 環繞縮放平移
- </floater.string>
- <floater.string name="presets_mode_title">
- 預設視角
- </floater.string>
<floater.string name="free_mode_title">
視角物件
</floater.string>
diff --git a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
deleted file mode 100644
index 84186c5836..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="日循環編輯器">
- <tab_container name="Day Cycle Tabs">
- <panel label="日循環" name="Day Cycle">
- <multi_slider initial_value="0" name="WLTimeSlider"/>
- <multi_slider initial_value="0" name="WLDayCycleKeys"/>
- <text name="WL12am">
- 12am
- </text>
- <text name="WL3am">
- 3am
- </text>
- <text name="WL6am">
- 6am
- </text>
- <text name="WL9amHash">
- 9am
- </text>
- <text name="WL12pmHash">
- 12pm
- </text>
- <text name="WL3pm">
- 3pm
- </text>
- <text name="WL6pm">
- 6pm
- </text>
- <text name="WL9pm">
- 9pm
- </text>
- <text name="WL12am2">
- 12am
- </text>
- <text name="WL12amHash">
- |
- </text>
- <text name="WL3amHash">
- I
- </text>
- <text name="WL6amHash">
- |
- </text>
- <text name="WL9amHash2">
- I
- </text>
- <text name="WL12pmHash2">
- |
- </text>
- <text name="WL3pmHash">
- I
- </text>
- <text name="WL6pmHash">
- |
- </text>
- <text name="WL9pmHash">
- I
- </text>
- <text name="WL12amHash2">
- |
- </text>
- <button label="Add Key" label_selected="Add Key" name="WLAddKey"/>
- <button label="Delete Key" label_selected="Delete Key" name="WLDeleteKey"/>
- <text name="WLCurKeyFrameText">
- Key Frame Settings:
- </text>
- <text name="WLCurKeyTimeText">
- Key Time:
- </text>
- <spinner label="Hour" name="WLCurKeyHour"/>
- <spinner label="Min" name="WLCurKeyMin"/>
- <text name="WLCurKeyTimeText2">
- Key Preset:
- </text>
- <combo_box label="Preset" name="WLKeyPresets"/>
- <text name="DayCycleText">
- Snap:
- </text>
- <combo_box label="五分鐘" name="WLSnapOptions"/>
- <text name="DayCycleText2">
- Length of Cycle:
- </text>
- <spinner label="小時" name="WLLengthOfDayHour"/>
- <spinner label="分" name="WLLengthOfDayMin"/>
- <spinner label="秒" name="WLLengthOfDaySec"/>
- <text name="DayCycleText3">
- 預覽:
- </text>
- <button label="播放" label_selected="播放" name="WLAnimSky"/>
- <button label="停止!" label_selected="停止" name="WLStopAnimSky"/>
- <button label="Use Estate Time" label_selected="Go to Estate Time" name="WLUseLindenTime"/>
- <button label="Save Test Day" label_selected="Save Test Day" name="WLSaveDayCycle"/>
- <button label="Load Test Day" label_selected="Load Test Day" name="WLLoadDayCycle"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml b/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml
index f0c34acb06..38a5dab523 100644
--- a/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="附近的聊天">
- <check_box label="Translate chat (powered by Google)" name="translate_chat_checkbox"/>
+ <check_box label="Translate chat" name="translate_chat_checkbox"/>
</floater>
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 2d309a2af0..17ff6288a5 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -966,7 +966,7 @@ Offer friendship to [NAME]?
</form>
</notification>
<notification name="RemoveFromFriends">
- Do you want to remove [NAME] from your Friends List?
+ Do you want to remove &lt;nolink&gt;[NAME]&lt;/nolink&gt; from your Friends List?
<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
</notification>
<notification name="RemoveMultipleFromFriends">
@@ -2109,10 +2109,10 @@ Link to this from a web page to give others easy access to this location, or try
Topic: [SUBJECT], Message: [MESSAGE]
</notification>
<notification name="FriendOnline">
- [NAME] 上線
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; 上線
</notification>
<notification name="FriendOffline">
- [NAME] 離線
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; 離線
</notification>
<notification name="AddSelfFriend">
Although you&apos;re very nice, you can&apos;t add yourself as a friend.
@@ -2491,10 +2491,10 @@ Please try again in a few moments.
</form>
</notification>
<notification name="FriendshipAccepted">
- [NAME] accepted your friendship offer.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; accepted your friendship offer.
</notification>
<notification name="FriendshipDeclined">
- [NAME] 謝絕你的交友邀請。
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; 謝絕你的交友邀請。
</notification>
<notification name="FriendshipAcceptedByMe">
交友邀請被接受。
diff --git a/indra/newview/skins/default/xui/zh/panel_my_profile.xml b/indra/newview/skins/default/xui/zh/panel_my_profile.xml
deleted file mode 100644
index 79817d7be9..0000000000
--- a/indra/newview/skins/default/xui/zh/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="檔案" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=en
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=en
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/account"/>
- <string name="no_partner_text" value="無"/>
- <string name="no_group_text" value="無"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="display_name_descr_text">
- User name
- </text>
- <text name="name_descr_text">
- 顯示名稱
- </text>
- <button label="檔案" name="see_profile_btn" tool_tip="察看這位化身的檔案"/>
- </panel>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_notes.xml b/indra/newview/skins/default/xui/zh/panel_notes.xml
deleted file mode 100644
index 875c6bb328..0000000000
--- a/indra/newview/skins/default/xui/zh/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notes &amp; Privacy" name="panel_notes">
- <layout_stack name="layout">
- <layout_panel name="notes_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_panel">
- <text name="status_message" value="My private notes:"/>
- <text name="status_message2" value="允許這個人可以:"/>
- <check_box label="看到我上線狀態" name="status_check"/>
- <check_box label="在地圖上看見我" name="map_check"/>
- <check_box label="邊輯,刪除或取下我的物件" name="objects_check"/>
- </panel>
- </scroll_container>
- </layout_panel>
- <layout_panel name="notes_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="加為朋友" name="add_friend" tool_tip="向這個居民提出交友邀請"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="開啟即時訊息會話"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="通話" name="call" tool_tip="與這位居民通話"/>
- </layout_panel>
- <layout_panel name="show_on_map_btn_lp">
- <button label="地圖" name="show_on_map_btn" tool_tip="在地圖上顯示這個居民"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="瞬間傳送" name="teleport" tool_tip="發給瞬間傳送請求"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
index c083d40a82..738c77fd08 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
@@ -30,7 +30,7 @@
<spinner label="Nearby chat toasts life time:" name="nearby_toasts_lifetime"/>
<spinner label="Nearby chat toasts fading time:" name="nearby_toasts_fadingtime"/>
<text name="translate_chb_label">
- 聊天時使用機器自動進行翻譯(由 Google 所提供)
+ 聊天時使用機器自動進行翻譯
</text>
<text name="translate_language_text">
聊天翻譯為:
@@ -50,7 +50,7 @@
<combo_box.item label="Русский (Russian)" name="Russian"/>
<combo_box.item label="Türkçe (Turkish)" name="Turkish"/>
<combo_box.item label="Українська (Ukrainian)" name="Ukrainian"/>
- <combo_box.item label="中文 (简体) (Chinese)" name="Chinese"/>
+ <combo_box.item label="中文 (正體) (Chinese)" name="Chinese"/>
<combo_box.item label="日本語 (Japanese)" name="Japanese"/>
<combo_box.item label="한국어 (Korean)" name="Korean"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
index cabe13adb8..6827fab6e6 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -5,16 +5,15 @@
</text>
<combo_box name="language_combobox">
<combo_box.item label="系統預設" name="System Default Language"/>
- <combo_box.item label="英語" name="English"/>
- <combo_box.item label="Dansk (Danish) - Beta" name="Danish"/>
- <combo_box.item label="Deutsch (German) - Beta" name="Deutsch(German)"/>
- <combo_box.item label="Español (Spanish) - Beta" name="Spanish"/>
- <combo_box.item label="Français (French) - Beta" name="French"/>
- <combo_box.item label="Italiano (Italian) - Beta" name="Italian"/>
- <combo_box.item label="Nederlands (Dutch) - Beta" name="Dutch"/>
- <combo_box.item label="Polski (Polish) - Beta" name="Polish"/>
- <combo_box.item label="Português (Portuguese) - Beta" name="Portugese"/>
- <combo_box.item label="日本語 (Japanese) - Beta" name="(Japanese)"/>
+ <combo_box.item label="English (英語)" name="English"/>
+ <combo_box.item label="Dansk (丹麥語) - Beta" name="Danish"/>
+ <combo_box.item label="Deutsch (德語) - Beta" name="Deutsch(German)"/>
+ <combo_box.item label="Español (西班牙語) - Beta" name="Spanish"/>
+ <combo_box.item label="Français (法語) - Beta" name="French"/>
+ <combo_box.item label="Italiano (義大利語) - Beta" name="Italian"/>
+ <combo_box.item label="Polski (波蘭語) - Beta" name="Polish"/>
+ <combo_box.item label="Português (葡萄牙語) - Beta" name="Portugese"/>
+ <combo_box.item label="日本語 (日語) - Beta" name="(Japanese)"/>
</combo_box>
<text name="language_textbox2">
(須重新啟動)
diff --git a/indra/newview/skins/default/xui/zh/panel_profile.xml b/indra/newview/skins/default/xui/zh/panel_profile.xml
deleted file mode 100644
index 502449ac3a..0000000000
--- a/indra/newview/skins/default/xui/zh/panel_profile.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="檔案" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=en
- </string>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=en
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/account"/>
- <string name="no_partner_text" value="無"/>
- <string name="no_group_text" value="無"/>
- <string name="RegisterDateFormat">
- [REG_DATE] ([AGE])
- </string>
- <string name="name_text_args">
- [NAME]
- </string>
- <string name="display_name_text_args">
- [DISPLAY_NAME]
- </string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <scroll_container name="profile_scroll">
- <panel name="profile_scroll_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="真實世界:"/>
- </panel>
- <text name="title_member_text" value="成為居民自:"/>
- <text name="title_acc_status_text" value="帳戶狀態:"/>
- <text name="title_partner_text" value="配偶:"/>
- <panel name="partner_data_panel">
- <text initial_value="(檢索中)" name="partner_text"/>
- </panel>
- <text name="title_groups_text" value="群組:"/>
- </panel>
- </scroll_container>
- </layout_panel>
- </layout_stack>
- <layout_stack name="layout_verb_buttons">
- <layout_panel name="profile_buttons_panel">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="add_friend_btn_lp">
- <button label="加為朋友" name="add_friend" tool_tip="發出交友邀請給這居民"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im" tool_tip="開啟即時訊息會話"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="通話" name="call" tool_tip="與這位居民通話"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="瞬間傳送" name="teleport" tool_tip="發給瞬間傳送請求"/>
- </layout_panel>
- <layout_panel name="overflow_btn_lp">
- <menu_button label="▼" name="overflow_btn" tool_tip="支付金錢,或分享收納區給居民"/>
- </layout_panel>
- </layout_stack>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_profile_view.xml b/indra/newview/skins/default/xui/zh/panel_profile_view.xml
deleted file mode 100644
index 2684287692..0000000000
--- a/indra/newview/skins/default/xui/zh/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- 上線
- </string>
- <string name="status_offline">
- 離線
- </string>
- <text name="display_name_label" value="顯示名稱:"/>
- <text name="solo_username_label" value="使用者名稱:"/>
- <text name="status" value="上線"/>
- <text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
- <button name="copy_to_clipboard" tool_tip="覆製到剪貼簿"/>
- <text name="user_label" value="使用者名稱:"/>
- <tab_container name="tabs">
- <panel label="檔案" name="panel_profile"/>
- <panel label="精選地點" name="panel_picks"/>
- <panel label="NOTES &amp; PRIVACY" name="panel_notes"/>
- </tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml
index ffb4c903bb..bfdb107810 100644
--- a/indra/newview/skins/default/xui/zh/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/zh/teleport_strings.xml
@@ -20,6 +20,10 @@
抱歉,不過系統無法完成瞬間傳送的聯接。
請稍後再試。
</message>
+ <message name="NoHelpIslandTP">
+ 您不能瞬间转移回“援助岛”。
+去“公共援助岛”重复您的教程。
+ </message>
<message name="noaccess_tport">
抱歉,你並沒有權限進入要瞬間傳送的目的地。
</message>
diff --git a/indra/newview/skins/minimal/colors.xml b/indra/newview/skins/minimal/colors.xml
deleted file mode 100644
index 097a298ce5..0000000000
--- a/indra/newview/skins/minimal/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<colors>
- <color
- name="MenuBarBgColor"
- value="0 0 0 0" />
-</colors>
diff --git a/indra/newview/skins/minimal/textures/arrow_keys.png b/indra/newview/skins/minimal/textures/arrow_keys.png
deleted file mode 100644
index f19af59251..0000000000
--- a/indra/newview/skins/minimal/textures/arrow_keys.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
deleted file mode 100644
index b6e9eef891..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
deleted file mode 100644
index 687cb7fb53..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/button_separator.png b/indra/newview/skins/minimal/textures/bottomtray/button_separator.png
deleted file mode 100644
index 71ed25f931..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/button_separator.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_off.png b/indra/newview/skins/minimal/textures/bottomtray/close_off.png
deleted file mode 100644
index 241a24bde9..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/close_off.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_over.png b/indra/newview/skins/minimal/textures/bottomtray/close_over.png
deleted file mode 100644
index 4630cb6dd6..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/close_over.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_press.png b/indra/newview/skins/minimal/textures/bottomtray/close_press.png
deleted file mode 100644
index 3ed9c99a26..0000000000
--- a/indra/newview/skins/minimal/textures/bottomtray/close_press.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/click_to_move.png b/indra/newview/skins/minimal/textures/click_to_move.png
deleted file mode 100644
index 74e3faa8ff..0000000000
--- a/indra/newview/skins/minimal/textures/click_to_move.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/minimal/textures/textures.xml b/indra/newview/skins/minimal/textures/textures.xml
deleted file mode 100644
index e3ed01721a..0000000000
--- a/indra/newview/skins/minimal/textures/textures.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-<textures version="101">
- <texture name="Button_Separator" file_name="bottomtray/button_separator.png" preload="true" />
- <texture name="arrow_keys.png"/>
- <texture name="click_to_move" file_name="click_to_move.png"/>
- <texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
- <texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
- <texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
- <texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
- <texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
- </textures>
diff --git a/indra/newview/skins/minimal/xui/da/floater_camera.xml b/indra/newview/skins/minimal/xui/da/floater_camera.xml
deleted file mode 100644
index 5b7ef6db54..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Roter kamera omkring fokus
- </floater.string>
- <floater.string name="zoom_tooltip">
- Zoom kamera mod fokus
- </floater.string>
- <floater.string name="move_tooltip">
- Flyt kamera op og ned, til venstre og højre
- </floater.string>
- <floater.string name="camera_modes_title">
- Kamera valg
- </floater.string>
- <floater.string name="pan_mode_title">
- Kredsløb zoom panorering
- </floater.string>
- <floater.string name="presets_mode_title">
- Forvalg
- </floater.string>
- <floater.string name="free_mode_title">
- Se objekt
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Se forfra
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Se fra siden
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Se bagfra
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Se fra objekt
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Førsteperson
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Zoom kamera mod fokus">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera kredser rundt om fokus"/>
- <slider_bar name="zoom_slider" tool_tip="Zoom kamera mod fokus"/>
- <joystick_track name="cam_track_stick" tool_tip="Flyt kamera op og ned, venstre og højre"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Forvalg"/>
- <button label="" name="pan_btn" tool_tip="Kredsløb zoom panorering"/>
- <button label="" name="avatarview_btn" tool_tip="Kamera valg"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml b/indra/newview/skins/minimal/xui/da/floater_help_browser.xml
deleted file mode 100644
index 0e2918e4e2..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="HVORDAN">
- <floater.string name="loading_text">
- Henter...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml
deleted file mode 100644
index 42fbdeaa9e..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIA BROWSER">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Tilbage" name="back"/>
- <button label="Frem" name="forward"/>
- <button label="Genlæs" name="reload"/>
- <button label="Go" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="tilbage" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="fremad" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Send denne side til parcel" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Åben i min internetbrowser" name="open_browser"/>
- <check_box label="Åben altid i min internetbrowser" name="open_always"/>
- <button label="Luk" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml
deleted file mode 100644
index bd17224259..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT NÆRVED">
- <check_box label="Oversæt chat (håndteret af Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_web_content.xml b/indra/newview/skins/minimal/xui/da/floater_web_content.xml
deleted file mode 100644
index 0410f74324..0000000000
--- a/indra/newview/skins/minimal/xui/da/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Gå bagud"/>
- <button name="forward" tool_tip="Gå frem"/>
- <button name="stop" tool_tip="Stop"/>
- <button name="reload" tool_tip="Genindlæs side"/>
- <combo_box name="address" tool_tip="Indtast URL her"/>
- <icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/>
- <button name="popexternal" tool_tip="Åben denne URL i din normale internet browser"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml b/indra/newview/skins/minimal/xui/da/inspect_avatar.xml
deleted file mode 100644
index dc1ed562eb..0000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_details">
- Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse
- </text>
- <slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/>
- <button label="Tilføj ven" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Slå stemme-chat fra" name="disable_voice"/>
- <button label="Slå stemme-chat til" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/inspect_object.xml b/indra/newview/skins/minimal/xui/da/inspect_object.xml
deleted file mode 100644
index 78ccc5b869..0000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Af [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Af [CREATOR]
-Owner [OWNER]
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- Gratis!
- </string>
- <string name="Touch">
- Berør
- </string>
- <string name="Sit">
- Sid
- </string>
- <text name="object_name" value="Test objekt navn der reelt er to linier og meget lang"/>
- <text name="price_text">
- L$30,000
- </text>
- <text name="object_description">
- Dette er en meget lang beskrivelse af et objekt udformet så den fylder mindst 80 karakterer i længden eller endda nærmere 120 på dette sted. Man kan aldrig vide....
- </text>
- <button label="Køb" name="buy_btn"/>
- <button label="Betal" name="pay_btn"/>
- <button label="Tag kopi" name="take_free_copy_btn"/>
- <button label="Berør" name="touch_btn"/>
- <button label="Sid" name="sit_btn"/>
- <button label="Åben" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Sikker Browsing"/>
- <button label="Mere" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
deleted file mode 100644
index 1e8301dc4c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Sortér efter nyeste" name="sort_by_most_recent"/>
- <menu_item_check label="Sortér efter navn" name="sort_by_name"/>
- <menu_item_check label="Sortér efter type" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
deleted file mode 100644
index ca7b184942..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Send besked" name="Send IM..."/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Invitér til gruppe" name="Invite..."/>
- <menu_item_call label="Blokér" name="Avatar Mute"/>
- <menu_item_call label="Rapportér" name="abuse"/>
- <menu_item_call label="Frys" name="Freeze..."/>
- <menu_item_call label="Smid ud" name="Eject..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
- <menu_item_call label="Zoom ind" name="Zoom In"/>
- <menu_item_call label="Betal" name="Pay..."/>
- <menu_item_call label="Objekt profil" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
deleted file mode 100644
index 35ba27f9e2..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Berør" name="Attachment Object Touch"/>
- <menu_item_call label="Redigér" name="Edit..."/>
- <menu_item_call label="Tag af" name="Detach"/>
- <menu_item_call label="Sid ned" name="Sit Down Here"/>
- <menu_item_call label="Stå op" name="Stand Up"/>
- <menu_item_call label="Udseende" name="Change Outfit"/>
- <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/>
- <menu_item_call label="Redigér min figur" name="Edit My Shape"/>
- <menu_item_call label="Venner" name="Friends..."/>
- <menu_item_call label="Grupper" name="Groups..."/>
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
- <menu_item_call label="Smid" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
deleted file mode 100644
index 26b58ce1ab..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil" name="Show Profile"/>
- <menu_item_call label="Send besked..." name="Send IM"/>
- <menu_item_call label="Tilføj ven..." name="Add Friend"/>
- <menu_item_call label="Fjern ven..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
deleted file mode 100644
index a778dedf0b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Besked" name="Send IM..."/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Invitér til gruppe" name="Invite..."/>
- <menu_item_call label="Blokér" name="Avatar Mute"/>
- <menu_item_call label="Rapportér" name="abuse"/>
- <menu_item_call label="Frys" name="Freeze..."/>
- <menu_item_call label="Smid ud" name="Eject..."/>
- <menu_item_call label="Debug Teksturer" name="Debug..."/>
- <menu_item_call label="Zoom ind" name="Zoom In"/>
- <menu_item_call label="Betal" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
deleted file mode 100644
index 0080f7a59e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Sid ned" name="Sit Down Here"/>
- <menu_item_call label="Stå op" name="Stand Up"/>
- <context_menu label="Tag af" name="Take Off &gt;">
- <context_menu label="Tøj" name="Clothes &gt;">
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Strømper" name="Socks"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Undertrøje" name="Self Undershirt"/>
- <menu_item_call label="Underbukser" name="Self Underpants"/>
- <menu_item_call label="Tatovering" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Alt tøj" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Tag af" name="Object Detach"/>
- <menu_item_call label="Tag alt af" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Mit udseende" name="Chenge Outfit"/>
- <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/>
- <menu_item_call label="Redigér min form" name="Edit My Shape"/>
- <menu_item_call label="Venner" name="Friends..."/>
- <menu_item_call label="Grupper" name="Groups..."/>
- <menu_item_call label="Profil" name="Profile..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
deleted file mode 100644
index 9ac296904a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Stemme aktiveret" name="EnableVoiceChat"/>
- <menu_item_check label="Faste bevægelser" name="ShowGestureButton"/>
- <menu_item_check label="Bevægelse knap" name="ShowMoveButton"/>
- <menu_item_check label="Vis knap" name="ShowCameraButton"/>
- <menu_item_check label="Foto knap" name="ShowSnapshotButton"/>
- <menu_item_check label="Bygge knap" name="ShowBuildButton"/>
- <menu_item_check label="Søge knap" name="ShowSearchButton"/>
- <menu_item_check label="Kort knap" name="ShowWorldMapButton"/>
- <menu_item_check label="Mini-Map button" name="ShowMiniMapButton"/>
- <menu_item_call label="Klip" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Kopiér" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Sæt ind" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Slet" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Vælg alt" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
deleted file mode 100644
index 9d7fc0f223..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Tag af" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
deleted file mode 100644
index 0e90d5a3ae..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Erstat" name="replace"/>
- <menu_item_call label="Redigér" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
deleted file mode 100644
index 16c225b7d9..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Tag af" name="take_off"/>
- <menu_item_call label="Redigér" name="edit"/>
- <menu_item_call label="Erstat" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
deleted file mode 100644
index f44369fd84..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nyt tøj" name="COF.Gear.New_Clothes"/>
- <menu label="Nye kropsdele" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_edit.xml b/indra/newview/skins/minimal/xui/da/menu_edit.xml
deleted file mode 100644
index 3752f42b1c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Redigér" name="Edit">
- <menu_item_call label="Fortryd" name="Undo"/>
- <menu_item_call label="Gendan" name="Redo"/>
- <menu_item_call label="Klip" name="Cut"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Sæt ind" name="Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Duplikér" name="Duplicate"/>
- <menu_item_call label="Marker alt" name="Select All"/>
- <menu_item_call label="Fjern markering" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_favorites.xml b/indra/newview/skins/minimal/xui/da/menu_favorites.xml
deleted file mode 100644
index a4793e294c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportér" name="Teleport To Landmark"/>
- <menu_item_call label="Vis/ret landemærke" name="Landmark Open"/>
- <menu_item_call label="Kopiér SLurl" name="Copy slurl"/>
- <menu_item_call label="Vis på kort" name="Show On Map"/>
- <menu_item_call label="Kopiér" name="Landmark Copy"/>
- <menu_item_call label="Sæt ind" name="Landmark Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
deleted file mode 100644
index a9010e99b6..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Tilføj/fjern fra favoritter" name="activate"/>
- <menu_item_call label="Kopiér" name="copy_gesture"/>
- <menu_item_call label="Sæt ind" name="paste"/>
- <menu_item_call label="Kopiér UUID" name="copy_uuid"/>
- <menu_item_call label="Gem til nuværende sæt" name="save_to_outfit"/>
- <menu_item_call label="Editér" name="edit_gesture"/>
- <menu_item_call label="Undersøg" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml b/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
deleted file mode 100644
index 97fbec1ed1..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Meld ind i gruppe..." name="item_join"/>
- <menu_item_call label="Ny gruppe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
deleted file mode 100644
index d96a8a8a17..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Vis navigationsbjælke" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Vis favoritbjælke" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Vis min lokation bjælke" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
deleted file mode 100644
index 4889230919..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Luk alle" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f64a6ad455..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Afslut" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
deleted file mode 100644
index b89d9a5789..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Gruppe info" name="Show Profile"/>
- <menu_item_call label="Vis session" name="Chat"/>
- <menu_item_call label="Afslut session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
deleted file mode 100644
index 6ebc40a8dd..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Profil" name="Show Profile"/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Vis session" name="Send IM"/>
- <menu_item_call label="Afslut session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 8da35adb1b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Profil" name="view_profile"/>
- <menu_item_call label="Tilføj ven" name="add_friend"/>
- <menu_item_call label="Besked" name="im"/>
- <menu_item_call label="Opkald" name="call"/>
- <menu_item_call label="Teleportér" name="teleport"/>
- <menu_item_call label="Invitér til gruppe" name="invite_to_group"/>
- <menu_item_call label="Blokér" name="block"/>
- <menu_item_call label="Fjern blokering" name="unblock"/>
- <menu_item_call label="Rapportér" name="report"/>
- <menu_item_call label="Frys" name="freeze"/>
- <menu_item_call label="Smid ud" name="eject"/>
- <menu_item_call label="Spark" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Debug teksturer" name="debug"/>
- <menu_item_call label="Find på kort" name="find_on_map"/>
- <menu_item_call label="Zoom ind" name="zoom_in"/>
- <menu_item_call label="Betal" name="pay"/>
- <menu_item_call label="Del" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
deleted file mode 100644
index e28842836d..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Berør" name="touch"/>
- <menu_item_call label="Sid her" name="sit"/>
- <menu_item_call label="betal" name="pay"/>
- <menu_item_call label="Køb" name="buy"/>
- <menu_item_call label="Tag" name="take"/>
- <menu_item_call label="tag kopi" name="take_copy"/>
- <menu_item_call label="Åben" name="open"/>
- <menu_item_call label="Redigér" name="edit"/>
- <menu_item_call label="Tag på" name="wear"/>
- <menu_item_call label="Tilføj" name="add"/>
- <menu_item_call label="Rapportér" name="report"/>
- <menu_item_call label="Blokér" name="block"/>
- <menu_item_call label="Zoom ind" name="zoom_in"/>
- <menu_item_call label="Fjern" name="remove"/>
- <menu_item_call label="Mere info" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
deleted file mode 100644
index 887c6484bc..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Sid ned" name="Sit Down Here"/>
- <menu_item_call label="Stå op" name="Stand Up"/>
- <context_menu label="Tag af" name="Take Off &gt;">
- <context_menu label="Tøj" name="Clothes &gt;">
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Strømper" name="Socks"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Undertrøje" name="Self Undershirt"/>
- <menu_item_call label="Underbukser" name="Self Underpants"/>
- <menu_item_call label="Tatovering" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Alt tøj" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Tag af" name="Object Detach"/>
- <menu_item_call label="Tag alt af" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Skift sæt" name="Chenge Outfit"/>
- <menu_item_call label="Redigér sæt" name="Edit Outfit"/>
- <menu_item_call label="Redigér min figur" name="Edit My Shape"/>
- <menu_item_call label="Mine venner" name="Friends..."/>
- <menu_item_call label="Mine grupper" name="Groups..."/>
- <menu_item_call label="Min profil" name="Profile..."/>
- <menu_item_call label="Debug teksturer" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c3b03232bf..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Luk" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_inventory.xml
deleted file mode 100644
index 35551318d1..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Køb" name="Task Buy"/>
- <menu_item_call label="åben" name="Task Open"/>
- <menu_item_call label="Afspil" name="Task Play"/>
- <menu_item_call label="Egenskaber" name="Task Properties"/>
- <menu_item_call label="Omdøb" name="Task Rename"/>
- <menu_item_call label="Slet" name="Task Remove"/>
- <menu_item_call label="Tøm papirkurv" name="Empty Trash"/>
- <menu_item_call label="Tøm &apos;Lost and found&apos;" name="Empty Lost And Found"/>
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny figur" name="New Shape"/>
- <menu_item_call label="Nyt hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
- <menu label="Ændre type" name="Change Type">
- <menu_item_call label="Standard" name="Default"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Kropsbygning" name="Shape"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Underbukser" name="Underpants"/>
- <menu_item_call label="Undertrøje" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleport" name="Landmark Open"/>
- <menu_item_call label="åben" name="Animation Open"/>
- <menu_item_call label="åben" name="Sound Open"/>
- <menu_item_call label="Erstat påklædning" name="Replace Outfit"/>
- <menu_item_call label="Tilføj til påklædning" name="Add To Outfit"/>
- <menu_item_call label="Slet ting" name="Purge Item"/>
- <menu_item_call label="Genskab ting" name="Restore Item"/>
- <menu_item_call label="åben" name="Open"/>
- <menu_item_call label="Åben original" name="Open Original"/>
- <menu_item_call label="Egenskaber" name="Properties"/>
- <menu_item_call label="Omdøb" name="Rename"/>
- <menu_item_call label="Kopiér asset UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Indsæt" name="Paste"/>
- <menu_item_call label="Sæt ind som link" name="Paste As Link"/>
- <menu_item_call label="Slet" name="Remove Link"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Slet systemfolder" name="Delete System Folder"/>
- <menu_item_call label="start konference chat" name="Conference Chat Folder"/>
- <menu_item_call label="Afspil" name="Sound Play"/>
- <menu_item_call label="Om landemærke" name="About Landmark"/>
- <menu_item_call label="Afspil i verden" name="Animation Play"/>
- <menu_item_call label="Afspil lokalt" name="Animation Audition"/>
- <menu_item_call label="Send privat besked (IM)" name="Send Instant Message"/>
- <menu_item_call label="Tilbyd teleport..." name="Offer Teleport..."/>
- <menu_item_call label="start konference Chat" name="Conference Chat"/>
- <menu_item_call label="Aktivér" name="Activate"/>
- <menu_item_call label="Deaktivér" name="Deactivate"/>
- <menu_item_call label="Gem som" name="Save As"/>
- <menu_item_call label="Tag af dig selv" name="Detach From Yourself"/>
- <menu_item_call label="Tag på" name="Wearable And Object Wear"/>
- <menu label="Vedhæft" name="Attach To"/>
- <menu label="Vedhæft til HUD" name="Attach To HUD"/>
- <menu_item_call label="Redigér" name="Wearable Edit"/>
- <menu_item_call label="Tilføj" name="Wearable Add"/>
- <menu_item_call label="Tag af" name="Take Off"/>
- <menu_item_call label="--ingen valg--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
deleted file mode 100644
index 07f70d7190..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Hent" name="upload">
- <menu_item_call label="Billede (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Hent mange (L$[COST] pr. fil)..." name="Bulk Upload"/>
- <menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/>
- </menu>
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny kropsbygning" name="New Shape"/>
- <menu_item_call label="Ny hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
deleted file mode 100644
index 4809b24463..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nyt vindue" name="new_window"/>
- <menu_item_check label="Sortér efter navn" name="sort_by_name"/>
- <menu_item_check label="Sortér efter nyeste" name="sort_by_recent"/>
- <menu_item_check label="Sortér altid mapper efter navn" name="sort_folders_by_name"/>
- <menu_item_check label="Vis System mapper øverst" name="sort_system_folders_to_top"/>
- <menu_item_call label="Vis filtre" name="show_filters"/>
- <menu_item_call label="Nulstil filtre" name="reset_filters"/>
- <menu_item_call label="Luk alle mapper" name="close_folders"/>
- <menu_item_call label="Tøm &quot;fundne genstande&quot;" name="empty_lostnfound"/>
- <menu_item_call label="Gem tekstur som" name="Save Texture As"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Find original" name="Find Original"/>
- <menu_item_call label="Find alle links" name="Find All Links"/>
- <menu_item_call label="Tøm papirkurv" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_land.xml b/indra/newview/skins/minimal/xui/da/menu_land.xml
deleted file mode 100644
index 1548f18f89..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Om land" name="Place Information..."/>
- <menu_item_call label="Sid her" name="Sit Here"/>
- <menu_item_call label="Køb" name="Land Buy"/>
- <menu_item_call label="Køb adgang" name="Land Buy Pass"/>
- <menu_item_call label="Byg" name="Create"/>
- <menu_item_call label="Tilpas terræn" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_landmark.xml
deleted file mode 100644
index 3cf2ffe375..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Kopiér SLurl" name="copy"/>
- <menu_item_call label="Slet" name="delete"/>
- <menu_item_call label="Opret favorit" name="pick"/>
- <menu_item_call label="Tilføj til favorit bjælke" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_login.xml b/indra/newview/skins/minimal/xui/da/menu_login.xml
deleted file mode 100644
index 0b7a5040ae..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Mig" name="File">
- <menu_item_call label="Indstillinger" name="Preferences..."/>
- <menu_item_call label="Afslut [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Hjælp" name="Help">
- <menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/>
- <menu_item_call label="Om [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Vis debug menu" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Vis debug opsætning" name="Debug Settings"/>
- <menu_item_call label="UI/farve opsætning" name="UI/Color Settings"/>
- <menu label="UI tests" name="UI Tests"/>
- <menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/>
- <menu_item_call label="Vis betingelser" name="TOS"/>
- <menu_item_call label="Vis vigtig besked" name="Critical"/>
- <menu_item_call label="Media Browser Test" name="Web Browser Test"/>
- <menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/>
- <menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/>
- <menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml b/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
deleted file mode 100644
index 186dbd476a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom tæt" name="Zoom Close"/>
- <menu_item_call label="Zoom mellem" name="Zoom Medium"/>
- <menu_item_call label="Zoom langt" name="Zoom Far"/>
- <menu_item_call label="Zoom standard" name="Zoom Default"/>
- <menu_item_check label="Rotér kort" name="Rotate Map"/>
- <menu_item_check label="Auto centrér" name="Auto Center"/>
- <menu_item_call label="Fjern ref." name="Stop Tracking"/>
- <menu_item_call label="Verdenskort" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_navbar.xml
deleted file mode 100644
index c04206824a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Vis koordinater" name="Show Coordinates"/>
- <menu_item_check label="Vis oplysninger om parcel" name="Show Parcel Properties"/>
- <menu_item_call label="Landemærke" name="Landmark"/>
- <menu_item_call label="Klip" name="Cut"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Sæt ind" name="Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Vælg alt" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
deleted file mode 100644
index be532ad406..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Vis personer tæt på..." name="nearby_people"/>
- <menu_item_check label="Vis blokeret tekst" name="muted_text"/>
- <menu_item_check label="Vis venne-ikoner" name="show_buddy_icons"/>
- <menu_item_check label="Vis navne" name="show_names"/>
- <menu_item_check label="Vis ikoner og navne" name="show_icons_and_names"/>
- <menu_item_call label="Font størrelse" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
deleted file mode 100644
index 40b35b5fdd..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Luk alle" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_object.xml b/indra/newview/skins/minimal/xui/da/menu_object.xml
deleted file mode 100644
index ba62ccf90c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Berør" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Berør"/>
- </menu_item_call>
- <menu_item_call label="Redigér" name="Edit..."/>
- <menu_item_call label="Byg" name="Build"/>
- <menu_item_call label="Åben" name="Open"/>
- <menu_item_call label="Sid her" name="Object Sit"/>
- <menu_item_call label="Stå op" name="Object Stand Up"/>
- <menu_item_call label="Objekt profil" name="Object Inspect"/>
- <menu_item_call label="Zoom In" name="Zoom In"/>
- <context_menu label="Tag på" name="Put On">
- <menu_item_call label="Tag på" name="Wear"/>
- <menu_item_call label="Tilføj" name="Add"/>
- <context_menu label="Vedhæft" name="Object Attach"/>
- <context_menu label="Vedhæft HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Administrér" name="Remove">
- <menu_item_call label="Rapportér misbrug" name="Report Abuse..."/>
- <menu_item_call label="Blokér" name="Object Mute"/>
- <menu_item_call label="Returnér" name="Return..."/>
- </context_menu>
- <menu_item_call label="Tag" name="Pie Object Take"/>
- <menu_item_call label="Tag kopi" name="Take Copy"/>
- <menu_item_call label="Betal" name="Pay..."/>
- <menu_item_call label="Køb" name="Buy..."/>
- <menu_item_call label="Slet" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml b/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
deleted file mode 100644
index 08aeb633b6..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Objekt Profil..." name="Object Profile"/>
- <menu_item_call label="Blokér..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
deleted file mode 100644
index 8b4c776496..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear"/>
- <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
- <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Ny alpha" name="New Alpha"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny figur" name="New Shape"/>
- <menu_item_call label="Nyt hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
- <menu_item_call label="Omdøb sæt" name="rename"/>
- <menu_item_call label="Slet sæt" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
deleted file mode 100644
index d6a6f2724f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear_replace"/>
- <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
- <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
- <menu_item_call label="Redigér sæt" name="edit"/>
- <menu_item_call label="Omdøb sæt" name="rename"/>
- <menu_item_call label="Slet sæt" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml b/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
deleted file mode 100644
index 5951d3ffb9..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Sortér efter navn" name="SortByName"/>
- <menu_item_check label="Sortér efter nylige talere" name="SortByRecentSpeakers"/>
- <menu_item_call label="Profil" name="View Profile"/>
- <menu_item_call label="Tilføj ven" name="Add Friend"/>
- <menu_item_call label="Send besked" name="IM"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Betal" name="Pay"/>
- <menu_item_check label="Se person ikoner" name="View Icons"/>
- <menu_item_check label="Blokér stemme" name="Block/Unblock"/>
- <menu_item_check label="Blokér tekst" name="MuteText"/>
- <context_menu label="Moderator valg" name="Moderator Options">
- <menu_item_check label="Tillad tekst chat" name="AllowTextChat"/>
- <menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Fjern slukning for denne deltager" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Sluk lyd for alle" name="ModerateVoiceMute"/>
- <menu_item_call label="Tænd lyd for alle" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
deleted file mode 100644
index 32c5e6a6c7..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Sortér efter navn" name="sort_name"/>
- <menu_item_check label="Sortér efter status" name="sort_status"/>
- <menu_item_check label="Vis person ikoner" name="view_icons"/>
- <menu_item_check label="Vis tildelte rettigheder" name="view_permissions"/>
- <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
deleted file mode 100644
index 841f58b619..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Se info" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Aktivér" name="Activate"/>
- <menu_item_call label="Forlad" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
deleted file mode 100644
index 0b9a791530..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Vis gruppe ikoner" name="Display Group Icons"/>
- <menu_item_call label="Forlad valgte gruppe" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
deleted file mode 100644
index 220ab8724f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Vis profil" name="View Profile"/>
- <menu_item_call label="Tilføj som ven" name="Add Friend"/>
- <menu_item_call label="Fjern venskab" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Kort" name="Map"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Betal" name="Pay"/>
- <menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/>
- <menu_item_call label="Tilbyd teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 9318a0e340..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Tilføj venner" name="Add Friends"/>
- <menu_item_call label="Fjern venner" name="Remove Friend"/>
- <menu_item_call label="Besked" name="IM"/>
- <menu_item_call label="Opkald" name="Call"/>
- <menu_item_call label="Del" name="Share"/>
- <menu_item_call label="Betal" name="Pay"/>
- <menu_item_call label="tilbyd teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 2f35ff3c92..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Sortér efter tidligere talere" name="sort_by_recent_speakers"/>
- <menu_item_check label="Sortér efter navn" name="sort_name"/>
- <menu_item_check label="Sortér efter afstand" name="sort_distance"/>
- <menu_item_check label="Se ikoner for personer" name="view_icons"/>
- <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
deleted file mode 100644
index d081f637f2..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Sortér efter nyeste" name="sort_most"/>
- <menu_item_check label="Sortér efter navn" name="sort_name"/>
- <menu_item_check label="Vis person ikoner" name="view_icons"/>
- <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks.xml b/indra/newview/skins/minimal/xui/da/menu_picks.xml
deleted file mode 100644
index 81ee900773..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Redigér" name="pick_edit"/>
- <menu_item_call label="Teleportér" name="pick_teleport"/>
- <menu_item_call label="Vis på kort" name="pick_map"/>
- <menu_item_call label="Slet" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
deleted file mode 100644
index d95071fbbb..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Ny favorit" name="create_pick"/>
- <menu_item_call label="Ny annonce" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_place.xml b/indra/newview/skins/minimal/xui/da/menu_place.xml
deleted file mode 100644
index b87964ac14..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Opret et landemærke" name="landmark"/>
- <menu_item_call label="Opret favorit" name="pick"/>
- <menu_item_call label="Køb adgang" name="pass"/>
- <menu_item_call label="Redigér" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
deleted file mode 100644
index 7ad2253550..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Opret mappe" name="add_folder"/>
- <menu_item_call label="Tilføj landemærke" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
deleted file mode 100644
index 5f573c2363..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="Tilføj landemærke" name="add_landmark"/>
- <menu_item_call label="Tilføj mappe" name="add_folder"/>
- <menu_item_call label="Gendan genstand" name="restore_item"/>
- <menu_item_call label="Klip" name="cut"/>
- <menu_item_call label="Kopiér" name="copy_folder"/>
- <menu_item_call label="Sæt ind" name="paste"/>
- <menu_item_call label="Omdøb" name="rename"/>
- <menu_item_call label="Slet" name="delete"/>
- <menu_item_call label="Udvid" name="expand"/>
- <menu_item_call label="Luk" name="collapse"/>
- <menu_item_call label="Udvid alle mapper" name="expand_all"/>
- <menu_item_call label="Luk alle mapper" name="collapse_all"/>
- <menu_item_check label="Sortér efter dato" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
deleted file mode 100644
index 13dbcdd42e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportér" name="teleport"/>
- <menu_item_call label="Mere information" name="more_info"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Tilføj landemærke" name="add_landmark"/>
- <menu_item_call label="Tilføj mappe" name="add_folder"/>
- <menu_item_call label="Gendan genstand" name="restore_item"/>
- <menu_item_call label="Klip" name="cut"/>
- <menu_item_call label="Kopiér landemærke" name="copy_landmark"/>
- <menu_item_call label="Kopiér SLurl" name="copy_slurl"/>
- <menu_item_call label="Sæt ind" name="paste"/>
- <menu_item_call label="Omdøb" name="rename"/>
- <menu_item_call label="Slet" name="delete"/>
- <menu_item_call label="Åben alle mapper" name="expand_all"/>
- <menu_item_call label="Luk alle mapper" name="collapse_all"/>
- <menu_item_check label="Sortér efter dato" name="sort_by_date"/>
- <menu_item_call label="Opret favorit" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
deleted file mode 100644
index 6745007c99..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Kort" name="show_on_map"/>
- <menu_item_call label="Betal" name="pay"/>
- <menu_item_call label="Del" name="share"/>
- <menu_item_call label="Blokér" name="block"/>
- <menu_item_call label="Fjern blokering" name="unblock"/>
- <menu_item_call label="Spark" name="kick"/>
- <menu_item_call label="Frys" name="freeze"/>
- <menu_item_call label="Fjern frys" name="unfreeze"/>
- <menu_item_call label="Kundeservicemedarbejder (CSR)" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
deleted file mode 100644
index 188229b586..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Gem" name="save_outfit"/>
- <menu_item_call label="Gem som" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
deleted file mode 100644
index cdd3212373..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Luk" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_slurl.xml
deleted file mode 100644
index a9302e111e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Om URL" name="about_url"/>
- <menu_item_call label="Teleportér til URL" name="teleport_to_url"/>
- <menu_item_call label="Kort" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
deleted file mode 100644
index a1c25fea69..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Udvid alle mapper" name="Expand all folders"/>
- <menu_item_call label="Luk alle mapper" name="Collapse all folders"/>
- <menu_item_call label="Nulstil teleport historik" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
deleted file mode 100644
index dbaec62087..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportér" name="Teleport"/>
- <menu_item_call label="Mere information" name="More Information"/>
- <menu_item_call label="Kopiér til udklipsholder" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
deleted file mode 100644
index c4d4bb4b5b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Åben" name="TabOpen"/>
- <menu_item_call label="Luk" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml b/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
deleted file mode 100644
index 3ff31ea232..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Klip" name="Cut"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Sæt ind" name="Paste"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Vælg alt" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
deleted file mode 100644
index 08d1c25d6f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Vis koordinater" name="Show Coordinates"/>
- <menu_item_check label="Vis egenskaber for parcel" name="Show Parcel Properties"/>
- <menu_item_call label="Landemærke" name="Landmark"/>
- <menu_item_call label="Kopi" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml b/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
deleted file mode 100644
index 491586f3b4..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis beboer profil" name="show_agent"/>
- <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_group.xml b/indra/newview/skins/minimal/xui/da/menu_url_group.xml
deleted file mode 100644
index c776159b0a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis gruppeinformation" name="show_group"/>
- <menu_item_call label="Kopiér gruppe til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_http.xml b/indra/newview/skins/minimal/xui/da/menu_url_http.xml
deleted file mode 100644
index 4398777a39..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Indlæs" name="url_open"/>
- <menu_item_call label="Åben i intern browser" name="url_open_internal"/>
- <menu_item_call label="Åben i ekstern browser" name="url_open_external"/>
- <menu_item_call label="Kopiér URL til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
deleted file mode 100644
index 9a7de23e06..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis beholdningsgenstand" name="show_item"/>
- <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_map.xml b/indra/newview/skins/minimal/xui/da/menu_url_map.xml
deleted file mode 100644
index ff4a4d5174..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Teleport til lokation" name="teleport_to_location"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
deleted file mode 100644
index e27cf84959..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis objekt information" name="show_object"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Teleportér til objekt lokation" name="teleport_to_object"/>
- <menu_item_call label="Kopiér objekt navn til udklipsholder" name="url_copy_label"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
deleted file mode 100644
index 0f21e14f66..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis information om parcel" name="show_parcel"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
deleted file mode 100644
index dd25db2aa7..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Kør denne kommando" name="run_slapp"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
deleted file mode 100644
index 8d84a138bb..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Vis information" name="show_place"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Teleportér til lokation" name="teleport_to_location"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
deleted file mode 100644
index e0ca7b920d..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_viewer.xml b/indra/newview/skins/minimal/xui/da/menu_viewer.xml
deleted file mode 100644
index 93b247f841..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Hjælp" name="Help">
- <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
- </menu>
- <menu label="Avanceret" name="Advanced">
- <menu label="Shortcuts" name="Shortcuts">
- <menu_item_check label="Flyv" name="Fly"/>
- <menu_item_call label="Luk vindue" name="Close Window"/>
- <menu_item_call label="Luk alle vinduer" name="Close All Windows"/>
- <menu_item_call label="Nulstil udsyn" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
deleted file mode 100644
index 63f4b0b388..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Erstat" name="wear_replace"/>
- <menu_item_call label="Tag på" name="wear_wear"/>
- <menu_item_call label="Tilføj" name="wear_add"/>
- <menu_item_call label="Tag af" name="take_off_or_detach"/>
- <menu_item_call label="Tag af" name="detach"/>
- <context_menu label="Vedhæft til" name="wearable_attach_to"/>
- <context_menu label="Vedhæft til HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Tag af" name="take_off"/>
- <menu_item_call label="Redigér" name="edit"/>
- <menu_item_call label="Genstandsprofil" name="object_profile"/>
- <menu_item_call label="Vis original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
deleted file mode 100644
index 515a15b287..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Redigér sæt" name="edit"/>
- <menu_item_call label="Tag af" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
deleted file mode 100644
index c0db7b6842..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Tag af" name="take_off"/>
- <menu_item_call label="Tag af" name="detach"/>
- <menu_item_call label="Redigér sæt" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/notifications.xml b/indra/newview/skins/minimal/xui/da/notifications.xml
deleted file mode 100644
index 3d003ea3b3..0000000000
--- a/indra/newview/skins/minimal/xui/da/notifications.xml
+++ /dev/null
@@ -1,1831 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Vis ikke dette igen
- </global>
- <global name="alwayschoose">
- Vælg altid dette
- </global>
- <global name="implicitclosebutton">
- Luk
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$notext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Ukendt notificeringsbesked" name="MissingAlert">
- Din version af [APP_NAME] kan ikke vise den besked den lige modtog. Undersøg venligst at du har den nyester version af klienten installeret.
-
-Fejl detaljer: Beskeden kaldet &apos;[_NAME]&apos; blev ikke fundet i notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Floater error: Kunne ikke finde følgende kontrol:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Der er i øjeblikket ingen tilgængelig guide.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ja"/>
- </notification>
- <notification name="BadInstallation">
- Der opstod en fejl ved opdatering af [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Kunne ikke tilslutte til [SECOND_LIFE_GRID].
- &apos;[DIAGNOSTIC]&apos;
-Check at Internet forbindelsen fungerer korrekt.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Besked template [PATH] kunne ikke findes.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Gem ændringer til nuværende tøj/krops del?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem ikke" yestext="Gem"/>
- </notification>
- <notification name="CompileQueueSaveText">
- Der var problemer med upload af teksten til et script af følgende årsager: [REASON]. Prøv igen senere.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- Der var problemer med at uploade den kompileret script af følgende årsager: [REASON]. Prøv igen senere.
- </notification>
- <notification name="WriteAnimationFail">
- Der var et problem med skrivning af animations data. Prøv igen senere.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- Der var problemer med at uploade billedet til auktionen af følgende årsager: [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Ude af stand til at se indholdet af mere end ét element ad gangen.
-Vælg kun en genstand, og prøv igen.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Gem alle ændringer til tøj/krops dele?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem Ikke" yestext="Gem Alt"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- &apos;Ikke-venner&apos; vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.
-Ønsker du at give ændre-rettgheder til [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage ALLE genstande, du måtte have i verden. Vær MEGET forsigtig når uddeler denne tilladelse.
-Ønsker du at ændre rettigheder for de valgte beboere?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRights">
- Ønsker du at tilbagekalder ændre-rettigheder for [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Vil du tilbagekalde rettighederne for de valgte beboere?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Kunne ikke oprette gruppe.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Ignorer Ændringer" yestext="Godkend Ændringer"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Du skal angive et emne for at sende en gruppe besked.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Du er ved at tilføje medlemmer til rollen som [ROLE_NAME].
-Medlemmer ikke kan fjernes fra denne rolle.
-Medlemmerne skal fratræde sin rolle selv.
-Er du sikker på du vil fortsætte?
- <usetemplate ignoretext="Bekræft, før jeg tilføjer en ny gruppe ejer" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Du er ved at tilføje muligheden for &apos;[ACTION_NAME]&apos; til
-rollen &apos;[ROLE_NAME]&apos;.
-
-*ADVARSEL*
-Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker på, at du ved, hvad du laver, før tildeling af denne evne.
-
-Add this Ability to &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="AttachmentDrop">
- Du er ved at smide et vedhæng.
- Er du sikker på at du vil fortsætte?
- <usetemplate ignoretext="Bekræft før vedhæng smides" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="JoinGroupNoCost">
- Du melder dig ind i gruppen [NAME].
-Ønsker du at fortsætte?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Bliv medlem"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Tilmelding til denne gruppe koster L$[COST].
-Du har ikke nok L$ til denne tilmelding.
- </notification>
- <notification name="CreateGroupCost">
- Oprettelse af denne gruppe vil koste L$100.
-Grupper skal have mindst 2 medlemmer, ellers slettes de for altid.
-Invitér venligst medlemmer indenfor 48 timer.
- <usetemplate canceltext="Annullér" name="okcancelbuttons" notext="Annullér" yestext="Oprete en gruppe for L$100"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- ADVARSEL: Ved at vælge &apos;sælg til enhver&apos; bliver til land tilgængeligt for alle i hele [SECOND_LIFE], også de som ikke er i denne region.
-
-Det valgte antal [LAND_SIZE] m² land bliver sat til salg.
-Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME].
- </notification>
- <notification name="MultipleFacesSelected">
- Flere overflader er valgt for øjeblikket.
-Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist på overfladerne på objektet.
-Hvis media kun skal vises på en overflade, vælg &apos;Vælg overflade&apos; og klik på den relevante overflade og klik på tilføj.
- <usetemplate ignoretext="Media vil blive sat på flere valgte overflader" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="PromptMissingSubjMsg">
- E-mail dette billede med standard emne eller besked?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="ErrorUploadingPostcard">
- Der var et problem med at sende billedet på grund af følgende: [REASON]
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- Kunne ikke vedhæfte objekt.
-Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Ups. Noget mangler at blive udfyldt.
-Du skal indtaste brugernavnet for din avatar.
-
-Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en konto nu?
- <usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen.
- </notification>
- <notification name="DeleteMedia">
- Du har valgt at slette media tilknyttet denne overflade.
-Er du sikker på at du vil fortsætte?
- <usetemplate ignoretext="Bekræft før jeg slette media i et objekt" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- Ikke nok penge til at oprette annonce.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Slet favorit &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
- </notification>
- <notification name="DeleteOutfits">
- Slet valgte sæt?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="CacheWillClear">
- Cache vil blive tømt ved næste genstart af [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- Cache vil blive fjernet ved næste genstart af [APP_NAME].
-Note: This will clear the cache.
- </notification>
- <notification name="ChangeConnectionPort">
- Port ændringer vil blive effektueret ved næste genstart af [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- Den nye hud vil blive vist ved næste genstart af [APP_NAME].
- </notification>
- <notification name="ChangeLanguage">
- Ændring af sprog vil først have effekt efter genstart af [APP_NAME].
- </notification>
- <notification name="StartRegionEmpty">
- Ups, din start region er ikke angivet.
-Indtast venligst navn på region i Start lokation feltet eller vælg &quot;Min sidste lokation&quot; eller &quot;Hjem&quot;.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="UnsupportedHardware">
- Din computer opfylder ikke minimumskravene til [APP_NAME]. Du kan risikere nedsat hastighed. Desværre kan [SUPPORT_SITE] ikke tilbyde teknisk support til konfigurationer der ikke er understøttet.
-
-Besøg [_URL] for yderligere information?
- <usetemplate ignoretext="Din computer hardware understøttes ikke" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="UnknownGPU">
- Dit system indeholder et grafikkort som [APP_NAME] ikke kan genkende.
-Dette skyldes ofte nyt hardware som endnu ikke er blevet testet med [APP_NAME]. Kortet vil sandsynligvis virke fint, med det kan være nødvendigt at justere grafik opsætningen.
-(Mig &gt; Indstillinger &gt; Grafik).
- <form name="form">
- <ignore name="ignore" text="Dit grafikkort kunne ikke identificeres"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] gik ned ved inititalisering af grafik drivere.
-Grafik kvaliteten sættes til &apos;lav&apos; for at undgå typiske problemer med drivere. Dette vil slå visse grafik funktioner fra.
-Vi anbefaler at opdatere driverne til dit grafikkort.
-Grafik kvaliteten kan forbedres i indstillinger &gt; Grafik.
- </notification>
- <notification name="CannotCopyWarning">
- Du har ikke rettigheder til at kopiere følgende genstande:
-[ITEMS]
-og du vil miste dem fra din beholdning hvis du forærer dem væk. Er du sikker på at du vil tilbyde disse genstande?
- </notification>
- <notification name="CannotGiveCategory">
- Du har ikke tilladelse til at videreføre den valgte mappe.
- </notification>
- <notification name="EjectAvatarFromGroup">
- Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME]
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Gå til [_URL] for information om køb af L$?
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- Fejl i WAV fil (chunk size):
-[FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Kunne ikke &apos;forstå&apos; filen: [FILE]
- </notification>
- <notification name="CorruptedProtectedDataStore">
- Vi kan ikke udfylde dit brugernavn og password. Dette kan ske hvis du ændrer netværksopsætning
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- [APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen.
- </notification>
- <notification name="LandmarkCreated">
- Du har tilføjet &quot;[LANDMARK_NAME]&quot; til din [FOLDER_NAME] mappe.
- </notification>
- <notification name="LandmarkAlreadyExists">
- Du har allerede et landemærke for denne lokation.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- Ikke muligt at åbne script i objekt uden &apos;Redigére&apos; rettigheder.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleport fejlede.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Beklager, teleport er blokeret lige nu. Prøv igen senere.
-Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem.
- </notification>
- <notification name="nolandmark_tport">
- Beklager, systemet kunne ikke finde landmærke destinationen.
- </notification>
- <notification name="timeout_tport">
- Beklager, systemet kunne ikke fuldføre teleport forbindelse.
-Prøv igen om lidt.
- </notification>
- <notification name="noaccess_tport">
- Beklager, du har ikke adgang til denne teleport destination.
- </notification>
- <notification name="missing_attach_tport">
- Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen.
- </notification>
- <notification name="too_many_uploads_tport">
- Tekniske problemer hindrer at din teleport kan gennemføres.
-Prøv venligst igen om lidt eller vælg et mindre travlt område.
- </notification>
- <notification name="expired_tport">
- Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
- </notification>
- <notification name="expired_region_handoff">
- Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
- </notification>
- <notification name="no_host">
- Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere.
-Prøv evt. igen om lidt.
- </notification>
- <notification name="no_inventory_host">
- Beholdningssystemet er ikke tilgængelig lige nu.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Denne parcel er sat på auktion. Gennemtving ejerskab vil annullere denne auktion og måske irritere nogen beboere hvis bud allerede er afgivet.
-Gennemtving ejerskab?
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Ikke i stand til at købe land:
-Kan ikke finde region som dette land er i.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Du kan ikke lukke &apos;Køb land&apos; vinduet før [APP_NAME] har vurderet en pris på denne transaktion.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Land kunne ikke dedikeres:
-Kunne ikke finde den region land ligger i.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Kunne ikke efterlade land:
-Kan ikke finde den region landet ligger i.
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Kunne ikke gemme [NAME] i den centrale database.
-Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Du er blevet logget af [SECOND_LIFE]
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB &amp; Chat"/>
- </notification>
- <notification label="Tilføj ven" name="AddFriendWithMessage">
- Venner kan give tilladelse til at følge hinanden
-på Verdenskortet eller modtage status opdateringer.
-
-Tilbyd venskab til [NAME]?
- <form name="form">
- <input name="message">
- Vil du være min ven?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="Gem sæt" name="SaveOutfitAs">
- Gem det som jeg har på som nyt sæt:
- <form name="form">
- <input name="message">
- [DESC] (ny)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="Gem" name="SaveWearableAs">
- Gem genstand til beholdning som:
- <form name="form">
- <input name="message">
- [DESC] (ny)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="Omdøb sæt" name="RenameOutfit">
- Nyt navn til sæt:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Ønsker du at fjerne [NAME] fra din venneliste?
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere. Det anbefales kraftigt at fjerne lænkninger først.
-
-Er du sikker på at du vil slette disse genstande?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Ved at dedikere denne parcel, vil gruppen skulle have og vedblive med at have nok kreditter til brug af land.
-Dedikeringen vil inkludere samtidige bidrag til gruppen fra &apos;[NAME]&apos;.
-Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parvel sælges, vil salgsprisen blive delt ligeligt mellem gruppe medlemmerne.
-
-Dediker disse [AREA] m² land til gruppen &apos;[GROUP_NAME]&apos;?
- </notification>
- <notification name="ErrorMessage">
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- Den ønskede lokation er ikke tilgængelig lige nu.
-Du er blevet flyttet til en region in nærheden.
- </notification>
- <notification name="AvatarMovedLast">
- Din sidste lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
- </notification>
- <notification name="AvatarMovedHome">
- Din hjemme lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
-Du kan måske ønske at sætte en ny hjemme lokation.
- </notification>
- <notification name="ClothingLoading">
- Dit tøj hentes stadig ned.
-Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt.
- <form name="form">
- <ignore name="ignore" text="Det tager lang tid at hente tøj"/>
- </form>
- </notification>
- <notification name="FirstRun">
- [APP_NAME] installationen er færdig.
-
-Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge på.
-Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto?
- </notification>
- <notification name="LoginPacketNeverReceived">
- Der er problemer med at koble på. Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID].
-
-Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke på Hjælp for at se [SUPPORT_SITE] siden, eller klikke på Teleport for at forsøge at teleportere hjem.
- </notification>
- <notification name="CantTeleportToGrid">
- Kunne ikke teleportere til [SLURL] da den er på et andet net ([GRID]) end det nuværende net ([CURRENT_GRID]). Luk venligst din klient og prøv igen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- Kunne ikke opnå forbindelse til server.
-[REASON]
-
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- Certifikationsmyndighed for denne server er ikke kendt.
-
-Certifikat information:
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Ønsker du at stole på denne myndighed?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Stol på"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] L$ [PRICE] Du har ikke nok L$ til dette.
- </notification>
- <notification name="GrantedModifyRights">
- [NAME] har givet dig rettighed til at redigere sine objekter.
- </notification>
- <notification name="RevokedModifyRights">
- Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet
- </notification>
- <notification name="BuyOneObjectOnly">
- Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen.
- </notification>
- <notification name="DownloadWindowsMandatory">
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at bruge [APP_NAME].
- </notification>
- <notification name="DownloadWindows">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- </notification>
- <notification name="DownloadLinuxMandatory">
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at kunne benytte [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Hent"/>
- </notification>
- <notification name="DownloadLinux">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
- <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
- </notification>
- <notification name="DownloadMacMandatory">
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne opdatering for at bruge [APP_NAME].
-
-Download til dit Program bibliotek?
- </notification>
- <notification name="DownloadMac">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
- </notification>
- <notification name="FailedUpdateInstall">
- Der opstod en fejl ved installation af opdatering.
-Hent og installér venligst den nyeste version fra
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- Vi kunne ikke installere en påkrævet opdatering.
-Du kan ikke logge på før [APP_NAME] er blevet opdateret.
-
-Hent og installer venligst den nyeste klien fra
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="Afslut"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- Dette er en påkrævet opdatering af din Second Life installation.
-
-Du kan downloade opdateringen fra http://www.secondlife.com/downloads
-eller du kan installere den nu.
- <usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
- <usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
- <usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- Vi har hentet en påkrævet opdatering.
-Version [VERSION]
-
-Du skal genstarte [APP_NAME] for at installere denne opdatering.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- Du skal genstarte [APP_NAME] for at installere opdateringen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- <usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Ønsker du at åbne din web browser for at se dette indhold?
- <usetemplate ignoretext="Start min browser for at se hjemmesider" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- Gå til [http://secondlife.com/account/ Dashboard] for at administrere din konto?
- <usetemplate ignoretext="Start min browser for at administrere min konto" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- <usetemplate ignoretext="Start min browser for at lære hvordan man rapporterer sikkerhedsproblemer" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- <usetemplate ignoretext="Start min browser for at se QA Wiki" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- <usetemplate ignoretext="Start min browser for at bruge det Linden Labs sagsstyring" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- <usetemplate ignoretext="Start min browser for at se bloggen" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Ønsker du at åbne &apos;Scripting Guide&apos; for hjælp til scripting?
- <usetemplate ignoretext="Start min browser for at se Scripting Guide" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Ønsker du at besøge LSL portalen for hjælp til scripting?
- <usetemplate ignoretext="Start min browser for at besøge LSL Portalen" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
- </notification>
- <notification name="ReturnToOwner">
- <usetemplate ignoretext="Bekræft før objekter returneres til deres ejere" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Er du SIKKER på at du vil sparke alle beboere ud?
- <usetemplate name="okcancelbuttons" notext="Cancel" yestext="Spark alle beboere ud"/>
- </notification>
- <notification name="MuteLinden">
- Beklager, men du kan ikke blokere en Linden.
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Du kan ikke starte en auktion på en parcel som allerede er sat til salg. Fjern &apos;til salg&apos; muligheden hvis du ønsker at starte en auktion.
- </notification>
- <notification label="Blokering af objekt via navn mislykkedes" name="MuteByNameFailed">
- Du har allerede blokeret dette navn.
- </notification>
- <notification name="BusyModeSet">
- Sat til &apos;optaget&apos;.
-Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din &apos;optaget&apos; besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven.
- <usetemplate ignoretext="Jeg skrifter min status til &apos;optaget" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Du er oppe på det maksimale antal grupper. Forlad venligst en anden gruppe inden du melder dig ind i denne, eller afvis tilbuddet.
-[NAME] har inviteret dig til en gruppe.
- </notification>
- <notification name="JoinedTooManyGroups">
- Du er oppe på det maksimale antal grupper. Forlad venligst en gruppe inden du melder dig ind i enndnu en gruppe eller opretter en ny.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- Spark beboere ud med hvilken besked?
- </notification>
- <notification name="FreezeUser">
- Frys beboeren med hvilken besked?
- </notification>
- <notification name="UnFreezeUser">
- Fjern frysning af beboeren med hvilken besked?
- </notification>
- <notification name="SetDisplayNameSuccess">
- Hej [DISPLAY_NAME]!
-
-Præcist som i virkeligheden tager det et stykke tid at vænne sig til et nyt navn. Det kan tage flere dage for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] i objekter, scripts, søgninger m.v.
- </notification>
- <notification name="SetDisplayNameBlocked">
- Beklager, du kan ikke ændre dit visningsnavn. Hvis du mener dette skyldes en fejl, kontakt venligst support.
- </notification>
- <notification name="SetDisplayNameFailedLength">
- Beklager, mavnet er for langt. Visningsnavne kan ikke indholde mere end [LENGTH] karakterer.
-
-Prøv venligst med et kortere navn.
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- Beklager, vi kunne ikke sætte dit visningsnavn. Prøv venligst igen senere.
- </notification>
- <notification name="SetDisplayNameMismatch">
- Visningsnavnene du angav matcher ikke. Prøv at taste ind igen.
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- Beklager, du er nødt til at vente længere, inden du kan ændre visningsnavn.
-
-Se mere under http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Prøv venligst igen senere.
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- Beklager, vi kunne ikke sætte dit valgte navn da det indholder et ikke tilladt ord.
-
- Prøv med et andet navn.
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- Visningsnavnet du prøver at angive indeholder ugyldige karakterer.
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- Dit vinsningsnavn skal indeholde andre bogstaver end tegnsætningstegn.
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) er nu kendt som [NEW_NAME].
- </notification>
- <notification name="OfferTeleport">
- Tilbyd en teleport til din position med følgende besked?
- <form name="form">
- <input name="message">
- Mød mig i [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Tilkald beboer til din lokation?
- </notification>
- <notification name="TeleportFromLandmark">
- Er du sikker på at du vil teleportere til &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
- <usetemplate ignoretext="Bekræft at jeg vil teleportere til et landemærke" name="okcancelignore" notext="Cancel" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToPick">
- Teleport til [PICK]?
- <usetemplate ignoretext="Bekræft at jeg ønsker at teleportere til et sted i favoritter" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToClassified">
- Teleport til [CLASSIFIED]?
- <usetemplate ignoretext="Bekræft at du ønsker at teleportere til lokation in annoncer" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- Teleport til [HISTORY_ENTRY]?
- <usetemplate ignoretext="Bekræft at du ønsker at teleportere til en lokation i din historik" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
- </notification>
- <notification label="Change Linden Estate" name="ChangeLindenEstate">
- Du er i færd med at ændre et Linden ejet estate (mainland, teeen grid, orientation etc.).
-
-Dette er EKSTREMT FARLIGT da det kan ændre beboernes oplevelse fundamentalt. På mainland vil dette betyde ændring af tusinder af regioner og få spaceserveren til at kløjs i det.
-
-Fortsæt?
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder.
-
-Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gå til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating.
-
-Gå til &apos;Knowledge Base&apos; for mere information om indholdsratings.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Ikke adgang til denne region på grund af begrænsninger i min indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Du har ikke adgang til denne region på grund af din opsætning af indholdsrating.
-
-For at få adgang til den ønskede region skal du ændre din indholdsrating. Dette vil give dig ret til at søge og får tilgang til indhold af typen [REGIONMATURITY]. For at omgøre ændringer gå til Mig &gt; Indstillinger &gt; Generelt.
- <form name="form">
- <button name="OK" text="Ændre indstillinger"/>
- <button name="Cancel" text="Luk"/>
- <ignore name="ignore" text="Din valgte indholdsrating forhindrer dig i at kommer til en region"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- Din indholdsrating er nu [RATING].
- </notification>
- <notification name="LandClaimAccessBlocked">
- Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling..
-
-Gå venligst til &apos;Knowledge Base&apos; for yderligere information om indholdsrating.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Du kan ikke kræve dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Du kan ikke kræve dette land på grund af din indholdsrating.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- Du kan ikke kræve dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
- <usetemplate ignoretext="Din valgte indholdsrating forhindrer dig i at kræve land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Du kan ikke købe dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Du kan ikke købe dette land på grund af din nuværende indholdsrating.
-
-Gå til &apos;Knowledge Base&apos; for yderligere detaljer om indholdsrating.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Du kan ikke købe dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Du kan ikke købe dette land på grund af din nuværende indholdsrating indstilling.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- Du kan ikke købe dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
- <usetemplate ignoretext="Din valgte rating forhindrer dig i at købe land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Kunne ikke hente notecard indhold.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Indeholder denne annonce &apos;Mature&apos; indhold?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="SetGroupMature">
- Indeholder denne gruppe &apos;Mature&apos; indhold?
- <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
- </notification>
- <notification label="Changed Region Maturity" name="RegionMaturityChange">
- Ratingen for denne region er ændret.
-Det kan tage noget tid inden ændringen slår igennem på kortet.
-
-For at få adgang til voksen regioner, skal beboere være alders-checket, enten via aldersverifikation eller betalingsverifikation.
- </notification>
- <notification label="Voice Version Mismatch" name="VoiceVersionMismatch">
- Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne få stemme chat til at fungere skal du opdatere [APP_NAME].
- </notification>
- <notification name="MoveInventoryFromObject">
- <usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande fra et objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- <usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande, hvor det kan medføre at ødelægge et scriptet objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Advarsel: &apos;Betal objekt&apos; klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et &apos;money()&apos; event er tilføjet.
- <form name="form">
- <ignore name="ignore" text="I set the action &apos;Pay object&apos; when building an object without a money() script"/>
- </form>
- </notification>
- <notification name="WebLaunchAccountHistory">
- Gå til [http://secondlife.com/account/ Dashboard] for at se konto-historik?
- <usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
- </notification>
- <notification name="ConfirmQuit">
- Er du sikker på at du vil afslutte?
- <usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="Bekræft før sletning af genstande" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Benyt dette værktøj til at rapportere krænkninger af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards].
-
-Alle rapporter om krænkninger vil blive undersøgt og behandlet.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Kære beboer,
-
-Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt:
-
-(1) Krænkelsesproces. Du må sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter.
-
-(2) DCMA (”Digital Millennium Copyright Act”) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori &apos;CopyBot or Permissions Exploit&apos;.
-
-Mange tak
-
-Linden Lab
- </notification>
- <notification label="Replace Existing Attachment" name="ReplaceAttachment">
- <form name="form">
- <ignore name="ignore" text="Erstat et eksisterende vedhæng med den valgte genstand"/>
- </form>
- </notification>
- <notification label="Busy Mode Warning" name="BusyModePay">
- <form name="form">
- <ignore name="ignore" text="Jeg er ved at betale en person eller et objekt mens jeg er &apos;optaget&apos;"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- Mappen &apos;[FOLDERNAME]&apos; er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker på at du vil slette den?
- <usetemplate ignoretext="Bekræft, inden en system mappe slettes" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Er du sikker på at du ønsker at tømme papirkurven?
- <usetemplate ignoretext="Bekræft før papirkurv i beholdning tømmes" name="okcancelignore" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Er du sikker på at du ønsker at slette din historik om besøg, web og søgninger?
- <usetemplate name="okcancelbuttons" notext="Cancel" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Er du sikker på du vil slette alle cookies?
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Er du sikker på at du vil slette indholdet i din &apos;Fundne genstande&apos;?
- <usetemplate ignoretext="Bekræft før sletning af &apos;Fundne genstande&apos; mappe i beholdning" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="CopySLURL">
- Følgende SLurl er blevet kopieret til din udklipsholder:
- [SLURL]
-
-Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser.
- <form name="form">
- <ignore name="ignore" text="SLurl er kopieret til min udklipsholder"/>
- </form>
- </notification>
- <notification name="NewSkyPreset">
- <form name="form">
- <input name="message">
- Ny forudindstilling
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="NewWaterPreset">
- <form name="form">
- <input name="message">
- Ny forudindstilling
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Ikke i stand til at start chat med [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Du kan ikke købe en genstand mens den er vedhæftet.
- </notification>
- <notification name="AutoWearNewClothing">
- Vil du automatisk tage det tøj på du er ved at lave?
- <usetemplate ignoretext="Tag det tøj på jeg laver, mens jeg ændrer udseende" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="NotAgeVerified">
- Du skal være alders-checket for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden og bekræfte din alder?
-
-[_URL]
- <usetemplate ignoretext="Jeg har ikke bekræftet min alder" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Du skal være betalende medlem for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden for at blive dette?
-
-[_URL]
- <usetemplate ignoretext="Du mangler at være betalende medlem" name="okcancelignore" notext="No" yestext="Yes"/>
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Annulléret
- </notification>
- <notification name="CancelledSit">
- Annulléret sid
- </notification>
- <notification name="CancelledAttach">
- Annulléreret vedhæft
- </notification>
- <notification name="ReplacedMissingWearable">
- Erstattet manglende tøj/kropsdele med standard.
- </notification>
- <notification name="FriendOnline">
- [NAME] er logget på
- </notification>
- <notification name="FriendOffline">
- [NAME] er logget af
- </notification>
- <notification name="AddSelfFriend">
- Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Uploader billeder fra verdenen og www...
-(Tager omkring 5 minutter.)
- </notification>
- <notification name="UploadPayment">
- Du betalte L$[AMOUNT] for at uploade.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Billeder fra www er uploadet.
- </notification>
- <notification name="UploadSnapshotDone">
- Billeder fra verdenen er uploadet
- </notification>
- <notification name="TerrainDownloaded">
- Terrain.raw downloadet
- </notification>
- <notification name="GestureMissing">
- Bevægelsen [NAME] mangler i databasen.
- </notification>
- <notification name="UnableToLoadGesture">
- Kunne ikke indlæse læse bevægelse [NAME].
- </notification>
- <notification name="LandmarkMissing">
- Landmærke mangler i databasen.
- </notification>
- <notification name="UnableToLoadLandmark">
- Ikke muligt at indlæse landmærke. Prøv venligst igen.
- </notification>
- <notification name="CapsKeyOn">
- Din Caps Lock er aktiveret.
-Det kan påvirke din indtastning af password.
- </notification>
- <notification name="NotecardMissing">
- Note mangler i databasen.
- </notification>
- <notification name="NotecardNoPermissions">
- Du har ikke rettigheder til at se denne note.
- </notification>
- <notification name="RezItemNoPermissions">
- Utilstrækkelige tilladelser til at danne genstanden.
- </notification>
- <notification name="UnableToLoadNotecard">
- Ikke muligt at indlæse note.
-Prøv venligst igen.
- </notification>
- <notification name="ScriptMissing">
- Script mangler i databasen.
- </notification>
- <notification name="ScriptNoPermissions">
- Utilstrækkelige tilladelser til at se script.
- </notification>
- <notification name="UnableToLoadScript">
- Ikke muligt at indlæse script. Prøv venligst igen.
- </notification>
- <notification name="IncompleteInventory">
- Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Du kan ikke ændre beskyttede kategorier.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Du kan ikke fjerne beskyttede kategorier.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Ikke muligt at købe, imens genstandens data hentes.
-Prøv venligst igen.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Ikke muligt at lænke imens genstandens data hentes.
-Prøv venligst igen.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Du kan kun købe objekter fra én ejer ad gangen.
-Vælg venligst et enkelt objekt.
- </notification>
- <notification name="ObjectNotForSale">
- Dette objekt er ikke til salg.
- </notification>
- <notification name="EnteringGodMode">
- Starter gud-tilstand, niveau [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Stopper gud-tilstand, niveau [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Du har ikke rettigheder til at kopiere dette.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] modtog dit tilbud til hans/hendes beholdning.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] afviste det du tilbød fra din beholdning.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Dit visitkort blev accepteret.
- </notification>
- <notification name="CallingCardDeclined">
- Dit visitkort blev afvist.
- </notification>
- <notification name="TeleportToLandmark">
- Du kan teleportere til lokationer som &apos;[NAME]&apos; ved at åbne Steder panelet til højre på skærmen, og her vælge landemærker fanen.
-Klik på et landemærke og vælg den, derefter
-Click on any landmark to select it, then click &apos;Teleport&apos; at the bottom of the panel.
-(You can also double-click on the landmark, or right-click it and choose &apos;Teleport&apos;.)
- </notification>
- <notification name="TeleportToPerson">
- Du kan kontakte beboere som &apos;[NAME]&apos; ved at åbne Personer panelet til højre på skærmen.
-Vælg beboeren fra listen og klik så &apos;IM&apos; i bundet af panelet.
-(Du kan også dobbelt-klikke på navnet i listen, eller højre-klikke og vælge &apos;IM&apos;).
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Kan ikke vælge land på tværs af grænser.
-Prøv at vælge mindre stykker land.
- </notification>
- <notification name="SearchWordBanned">
- Visse ord er fjernet fra din søge-sætning på grund af at disse strider mod de generelle &apos;Community Standards&apos;.
- </notification>
- <notification name="NoContentToSearch">
- Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Besked om begivenhed:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Detaljer"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Alle genstande på denne grund, som vil blive overført til køberen af denne grund, er nu oplyst.
-
-* Træer og græs, der vil blive overført, er ikke fremhævet.
- <form name="form">
- <button name="Done" text="Færdig"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Deaktiverede bevægelser med samme udløser: [NAMES]
- </notification>
- <notification name="NoQuickTime">
- Det ser ikke ud til at Apples QuickTime software er installeret på dit system.
-Hvis du ønsker at se streaming media på parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player.
- </notification>
- <notification name="NoPlugin">
- Ingen Media Plugin blev fundet til at håndtere mime af typen &quot;[MIME_TYPE]&quot;. Media af denne type vil ikke være tilgængelig.
- </notification>
- <notification name="MediaPluginFailed">
- Følgende Media Plugin has fejlede:
- [PLUGIN]
-
-Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved.
- <form name="form">
- <ignore name="ignore" text="En Media Plugin kunne ikke afvikles"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning.
- </notification>
- <notification name="OtherObjectsReturned">
- Objekterne på den valgte parcel, ejet af [NAME], er blevet returneret til vedkommendes beholdning.
- </notification>
- <notification name="OtherObjectsReturned2">
- Objekterne i den valgte parcel, ejet af beboeren &apos;[NAME]&apos;, er blevet returneret til deres ejer.
- </notification>
- <notification name="GroupObjectsReturned">
- Genstandene på det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger.
-Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere.
-Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Genstandene på det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere.
- </notification>
- <notification name="ServerObjectMessage">
- Besked fra [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- Dette land er åbnet for &apos;skade&apos;.
-Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation.
- </notification>
- <notification name="NoFly">
- Dette sted har ikke aktiveret ret til flyvning.
-Du kan ikke flyve her.
- </notification>
- <notification name="PushRestricted">
- Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land.
- </notification>
- <notification name="NoVoice">
- Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale.
- </notification>
- <notification name="NoBuild">
- Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller &apos;rezze&apos; objekter her.
- </notification>
- <notification name="ScriptsStopped">
- En administrator har midlertidig stoppet scripts i denne region.
- </notification>
- <notification name="ScriptsNotRunning">
- Denne region kører ikke nogen scripts.
- </notification>
- <notification name="NoOutsideScripts">
- Dette sted tillader ikke udefra kommende scripts.
-
-Ingen scripts vil virke her, udover de som tilhører ejeren af landet.
- </notification>
- <notification name="ClaimPublicLand">
- Du kan kun kræve land i den region du befinder dig i.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient.
-
-Gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
- </notification>
- <notification name="URBannedFromRegion">
- Du er blokeret i denne region.
- </notification>
- <notification name="NoTeenGridAccess">
- Du kan ikke tilslutte dig denne &apos;Teen&apos; region.
- </notification>
- <notification name="ImproperPaymentStatus">
- Du har ikke de rette betalingsoplysninger til at komme ind i denne region.
- </notification>
- <notification name="MustGetAgeParcel">
- Du skal være aldersgodkendt for at komme ind på denne parcel.
- </notification>
- <notification name="NoDestRegion">
- Destinations region ikke fundet.
- </notification>
- <notification name="NotAllowedInDest">
- Du har ikke adgang til denne destination.
- </notification>
- <notification name="RegionParcelBan">
- Kan ikke skifte til ny region via en blokeret parcel. Prøv en anden vej ind.
- </notification>
- <notification name="TelehubRedirect">
- Du er blevet omdirigeret til en telehub.
- </notification>
- <notification name="CouldntTPCloser">
- Kunne ikke teleportere nærmere til destination.
- </notification>
- <notification name="TPCancelled">
- Teleport afbrudt.
- </notification>
- <notification name="FullRegionTryAgain">
- Den region du prøver at komme ind i er fuld for øjeblikket.
-Prøv igen om lidt.
- </notification>
- <notification name="GeneralFailure">
- Generel fejl.
- </notification>
- <notification name="RoutedWrongRegion">
- Du blev sendt til en forkert region. Prøv igen.
- </notification>
- <notification name="NoValidAgentID">
- Ikke en gyldig agent ID.
- </notification>
- <notification name="NoValidSession">
- Ikke noget gyldig sessions-ID
- </notification>
- <notification name="NoValidCircuit">
- Ingen gyldig kode for kredsløb.
- </notification>
- <notification name="NoValidTimestamp">
- Ikke et gyldigt klokkeslæt.
- </notification>
- <notification name="NoPendingConnection">
- Kunne ikke skabe fast forbindelse.
- </notification>
- <notification name="InternalUsherError">
- Der opstod en intern fejl ved teleportering til din teleport destination.. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
- </notification>
- <notification name="NoGoodTPDestination">
- Kunne ikke finde et egnet teleport sted i denne region.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Der opstod en intern fejl ved beregning af globale koordinater for din teleport forespørgsel. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
- </notification>
- <notification name="NoValidLanding">
- Kunne ikke finde et gyldigt landingspunkt.
- </notification>
- <notification name="NoValidParcel">
- No valid parcel could be found.
- </notification>
- <notification name="ObjectGiveItem">
- Et objekt ved navn &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; ejet af [NAME_SLURL] tilbyder dig &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <form name="form">
- <button name="Keep" text="Behold genstand"/>
- <button name="Discard" text="Afvis genstand"/>
- <button name="Mute" text="Blokér objekt"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] tilbyder dig [ITEM_SLURL]. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <form name="form">
- <button name="Show" text="Behold genstand"/>
- <button name="Discard" text="Afvis genstand"/>
- <button name="Mute" text="Blokér bruger"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Indmeld"/>
- <button name="Decline" text="Afvis"/>
- <button name="Info" text="Information"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] har tilbudt en teleport til deres lokation:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="Teleportér"/>
- <button name="Cancel" text="Annullér"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- Tilbud om teleport sendt til [TO_NAME]
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Senere"/>
- <button name="GoNow..." text="Gå nu..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] tilbyder venskab.
-
-[MESSAGE]
-
-(Som udgangspunkt vil I være i stand til at se hinandens online status.)
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- Du har tilbudt venskab til [TO_NAME]
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] tilbyder venskab.
-
-(Som udgangspunkt, vil du være i stand til at se den andens online status)
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] accepterede dit tilbud om venskab.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] afviste dit tilbud om venskab.
- </notification>
- <notification name="FriendshipAcceptedByMe">
- Tilbud om venskab accepteret.
- </notification>
- <notification name="FriendshipDeclinedByMe">
- Tilbud om venskab afvist.
- </notification>
- <notification name="OfferCallingCard">
- [NAME] tilbyder sit visitkort.
-Dette vil tilføje et bogmærke i din beholdning, så du hurtigt kan sende en personlig besked til denne beboer.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Denne region vil genstarte om [MINUTES] minutter.
-Hvis du ikke forlader regionen, vil du blive logget af.
- </notification>
- <notification name="RegionRestartSeconds">
- Denne region genstartes om [SECONDS] sekunder.
-Hvis du ikke forlader regionen, vil du blive logget af.
- </notification>
- <notification name="LoadWebPage">
- Indlæas websiden [URL]?
-
-[MESSAGE]
-
-Fra objekt: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, ejer: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Gå til side"/>
- <button name="Cancel" text="Afbryd"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- Det lykkedes ikke at finde [TYPE] i databasen.
- </notification>
- <notification name="FailedToFindWearable">
- Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen.
- </notification>
- <notification name="InvalidWearable">
- Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på.
- </notification>
- <notification name="ScriptQuestion">
- &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, et objekt ved ejet af &apos;[NAME]&apos;, ønsker at:
-
-[QUESTIONS]
-Er dette OK?
- <form name="form">
- <button name="Yes" text="Ja"/>
- <button name="No" text="Nej"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Et objeckt med navn &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, ejet af &apos;[NAME]&apos; ønsker at:
-
-[QUESTIONS]
-Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise dette ønske.
-
-Opfyld dette ønske?
- <form name="form">
- <button name="Grant" text="Imødekom"/>
- <button name="Deny" text="Afvis"/>
- <button name="Details" text="Detaljer..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorér"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorér"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- Tak for din betaling!
-
-Din L$ balance vil blive opdateret når transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I så fald vil beløbet blive krediteret din US$ balance.
-
-Status for din betaling kan ses i din &apos;Transaction History&apos; side på din [http://secondlife.com/account/ Dashboard]
- </notification>
- <notification name="FirstOverrideKeys">
- Dine bevælgelsestaster bliver nu håndteret af et objekt.
-Brug piletasterne eller AWSD for at se, hvad de gør.
-Nogle genstande (som skydevåben) kræver at du går ind i musevisning for at bruge dem.
-Tryk på &apos;M&apos; for at gåre det.
- </notification>
- <notification name="FirstSandbox">
- Dette er et sandkasse område. Her kan beboere lære ast bygge.
-
-De ting du bygger vil blive slettet senere, så glem ikke at højre-klikke og vælge &quot;Tag&quot; for at tage en kopi af din kreation til din beholdning.
- </notification>
- <notification name="MaxListSelectMessage">
- Du må kun vælge op til [MAX_SELECT] genstande på denne liste.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] inviterer dig til en stemme-chat samtale.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [NAME] har fået sendt en besked og blokering er derfor automatisk blevet fjernet.
- </notification>
- <notification name="AutoUnmuteByMoney">
- [NAME] har fået givet penge og blokering er derfor automatisk blevet fjernet.
- </notification>
- <notification name="AutoUnmuteByInventory">
- [NAME] er blevet tilbud noget fra beholdning og blokering er derfor automatisk blevet fjernet.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP].
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] har sluttet sig til en stemme-chat med en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] inviterer dig til en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
- <form name="form">
- <button name="Accept" text="Acceptér"/>
- <button name="Decline" text="Afvis"/>
- <button name="Mute" text="Blokér"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nået maksiumum kapacitet. Prøv venligst igen senere.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Vi beklager. Dette område har nået sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet område.
- </notification>
- <notification name="VoiceChannelDisconnected">
- Du er blevet koblet fra [VOICE_CHANNEL_NAME]. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] har afsluttet samtalen. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] har avist dit opkald. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere. Du vil nu blive koblet til almindelig voice-chat.
- </notification>
- <notification name="VoiceLoginRetry">
- Vi laver en stemmekanal til dig. Det kan tage op til et minut.
- </notification>
- <notification name="VoiceEffectsExpired">
- En eller flere af dine stemme &quot;morphs&quot; er udløbet.
-[[URL] Click here] for at forny dit abbonnement.
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- Den aktive stemme &quot;morph&quot; er udløbet og din normale stemme opsætning er genaktiveret.
-[[URL] Click here] for at forny dit abbonnement.
- </notification>
- <notification name="VoiceEffectsWillExpire">
- En eller flere af dine stemme &quot;morphs&quot; vil udløbe om mindre end [INTERVAL] dage.
-[[URL] Click here] for at forny dit abbonnement.
- </notification>
- <notification name="VoiceEffectsNew">
- Nye stemme &quot;morphs&quot; er tilgængelige!
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Kun medlemmer af en bestemt gruppe kan besøge dette område.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Du kan ikke komme ind på området. Du er blevet udelukket.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Du kan ikke komme ind på området. Du er ikke på adgangslisten.
- </notification>
- <notification name="VoiceNotAllowed">
- Du har ikke tilladelse til at tilslutte dig stemme-chat på [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- En fejl er opstået under forsøget på at koble sig på stemme chatten [VOICE_CHANNEL_NAME]. Pråv venligst senere.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Den SLurl du klikkede på understøttes ikke.
- </notification>
- <notification name="BlockedSLURL">
- En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige årsager.
- </notification>
- <notification name="ThrottledSLURL">
- Flere SLurls blev modtaget fra en browser i et kort tidsrum.
-De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager.
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="Svar"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- Er du sikker på at du vil lukke alle personlige samtaler (IM)?
- <usetemplate ignoretext="Bekræft før du lukker alle IMer" name="okcancelignore" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- Vedhæng er blevet gemt.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Ikke muligt at finde hjælp om dette element.
- </notification>
- <notification name="ObjectMediaFailure">
- Server fejl: Media opdatering eller &quot;get&quot; fejlede.
-&apos;[ERROR]&apos;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- Din tekst chat er blevet slukket af moderator.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- Din stemme er blevet slukket af moderatoren.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- Er du sikker på at du vil slette teleport historikken?
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- Den valgte knap kan ikke vises lige nu.
-Knappen vil blive vist når der er nok plads til den.
- </notification>
- <notification name="ShareNotification">
- Vælg beboere at dele med.
- </notification>
- <notification name="ShareItemsConfirmation">
- Er du sikker på at du vil dele følgende genstande:
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-Me følgende beboere:
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ok"/>
- </notification>
- <notification name="ItemsShared">
- Genstande er nu delt.
- </notification>
- <notification name="DeedToGroupFail">
- Dedikering til gruppe fejlede.
- </notification>
- <notification name="AvatarRezNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; var ikke sky mere, efter [TIME] sekunder.
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- ( [EXISTENCE] seconds alive )
-Du blev færdig med at fremvise dit sæt efter [TIME] sekunder.
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- ( [EXISTENCE] seconds alive )
-Du sendte en opdatering af dit udseende efter [TIME] sekunder.
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; blev til &quot;sky&quot;.
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; appeared.
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; forsvandt efter [TIME] sekunder som &quot;sky&quot;.
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; skiftede til udseende modus.
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; har forladt udseende modus.
- </notification>
- <notification name="NoConnect">
- Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].
-Check venligst din netværks- og firewallsetup.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- Vi har problemer med at oprette forbindelse til din stemme server:
-
-[HOSTID]
-
-Stemme kommunikation vil ikke være tilgængelig.
-Check venligst din netværks- og firewall setup.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; forsvandt helt &quot;uploaded&quot;.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( [EXISTENCE] sekunder i live )
-Du uploadede en [RESOLUTION] &quot;bagt&quot; tekstur til &apos;[BODYREGION]&apos; efter [TIME] sekunder.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( [EXISTENCE] sekunder i live )
-Du opdaterede en [RESOLUTION] &quot;bagt&quot; tekstur for &apos;[BODYREGION]&apos; efter [TIME] sekunder.
- </notification>
- <notification name="ConfirmLeaveCall">
- Er du sikker på at du vil forlade dette opkald?
- <usetemplate ignoretext="Bekræft før jeg forlader opkald" name="okcancelignore" notext="Nej" yestext="Ja"/>
- </notification>
- <notification name="ConfirmMuteAll">
- Du har valgt at slukke for lyden for alle deltagere i gruppeopkaldet.
-Dette vil også betyde, at alle beboere der slutter sig til opkaldet
-vil have lyden slukket - selv efter de har forladt kaldet.
-
-
-Sluk for alles lyd?
- <usetemplate ignoretext="Bekræft før jeg slukker for alle deltageres lyd i gruppe-kald" name="okcancelignore" notext="Annullér" yestext="Ok"/>
- </notification>
- <notification label="Chat" name="HintChat">
- For at deltage i samtalen tast tekst ind i chat feltet nedenfor.
- </notification>
- <notification label="Stå op" name="HintSit">
- For at rejse dig op og forlad siddeposition, tryk på &quot;Stå op&quot; knappen.
- </notification>
- <notification label="Undersøg verden" name="HintDestinationGuide">
- Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.
- </notification>
- <notification label="Side panel" name="HintSidePanel">
- Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.
- </notification>
- <notification label="Flyt" name="HintMove">
- For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur.
- </notification>
- <notification label="Visningsnavn" name="HintDisplayName">
- Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.
- </notification>
- <notification label="Flyt" name="HintMoveArrows">
- For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op
- </notification>
- <notification label="Se" name="HintView">
- For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå.
- </notification>
- <notification label="Beholdning" name="HintInventory">
- Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen &quot;Nye ting&quot;
- </notification>
- <notification label="Der er kommet Linden Dollars" name="HintLindenDollar">
- Her er din nuværende balance af L$. Klik på Køb L$ for at købe flere Linden dollars.
- </notification>
- <notification name="PopupAttempt">
- En pop-up blev hindret i at blive vist.
- <form name="form">
- <ignore name="ignore" text="Tillad alle pop-ups"/>
- <button name="open" text="Åben pop-up vindue"/>
- </form>
- </notification>
- <notification name="AuthRequest">
- Hjemmesiden på &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;[REALM]&apos; kræver et brugernavn og password.
- <form name="form">
- <input name="username" text="Brugernavn"/>
- <input name="password" text="Password"/>
- <button name="ok" text="Send"/>
- <button name="cancel" text="Annullér"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- For at skifte tilstand skal du genstarte programmet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoClassifieds">
- Oprettelse og redigering af annoncer er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoPicks">
- Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoWorldMap">
- Det er kun muligt at se verdenskortet i avanceret tilstand.Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- Stemme kald kan kun benttes i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- Det er kun mulig at dele i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
- <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
- </notification>
- <global name="UnsupportedGLRequirements">
- Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter &apos;multitexture&apos;. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem.
-
-Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE].
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Hvis du selv ejer land, kan du benytte det til hjemme lokation.
-Ellers kan du se på verdenskortet og finde steder markeret med &quot;Infohub&quot;.
- </global>
- <global name="You died and have been teleported to your home location">
- Du døde og er blevet teleporteret til din hjemmelokation.
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
deleted file mode 100644
index 14250453eb..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Opkald" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Forlad samtale" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Stemmekontroller" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
deleted file mode 100644
index bd20ece764..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Slå mikrofon til/fra"/>
- <string name="VoiceControlBtnToolTip" value="Vis/skjul stemme kontrolpanel"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Tal" name="speak_btn" tool_tip="Tænd og sluk for mikrofon"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Ændring af opsætning for lyd"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Lad din avatar gøre ting"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Vis" name="camera_btn" tool_tip="Kontrollér kameravinkel"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinationer" name="destination_btn" tool_tip="Rejs i Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Min avatar" name="avatar_btn" tool_tip="Ændre dit udseende"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Personer" name="show_people_button" tool_tip="Find personer i Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Se og rediger din profil"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Hvordan" name="show_help_btn" tool_tip="Vis hjælpeinformation for Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Konversationer"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notifikationer"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
deleted file mode 100644
index 23a5e79e22..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="Gruppe profil" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Opkald gruppe" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Forlad samtale" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Åben stemme indstillinger" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
deleted file mode 100644
index b8a7ec0b34..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Tilføj ven" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport til denne person"/>
- </layout_panel>
- <layout_panel name="share_btn_panel">
- <button label="Del" name="share_btn"/>
- </layout_panel>
- <layout_panel name="pay_btn_panel">
- <button label="Betal" name="pay_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Opkald" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Afslut samtale" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Stemme kontroller" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_login.xml b/indra/newview/skins/minimal/xui/da/panel_login.xml
deleted file mode 100644
index 2e0f726e1a..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Brugernavn:
- </text>
- <combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/>
- <text name="password_text">
- Password:
- </text>
- <check_box label="Husk password" name="remember_check"/>
- <button label="Log på" name="connect_btn"/>
- <text name="mode_selection_text">
- Tilstand:
- </text>
- <combo_box name="mode_combo" tool_tip="Vælg ønsket tilstand. Vælg basis for hurtig og nem udforskning og chat. Vælg avanceret for at få adgang til flere muligheder.">
- <combo_box.item label="Basis" name="Basic"/>
- <combo_box.item label="Avanceret" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- Start ved:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="Min sidste lokation" name="MyLastLocation"/>
- <combo_box.item label="Hjem" name="MyHome"/>
- <combo_box.item label="&lt;Indtast regionnavn&gt;" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Opret bruger
- </text>
- <text name="forgot_password_text">
- Har du glemt brugernavn eller password?
- </text>
- <text name="login_help">
- Hjælp til login
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
deleted file mode 100644
index 2ee87433a4..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Gå tilbage til min forrige lokation"/>
- <pull_button name="forward_btn" tool_tip="Gå en lokation fremad"/>
- <button name="home_btn" tool_tip="Teleport til min hjemme lokation"/>
- <location_input label="Lokation" name="location_combo"/>
- <search_combo_box label="Søg" name="search_combo_box" tool_tip="Søg">
- <combo_editor label="Søg [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
- <label name="favorites_bar_label" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
- Favoritter
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Søg mere af mine favoritter"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml
deleted file mode 100644
index 8be4d695bd..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Personer" name="people_panel">
- <string name="no_recent_people" value="Ingen nylige personer. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/>
- <string name="no_filtered_recent_people" value="Ingen nylige personer med det navn."/>
- <string name="no_one_near" value="Ingen i nærheden. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/>
- <string name="no_one_filtered_near" value="Ingen i nærheden med det navn."/>
- <string name="no_friends_online" value="Ingen venner online"/>
- <string name="no_friends" value="Ingen venner"/>
- <string name="no_friends_msg">
- Højre-klik på en person for at tilføje som ven.
-Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor.
- </string>
- <string name="no_filtered_friends_msg">
- Fandt du ikke hvad du søgte? Prøv destinationsknappen nedenfor.
- </string>
- <string name="people_filter_label" value="Filtrér personer"/>
- <string name="groups_filter_label" value="Filtrér grupper"/>
- <string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/>
- <string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at åbne kort, træk for at panorere)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at teleportere, træk for at panorere)"/>
- <filter_editor label="Filtrér" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="TÆT PÅ" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="Valg"/>
- <button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/>
- </panel>
- </panel>
- <panel label="MINE VENNER" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Alle"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="Vis flere valg"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="Tilbyd venskab til en beboer"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="MINE GRUPPER" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="Valg"/>
- <button name="plus_btn" tool_tip="Bliv medlem af gruppe/Opret ny gruppe"/>
- <button name="activate_btn" tool_tip="Activér valgte gruppe"/>
- </panel>
- </panel>
- <panel label="NYLIGE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="Valg"/>
- <button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Åben session med privat besked (IM)"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Opkald" name="call_btn" tool_tip="Kald til denne beboer"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Gruppe profil" name="group_info_btn" tool_tip="Vis gruppe information"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Gruppe chat" name="chat_btn" tool_tip="Åben chat session"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Gruppe kald" name="group_call_btn" tool_tip="Opkald til denne gruppe"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
deleted file mode 100644
index ce3a1d8b4e..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Side bjælke"/>
- <button name="undock" tool_tip="Løsriv"/>
- <button name="dock" tool_tip="Fastgør"/>
- <button name="show_help" tool_tip="Vis hjælp"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml b/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
deleted file mode 100644
index 6e7bdfc188..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December
- </panel.string>
- <panel.string name="packet_loss_tooltip">
- Packet Loss
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Båndbredde
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <panel name="balance_bg">
- <text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/>
- <button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/>
- </panel>
- <text name="TimeText" tool_tip="Nuværende tid (Pacific)">
- 24:00 PST
- </text>
- <button name="media_toggle_btn" tool_tip="Start/Stop Alle medier (musik, video, hjemmesider)"/>
- <button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/floater_camera.xml b/indra/newview/skins/minimal/xui/de/floater_camera.xml
deleted file mode 100644
index d49c207f98..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- Kamera um Fokus drehen
- </floater.string>
- <floater.string name="zoom_tooltip">
- Kamera auf Fokus zoomen
- </floater.string>
- <floater.string name="move_tooltip">
- Kamera nach oben, unten, links und rechts bewegen
- </floater.string>
- <floater.string name="camera_modes_title">
- Kameramodi
- </floater.string>
- <floater.string name="pan_mode_title">
- Kreisen - Zoomen - Schwenken
- </floater.string>
- <floater.string name="presets_mode_title">
- Ansichten
- </floater.string>
- <floater.string name="free_mode_title">
- Objekt ansehen
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Vorderansicht
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Seitenansicht
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Hinteransicht
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Objektansicht
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Mouselook
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Kamera auf Fokus zoomen">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/>
- <slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/>
- <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Ansichten"/>
- <button label="" name="pan_btn" tool_tip="Kreisen - Zoomen - Schwenken"/>
- <button label="" name="avatarview_btn" tool_tip="Kameramodi"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml b/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
deleted file mode 100644
index 459dfb66c0..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ANWEISUNGEN">
- <floater.string name="loading_text">
- Wird geladen...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml b/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
deleted file mode 100644
index 63cf4a6cba..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIEN-BROWSER">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Zurück" name="back"/>
- <button label="Vorwärts" name="forward"/>
- <button label="Neu laden" name="reload"/>
- <button label="Los" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="zurück" name="rewind"/>
- <button label="anhalten" name="stop"/>
- <button label="vorwärts" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Aktuelle Seite an Parzelle senden" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="In meinem Browser öffnen" name="open_browser"/>
- <check_box label="Immer in meinem Browser öffnen" name="open_always"/>
- <button label="Schließen" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
deleted file mode 100644
index bbb4114200..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT IN DER NÄHE">
- <check_box label="Chat übersetzen (Service von Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_web_content.xml b/indra/newview/skins/minimal/xui/de/floater_web_content.xml
deleted file mode 100644
index 6ab119eeab..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Rückwärts"/>
- <button name="forward" tool_tip="Vorwärts"/>
- <button name="stop" tool_tip="Navigation stoppen"/>
- <button name="reload" tool_tip="Seite neu laden"/>
- <combo_box name="address" tool_tip="URL hier eingeben"/>
- <icon name="media_secure_lock_flag" tool_tip="Sicheres Browsen"/>
- <button name="popexternal" tool_tip="Aktuelle URL im Desktop-Browser öffnen"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml b/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
deleted file mode 100644
index 4b8fd8a0ad..0000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_subtitle" value="11 Monate und 3 Tage alt"/>
- <text name="user_details">
- Dies ist meine Second Life-Beschreibung und ich finde sie wirklich gut! Meine Beschreibung ist deshalb so lang, weil ich gerne rede.
- </text>
- <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
- <button label="Freund hinzufügen" name="add_friend_btn" width="110"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" left_delta="120" name="view_profile_btn" width="44"/>
- <panel name="moderator_panel">
- <button label="Voice deaktivieren" name="disable_voice"/>
- <button label="Voice aktivieren" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/inspect_object.xml b/indra/newview/skins/minimal/xui/de/inspect_object.xml
deleted file mode 100644
index 72b8235828..0000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Von [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Von [CREATOR]
-Besitzer [OWNER]
- </string>
- <string name="Price">
- [AMOUNT] L$
- </string>
- <string name="PriceFree">
- Kostenlos!
- </string>
- <string name="Touch">
- Berühren
- </string>
- <string name="Sit">
- Sitzen
- </string>
- <text name="object_name" value="Test für ein Objektname der sehr lange ist und über zwei Zeilen geht."/>
- <text name="object_creator">
- von secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text name="price_text">
- 30.000 L$
- </text>
- <text name="object_description">
- Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon mindestens 120 Zeichen lang und länger als der englische Originaltext. Niemand weiß es genau.
- </text>
- <text name="object_media_url">
- http://www.superdupertest.com
- </text>
- <button label="Kaufen" name="buy_btn"/>
- <button label="Bezahlen" name="pay_btn"/>
- <button label="Kopie nehmen" name="take_free_copy_btn" width="100"/>
- <button label="Berühren" name="touch_btn"/>
- <button label="Sitzen" name="sit_btn"/>
- <button label="Öffnen" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Sicheres Browsen"/>
- <button label="Mehr" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
deleted file mode 100644
index f3775a05ec..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_most_recent"/>
- <menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
- <menu_item_check label="Nach Typ sortieren" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
deleted file mode 100644
index 237c92f7d2..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil anzeigen" name="Profile..."/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="In Gruppe einladen" name="Invite..."/>
- <menu_item_call label="Ignorieren" name="Avatar Mute"/>
- <menu_item_call label="Melden" name="abuse"/>
- <menu_item_call label="Einfrieren" name="Freeze..."/>
- <menu_item_call label="Hinauswerfen" name="Eject..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
- <menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <menu_item_call label="Bezahlen" name="Pay..."/>
- <menu_item_call label="Objektprofil" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
deleted file mode 100644
index 644fc68ba4..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Berühren" name="Attachment Object Touch"/>
- <menu_item_call label="Bearbeiten" name="Edit..."/>
- <menu_item_call label="Abnehmen" name="Detach"/>
- <menu_item_call label="Hinsetzen" name="Sit Down Here"/>
- <menu_item_call label="Aufstehen" name="Stand Up"/>
- <menu_item_call label="Outfit ändern" name="Change Outfit"/>
- <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
- <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
- <menu_item_call label="Meine Freunde" name="Friends..."/>
- <menu_item_call label="Meine Gruppen" name="Groups..."/>
- <menu_item_call label="Mein Profil" name="Profile..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
- <menu_item_call label="Fallen lassen" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
deleted file mode 100644
index c036cf5515..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil anzeigen" name="Show Profile"/>
- <menu_item_call label="IM senden..." name="Send IM"/>
- <menu_item_call label="Freund hinzufügen..." name="Add Friend"/>
- <menu_item_call label="Freund entfernen..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
deleted file mode 100644
index 8aee0be3d2..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Profil anzeigen" name="Profile..."/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="In Gruppe einladen" name="Invite..."/>
- <menu_item_call label="Ignorieren" name="Avatar Mute"/>
- <menu_item_call label="Melden" name="abuse"/>
- <menu_item_call label="Einfrieren" name="Freeze..."/>
- <menu_item_call label="Hinauswerfen" name="Eject..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
- <menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <menu_item_call label="Bezahlen" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
deleted file mode 100644
index 582c76ac94..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Hinsetzen" name="Sit Down Here"/>
- <menu_item_call label="Aufstehen" name="Stand Up"/>
- <context_menu label="Ausziehen" name="Take Off &gt;">
- <context_menu label="Kleidung" name="Clothes &gt;">
- <menu_item_call label="Hemd" name="Shirt"/>
- <menu_item_call label="Hose" name="Pants"/>
- <menu_item_call label="Rock" name="Skirt"/>
- <menu_item_call label="Schuhe" name="Shoes"/>
- <menu_item_call label="Strümpfe" name="Socks"/>
- <menu_item_call label="Jacke" name="Jacket"/>
- <menu_item_call label="Handschuhe" name="Gloves"/>
- <menu_item_call label="Unterhemd" name="Self Undershirt"/>
- <menu_item_call label="Unterhose" name="Self Underpants"/>
- <menu_item_call label="Tätowierung" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Alle Kleider" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Abnehmen" name="Object Detach"/>
- <menu_item_call label="Alles abnehmen" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Outfit ändern" name="Chenge Outfit"/>
- <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
- <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
- <menu_item_call label="Meine Freunde" name="Friends..."/>
- <menu_item_call label="Meine Gruppen" name="Groups..."/>
- <menu_item_call label="Mein Profil" name="Profile..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
deleted file mode 100644
index 6c4308286a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Schaltfläche Gesten" name="ShowGestureButton"/>
- <menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/>
- <menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/>
- <menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/>
- <menu_item_check label="Schaltfläche „Seitenleiste“" name="ShowSidebarButton"/>
- <menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/>
- <menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/>
- <menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/>
- <menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/>
- <menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Löschen" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Alle auswählen" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
deleted file mode 100644
index 05d3dfca9d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Abnehmen" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
deleted file mode 100644
index 07960a525c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Ersetzen" name="replace"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
deleted file mode 100644
index 7fced273a7..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Ausziehen" name="take_off"/>
- <menu_item_call label="Ersetzen" name="replace"/>
- <menu_item_call label="Eine Kategorie nach oben" name="move_up"/>
- <menu_item_call label="Eine Kategorie nach unten" name="move_down"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
deleted file mode 100644
index 54b218d22f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Neue Kleider" name="COF.Gear.New_Clothes"/>
- <menu label="Neue Körperteile" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_edit.xml b/indra/newview/skins/minimal/xui/de/menu_edit.xml
deleted file mode 100644
index 37f68d68d5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Bearbeiten" name="Edit">
- <menu_item_call label="Rückgängig" name="Undo"/>
- <menu_item_call label="Wiederherstellen" name="Redo"/>
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Duplizieren" name="Duplicate"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
- <menu_item_call label="Auswahl aufheben" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_favorites.xml b/indra/newview/skins/minimal/xui/de/menu_favorites.xml
deleted file mode 100644
index 0d0491d2eb..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportieren" name="Teleport To Landmark"/>
- <menu_item_call label="Landmarken anzeigen/bearbeiten" name="Landmark Open"/>
- <menu_item_call label="SLurl kopieren" name="Copy slurl"/>
- <menu_item_call label="Auf Karte zeigen" name="Show On Map"/>
- <menu_item_call label="Kopieren" name="Landmark Copy"/>
- <menu_item_call label="Einfügen" name="Landmark Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
deleted file mode 100644
index 953c0eeed5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Zu Favoriten hinzufügen/daraus entfernen" name="activate"/>
- <menu_item_call label="Kopieren" name="copy_gesture"/>
- <menu_item_call label="Einfügen" name="paste"/>
- <menu_item_call label="UUID kopieren" name="copy_uuid"/>
- <menu_item_call label="Aktuelles Outfit speichern" name="save_to_outfit"/>
- <menu_item_call label="Bearbeiten" name="edit_gesture"/>
- <menu_item_call label="Untersuchen" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml b/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
deleted file mode 100644
index 583ee793be..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Werden Sie Mitglied..." name="item_join"/>
- <menu_item_call label="Neue Gruppe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
deleted file mode 100644
index 9acf96dc6d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
deleted file mode 100644
index f464b71f4a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Alle schließen" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 11f93f47b4..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
deleted file mode 100644
index 81ef3b6569..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Gruppeninfo" name="Show Profile"/>
- <menu_item_call label="Sitzung anzeigen" name="Chat"/>
- <menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
deleted file mode 100644
index d123238246..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Profil anzeigen" name="Show Profile"/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="Sitzung anzeigen" name="Send IM"/>
- <menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 72ba7fe41d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Profil anzeigen" name="view_profile"/>
- <menu_item_call label="Freund hinzufügen" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Anrufen" name="call"/>
- <menu_item_call label="Teleportieren" name="teleport"/>
- <menu_item_call label="Ignorieren" name="block"/>
- <menu_item_call label="Freischalten" name="unblock"/>
- <menu_item_call label="Melden" name="report"/>
- <menu_item_call label="Einfrieren" name="freeze"/>
- <menu_item_call label="Hinauswerfen" name="eject"/>
- <menu_item_call label="Hinauswerfen" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="debug"/>
- <menu_item_call label="Auf Karte anzeigen" name="find_on_map"/>
- <menu_item_call label="Hineinzoomen" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
deleted file mode 100644
index 7c47913e30..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Berühren" name="touch"/>
- <menu_item_call label="Sitzen" name="sit"/>
- <menu_item_call label="Bezahlen" name="pay"/>
- <menu_item_call label="Kaufen" name="buy"/>
- <menu_item_call label="Nehmen" name="take"/>
- <menu_item_call label="Kopie nehmen" name="take_copy"/>
- <menu_item_call label="Öffnen" name="open"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
- <menu_item_call label="Anziehen" name="wear"/>
- <menu_item_call label="Hinzufügen" name="add"/>
- <menu_item_call label="Melden" name="report"/>
- <menu_item_call label="Ignorieren" name="block"/>
- <menu_item_call label="Hineinzoomen" name="zoom_in"/>
- <menu_item_call label="Entfernen" name="remove"/>
- <menu_item_call label="Weitere Infos" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
deleted file mode 100644
index 443092319b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="Hinsetzen" name="Sit Down Here"/>
- <menu_item_call label="Aufstehen" name="Stand Up"/>
- <menu_item_call label="Meine Freunde" name="Friends..."/>
- <menu_item_call label="Mein Profil" name="Profile..."/>
- <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 71cff7136b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Schließen" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_inventory.xml
deleted file mode 100644
index 43722e0dcf..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Kaufen" name="Task Buy"/>
- <menu_item_call label="Öffnen" name="Task Open"/>
- <menu_item_call label="Abspielen" name="Task Play"/>
- <menu_item_call label="Eigenschaften" name="Task Properties"/>
- <menu_item_call label="Umbenennen" name="Task Rename"/>
- <menu_item_call label="Löschen" name="Task Remove"/>
- <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/>
- <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
- <menu_item_call label="Neuer Ordner" name="New Folder"/>
- <menu_item_call label="Neues Skript" name="New Script"/>
- <menu_item_call label="Neue Notizkarte" name="New Note"/>
- <menu_item_call label="Neue Geste" name="New Gesture"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- <menu_item_call label="Neue Alpha-Maske" name="New Alpha Mask"/>
- <menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
- <menu label="Typ ändern" name="Change Type">
- <menu_item_call label="Standard" name="Default"/>
- <menu_item_call label="Handschuhe" name="Gloves"/>
- <menu_item_call label="Jacke" name="Jacket"/>
- <menu_item_call label="Hose" name="Pants"/>
- <menu_item_call label="Form" name="Shape"/>
- <menu_item_call label="Schuhe" name="Shoes"/>
- <menu_item_call label="Hemd" name="Shirt"/>
- <menu_item_call label="Rock" name="Skirt"/>
- <menu_item_call label="Unterhose" name="Underpants"/>
- <menu_item_call label="Unterhemd" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportieren" name="Landmark Open"/>
- <menu_item_call label="Öffnen" name="Animation Open"/>
- <menu_item_call label="Öffnen" name="Sound Open"/>
- <menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/>
- <menu_item_call label="Zum aktuellen Outfit hinzufügen" name="Add To Outfit"/>
- <menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/>
- <menu_item_call label="Original suchen" name="Find Original"/>
- <menu_item_call label="Objekt löschen" name="Purge Item"/>
- <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
- <menu_item_call label="Öffnen" name="Open"/>
- <menu_item_call label="Original öffnen" name="Open Original"/>
- <menu_item_call label="Eigenschaften" name="Properties"/>
- <menu_item_call label="Umbenennen" name="Rename"/>
- <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Als Link einfügen" name="Paste As Link"/>
- <menu_item_call label="Löschen" name="Remove Link"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Systemordner löschen" name="Delete System Folder"/>
- <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
- <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
- <menu_item_call label="Landmarken-Info" name="About Landmark"/>
- <menu_item_call label="Inworld abspielen" name="Animation Play"/>
- <menu_item_call label="Lokal abspielen" name="Animation Audition"/>
- <menu_item_call label="Instant Message senden" name="Send Instant Message"/>
- <menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/>
- <menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/>
- <menu_item_call label="Aktivieren" name="Activate"/>
- <menu_item_call label="Deaktivieren" name="Deactivate"/>
- <menu_item_call label="Speichern unter" name="Save As"/>
- <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/>
- <menu_item_call label="Anziehen" name="Wearable And Object Wear"/>
- <menu label="Anhängen an" name="Attach To"/>
- <menu label="An HUD hängen" name="Attach To HUD"/>
- <menu_item_call label="Bearbeiten" name="Wearable Edit"/>
- <menu_item_call label="Hinzufügen" name="Wearable Add"/>
- <menu_item_call label="Ausziehen" name="Take Off"/>
- <menu_item_call label="--keine Optionen--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
deleted file mode 100644
index dccee6712d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Hochladen" name="upload">
- <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/>
- <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/>
- <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
- <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/>
- <menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
- </menu>
- <menu_item_call label="Neuer Ordner" name="New Folder"/>
- <menu_item_call label="Neues Skript" name="New Script"/>
- <menu_item_call label="Neue Notizkarte" name="New Note"/>
- <menu_item_call label="Neue Geste" name="New Gesture"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- <menu_item_call label="Neues Alpha" name="New Alpha"/>
- <menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
deleted file mode 100644
index df86a5cf71..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Neues Inventar-Fenster" name="new_window"/>
- <menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
- <menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/>
- <menu_item_check label="Systemordner nach oben" name="sort_system_folders_to_top"/>
- <menu_item_call label="Filter anzeigen" name="show_filters"/>
- <menu_item_call label="Filter zurücksetzen" name="reset_filters"/>
- <menu_item_call label="Alle Ordner schließen" name="close_folders"/>
- <menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/>
- <menu_item_call label="Textur speichern als" name="Save Texture As"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Original suchen" name="Find Original"/>
- <menu_item_call label="Alle Links suchen" name="Find All Links"/>
- <menu_item_call label="Papierkorb ausleeren" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_land.xml b/indra/newview/skins/minimal/xui/de/menu_land.xml
deleted file mode 100644
index de679da3d8..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Land-Info" name="Place Information..."/>
- <menu_item_call label="Hier sitzen" name="Sit Here"/>
- <menu_item_call label="Dieses Land kaufen" name="Land Buy"/>
- <menu_item_call label="Pass kaufen" name="Land Buy Pass"/>
- <menu_item_call label="Bauen" name="Create"/>
- <menu_item_call label="Land bearbeiten" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_landmark.xml
deleted file mode 100644
index 2aff0eec95..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="SLurl kopieren" name="copy"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Auswahl erstellen" name="pick"/>
- <menu_item_call label="Zu Favoritenleiste hinzufügen" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_login.xml b/indra/newview/skins/minimal/xui/de/menu_login.xml
deleted file mode 100644
index a373e15338..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Ich" name="File">
- <menu_item_call label="Einstellungen" name="Preferences..."/>
- <menu_item_call label="[APP_NAME] schließen" name="Quit"/>
- </menu>
- <menu label="Hilfe" name="Help">
- <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
- <menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Debug-Menü anzeigen" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/>
- <menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/>
- <menu_item_call label="XUI-Editor" name="UI Preview Tool"/>
- <menu label="UI-Tests" name="UI Tests"/>
- <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/>
- <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/>
- <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/>
- <menu_item_call label="Test Medienbrowser" name="Web Browser Test"/>
- <menu_item_call label="Test Webinhalt-Floater" name="Web Content Floater Test"/>
- <menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
- <menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml b/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
deleted file mode 100644
index 2e0d72c40c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom Nah" name="Zoom Close"/>
- <menu_item_call label="Zoom Mittel" name="Zoom Medium"/>
- <menu_item_call label="Zoom Weit" name="Zoom Far"/>
- <menu_item_call label="Zoom-Standard" name="Zoom Default"/>
- <menu_item_check label="Karte drehen" name="Rotate Map"/>
- <menu_item_check label="Automatisch zentrieren" name="Auto Center"/>
- <menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/>
- <menu_item_call label="Weltkarte" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_navbar.xml
deleted file mode 100644
index 5175f34b41..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
- <menu_item_check label="Parzelleneigenschaften anzeigen" name="Show Parcel Properties"/>
- <menu_item_call label="Landmarke" name="Landmark"/>
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
deleted file mode 100644
index 99d6428c3f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Leute in der Nähe anzeigen..." name="nearby_people"/>
- <menu_item_check label="Ignorierten Text anzeigen" name="muted_text"/>
- <menu_item_check label="Bilder von Freunden anzeigen" name="show_buddy_icons"/>
- <menu_item_check label="Namen anzeigen" name="show_names"/>
- <menu_item_check label="Namen und Symbole anzeigen" name="show_icons_and_names"/>
- <menu_item_call label="Schriftgröße" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
deleted file mode 100644
index 0f2784f160..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Alle schließen" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_object.xml b/indra/newview/skins/minimal/xui/de/menu_object.xml
deleted file mode 100644
index 19057d4228..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Berühren" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Berühren"/>
- </menu_item_call>
- <menu_item_call label="Bearbeiten" name="Edit..."/>
- <menu_item_call label="Bauen" name="Build"/>
- <menu_item_call label="Öffnen" name="Open"/>
- <menu_item_call label="Hier sitzen" name="Object Sit"/>
- <menu_item_call label="Aufstehen" name="Object Stand Up"/>
- <menu_item_call label="Objektprofil" name="Object Inspect"/>
- <menu_item_call label="Hineinzoomen" name="Zoom In"/>
- <context_menu label="Anziehen" name="Put On">
- <menu_item_call label="Anziehen" name="Wear"/>
- <menu_item_call label="Hinzufügen" name="Add"/>
- <context_menu label="Anhängen" name="Object Attach"/>
- <context_menu label="HUD anhängen" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Entfernen" name="Remove">
- <menu_item_call label="Missbrauch melden" name="Report Abuse..."/>
- <menu_item_call label="Ignorieren" name="Object Mute"/>
- <menu_item_call label="Zurückgeben" name="Return..."/>
- <menu_item_call label="Löschen" name="Delete"/>
- </context_menu>
- <menu_item_call label="Nehmen" name="Pie Object Take"/>
- <menu_item_call label="Kopie nehmen" name="Take Copy"/>
- <menu_item_call label="Bezahlen" name="Pay..."/>
- <menu_item_call label="Kaufen" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml b/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
deleted file mode 100644
index 8b6c558416..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Objektprofil..." name="Object Profile"/>
- <menu_item_call label="Ignorieren..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
deleted file mode 100644
index 897154ec56..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear"/>
- <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
- <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- <menu_item_call label="Neues Alpha" name="New Alpha"/>
- <menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
- <menu_item_call label="Outfit neu benennen" name="rename"/>
- <menu_item_call label="Outfit löschen" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
deleted file mode 100644
index 32a65c96fc..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear_replace"/>
- <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
- <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
- <menu_item_call label="Outfit bearbeiten" name="edit"/>
- <menu_item_call label="Outfit neu benennen" name="rename"/>
- <menu_item_call label="Outfit löschen" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml b/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
deleted file mode 100644
index 160f2f97be..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Nach Name sortieren" name="SortByName"/>
- <menu_item_check label="Nach letzten Sprechern sortieren" name="SortByRecentSpeakers"/>
- <menu_item_call label="Profil anzeigen" name="View Profile"/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Bezahlen" name="Pay"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="View Icons"/>
- <menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
- <menu_item_check label="Text ignorieren" name="MuteText"/>
- <context_menu label="Moderator-Optionen" name="Moderator Options">
- <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
- <menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Alle stummschalten" name="ModerateVoiceMute"/>
- <menu_item_call label="Alle freischalten" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
deleted file mode 100644
index 84d9d8938c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Nach Name sortieren" name="sort_name"/>
- <menu_item_check label="Nach Status sortieren" name="sort_status"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
- <menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/>
- <menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
deleted file mode 100644
index 76225ba241..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Info anzeigen" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Aktivieren" name="Activate"/>
- <menu_item_call label="Verlassen" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
deleted file mode 100644
index b68597d8aa..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Gruppensymbole anzeigen" name="Display Group Icons"/>
- <menu_item_call label="Ausgewählte Gruppe verlassen" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
deleted file mode 100644
index 1db964357f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Profil anzeigen" name="View Profile"/>
- <menu_item_call label="Freund hinzufügen" name="Add Friend"/>
- <menu_item_call label="Freund entfernen" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Karte" name="Map"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Bezahlen" name="Pay"/>
- <menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/>
- <menu_item_call label="Teleport anbieten" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
deleted file mode 100644
index b6e99edfe1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Freunde hinzufügen" name="Add Friends"/>
- <menu_item_call label="Freunde entfernen" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Anrufen" name="Call"/>
- <menu_item_call label="Teilen" name="Share"/>
- <menu_item_call label="Bezahlen" name="Pay"/>
- <menu_item_call label="Teleport anbieten" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 0f252ab46d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
- <menu_item_check label="Nach Name sortieren" name="sort_name"/>
- <menu_item_check label="Nach Entfernung sortieren" name="sort_distance"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
- <menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
deleted file mode 100644
index 1ef020f5e1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Nach aktuellesten Sprechern sortieren" name="sort_most"/>
- <menu_item_check label="Nach Name sortieren" name="sort_name"/>
- <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
- <menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks.xml b/indra/newview/skins/minimal/xui/de/menu_picks.xml
deleted file mode 100644
index 9aec4c83b0..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Bearbeiten" name="pick_edit"/>
- <menu_item_call label="Teleportieren" name="pick_teleport"/>
- <menu_item_call label="Karte" name="pick_map"/>
- <menu_item_call label="Löschen" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
deleted file mode 100644
index 385ff25b95..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Neue Auswahl" name="create_pick"/>
- <menu_item_call label="Neue Anzeige" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_place.xml b/indra/newview/skins/minimal/xui/de/menu_place.xml
deleted file mode 100644
index d9c85f5b92..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Eine Landmarke setzen" name="landmark"/>
- <menu_item_call label="Auswahl erstellen" name="pick"/>
- <menu_item_call label="Pass kaufen" name="pass"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
deleted file mode 100644
index 7c0ff4a46a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Ordner hinzufügen" name="add_folder"/>
- <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
deleted file mode 100644
index 132d3f6466..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
- <menu_item_call label="Ordner hinzufügen" name="add_folder"/>
- <menu_item_call label="Ausschneiden" name="cut"/>
- <menu_item_call label="Kopieren" name="copy_folder"/>
- <menu_item_call label="Einfügen" name="paste"/>
- <menu_item_call label="Umbenennen" name="rename"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Erweitern Sie sich" name="expand"/>
- <menu_item_call label="Zuklappen" name="collapse"/>
- <menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
- <menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
- <menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
deleted file mode 100644
index 6af4d644af..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportieren" name="teleport"/>
- <menu_item_call label="Weitere Informationen" name="more_info"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
- <menu_item_call label="Ordner hinzufügen" name="add_folder"/>
- <menu_item_call label="Ausschneiden" name="cut"/>
- <menu_item_call label="Landmarke kopieren" name="copy_landmark"/>
- <menu_item_call label="SLurl kopieren" name="copy_slurl"/>
- <menu_item_call label="Einfügen" name="paste"/>
- <menu_item_call label="Umbenennen" name="rename"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
- <menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
- <menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
- <menu_item_call label="Auswahl erstellen" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
deleted file mode 100644
index 9f3fcbca1d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Karte" name="show_on_map"/>
- <menu_item_call label="Bezahlen" name="pay"/>
- <menu_item_call label="Teilen" name="share"/>
- <menu_item_call label="Ignorieren" name="block"/>
- <menu_item_call label="Freischalten" name="unblock"/>
- <menu_item_call label="Hinauswerfen" name="kick"/>
- <menu_item_call label="Einfrieren" name="freeze"/>
- <menu_item_call label="Auftauen" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
deleted file mode 100644
index 986c78b318..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Speichern" name="save_outfit"/>
- <menu_item_call label="Speichern unter" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
deleted file mode 100644
index 3256aa1a87..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Schließen" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_slurl.xml
deleted file mode 100644
index b2ec017f9f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="URL-Info" name="about_url"/>
- <menu_item_call label="Zu URL teleportieren" name="teleport_to_url"/>
- <menu_item_call label="Karte" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
deleted file mode 100644
index 68b8e21802..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Alle Ordner aufklappen" name="Expand all folders"/>
- <menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/>
- <menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
deleted file mode 100644
index ff8fb0b181..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportieren" name="Teleport"/>
- <menu_item_call label="Weitere Informationen" name="More Information"/>
- <menu_item_call label="In Zwischenablage kopieren" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
deleted file mode 100644
index 194dd16fd1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Öffnen" name="TabOpen"/>
- <menu_item_call label="Schließen" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml b/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
deleted file mode 100644
index c00186c13e..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
deleted file mode 100644
index 5b0a724244..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
- <menu_item_check label="Parzellen-Eigenschaften anzeigen" name="Show Parcel Properties"/>
- <menu_item_call label="Landmarke" name="Landmark"/>
- <menu_item_call label="Kopieren" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml b/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
deleted file mode 100644
index 9a808088fb..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
- <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_group.xml b/indra/newview/skins/minimal/xui/de/menu_url_group.xml
deleted file mode 100644
index 6bd86414bc..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Gruppeninformation anzeigen" name="show_group"/>
- <menu_item_call label="Gruppe in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_http.xml b/indra/newview/skins/minimal/xui/de/menu_url_http.xml
deleted file mode 100644
index 30eb1668a5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Webseite öffnen" name="url_open"/>
- <menu_item_call label="Im internen Browser öffnen" name="url_open_internal"/>
- <menu_item_call label="Im externen Browser öffnen" name="url_open_external"/>
- <menu_item_call label="URL in Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
deleted file mode 100644
index dc069df02b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Inventarobjekte anzeigen" name="show_item"/>
- <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_map.xml b/indra/newview/skins/minimal/xui/de/menu_url_map.xml
deleted file mode 100644
index 2f6ffcd450..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
deleted file mode 100644
index 90d3763d9c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
- <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
deleted file mode 100644
index 9169bca24f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Parzelleninformationen anzeigen" name="show_parcel"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
deleted file mode 100644
index 72e916b902..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Diesen Befehl ausführen" name="run_slapp"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
deleted file mode 100644
index 5d48230ebf..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ortsinformationen anzeigen" name="show_place"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
deleted file mode 100644
index 4cc1ecc70e..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="An diesen Standort teleportieren" name="teleport"/>
- <menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_viewer.xml b/indra/newview/skins/minimal/xui/de/menu_viewer.xml
deleted file mode 100644
index 67dc618eb0..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Hilfe" name="Help">
- <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
- </menu>
- <menu label="Erweitert" name="Advanced">
- <menu label="Tastaturkürzel" name="Shortcuts">
- <menu_item_check label="Fliegen" name="Fly"/>
- <menu_item_call label="Fenster schließen" name="Close Window"/>
- <menu_item_call label="Alle Fenster schließen" name="Close All Windows"/>
- <menu_item_call label="Ansicht zurücksetzen" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
deleted file mode 100644
index 283e454a06..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Ersetzen" name="wear_replace"/>
- <menu_item_call label="Anziehen" name="wear_wear"/>
- <menu_item_call label="Hinzufügen" name="wear_add"/>
- <menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/>
- <menu_item_call label="Abnehmen" name="detach"/>
- <context_menu label="Anhängen an" name="wearable_attach_to"/>
- <context_menu label="An HUD hängen" name="wearable_attach_to_hud"/>
- <menu_item_call label="Ausziehen" name="take_off"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
- <menu_item_call label="Objektprofil" name="object_profile"/>
- <menu_item_call label="Original anzeigen" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
deleted file mode 100644
index 80d4ff4d9f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Outfit bearbeiten" name="edit"/>
- <menu_item_call label="Ausziehen" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
deleted file mode 100644
index 695451a105..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Ausziehen" name="take_off"/>
- <menu_item_call label="Abnehmen" name="detach"/>
- <menu_item_call label="Outfit bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/notifications.xml b/indra/newview/skins/minimal/xui/de/notifications.xml
deleted file mode 100644
index 195d5105c5..0000000000
--- a/indra/newview/skins/minimal/xui/de/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] bietet Ihnen [ITEM_SLURL] an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus umzuschalten, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
- <form name="form">
- <button name="Show" text="Artikel behalten"/>
- <button name="Discard" text="Artikel ablehnen"/>
- <button name="Mute" text="Benutzer blockieren"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Ein Objekt namens &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, das [NAME_SLURL] gehört, bietet Ihnen &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus zu wechseln, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
- <form name="form">
- <button name="Keep" text="Artikel behalten"/>
- <button name="Discard" text="Artikel ablehnen"/>
- <button name="Mute" text="Objekt blockieren"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
deleted file mode 100644
index cc45f42169..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Anrufen" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Anruf beenden" name="end_call_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
deleted file mode 100644
index 2278bfb699..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Schaltet Mikrofon ein/aus"/>
- <string name="VoiceControlBtnToolTip" value="Voice-Chat-Steuerung anzeigen/ausblenden"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Sprechen" name="speak_btn" tool_tip="Mikrofon ein- und ausschalten"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Soundeinstellungen ändern"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Ihren Avatar bestimmte Aktionen durchführen lassen"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Ansicht" name="camera_btn" tool_tip="Kamerawinkel steuern"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Ziele" name="destination_btn" tool_tip="Durch Second Life reisen"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Mein Avatar" name="avatar_btn" tool_tip="Eigenes Aussehen verändern"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Leute" name="show_people_button" tool_tip="Personen in Second Life suchen"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Eigenes Profil anzeigen und bearbeiten"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Anweisungen" name="show_help_btn" tool_tip="Hilfeinfos zu Second Life anzeigen"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="IMs"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Benachrichtigungen"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
deleted file mode 100644
index 81e6040f84..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Anruf beenden" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
deleted file mode 100644
index 56c2310f2f..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Freund hinzufügen" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Anrufen" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Anruf beenden" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Ignorieren" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Freischalten" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Anrufvolumen" value="0,5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_login.xml b/indra/newview/skins/minimal/xui/de/panel_login.xml
deleted file mode 100644
index 2e82453aab..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://de.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=de
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Benutzername:
- </text>
- <combo_box name="username_combo" tool_tip="Bei der Registrierung gewählter Benutzername wie „berndschmidt12“ oder „Liebe Sonne“"/>
- <text name="password_text">
- Kennwort:
- </text>
- <check_box label="Kennwort merken" name="remember_check"/>
- <button label="Anmelden" name="connect_btn"/>
- <text name="mode_selection_text">
- Modus:
- </text>
- <combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basis: schnelles, einfaches Erkunden und Chatten. Erweitert: Zugriff auf zusätzliche Funktionen.">
- <combo_box.item label="Basis" name="Basic"/>
- <combo_box.item label="Erweitert" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Registrieren
- </text>
- <text name="forgot_password_text">
- Benutzernamen oder Kennwort vergessen?
- </text>
- <text name="login_help">
- Sie brauchen Hilfe?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
deleted file mode 100644
index ee1a543aac..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort teleportieren"/>
- <pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/>
- <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
- <location_input label="Standort" name="location_combo"/>
- <search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche">
- <combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
- <label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
- Favoritenleiste
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml
deleted file mode 100644
index 1b6565eb73..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_people.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Leute" name="people_panel">
- <string name="no_recent_people" value="Sie haben in letzter Zeit mit niemandem interagiert. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“."/>
- <string name="no_filtered_recent_people" value="Es gibt keine Leute mit diesem Namen, mit denen Sie in letzter Zeit interagiert haben."/>
- <string name="no_one_near" value="Es ist niemand in der Nähe. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“."/>
- <string name="no_one_filtered_near" value="Es ist niemand mit diesem Namen in der Nähe."/>
- <string name="no_friends_online" value="Keine Freunde online"/>
- <string name="no_friends" value="Keine Freunde"/>
- <string name="no_friends_msg">
- Klicken Sie mit der rechten Maustaste auf einen Einwohner, um ihn als Freund hinzuzufügen. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“.
- </string>
- <string name="no_filtered_friends_msg">
- Sie haben nicht das Richtige gefunden? Klicken Sie unten auf die Schaltfläche „Ziele“.
- </string>
- <string name="people_filter_label" value="Nach Leuten filtern"/>
- <string name="groups_filter_label" value="Nach Gruppen filtern"/>
- <string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/>
- <string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Doppelklicken, um Karte zu öffnen; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
- <filter_editor label="Filter" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="IN DER NÄHE" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MEINE FREUNDE" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Alle"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Ausgewählte Person aus Ihrer Freundesliste entfernen"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="AKTUELL" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 652fb7c836..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Klappmenü??"/>
- <button name="undock" tool_tip="Abkoppeln"/>
- <button name="dock" tool_tip="Andocken"/>
- <button name="show_help" tool_tip="Hilfe anzeigen"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml b/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
deleted file mode 100644
index 2f8dc938c5..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Paketverlust
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Bandbreite
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basismodus: Second Life schnell und einfach erkunden und chatten. Erweiterter Modus: Zugriff auf zusätzliche Funktionen.">
- <combo_box.item label="Basismodus" name="Basic"/>
- <combo_box.item label="Erweiterter Modus" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Alle Medien starten/stoppen (Musik, Video, Webseiten)"/>
- <button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/floater_camera.xml b/indra/newview/skins/minimal/xui/en/floater_camera.xml
deleted file mode 100644
index 4cf792444f..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_camera.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_dock="true"
- can_minimize="true"
- can_close="false"
- follows="bottom"
- height="164"
- layout="topleft"
- name="camera_floater"
- save_rect="true"
- save_visibility="true"
- save_dock_state="true"
- single_instance="true"
- width="228">
- <floater.string
- name="rotate_tooltip">
- Rotate Camera Around Focus
- </floater.string>
- <floater.string
- name="zoom_tooltip">
- Zoom Camera Towards Focus
- </floater.string>
- <floater.string
- name="move_tooltip">
- Move Camera Up and Down, Left and Right
- </floater.string>
- <floater.string
- name="camera_modes_title">
- Camera modes
- </floater.string>
- <floater.string
- name="pan_mode_title">
- Orbit Zoom Pan
- </floater.string>
- <floater.string
- name="presets_mode_title">
- Preset Views
- </floater.string>
- <floater.string
- name="free_mode_title">
- View Object
- </floater.string>
- <panel
- border="false"
- height="123"
- layout="topleft"
- left="2"
- top="0"
- mouse_opaque="false"
- name="controls"
- width="226">
- <panel
- color="Transparent"
- follows="all"
- height="102"
- layout="topleft"
- left="8"
- name="preset_views_list"
- opaque="true"
- top="24"
- width="212"
- visible="false">
- <panel_camera_item
- name="front_view">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="front_view" />
- <panel_camera_item.picture
- image_name="Cam_Preset_Front_Off" />
- <panel_camera_item.selected_picture
- image_name="Cam_Preset_Front_On" />
- <panel_camera_item.text
- name="front_view_text">
- Front View
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item
- name="group_view"
- top_pad="4">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="group_view" />
- <panel_camera_item.picture
- image_name="Cam_Preset_Side_Off" />
- <panel_camera_item.selected_picture
- image_name="Cam_Preset_Side_On" />
- <panel_camera_item.text
- name="side_view_text">
- Side View
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item
- name="rear_view"
- layout="topleft"
- top_pad="4">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="rear_view" />
- <panel_camera_item.picture
- image_name="Cam_Preset_Back_Off" />
- <panel_camera_item.selected_picture
- image_name="Cam_Preset_Back_On" />
- <panel_camera_item.text
- name="rear_view_text">
- Rear View
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel
- color="Transparent"
- follows="all"
- height="68"
- item_pad="4"
- layout="topleft"
- left="8"
- name="camera_modes_list"
- opaque="true"
- top="24"
- width="212"
- visible="false">
- <panel_camera_item
- name="object_view">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="object_view" />
- <panel_camera_item.text
- name="object_view_text">
- Object View
- </panel_camera_item.text>
- <panel_camera_item.picture
- image_name="Object_View_Off" />
- <panel_camera_item.selected_picture
- image_name="Object_View_On" />
- </panel_camera_item>
- <panel_camera_item
- name="mouselook_view"
- layout="topleft">
- <panel_camera_item.mousedown_callback
- function="CameraPresets.ChangeView"
- parameter="mouselook_view" />
- <panel_camera_item.text
- name="mouselook_view_text">
- Mouselook View
- </panel_camera_item.text>
- <panel_camera_item.picture
- image_name="MouseLook_View_Off" />
- <panel_camera_item.selected_picture
- image_name="MouseLook_View_On" />
- </panel_camera_item>
- </panel>
- <!--TODO: replace + - images -->
- <panel
- border="false"
- class="camera_zoom_panel"
- height="114"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="zoom"
- top="20"
- width="226">
- <joystick_rotate
- follows="top|left"
- height="78"
- image_selected="Cam_Rotate_In"
- image_unselected="Cam_Rotate_Out"
- layout="topleft"
- left="7"
- mouse_opaque="false"
- name="cam_rotate_stick"
- quadrant="left"
- scale_image="false"
- sound_flags="3"
- visible="true"
- tool_tip="Orbit camera around focus"
- top="20"
- width="78">
- <commit_callback
- function="Camera.rotate" />
- <mouse_held_callback
- function="Camera.rotate" />
- </joystick_rotate>
- <button
- follows="top|left"
- height="18"
- image_disabled="AddItem_Disabled"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- layout="topleft"
- left_pad="14"
- name="zoom_plus_btn"
- width="18"
- top="18">
- <commit_callback
- function="Zoom.plus" />
- <mouse_held_callback
- function="Zoom.plus" />
- </button>
- <slider_bar
- height="50"
- layout="topleft"
- name="zoom_slider"
- orientation="vertical"
- tool_tip="Zoom camera toward focus"
- top_pad="0"
- min_val="0"
- max_val="1"
- width="18">
- <commit_callback function="Slider.value_changed"/>
- </slider_bar>
- <button
- follows="top|left"
- height="18"
- image_disabled="MinusItem_Disabled"
- image_selected="MinusItem_Press"
- image_unselected="MinusItem_Off"
- layout="topleft"
- name="zoom_minus_btn"
- top_pad="0"
- width="18">
- <commit_callback
- function="Zoom.minus" />
- <mouse_held_callback
- function="Zoom.minus" />
- </button>
- <joystick_track
- follows="top|left"
- height="78"
- image_selected="Cam_Tracking_In"
- image_unselected="Cam_Tracking_Out"
- layout="topleft"
- left="133"
- name="cam_track_stick"
- quadrant="left"
- scale_image="false"
- sound_flags="3"
- tool_tip="Move camera up and down, left and right"
- top="20"
- width="78">
- <commit_callback
- function="Camera.track" />
- <mouse_held_callback
- function="Camera.track" />
- </joystick_track>
- </panel>
- </panel>
- <panel
- border="false"
- height="42"
- layout="topleft"
- left="2"
- top_pad="0"
- name="buttons"
- width="226">
- <button
- height="23"
- label=""
- layout="topleft"
- left="83"
- is_toggle="true"
- image_overlay="Cam_Avatar_Off"
- image_selected="PushButton_Selected_Press"
- name="presets_btn"
- tab_stop="false"
- tool_tip="Preset Views"
- top="13"
- width="25">
- </button>
- <button
- height="23"
- label=""
- layout="topleft"
- left_pad="1"
- is_toggle="true"
- image_overlay="PanOrbit_Off"
- image_selected="PushButton_Selected_Press"
- name="pan_btn"
- tab_stop="false"
- tool_tip="Orbit Zoom Pan"
- width="25">
- </button>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml b/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
deleted file mode 100644
index 477f210352..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- can_minimize="false"
- height="460"
- layout="topleft"
- min_height="360"
- left="10000"
- top="10"
- min_width="335"
- name="floater_help_browser"
- single_instance="true"
- title="HOW TO"
- width="335">
- <floater.string
- name="loading_text">
- Loading...
- </floater.string>
- <floater.string
- name="done_text">
- </floater.string>
- <layout_stack
- bottom="460"
- follows="left|right|top|bottom"
- layout="topleft"
- left="5"
- orientation="vertical"
- name="stack1"
- top="20"
- width="325">
- <layout_panel
- layout="topleft"
- left_delta="0"
- top_delta="0"
- name="external_controls"
- user_resize="false"
- width="325">
- <web_browser
- trusted_content="true"
- bottom="-5"
- follows="left|right|top|bottom"
- layout="topleft"
- left="0"
- name="browser"
- top="0"
- height="300"
- width="325" />
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml b/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
deleted file mode 100644
index 4862146c94..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="440"
- layout="topleft"
- min_height="140"
- min_width="467"
- name="floater_about"
- save_rect="true"
- auto_tile="true"
- title="MEDIA BROWSER"
- width="820">
- <floater.string
- name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string
- name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack
- bottom="440"
- follows="left|right|top|bottom"
- layout="topleft"
- left="10"
- name="stack1"
- orientation="vertical"
- top="20"
- width="800">
- <layout_panel
- auto_resize="false"
- default_tab_group="1"
- height="20"
- layout="topleft"
- left="0"
- min_height="20"
- name="nav_controls"
- top="400"
- user_resize="false"
- width="800">
- <button
- follows="left|top"
- height="20"
- label="Back"
- layout="topleft"
- left="0"
- name="back"
- top="0"
- width="55">
- <button.commit_callback
- function="MediaBrowser.Back" />
- </button>
- <button
- follows="left|top"
- height="20"
- label="Forward"
- layout="topleft"
- left_pad="3"
- name="forward"
- top_delta="0"
- width="68">
- <button.commit_callback
- function="MediaBrowser.Forward" />
- </button>
- <button
- enabled="false"
- follows="left|top"
- height="20"
- label="Reload"
- layout="topleft"
- left_pad="2"
- name="reload"
- top_delta="0"
- width="70">
- <button.commit_callback
- function="MediaBrowser.Refresh" />
- </button>
- <combo_box
- allow_text_entry="true"
- follows="left|top|right"
- tab_group="1"
- height="20"
- layout="topleft"
- left_pad="5"
- max_chars="1024"
- name="address"
- combo_editor.select_on_focus="true"
- top_delta="0"
- width="540">
- <combo_box.commit_callback
- function="MediaBrowser.EnterAddress" />
- </combo_box>
- <button
- enabled="false"
- follows="right|top"
- height="20"
- label="Go"
- layout="topleft"
- left_pad="5"
- name="go"
- top_delta="0"
- width="50">
- <button.commit_callback
- function="MediaBrowser.Go" />
- </button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- height="20"
- layout="topleft"
- left_delta="0"
- min_height="20"
- name="time_controls"
- top_delta="0"
- user_resize="false"
- width="800">
- <button
- follows="left|top"
- height="20"
- label="rewind"
- layout="topleft"
- left="0"
- name="rewind"
- top="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- image_selected="button_anim_play_selected.tga"
- image_unselected="button_anim_play.tga"
- layout="topleft"
- left_delta="55"
- name="play"
- top_delta="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- image_selected="button_anim_pause_selected.tga"
- image_unselected="button_anim_pause.tga"
- layout="topleft"
- left_delta="0"
- name="pause"
- top_delta="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- label="stop"
- layout="topleft"
- left_pad="10"
- name="stop"
- top_delta="0"
- width="55" />
- <button
- follows="left|top"
- height="20"
- label="forward"
- layout="topleft"
- left_pad="20"
- name="seek"
- top_delta="0"
- width="55" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- height="20"
- layout="topleft"
- left_delta="0"
- min_height="20"
- name="parcel_owner_controls"
- top_delta="0"
- user_resize="false"
- width="540">
- <button
- enabled="false"
- follows="left|top"
- height="20"
- label="Send Current Page to Parcel"
- layout="topleft"
- left="0"
- name="assign"
- top="0"
- width="200">
- <button.commit_callback
- function="MediaBrowser.Assign" />
- </button>
- </layout_panel>
- <layout_panel
- height="40"
- layout="topleft"
- left_delta="0"
- name="external_controls"
- top_delta="0"
- user_resize="false"
- width="540">
- <web_browser
- bottom="-30"
- follows="all"
- layout="topleft"
- left="0"
- name="browser"
- top="0"
- width="540" />
- <button
- follows="bottom|left"
- height="20"
- label="Open in My Web Browser"
- layout="topleft"
- left_delta="0"
- name="open_browser"
- top_pad="5"
- width="185">
- <button.commit_callback
- function="MediaBrowser.OpenWebBrowser" />
- </button>
- <check_box
- control_name="UseExternalBrowser"
- follows="bottom|left"
- height="20"
- label="Always open in my web browser"
- layout="topleft"
- left_pad="5"
- name="open_always"
- top_delta="0"
- width="200" />
- <button
- follows="bottom|right"
- height="20"
- label="Close"
- layout="topleft"
- left_pad="80"
- name="close"
- top_delta="0"
- width="70">
- <button.commit_callback
- function="MediaBrowser.Close" />
- </button>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index 74ac885202..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- bg_opaque_image="Window_Foreground"
- bg_alpha_image="Window_Background"
- bg_alpha_image_overlay="DkGray_66"
- legacy_header_height="18"
- can_minimize="true"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="false"
- can_dock="true"
- bevel_style="in"
- height="300"
- min_width="235"
- layout="topleft"
- name="nearby_chat"
- save_rect="true"
- title="NEARBY CHAT"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true"
- width="320">
- <check_box
- bottom_delta="36"
- control_name="TranslateChat"
- enabled="true"
- height="16"
- label="Translate chat (powered by Google)"
- layout="topleft"
- left="5"
- name="translate_chat_checkbox"
- width="230" />
- <chat_history
- parse_urls="true"
- bg_readonly_color="ChatHistoryBgColor"
- bg_writeable_color="ChatHistoryBgColor"
- follows="all"
- left="5"
- top_delta="17"
- layout="topleft"
- height="260"
- name="chat_history"
- parse_highlights="true"
- text_color="ChatHistoryTextColor"
- text_readonly_color="ChatHistoryTextColor"
- right_widget_pad="5"
- left_widget_pad="0"
- width="315" />
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml b/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
deleted file mode 100644
index 83b1260620..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<floater
- can_close="true"
- can_resize="true"
- min_width="333"
- min_height="440"
- save_rect="true"
- save_visibility="true"
- >
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_web_content.xml b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
deleted file mode 100644
index 1d9a967d5a..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_web_content.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="775"
- layout="topleft"
- min_height="400"
- min_width="500"
- name="floater_web_content"
- save_rect="true"
- auto_tile="true"
- title=""
- initial_mime_type="text/html"
- width="780">
- <layout_stack
- bottom="775"
- follows="left|right|top|bottom"
- layout="topleft"
- left="5"
- animate="false"
- name="stack1"
- orientation="vertical"
- top="20"
- width="770">
- <layout_panel
- auto_resize="false"
- default_tab_group="1"
- height="22"
- layout="topleft"
- left="0"
- min_height="20"
- name="nav_controls"
- top="400"
- user_resize="false"
- width="770">
- <button
- image_overlay="Arrow_Left_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- hover_glow_amount="0.15"
- tool_tip="Navigate back"
- follows="left|top"
- height="22"
- layout="topleft"
- left="1"
- name="back"
- top="0"
- width="22">
- <button.commit_callback
- function="WebContent.Back" />
- </button>
- <button
- image_overlay="Arrow_Right_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Navigate forward"
- follows="left|top"
- height="22"
- layout="topleft"
- left="27"
- name="forward"
- top_delta="0"
- width="22">
- <button.commit_callback
- function="WebContent.Forward" />
- </button>
- <button
- image_overlay="Stop_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Stop navigation"
- enabled="true"
- follows="left|top"
- height="22"
- layout="topleft"
- left="51"
- name="stop"
- top_delta="0"
- width="22">
- <button.commit_callback
- function="WebContent.Stop" />
- </button>
- <button
- image_overlay="Refresh_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Reload page"
- follows="left|top"
- height="22"
- layout="topleft"
- left="51"
- name="reload"
- top_delta="0"
- width="22">
- <button.commit_callback
- function="WebContent.Reload" />
- </button>
- <combo_box
- allow_text_entry="true"
- follows="left|top|right"
- tab_group="1"
- height="22"
- layout="topleft"
- left_pad="4"
- max_chars="1024"
- name="address"
- combo_editor.select_on_focus="true"
- tool_tip="Enter URL here"
- top_delta="0"
- width="672">
- <combo_box.commit_callback
- function="WebContent.EnterAddress" />
- </combo_box>
- <icon
- name="media_secure_lock_flag"
- height="16"
- follows="top|right"
- image_name="Lock2"
- layout="topleft"
- left_delta="620"
- top_delta="2"
- visible="false"
- tool_tip="Secured Browsing"
- width="16" />
- <button
- image_overlay="ExternalBrowser_Off"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- tool_tip="Open current URL in your desktop browser"
- follows="right|top"
- enabled="true"
- height="22"
- layout="topleft"
- name="popexternal"
- right="770"
- top_delta="-2"
- width="22">
- <button.commit_callback
- function="WebContent.PopExternal" />
- </button>
- </layout_panel>
- <layout_panel
- height="40"
- layout="topleft"
- left_delta="0"
- name="external_controls"
- top_delta="0"
- user_resize="false"
- auto_resize="true"
- width="585">
- <web_browser
- bottom="-2"
- follows="all"
- layout="topleft"
- left="0"
- name="webbrowser"
- top="0"/>
- </layout_panel>
- <layout_panel name="status_bar"
- height="23"
- auto_resize="false"
- user_resize="false">
- <text
- type="string"
- length="200"
- follows="bottom|left"
- height="20"
- layout="topleft"
- left_delta="0"
- name="statusbartext"
- parse_urls="false"
- text_color="0.4 0.4 0.4 1"
- top_pad="3"
- width="495"/>
- <progress_bar
- color_bar="0.3 1.0 0.3 1"
- follows="bottom|right"
- height="16"
- top_delta="-1"
- left_pad="24"
- layout="topleft"
- name="statusbarprogress"
- width="64"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml b/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
deleted file mode 100644
index 853d5f8735..0000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="164"
- layout="topleft"
- name="inspect_avatar"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="245">
- <!-- Allowed fields include:
- [BORN_ON] ("12/3/2008")
- [SL_PROFILE] (Second Life profile),
- [RW_PROFILE] (real world profile),
- [ACCTTYPE] ("Resident"),
- [PAYMENTINFO] ("Payment Info on File"),
- [AGE] ("1 year 2 months")
- -->
- <string
- name="Subtitle">
-[AGE]
- </string>
- <string
- name="Details">
-[SL_PROFILE]
- </string>
- <text
- follows="top|left"
- font="SansSerif"
- height="20"
- left="8"
- name="user_name_small"
- top="7"
- text_color="White"
- use_ellipses="true"
- word_wrap="true"
- visible="false"
- value="Grumpity ProductEngine with a long name"
- width="185" />
- <text
- follows="top|left"
- font="SansSerifBigLarge"
- height="21"
- left="8"
- name="user_name"
- top="10"
- text_color="White"
- use_ellipses="true"
- value="Grumpity ProductEngine"
- width="190" />
- <text
- follows="top|left"
- height="16"
- left="8"
- name="user_slid"
- font="SansSerifSmallBold"
- text_color="EmphasisColor"
- value="james.linden"
- width="185"
- use_ellipses="true" />
- <text
- follows="top|left"
- height="16"
- left="8"
- name="user_subtitle"
- font="SansSerifSmall"
- text_color="White"
- top_pad="0"
- value="11 Months, 3 days old"
- width="175"
- use_ellipses="true" />
- <text
- follows="left|top|right"
- height="35"
- left="8"
- name="user_details"
- right="-10"
- word_wrap="true"
- top_pad="4"
- use_ellipses="true"
- width="220">This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider
- follows="top|left"
- height="23"
- increment="0.01"
- left="1"
- max_val="0.95"
- min_val="0.05"
- name="volume_slider"
- show_text="false"
- tool_tip="Voice volume"
- top_pad="0"
- value="0.5"
- width="200" />
- <button
- follows="top|left"
- height="16"
- image_disabled="Audio_Off"
- image_disabled_selected="AudioMute_Off"
- image_hover_selected="AudioMute_Over"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
- left_pad="0"
- top_delta="4"
- name="mute_btn"
- width="16" />
- <avatar_icon
- follows="top|left"
- height="38"
- right="-10"
- bevel_style="in"
- border_style="line"
- mouse_opaque="true"
- name="avatar_icon"
- top="10"
- width="38" />
-<!-- Overlapping buttons for default actions
- llinspectavatar.cpp makes visible the most likely default action
--->
- <button
- follows="top|left"
- height="20"
- label="Add Friend"
- left="8"
- top="135"
- name="add_friend_btn"
- width="90" />
- <button
- follows="top|left"
- height="20"
- label="IM"
- left_delta="0"
- top_delta="0"
- name="im_btn"
- width="80"
- commit_callback.function="InspectAvatar.IM"/>
- <button
- follows="top|left"
- height="20"
- label="Profile"
- layout="topleft"
- name="view_profile_btn"
- left_delta="96"
- top_delta="0"
- tab_stop="false"
- width="80" />
- <!-- gear buttons here -->
- <menu_button
- follows="top|left"
- height="20"
- layout="topleft"
- image_overlay="OptionsMenu_Off"
- menu_filename="menu_inspect_avatar_gear.xml"
- name="gear_btn"
- right="-5"
- top_delta="0"
- width="35" />
- <menu_button
- follows="top|left"
- height="20"
- image_overlay="OptionsMenu_Off"
- menu_filename="menu_inspect_self_gear.xml"
- name="gear_self_btn"
- right="-5"
- top_delta="0"
- width="35" />
- <panel
- follows="top|left"
- top="164"
- left="0"
- height="60"
- width="228"
- visible="false"
- background_visible="true"
- name="moderator_panel"
- background_opaque="true"
- bg_opaque_color="MouseGray">
- <button
- name="disable_voice"
- label="Disable Voice"
- top="20"
- width="95"
- height="20"
- left="10"
- commit_callback.function="InspectAvatar.DisableVoice"/>
- <button
- name="enable_voice"
- label="Enable Voice"
- top="20"
- width="95"
- height="20"
- left="10"
- visible="false"
- commit_callback.function="InspectAvatar.EnableVoice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/inspect_object.xml b/indra/newview/skins/minimal/xui/en/inspect_object.xml
deleted file mode 100644
index f424069ec6..0000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_object.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="150"
- layout="topleft"
- name="inspect_object"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="228">
- <string name="Creator">By [CREATOR]</string>
- <string name="CreatorAndOwner">
-By [CREATOR]
-Owner [OWNER]
- </string>
- <string name="Price">L$[AMOUNT]</string>
- <string name="PriceFree">Free!</string>
- <string name="Touch">Touch</string>
- <string name="Sit">Sit</string>
- <text
- parse_urls="false"
- follows="all"
- font="SansSerifLarge"
- height="30"
- left="8"
- name="object_name"
- text_color="White"
- top="6"
- use_ellipses="true"
- word_wrap="true"
- width="220" />
- <text
- follows="all"
- height="50"
- left="8"
- name="object_creator"
- top_pad="6"
- use_ellipses="true"
- width="220">
- by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text
- follows="all"
- font="SansSerifSmall"
- font.style="BOLD"
- height="14"
- halign="right"
- right="-5"
- name="price_text"
- text_color="white"
- top="60"
- font_shadow="none"
- width="60">
-L$30,000
- </text>
- <text
- clip_partial="true"
- follows="all"
- font="SansSerifSmall"
- height="25"
- left="8"
- name="object_description"
- top="76"
- use_ellipses="true"
- width="220"
- word_wrap="true">
- </text>
- <!-- Overlapping buttons for all default actions. Show "Buy" if
- for sale, "Sit" if can sit, etc. -->
- <icon
- name="secure_browsing"
- image_name="Lock"
- left="0"
- visible="false"
- width="18"
- height="18"
- top="103"
- tool_tip="Secure Browsing"
- follows="left|top" />
- <text
- follows="all"
- font="SansSerifSmall"
- height="13"
- name="object_media_url"
- width="207"
- left_pad="2"
- top_delta="0"
- max_length = "50"
- use_ellipses="true">
- http://www.superdupertest.com
-</text>
- <button
- follows="top|left"
- height="20"
- label="Take Copy"
- left_delta="0"
- name="take_free_copy_btn"
- top_delta="0"
- width="80" />
- <button
- follows="top|left"
- height="20"
- label="Touch"
- left_delta="0"
- name="touch_btn"
- top_delta="0"
- width="80" />
- <button
- follows="top|left"
- height="20"
- label="Sit"
- left_delta="0"
- name="sit_btn"
- top_delta="0"
- width="80" />
- <button
- follows="top|left"
- height="20"
- label="Open"
- left_delta="0"
- name="open_btn"
- top_delta="0"
- width="80" />
-
- <!-- non-overlapping buttons here -->
- <menu_button
- follows="top|left"
- height="20"
- image_overlay="OptionsMenu_Off"
- menu_filename="menu_inspect_object_gear.xml"
- name="gear_btn"
- right="-5"
- top_delta="0"
- width="35" />
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
deleted file mode 100644
index 0ce6cbc984..0000000000
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="left|right|top|bottom"
- height="768"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- tab_stop="false"
- name="main_view"
- width="1024">
- <panel top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="login_panel_holder"
- width="1024"/>
-
- <layout_stack border_size="0"
- follows="all"
- mouse_opaque="false"
- height="768"
- name="menu_stack"
- orientation="vertical"
- top="0">
- <layout_panel auto_resize="false"
- height="30"
- mouse_opaque="false"
- name="nav_bar_container"
- tab_stop="false"
- min_height="0"
- width="1024"
- user_resize="false"
- visible="true">
- </layout_panel>
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- mouse_opaque="false"
- tab_stop="false"
- name="hud"
- width="1024">
- <panel auto_resize="false"
- follows="all"
- height="500"
- top="0"
- layout="topleft"
- mouse_opaque="false"
- tab_stop="false"
- name="non_side_tray_view"
- user_resize="false"
- width="1024">
-
- <layout_stack border_size="0"
- bottom="500"
- follows="all"
- height="500"
- left="0"
- top="0"
- mouse_opaque="false"
- name="world_stack"
- open_time_constant="0.03"
- close_time_constant="0.03"
- orientation="vertical">
- <layout_panel auto_resize="true"
- follows="all"
- height="500"
- layout="topleft"
- tab_stop="false"
- mouse_opaque="false"
- user_resize="false"
- name="hud container"
- width="500">
- <view top="0"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="floater_snap_region"
- width="500"/>
- <panel follows="left|top"
- height="0"
- left="0"
- mouse_opaque="false"
- name="topinfo_bar_container"
- tab_stop="false"
- top="0"
- visible="false"
- width="1024"/>
- <panel bottom="500"
- follows="left|right|bottom"
- height="25"
- left="0"
- mouse_opaque="false"
- tab_stop="false"
- name="stand_stop_flying_container"
- visible="false"
- width="500"/>
-
- <panel follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="floater_view_holder"
- tab_group="-1"
- tab_stop="false"
- top="0"
- width="500">
- <floater_view follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="Floater View"
- tab_group="-1"
- tab_stop="false"
- top="0"
- width="500"/>
- </panel>
- <panel bottom="500"
- follows="all"
- height="500"
- left="0"
- mouse_opaque="false"
- name="world_view_rect"
- top="0"
- width="500"/>
- </layout_panel>
- <layout_panel auto_resize="false"
- min_height="33"
- height="33"
- mouse_opaque="false"
- name="bottom_tray_container"
- visible="false"/>
- <layout_panel auto_resize="false"
- height="215"
- mouse_opaque="false"
- user_resize="false"
- name="avatar_picker_and_destination_guide_container"
- visible="false">
- <panel top="0"
- height="215"
- left="0"
- background_visible="true"
- width="500"
- follows="all">
- <web_browser
- top="0"
- height="200"
- follows="all"
- name="destination_guide_contents"
- trusted_content="true"
- visible="false"/>
- <web_browser
- top="0"
- height="200"
- follows="all"
- name="avatar_picker_contents"
- visible="false"
- trusted_content="true"/>
- <button
- name="close"
- width="22"
- height="23"
- right="-10"
- top="2"
- follows="top|right"
- chrome="true"
- tab_stop="false"
- image_unselected="bottomtray_close_off"
- image_selected="bottomtray_close_press"
- />
- </panel>
- </layout_panel>
- </layout_stack>
- </panel>
- <debug_view follows="all"
- left="0"
- top="0"
- mouse_opaque="false"
- height="500"
- name="DebugView"
- width="1024"/>
- </layout_panel>
- </layout_stack>
- <panel mouse_opaque="false"
- follows="right|top"
- name="status_bar_container"
- tab_stop="false"
- height="30"
- left="-160"
- top="0"
- width="160"
- visible="false"/>
- <panel follows="top|bottom"
- height="500"
- mouse_opaque="false"
- tab_stop="false"
- name="hidden_side_tray"
- visible="false"
- width="333">
- <panel
- name="side_tray_container"
- width="333"
- height="500"/>
- </panel>
-
- <panel top="0"
- follows="all"
- mouse_opaque="false"
- left="0"
- name="snapshot_floater_view_holder"
- width="1024"
- height="798">
- <snapshot_floater_view enabled="false"
- follows="all"
- height="768"
- left="0"
- mouse_opaque="false"
- name="Snapshot Floater View"
- tab_stop="false"
- top="0"
- visible="false"
- width="1024"/>
- </panel>
- <panel top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="popup_holder"
- class="popup_holder"
- width="1024">
- <icon follows="right|bottom"
- image_name="Resize_Corner"
- right="-1"
- name="resize_corner"
- width="11"
- bottom="-1"
- height="11" />
- </panel>
- <view top="0"
- left="0"
- width="1024"
- height="768"
- name="hint_holder"
- mouse_opaque="false"
- follows="all"/>
- <panel top="0"
- follows="all"
- height="768"
- mouse_opaque="true"
- name="progress_view"
- filename="panel_progress.xml"
- class="progress_view"
- width="1024"
- visible="false"/>
- <menu_holder top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="Menu Holder"
- width="1024"/>
- <tooltip_view top="0"
- follows="all"
- height="768"
- mouse_opaque="false"
- name="tooltip view"
- tab_group="-2"
- width="1024"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
deleted file mode 100644
index 80cf365c46..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu
- layout="topleft"
- name="Avatar Pie">
- <menu_item_call
- label="View Profile"
- name="Profile...">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="hit object" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Add Friend"
- name="Add Friend">
- <menu_item_call.on_click
- function="Avatar.AddFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableAddFriend" />
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="Send IM...">
- <menu_item_call.on_click
- function="Avatar.SendIM" />
- </menu_item_call>
- <menu_item_call
- label="Call"
- name="Call">
- <menu_item_call.on_click
- function="Avatar.Call" />
- <menu_item_call.on_enable
- function="Avatar.EnableCall" />
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- enabled="false"
- label="Block"
- name="Avatar Mute">
- <menu_item_call.on_click
- function="Avatar.Mute" />
- <menu_item_call.on_enable
- function="Avatar.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="abuse">
- <menu_item_call.on_click
- function="Avatar.ReportAbuse" />
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="Freeze...">
- <menu_item_call.on_click
- function="Avatar.Freeze" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="Eject...">
- <menu_item_call.on_click
- function="Avatar.Eject" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="Debug...">
- <menu_item_call.on_click
- function="Avatar.Debug" />
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="Zoom In">
- <menu_item_call.on_click
- function="Tools.LookAtSelection"
- parameter="zoom" />
- </menu_item_call>
- <menu_item_separator />
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
deleted file mode 100644
index 542a7dc7dc..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Attachment Pie">
- <menu_item_call
- enabled="false"
- label="Touch"
- layout="topleft"
- name="Attachment Object Touch">
- <menu_item_call.on_click
- function="Object.Touch" />
- <menu_item_call.on_enable
- function="Object.EnableTouch"
- name="EnableTouch"/>
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Detach"
- layout="topleft"
- name="Detach">
- <menu_item_call.on_click
- function="Attachment.Detach" />
- <menu_item_call.on_enable
- function="Attachment.EnableDetach" />
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
deleted file mode 100644
index 2c81b5a778..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu
- layout="topleft"
- name="Avatar Pie">
- <menu_item_call
- label="View Profile"
- name="Profile...">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="hit object" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Add Friend"
- name="Add Friend">
- <menu_item_call.on_click
- function="Avatar.AddFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableAddFriend" />
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="Send IM...">
- <menu_item_call.on_click
- function="Avatar.SendIM" />
- </menu_item_call>
- <menu_item_call
- label="Call"
- name="Call">
- <menu_item_call.on_click
- function="Avatar.Call" />
- <menu_item_call.on_enable
- function="Avatar.EnableCall" />
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- enabled="false"
- label="Block"
- name="Avatar Mute">
- <menu_item_call.on_click
- function="Avatar.Mute" />
- <menu_item_call.on_enable
- function="Avatar.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="abuse">
- <menu_item_call.on_click
- function="Avatar.ReportAbuse" />
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="Freeze...">
- <menu_item_call.on_click
- function="Avatar.Freeze" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="Eject...">
- <menu_item_call.on_click
- function="Avatar.Eject" />
- <menu_item_call.on_visible
- function="Avatar.EnableFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="Debug...">
- <menu_item_call.on_click
- function="Avatar.Debug" />
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="Zoom In">
- <menu_item_call.on_click
- function="Tools.LookAtSelection"
- parameter="zoom" />
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_edit.xml b/indra/newview/skins/minimal/xui/en/menu_edit.xml
deleted file mode 100644
index 747eb3fc6a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_edit.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu create_jump_keys="true"
- label="Edit"
- name="Edit"
- visible="false">
- <menu_item_call
- label="Undo"
- name="Undo"
- shortcut="control|Z">
- <menu_item_call.on_click
- function="Edit.Undo" />
- <menu_item_call.on_enable
- function="Edit.EnableUndo" />
- </menu_item_call>
- <menu_item_call
- label="Redo"
- name="Redo"
- shortcut="control|Y">
- <menu_item_call.on_click
- function="Edit.Redo" />
- <menu_item_call.on_enable
- function="Edit.EnableRedo" />
- </menu_item_call>
- <menu_item_separator/>
- <menu_item_call
- label="Cut"
- name="Cut"
- shortcut="control|X">
- <menu_item_call.on_click
- function="Edit.Cut" />
- <menu_item_call.on_enable
- function="Edit.EnableCut" />
- </menu_item_call>
- <menu_item_call
- label="Copy"
- name="Copy"
- shortcut="control|C">
- <menu_item_call.on_click
- function="Edit.Copy" />
- <menu_item_call.on_enable
- function="Edit.EnableCopy" />
- </menu_item_call>
- <menu_item_call
- label="Paste"
- name="Paste"
- shortcut="control|V">
- <menu_item_call.on_click
- function="Edit.Paste" />
- <menu_item_call.on_enable
- function="Edit.EnablePaste" />
- </menu_item_call>
- <menu_item_call
- label="Delete"
- name="Delete"
- allow_key_repeat="true"
- shortcut="Del">
- <menu_item_call.on_click
- function="Edit.Delete" />
- <menu_item_call.on_enable
- function="Edit.EnableDelete" />
- </menu_item_call>
- <menu_item_call
- label="Duplicate"
- name="Duplicate"
- shortcut="control|D">
- <menu_item_call.on_click
- function="Edit.Duplicate" />
- <menu_item_call.on_enable
- function="Edit.EnableDuplicate" />
- </menu_item_call>
- <menu_item_separator/>
- <menu_item_call
- label="Select All"
- name="Select All"
- shortcut="control|A">
- <menu_item_call.on_click
- function="Edit.SelectAll" />
- <menu_item_call.on_enable
- function="Edit.EnableSelectAll" />
- </menu_item_call>
- <menu_item_call
- label="Deselect"
- name="Deselect"
- shortcut="control|E">
- <menu_item_call.on_click
- function="Edit.Deselect" />
- <menu_item_call.on_enable
- function="Edit.EnableDeselect" />
- </menu_item_call>
-</menu> \ No newline at end of file
diff --git a/indra/newview/skins/minimal/xui/en/menu_favorites.xml b/indra/newview/skins/minimal/xui/en/menu_favorites.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_favorites.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml b/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
deleted file mode 100644
index a11e367d66..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu
- create_jump_keys="true"
- layout="topleft"
- mouse_opaque="false"
- visible="false"
- name="Gear Menu">
- <menu_item_call
- label="View Profile"
- enabled="true"
- name="view_profile">
- <menu_item_call.on_click
- function="InspectAvatar.ViewProfile"/>
- </menu_item_call>
- <menu_item_call
- label="Add Friend"
- name="add_friend">
- <menu_item_call.on_click
- function="InspectAvatar.AddFriend"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.Enable"/>
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="im">
- <menu_item_call.on_click
- function="InspectAvatar.IM"/>
- </menu_item_call>
- <menu_item_call
- label="Call"
- enabled="true"
- name="call">
- <menu_item_call.on_click
- function="InspectAvatar.Call"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.EnableCall"/>
- </menu_item_call>
- <menu_item_call
- label="Teleport"
- name="teleport">
- <menu_item_call.on_click
- function="InspectAvatar.Teleport"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.EnableTeleportOffer"/>
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- label="Block"
- name="block">
- <menu_item_call.on_click
- function="InspectAvatar.ToggleMute"/>
- <menu_item_call.on_visible
- function="InspectAvatar.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Unblock"
- name="unblock">
- <menu_item_call.on_click
- function="InspectAvatar.ToggleMute"/>
- <menu_item_call.on_visible
- function="InspectAvatar.EnableUnmute" />
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="report">
- <menu_item_call.on_click
- function="InspectAvatar.Report"/>
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="freeze">
- <menu_item_call.on_click
- function="InspectAvatar.Freeze"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFreeze"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="eject">
- <menu_item_call.on_click
- function="InspectAvatar.Eject"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleEject"/>
- </menu_item_call>
- <menu_item_call
- label="Kick"
- name="kick">
- <menu_item_call.on_click
- function="InspectAvatar.Kick"/>
- <menu_item_call.on_visible
- function="InspectAvatar.EnableGod"/>
- </menu_item_call>
- <menu_item_call
- label="CSR"
- name="csr">
- <menu_item_call.on_click
- function="InspectAvatar.CSR" />
- <menu_item_call.on_visible
- function="InspectAvatar.EnableGod" />
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="debug">
- <menu_item_call.on_click
- function="Avatar.Debug"/>
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Find On Map"
- name="find_on_map">
- <menu_item_call.on_click
- function="InspectAvatar.FindOnMap"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFindOnMap"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="zoom_in">
- <menu_item_call.on_click
- function="InspectAvatar.ZoomIn"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleZoomIn"/>
- </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
deleted file mode 100644
index 8ec360a604..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu
- create_jump_keys="true"
- layout="topleft"
- mouse_opaque="false"
- visible="false"
- name="Gear Menu">
- <menu_item_call
- label="Touch"
- layout="topleft"
- enabled="true"
- name="touch">
- <menu_item_call.on_click
- function="InspectObject.Touch"/>
- <menu_item_call.on_visible
- function="Object.EnableTouch" />
- </menu_item_call>
- <menu_item_call
- label="Sit"
- layout="topleft"
- name="sit">
- <menu_item_call.on_click
- function="InspectObject.Sit"/>
- <menu_item_call.on_visible
- function="Object.EnableSit"/>
- </menu_item_call>
- <menu_item_call
- label="Report"
- layout="topleft"
- name="report">
- <menu_item_call.on_click
- function="Object.ReportAbuse" />
- </menu_item_call>
- <menu_item_call
- label="Block"
- layout="topleft"
- name="block">
- <menu_item_call.on_click
- function="Object.Mute" />
- <menu_item_call.on_visible
- function="Object.EnableMute" />
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- layout="topleft"
- name="zoom_in">
- <menu_item_call.on_click
- function="InspectObject.ZoomIn" />
- </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
deleted file mode 100644
index ae8b640d26..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
- layout="topleft"
- name="Self Pie">
- <menu_item_call
- label="Sit Down"
- layout="topleft"
- name="Sit Down Here">
- <menu_item_call.on_click
- function="Self.SitDown"
- parameter="" />
- <menu_item_call.on_enable
- function="Self.EnableSitDown" />
- </menu_item_call>
- <menu_item_call
- label="Stand Up"
- layout="topleft"
- name="Stand Up">
- <menu_item_call.on_click
- function="Self.StandUp"
- parameter="" />
- <menu_item_call.on_enable
- function="Self.EnableStandUp" />
- </menu_item_call>
- <menu_item_call
- label="My Friends"
- layout="topleft"
- name="Friends...">
- <menu_item_call.on_click
- function="SideTray.PanelPeopleTab"
- parameter="friends_panel" />
- </menu_item_call>
- <menu_item_call
- label="My Profile"
- layout="topleft"
- name="Profile...">
- <menu_item_call.on_click
- function="ShowAgentProfile"
- parameter="agent" />
- </menu_item_call>
- <menu_item_call
- label="Debug Textures"
- name="Debug...">
- <menu_item_call.on_click
- function="Avatar.Debug" />
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_inventory.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_land.xml b/indra/newview/skins/minimal/xui/en/menu_land.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_land.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_landmark.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_login.xml b/indra/newview/skins/minimal/xui/en/menu_login.xml
deleted file mode 100644
index 62dbce3f56..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_login.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu_bar/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml b/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_navbar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_object.xml b/indra/newview/skins/minimal/xui/en/menu_object.xml
deleted file mode 100644
index 888ce42cf1..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Object Pie">
- <menu_item_call
- enabled="false"
- label="Sit Here"
- name="Object Sit">
- <menu_item_call.on_click
- function="Object.SitOrStand" />
- <menu_item_call.on_enable
- function="Object.EnableSit" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Stand Up"
- name="Object Stand Up">
- <menu_item_call.on_click
- function="Object.SitOrStand" />
- <menu_item_call.on_enable
- function="Object.EnableStandUp" />
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="Zoom In">
- <menu_item_call.on_click
- function="Object.ZoomIn" />
- </menu_item_call>
- <menu_item_call
- enabled="false"
- label="Touch"
- name="Object Touch">
- <menu_item_call.on_click
- function="Object.Touch" />
- <menu_item_call.on_enable
- function="Object.EnableTouch"
- name="EnableTouch"
- parameter="Touch" />
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml b/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml b/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
deleted file mode 100644
index 1840ebd491..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Avatar Context Menu">
- <menu_item_call
- label="View Profile"
- layout="topleft"
- name="View Profile">
- <menu_item_call.on_click
- function="Avatar.Profile" />
- </menu_item_call>
- <menu_item_call
- label="Add Friend"
- layout="topleft"
- name="Add Friend">
- <menu_item_call.on_click
- function="Avatar.AddFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_add" />
- </menu_item_call>
- <menu_item_call
- label="Remove Friend"
- layout="topleft"
- name="Remove Friend">
- <menu_item_call.on_click
- function="Avatar.RemoveFriend" />
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_delete" />
- </menu_item_call>
- <menu_item_call
- label="IM"
- layout="topleft"
- name="IM">
- <menu_item_call.on_click
- function="Avatar.IM" />
- </menu_item_call>
- <menu_item_call
- label="Call"
- layout="topleft"
- name="Call">
- <menu_item_call.on_click
- function="Avatar.Call" />
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_call" />
- </menu_item_call>
- <menu_item_check
- label="Block/Unblock"
- layout="topleft"
- name="Block/Unblock">
- <menu_item_check.on_click
- function="Avatar.BlockUnblock" />
- <menu_item_check.on_check
- function="Avatar.CheckItem"
- parameter="is_blocked" />
- <menu_item_check.on_enable
- function="Avatar.EnableItem"
- parameter="can_block" />
- </menu_item_check>
- <menu_item_call
- label="Offer Teleport"
- name="teleport">
- <menu_item_call.on_click
- function="Avatar.OfferTeleport"/>
- <menu_item_call.on_enable
- function="Avatar.EnableItem"
- parameter="can_offer_teleport"/>
- </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks.xml b/indra/newview/skins/minimal/xui/en/menu_picks.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_place.xml b/indra/newview/skins/minimal/xui/en/menu_place.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_slurl.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml b/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml b/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_group.xml b/indra/newview/skins/minimal/xui/en/menu_url_group.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_http.xml b/indra/newview/skins/minimal/xui/en/menu_url_http.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_http.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_map.xml b/indra/newview/skins/minimal/xui/en/menu_url_map.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_viewer.xml b/indra/newview/skins/minimal/xui/en/menu_viewer.xml
deleted file mode 100644
index cd83ea4e99..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_viewer.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu_bar
- bg_visible="false"
- follows="left|top|right"
- name="Main Menu">
- <menu
- create_jump_keys="true"
- label="Help"
- name="Help"
- tear_off="true">
- <menu_item_call
- label="[SECOND_LIFE] Help"
- name="Second Life Help"
- shortcut="F1">
- <menu_item_call.on_click
- function="ShowHelp"
- parameter="f1_help" />
- </menu_item_call>
- </menu>
- <menu
- create_jump_keys="true"
- label="Advanced"
- name="Advanced"
- tear_off="true"
- visible="false">
- <menu
- create_jump_keys="true"
- label="Shortcuts"
- name="Shortcuts"
- tear_off="true"
- visible="false">
- <menu_item_check
- label="Fly"
- name="Fly"
- shortcut="Home">
- <menu_item_check.on_check
- function="Agent.getFlying" />
- <menu_item_check.on_click
- function="Agent.toggleFlying" />
- <menu_item_check.on_enable
- function="Agent.enableFlying" />
- </menu_item_check>
- <menu_item_call
- label="Close Window"
- name="Close Window"
- shortcut="control|W">
- <menu_item_call.on_click
- function="File.CloseWindow" />
- <menu_item_call.on_enable
- function="File.EnableCloseWindow" />
- </menu_item_call>
- <menu_item_call
- label="Close All Windows"
- name="Close All Windows"
- shortcut="control|shift|W">
- <menu_item_call.on_click
- function="File.CloseAllWindows" />
- <menu_item_call.on_enable
- function="File.EnableCloseAllWindows" />
- </menu_item_call>
-
- <menu_item_call
- label="Reset View"
- name="Reset View"
- shortcut="Esc">
- <menu_item_call.on_click
- function="View.ResetView" />
- </menu_item_call>
- </menu> <!--Shortcuts-->
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
deleted file mode 100644
index bdd3c3d4a4..0000000000
--- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" ?>
-<notification_visibility>
- <respond name="VoiceInviteGroup" response="Decline"/>
-
- <!-- group and voice are disabled features -->
- <hide tag="group"/>
-
- <!-- no spammy scripts -->
- <!-- <hide name="ScriptDialog"/> -->
-
- <!-- hints pertaining to UI we don't show -->
- <hide name="FirstBalanceIncrease"/>
- <hide name="FirstInventory"/>
- <hide name="HintSidePanel"/>
- <hide name="HintMove"/>
- <hide name="HintSpeak"/>
- <hide name="HintDisplayName"/>
- <hide name="HintInventory"/>
- <hide name="HintLindenDollar"/>
-
- <!-- spam from servers, such as "Autopilot cancelled" -->
- <hide name="SystemMessageTip"/>
-
- <!-- show everything else -->
- <show/>
-</notification_visibility>
-
diff --git a/indra/newview/skins/minimal/xui/en/notifications.xml b/indra/newview/skins/minimal/xui/en/notifications.xml
deleted file mode 100644
index 7b7cdb5fc6..0000000000
--- a/indra/newview/skins/minimal/xui/en/notifications.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" ?>
-<notifications>
- <notification
- icon="notify.tga"
- name="UserGiveItem"
- type="offer">
- [NAME_SLURL] is offering you [ITEM_SLURL]. Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
- <form name="form">
- <button
- index="4"
- name="Show"
- text="Keep Item"/>
- <button
- index="1"
- name="Discard"
- text="Reject Item"/>
- <button
- index="2"
- name="Mute"
- text="Block User"/>
- </form>
- </notification>
- <notification
- icon="notify.tga"
- name="ObjectGiveItem"
- type="offer">
- An object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; owned by [NAME_SLURL] is offering you &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
- <form name="form">
- <button
- index="0"
- name="Keep"
- text="Keep Item"/>
- <button
- index="1"
- name="Discard"
- text="Reject Item"/>
- <button
- index="2"
- name="Mute"
- text="Block Object"/>
- </form>
- </notification>
-
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
deleted file mode 100644
index 39d1a90850..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- follows="all"
- height="215"
- name="panel_im_control_panel"
- width="150">
- <layout_stack
- mouse_opaque="false"
- border_size="0"
- clip="false"
- follows="all"
- height="215"
- layout="topleft"
- left="3"
- name="vertical_stack"
- orientation="vertical"
- top="0"
- width="147">
- <layout_panel
- auto_resize="true"
- follows="top|left"
- height="130"
- layout="topleft"
- left="0"
- min_height="0"
- mouse_opaque="false"
- width="147"
- top="0"
- name="speakers_list_panel"
- user_resize="false">
- <avatar_list
- color="DkGray2"
- follows="all"
- height="130"
- ignore_online_status="true"
- layout="topleft"
- name="speakers_list"
- opaque="false"
- show_info_btn="true"
- show_profile_btn="false"
- show_speaking_indicator="false"
- width="147" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="130"
- name="call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="20"
- label="Call"
- name="call_btn"
- width="130"
- top="5" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="130"
- name="end_call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="20"
- label="Leave Call"
- name="end_call_btn"
- top="5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
deleted file mode 100644
index d722c54081..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,557 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- chrome="true"
- follows="left|bottom|right"
- height="33"
- layout="topleft"
- left="0"
- name="bottom_tray"
- focus_root="true"
- top="28"
- width="1310">
- <string
- name="DragIndicationImageName"
- value="Accordion_ArrowOpened_Off" />
- <string
- name="SpeakBtnToolTip"
- value="Turns microphone on/off" />
- <string
- name="VoiceControlBtnToolTip"
- value="Shows/hides voice control panel" />
- <layout_stack
- border_size="0"
- clip="false"
- follows="all"
- height="28"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="toolbar_stack"
- orientation="horizontal"
- top="0"
- width="1310">
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="2"
- width="2" />
- <layout_panel
- auto_resize="false"
- layout="topleft"
- max_width="320"
- min_width="214"
- height="28"
- mouse_opaque="false"
- name="chat_bar_layout_panel"
- user_resize="true"
- width="312" >
- <panel
- name="chat_bar"
- filename="panel_nearby_chat_bar.xml"
- left="0"
- height="28"
- width="306"
- top="0"
- mouse_opaque="false"
- follows="left|right"
- />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="35"
- mouse_opaque="false"
- name="speak_panel"
- top_delta="0"
- user_resize="false"
- width="85">
- <button
- follows="left|right"
- height="23"
- layout="topleft"
- label="Speak"
- left="0"
- name="speak_btn"
- tool_tip="Turn your microphone on and off"
- pad_right="30"
- halign="center"
- use_ellipses="true"
- tab_stop="true"
- is_toggle="true"
- image_selected="Speak_Btn_Selected_Press"
- image_unselected="Speak_Btn_Off"
- image_pressed="Speak_Btn_Selected_Press"
- image_pressed_selected="Speak_Btn_Selected_Press"
- top="5"
- width="85">
-
- <commit_callback
- function="ToggleSpeak"
- parameter="f1_help" />
- </button>
- </layout_panel>
-
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="20"
- mouse_opaque="false"
- name="speak_flyout_panel"
- top_delta="0"
- user_resize="false"
- width="26">
- <button
- follows="left|right"
- width="20"
- top="5"
- left="0"
- height="23"
- name="flyout_btn"
- label=""
- tab_stop="false"
- tool_tip="Change your sound preferences"
- is_toggle="true"
- image_disabled="ComboButton_UpOff"
- image_unselected="ComboButton_UpOff"
- image_selected="ComboButton_On"
- image_pressed="ComboButton_UpSelected"
- image_pressed_selected="ComboButton_Selected">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="sound_devices" />
- </button>
-
- </layout_panel>
-
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="gesture_panel"
- top_delta="0"
- user_resize="false"
- width="88">
- <gesture_combo_list
- follows="left|right"
- height="23"
- label="Gesture"
- layout="topleft"
- get_more="false"
- view_all="false"
- left="0"
- name="Gesture"
- tool_tip="Make your avatar do things"
- top="5"
- width="82">
- <combo_button
- pad_right="10"
- can_drag="false"
- use_ellipses="true" />
- <combo_list
- page_lines="17" />
- </gesture_combo_list>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="52"
- mouse_opaque="false"
- name="cam_panel"
- user_resize="false"
- width="86">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- is_toggle="true"
- label="View"
- layout="topleft"
- left="0"
- name="camera_btn"
- tool_tip="Control your camera angle"
- top="5"
- use_ellipses="true"
- width="80">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="camera" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_width="8"
- name="splitter_panel_1"
- user_resize="false"
- width="8">
- <icon
- follows="left|bottom"
- height="18"
- width="2"
- left="0"
- image_name="Button_Separator"
- name="separator"
- top="7"/>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="83"
- mouse_opaque="false"
- name="destinations_panel"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="Destinations"
- layout="topleft"
- left="0"
- name="destination_btn"
- tool_tip="Travel through Second Life"
- top="5"
- is_toggle="true"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="Destination.show" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="73"
- mouse_opaque="false"
- name="avatar_panel"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="My Avatar"
- layout="topleft"
- left="0"
- name="avatar_btn"
- top="5"
- is_toggle="true"
- tool_tip="Change your appearance"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="Avatar.show" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|right"
- height="28"
- layout="topleft"
- min_width="8"
- name="splitter_panel_2"
- user_resize="false"
- width="8">
- <icon
- follows="left|bottom"
- height="18"
- width="2"
- left="0"
- image_name="Button_Separator"
- name="separator"
- top="7"/>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="people_panel"
- top_delta="0"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="People"
- layout="topleft"
- left="0"
- name="show_people_button"
- tool_tip="Find people in Second Life"
- top="5"
- is_toggle="true"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="ShowSidetrayPanel"
- parameter="panel_people" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="profile_panel"
- top_delta="0"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="Profile"
- layout="topleft"
- left="0"
- name="show_profile_btn"
- tool_tip="View and edit your Profile"
- is_toggle="true"
- top="5"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="ToggleAgentProfile"
- parameter="agent"/>
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="65"
- mouse_opaque="false"
- name="howto_panel"
- top_delta="0"
- user_resize="false"
- width="106">
- <bottomtray_button
- can_drag="false"
- follows="left|right"
- height="23"
- image_pressed="PushButton_Press"
- image_pressed_selected="PushButton_Selected_Press"
- image_selected="PushButton_Selected_Press"
- label="How To"
- layout="topleft"
- left="0"
- name="show_help_btn"
- tool_tip="View Second Life help info"
- is_toggle="true"
- top="5"
- use_ellipses="true"
- width="100">
- <bottomtray_button.commit_callback
- function="ToggleHelp"
- parameter="f1_help" />
- </bottomtray_button>
- </layout_panel>
- <layout_panel
- follows="left|right"
- height="30"
- layout="topleft"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list_panel"
- top="0"
- user_resize="false"
- width="189">
- <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
-as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
- <chiclet_panel
- chiclet_padding="4"
- follows="left|right"
- height="24"
- layout="topleft"
- left="1"
- min_width="95"
- mouse_opaque="false"
- name="chiclet_list"
- top="7"
- width="189">
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Left_Over"
- image_hover_unselected="SegmentedBtn_Left_Over"
- image_overlay="Arrow_Small_Left"
- image_pressed="SegmentedBtn_Left_Press"
- image_pressed_selected="SegmentedBtn_Left_Press"
- image_selected="SegmentedBtn_Left_Off"
- image_unselected="SegmentedBtn_Left_Off"
- layout="topleft"
- name="chicklet_left_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- <button
- auto_resize="true"
- follows="right"
- height="29"
- image_hover_selected="SegmentedBtn_Right_Over"
- image_hover_unselected="SegmentedBtn_Right_Over"
- image_overlay="Arrow_Small_Right"
- image_pressed="SegmentedBtn_Right_Press"
- image_pressed_selected="SegmentedBtn_Right_Press"
- image_selected="SegmentedBtn_Right_Off"
- image_unselected="SegmentedBtn_Right_Off"
- layout="topleft"
- name="chicklet_right_scroll_button"
- tab_stop="false"
- top="-28"
- visible="false"
- width="7" />
- </chiclet_panel>
- </layout_panel>
- <layout_panel auto_resize="false"
- user_resize="false"
- width="4"
- min_width="4"/>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="im_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_im_well
- follows="right"
- height="28"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="im_well"
- top="0"
- width="35">
- <!--
-Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
-xml attribute Description
-image_unselected "Unlit" - there are no new messages
-image_selected "Unlit" + "Selected" - there are no new messages and the Well is open
-image_pressed "Lit" - there are new messages
-image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
- -->
- <button
- auto_resize="true"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Unread_IM"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread IM messages"
- tool_tip="Conversations"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="im_well_window" />
- </button>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="right"
- height="28"
- layout="topleft"
- min_height="28"
- min_width="37"
- name="notification_well_panel"
- top="0"
- user_resize="false"
- width="37">
- <chiclet_notification
- follows="right"
- height="23"
- layout="topleft"
- left="0"
- max_displayed_count="99"
- name="notification_well"
- top="5"
- width="35">
- <button
- auto_resize="true"
- bottom_pad="3"
- follows="right"
- halign="center"
- height="23"
- image_overlay="Notices_Unread"
- image_overlay_alignment="center"
- image_pressed="WellButton_Lit"
- image_pressed_selected="WellButton_Lit_Selected"
- image_selected="PushButton_Press"
- label_color="Black"
- left="0"
- name="Unread"
- tool_tip="Notifications"
- width="34">
- <init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="notification_well_window" />
- </button>
- </chiclet_notification>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- user_resize="false"
- min_width="4"
- name="DUMMY2"
- width="8" />
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
deleted file mode 100644
index abddc59296..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- follows="all"
- height="238"
- name="panel_im_control_panel"
- width="150">
- <layout_stack
- mouse_opaque="false"
- border_size="0"
- clip="false"
- follows="all"
- height="238"
- layout="topleft"
- left="5"
- name="vertical_stack"
- orientation="vertical"
- top="0"
- width="145">
- <layout_panel
- auto_resize="true"
- follows="top|left"
- height="100"
- layout="topleft"
- min_height="0"
- mouse_opaque="false"
- width="145"
- top="0"
- name="speakers_list_panel"
- user_resize="false">
- <avatar_list
- color="DkGray2"
- follows="all"
- height="100"
- ignore_online_status="true"
- layout="topleft"
- name="speakers_list"
- opaque="false"
- show_info_btn="true"
- show_profile_btn="false"
- show_speaking_indicator="false"
- width="145" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="28"
- layout="topleft"
- min_height="28"
- width="130"
- name="end_call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="23"
- label="Leave Call"
- name="end_call_btn"
- use_ellipses="true" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="28"
- layout="topleft"
- min_height="28"
- width="130"
- name="voice_ctrls_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="all"
- height="23"
- label="Open Voice Controls"
- name="voice_ctrls_btn"
- use_ellipses="true" />
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
deleted file mode 100644
index 2cb77bcdf3..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- height="300"
- name="panel_im_control_panel"
- width="150">
- <avatar_icon
- follows="left|top"
- height="105"
- left_delta="20"
- name="avatar_icon"
- top="-5"
- width="114"/>
- <layout_stack
- mouse_opaque="false"
- border_size="0"
- clip="false"
- follows="all"
- height="183"
- layout="topleft"
- left="5"
- name="button_stack"
- orientation="vertical"
- top_pad="5"
- width="145">
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="20"
- layout="topleft"
- left="2"
- min_height="20"
- width="140"
- name="view_profile_btn_panel"
- top="0"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Profile"
- name="view_profile_btn"
- top="0"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="add_friend_btn_panel"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Add Friend"
- name="add_friend_btn"
- top="5"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="teleport_btn_panel"
- user_resize="false">
- <button
- auto_resize="false"
- follows="left|top|right"
- height="23"
- label="Teleport"
- name="teleport_btn"
- tool_tip = "Offer to teleport this person"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="call_btn_panel"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Call"
- name="call_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="end_call_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="left|top|right"
- height="23"
- label="End Call"
- name="end_call_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="block_btn_panel"
- user_resize="false">
- <button
- follows="left|top|right"
- height="23"
- label="Block"
- name="block_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="25"
- width="140"
- name="unblock_btn_panel"
- user_resize="false"
- visible="false">
- <button
- follows="left|top|right"
- height="23"
- label="Unblock"
- name="unblock_btn"
- width="140" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="top|left|right"
- height="25"
- layout="topleft"
- min_height="54"
- width="140"
- name="volume_ctrl_panel"
- visible="false"
- user_resize="false">
- <slider
- follows="top|left"
- height="23"
- increment="0.01"
- left="0"
- max_val="0.95"
- min_val="0.05"
- name="volume_slider"
- show_text="false"
- tool_tip="Call Volume"
- top_pad="32"
- value="0.5"
- width="125" />
- <button
- follows="top|left"
- height="16"
- image_disabled="Audio_Off"
- image_disabled_selected="AudioMute_Off"
- image_hover_selected="AudioMute_Over"
- image_selected="AudioMute_Off"
- image_unselected="Audio_Off"
- is_toggle="true"
- left_pad="0"
- top_delta="4"
- name="mute_btn"
- width="16" />
- </layout_panel>
- <layout_panel
- mouse_opaque="false"
- auto_resize="true"
- follows="top|left"
- height="0"
- layout="topleft"
- min_height="0"
- width="140"
- name="spacer"
- user_resize="false" />
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_login.xml b/indra/newview/skins/minimal/xui/en/panel_login.xml
deleted file mode 100644
index 40d2df78e1..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_login.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
-follows="all"
-height="600"
-layout="topleft"
-left="0"
-name="panel_login"
-focus_root="true"
-top="600"
- width="996">
-<panel.string
- name="create_account_url">
- http://join.secondlife.com/
-</panel.string>
-<string name="reg_in_client_url" translate="false">
- http://secondlife.eniac15.lindenlab.com/reg-in-client/
-</string>
-<panel.string
- name="forgot_password_url">
- http://secondlife.com/account/request.php
-</panel.string>
-<!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->
-<web_browser
- tab_stop="false"
-trusted_content="true"
-bg_opaque_color="Black"
-border_visible="false"
-bottom="600"
-follows="all"
-hide_loading="true"
-left="0"
-name="login_html"
-start_url=""
-top="0"
-height="600"
- width="980" />
-<layout_stack
-follows="left|bottom|right"
-name="login_widgets"
-layout="topleft"
-orientation="horizontal"
-top="519"
-width="996"
-height="80">
-<layout_panel
-auto_resize="false"
-follows="left|bottom"
-name="login"
-layout="topleft"
-width="570"
-min_width="570"
-user_resize="false"
-height="80">
-<text
-follows="left|bottom"
-font="SansSerifSmall"
-height="16"
-name="username_text"
-top="20"
-left="20"
-width="150">
-Username:
-</text>
- <combo_box
- allow_text_entry="true"
- follows="left|bottom"
- height="22"
- left_delta="0"
- max_chars="128"
- combo_editor.prevalidate_callback="ascii"
- tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
- top_pad="0"
- name="username_combo"
- width="178">
- <combo_box.combo_button
- visible ="false"/>
- <combo_box.drop_down_button
- visible ="false"/>
- </combo_box>
-<text
-follows="left|bottom"
-font="SansSerifSmall"
-height="15"
-left_pad="-19"
-name="password_text"
-top="20"
- width="150">
- Password:
-</text>
-<line_editor
-follows="left|bottom"
- height="22"
-left_delta="0"
- max_length_bytes="16"
-name="password_edit"
-is_password="true"
-select_on_focus="true"
- top_pad="0"
- width="135" />
- <check_box
-control_name="RememberPassword"
-follows="left|bottom"
-font="SansSerifSmall"
-height="16"
-label="Remember password"
- top_pad="3"
- name="remember_check"
- width="135" />
-<button
- follows="left|bottom"
- height="23"
- image_unselected="PushButton_On"
- image_selected="PushButton_On_Selected"
- label="Log In"
- label_color="White"
- layout="topleft"
- left_pad="10"
- name="connect_btn"
- top="35"
- width="90" />
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="15"
- left_pad="10"
- name="mode_selection_text"
- top="20"
- width="130">
- Mode:
- </text>
- <combo_box
- follows="left|bottom"
- height="23"
- max_chars="128"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- top_pad="0"
- name="mode_combo"
- width="110">
- <combo_box.item
- label="Basic"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced"
- name="Advanced"
- value="" />
- </combo_box>
-</layout_panel>
-<layout_panel
-tab_stop="false"
-follows="right|bottom"
-name="links"
-width="205"
-min_width="205"
-user_resize="false"
-height="80">
- <text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-top="12"
-right="-10"
-name="create_new_account_text"
- width="200">
- Sign up
- </text>
-<text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-name="forgot_password_text"
-top_pad="12"
-right="-10"
- width="200">
- Forgot your username or password?
-</text>
-<text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-name="login_help"
-top_pad="2"
-right="-10"
- width="200">
- Need help logging in? </text>
-<!-- <text
- follows="right|bottom"
- font="SansSerifSmall"
- halign="right"
- height="28"
- top_pad="2"
- name="channel_text"
- width="180"
- word_wrap="true">
- [VERSION]
- </text>-->
- </layout_panel>
-</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
deleted file mode 100644
index 73a8564274..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_color="MouseGray"
- follows="left|top|right"
- height="26"
- layout="topleft"
- name="navigation_bar"
- chrome="true"
- width="600">
- <icon
- follows="all"
- image_name="NavBar_BG_NoFav_Bevel"
- mouse_opaque="false"
- name="bg_icon_no_fav_bevel"
- scale_image="true"
- visible="true"
- left="0"
- top="0"
- height="26"
- width="600"/>
- <panel
- background_visible="false"
- follows="left|top|right"
- top="3"
- height="26"
- layout="topleft"
- name="navigation_panel"
- width="600">
- <pull_button
-follows="left|top"
-direction="down"
-height="23"
-image_overlay="Arrow_Left_Off"
-image_bottom_pad="1"
-layout="topleft"
-left="10"
-name="back_btn"
-tool_tip="Go back to previous location"
-top="2"
-width="31" />
- <pull_button
- follows="left|top"
- direction="down"
- height="23"
- image_overlay="Arrow_Right_Off"
- image_bottom_pad="1"
- layout="topleft"
- left_pad="0"
- name="forward_btn"
- tool_tip="Go forward one location"
- top_delta="0"
- width="31" />
- <location_input
- follows="left|right|top"
- halign="right"
- height="23"
- label="Location"
- layout="topleft"
- left_pad="7"
- max_chars="254"
- mouse_opaque="false"
- name="location_combo"
- top_delta="0"
- width="325">
- </location_input>
- <icon follows="right"
- height="20"
- width="2"
- left_pad="2"
- image_name="Button_Separator"
- name="separator"
- top="2"/>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml
deleted file mode 100644
index 4739f86e95..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_people.xml
+++ /dev/null
@@ -1,571 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Side tray panel -->
-<panel
- default_tab_group="1"
- follows="all"
- height="449"
- label="People"
- layout="topleft"
- left="0"
- min_height="350"
- name="people_panel"
- top="0"
- width="333">
- <string
- name="no_recent_people"
- value="No recent people. Looking for people to hang out with? Try the Destinations button below." />
- <string
- name="no_filtered_recent_people"
- value="No recent people with that name." />
- <string
- name="no_one_near"
- value="No one nearby. Looking for people to hang out with? Try the Destinations button below." />
- <string
- name="no_one_filtered_near"
- value="No one nearby with that name." />
- <string
- name="no_friends_online"
- value="No friends online" />
- <string
- name="no_friends"
- value="No friends" />
- <string
- name="no_friends_msg">
- Right-click on a Resident to add them as a friend.
-Looking for people to hang out with? Try the Destinations button below.
- </string>
- <string
- name="no_filtered_friends_msg">
- Didn't find what you're looking for? Try the Destinations button below..
- </string>
- <string
- name="people_filter_label"
- value="Filter People" />
- <string
- name="groups_filter_label"
- value="Filter Groups" />
- <!--
- *WORKAROUND: for group_list.no_items_msg & group_list.no_filtered_items_msg attributes.
- They are not defined as translatable in VLT. See EXT-5931
- -->
- <string
- name="no_filtered_groups_msg"
- value="Didn't find what you're looking for? Try [secondlife:///app/search/groups/[SEARCH_TERM] Search]." />
- <string
- name="no_groups_msg"
- value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." />
- <string
- name="MiniMapToolTipMsg"
- value="[REGION](Double-click to open Map, shift-drag to pan)"/>
- <string
- name="AltMiniMapToolTipMsg"
- value="[REGION](Double-click to teleport, shift-drag to pan)"/>
- <filter_editor
- follows="left|top|right"
- height="23"
- layout="topleft"
- left="10"
- label="Filter"
- max_length="300"
- name="filter_input"
- text_color="Black"
- text_pad_left="10"
- top="3"
- width="303" />
- <tab_container
- follows="all"
- height="383"
- layout="topleft"
- left="5"
- name="tabs"
- tab_group="1"
- tab_min_width="70"
- tab_height="30"
- tab_position="top"
- top_pad="10"
- halign="center"
- width="317">
- <panel
- background_opaque="true"
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- follows="all"
- height="383"
- label="NEARBY"
- layout="topleft"
- left="0"
- help_topic="people_nearby_tab"
- name="nearby_panel"
- top="0"
- width="313">
- <net_map
- bg_color="NetMapBackgroundColor"
- follows="top|left|right"
- layout="topleft"
- left="3"
- mouse_opaque="false"
- name="Net Map"
- width="307"
- height="140"
- top="0"/>
- <avatar_list
- allow_select="true"
- follows="top|left|bottom|right"
- height="216"
- ignore_online_status="true"
- layout="topleft"
- left="3"
- multi_select="true"
- name="avatar_list"
- top="145"
- width="307" />
- <panel
- background_visible="true"
- follows="left|right|bottom"
- height="27"
- label="bottom_panel"
- layout="topleft"
- left="3"
- name="bottom_panel"
- top_pad="0"
- width="313">
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="241"
- />
- </panel>
- </panel>
- <panel
- background_opaque="true"
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- follows="all"
- height="383"
- label="MY FRIENDS"
- layout="topleft"
- left="0"
- help_topic="people_friends_tab"
- name="friends_panel"
- top="0"
- width="313">
- <accordion
- background_visible="true"
- bg_alpha_color="DkGray2"
- bg_opaque_color="DkGray2"
- follows="all"
- height="356"
- layout="topleft"
- left="3"
- name="friends_accordion"
- top="0"
- width="307">
- <accordion_tab
- layout="topleft"
- height="172"
- min_height="150"
- name="tab_online"
- title="Online">
- <avatar_list
- allow_select="true"
- follows="all"
- height="172"
- layout="topleft"
- left="0"
- multi_select="true"
- name="avatars_online"
- show_permissions_granted="true"
- top="0"
- width="307" />
- </accordion_tab>
- <accordion_tab
- layout="topleft"
- height="173"
- name="tab_all"
- title="All">
- <avatar_list
- allow_select="true"
- follows="all"
- height="173"
- layout="topleft"
- left="0"
- multi_select="true"
- name="avatars_all"
- show_permissions_granted="true"
- top="0"
- width="307" />
- </accordion_tab>
- </accordion>
- <panel
- background_visible="true"
- follows="left|right|bottom"
- height="27"
- label="bottom_panel"
- layout="topleft"
- left="3"
- name="bottom_panel"
- top_pad="0"
- width="313">
-
- <layout_stack
- animate="false"
- border_size="0"
- follows="left|right|bottom"
- height="25"
- layout="topleft"
- orientation="horizontal"
- top_pad="1"
- left="0"
- name="bottom_panel"
- width="305">
- <layout_panel
- auto_resize="true"
- height="25"
- layout="topleft"
- name="dummy_panel"
- user_resize="false"
- width="212">
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Middle_Off"
- layout="topleft"
- left="0"
- top="0"
- name="dummy_icon"
- width="211" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- height="25"
- layout="topleft"
- name="trash_btn_panel"
- user_resize="false"
- width="31">
- <dnd_button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Right_Over"
- image_overlay="TrashItem_Off"
- image_selected="Toolbar_Right_Selected"
- image_unselected="Toolbar_Right_Off"
- left="0"
- layout="topleft"
- name="del_btn"
- tool_tip="Remove selected person from your Friends list"
- top="0"
- width="31"/>
- </layout_panel>
- </layout_stack><!--
-
- <button
- follows="bottom|left"
- tool_tip="Options"
- height="25"
- image_hover_unselected="Toolbar_Left_Over"
- image_overlay="OptionsMenu_Off"
- image_selected="Toolbar_Left_Selected"
- image_unselected="Toolbar_Left_Off"
- layout="topleft"
- left="0"
- name="friends_viewsort_btn"
- top="1"
- width="31" />
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Middle_Over"
- image_overlay="AddItem_Off"
- image_selected="Toolbar_Middle_Selected"
- image_unselected="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="add_btn"
- tool_tip="Offer friendship to a Resident"
- width="31" />
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="209"
- />
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Right_Over"
- image_overlay="TrashItem_Off"
- image_selected="Toolbar_Right_Selected"
- image_unselected="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="del_btn"
- tool_tip="Remove selected person from your Friends list"
- width="31" />
- --></panel>
- <text
- follows="all"
- height="450"
- left="13"
- name="no_friends_help_text"
- top="10"
- width="293"
- wrap="true" />
- </panel>
- <panel
- background_opaque="true"
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- follows="all"
- height="383"
- label="RECENT"
- layout="topleft"
- left="0"
- help_topic="people_recent_tab"
- name="recent_panel"
- top="0"
- width="313">
- <avatar_list
- allow_select="true"
- follows="all"
- height="356"
- layout="topleft"
- left="3"
- multi_select="true"
- name="avatar_list"
- show_last_interaction_time="true"
- top="0"
- width="307" />
- <panel
- background_visible="true"
- follows="left|right|bottom"
- height="27"
- label="bottom_panel"
- layout="topleft"
- left="0"
- name="bottom_panel"
- top_pad="0"
- width="313">
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Middle_Over"
- image_overlay="AddItem_Off"
- image_selected="Toolbar_Middle_Selected"
- image_unselected="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="add_friend_btn"
- tool_tip="Add selected Resident to your friends List"
- width="31">
- <commit_callback
- function="People.addFriend" />
- </button>
- <icon
- follows="bottom|left|right"
- height="25"
- image_name="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="241"
- />
- </panel>
- </panel>
- </tab_container>
- <panel
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- left="8"
- top_pad="4"
- name="button_bar"
- width="313">
-
-<!--********************************Profile; IM; Call, Share, Teleport********************************-->
- <layout_stack
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- name="bottom_bar_ls"
- left="0"
- orientation="horizontal"
- top_pad="0"
- width="313">
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left="0"
- name="view_profile_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="68">
- <button
- follows="bottom|left|right"
- height="23"
- label="Profile"
- layout="topleft"
- left="1"
- name="view_profile_btn"
- tool_tip="Show picture, groups, and other Residents information"
- top="0"
- width="67" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="im_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="41">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="IM"
- layout="topleft"
- name="im_btn"
- tool_tip="Open instant message session"
- top="0"
- width="40" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="call_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="52">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Call"
- layout="topleft"
- name="call_btn"
- tool_tip="Call this Resident"
- top="0"
- width="51" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- name="teleport_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="77">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Teleport"
- layout="topleft"
- name="teleport_btn"
- tool_tip="Offer teleport"
- top="0"
- width="76" />
- </layout_panel>
- </layout_stack>
-
-<!--********************************Group Profile; Group Chat; Group Call buttons************************-->
- <layout_stack
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- mouse_opaque="false"
- name="bottom_bar_ls1"
- left="0"
- orientation="horizontal"
- top="0"
- width="313">
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left="0"
- mouse_opaque="false"
- name="group_info_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="108">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Group Profile"
- layout="topleft"
- mouse_opaque="false"
- name="group_info_btn"
- tool_tip="Show group information"
- top="0"
- width="107" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- mouse_opaque="false"
- name="chat_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="101">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Group Chat"
- layout="topleft"
- mouse_opaque="false"
- name="chat_btn"
- tool_tip="Open chat session"
- top="0"
- width="100" />
- </layout_panel>
-
- <layout_panel
- follows="bottom|left|right"
- height="23"
- layout="bottomleft"
- left_pad="3"
- mouse_opaque="false"
- name="group_call_btn_lp"
- user_resize="false"
- auto_resize="true"
- width="96">
- <button
- follows="bottom|left|right"
- left="1"
- height="23"
- label="Group Call"
- layout="topleft"
- mouse_opaque="false"
- name="group_call_btn"
- tool_tip="Call this group"
- top="0"
- width="95" />
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 9f2f41ba31..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bottom="0"
- follows="left|top|right"
- height="5"
- width="333"
- layout="topleft"
- left="0"
- name="sidetray_tab_panel">
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml b/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
deleted file mode 100644
index fdd6b5d6ec..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_color="MouseGray"
- chrome="true"
- follows="top|right"
- height="30"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="status"
- top="19"
- tab_stop="false"
- width="185">
- <panel.string
- name="packet_loss_tooltip">
- Packet Loss
- </panel.string>
- <panel.string
- name="bandwidth_tooltip">
- Bandwidth
- </panel.string>
- <panel.string
- name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string
- name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string
- name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box
- follows="right|top"
- left_pad="5"
- drop_down_button.pad_left="10"
- left="0"
- top="5"
- pad_left="5"
- width="120"
- height="23"
- name="mode_combo"
- tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
- >
- <combo_box.item
- label="Basic Mode"
- name="Basic"
- value="settings_minimal.xml" />
- <combo_box.item
- label="Advanced Mode"
- name="Advanced"
- value="" />
- </combo_box>
- <button
- follows="right|top"
- height="16"
- image_selected="Play_Off"
- image_unselected="Pause_Off"
- image_pressed="Pause_Press"
- image_pressed_selected="Play_Press"
- is_toggle="true"
- left_pad="5"
- top="7"
- name="media_toggle_btn"
- tool_tip="Start/Stop All Media (Music, Video, Web pages)"
- width="16" >
- </button>
- <button
- follows="right|top"
- height="16"
- image_selected="AudioMute_Off"
- image_pressed="Audio_Press"
- image_unselected="Audio_Off"
- is_toggle="true"
- left_pad="5"
- top="8"
- name="volume_btn"
- tool_tip="Global Volume Control"
- width="16" />
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
deleted file mode 100644
index 36ad39abe8..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_image="Volume_Background"
- bg_alpha_image="Volume_Background"
- border_visible="false"
- border="false"
- chrome="true"
- follows="bottom"
- height="150"
- layout="topleft"
- name="volumepulldown_floater"
- width="32">
- <slider
- control_name="AudioLevelMaster"
- follows="left|top"
- left="0"
- top="1"
- orientation="vertical"
- height="140"
- increment="0.05"
- initial_value="0.5"
- layout="topleft"
- name="mastervolume"
- show_text="false"
- slider_label.halign="right"
- top_pad="2"
- volume="true">
- <slider.commit_callback
- function="Vol.setControlFalse"
- parameter="MuteAudio" />
- </slider>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
deleted file mode 100644
index ba148cf421..0000000000
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
-*TODO: Replace hardcoded buttons width/height with getting this info from the button images.
- Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images.
--->
-<location_input font="SansSerifSmall"
- maturity_help_topic="maturity_rating"
- add_landmark_hpad="0"
- icon_hpad="2"
- allow_text_entry="true"
- list_position="below"
- show_text_as_tentative="false"
- max_chars="20"
- follows="left|top"
- allow_new_values="true"
- >
- <!-- *NOTE: Tooltips are in strings.xml so they can be localized.
- See LocationCtrlAddLandmarkTooltip etc. -->
- <info_button
- name="Place Information"
- width="0"
- height="0"
- visible="false"
- left="6"
- top="20"
- follows="left|top"
- hover_glow_amount="0.15" />
- <add_landmark_button name="Add Landmark"
- hover_glow_amount="0.15"
- width="0"
- height="0"
- visible="false"
- follows="right|top"
- scale_image="false"
- top="19"
- left="-3" />
- <maturity_button
- name="maturity_icon"
- width="0"
- height="0"
- visible="false"
- top="20"
- follows="left|top"
- />
- <for_sale_button
- name="for_sale_btn"
- width="0"
- height="0"
- visible="false"
- follows="right|top"
- scale_image="false"
- top="21"
- />
- <voice_icon
- enabled="true"
- name="voice_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <fly_icon
- name="fly_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <push_icon
- name="push_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <build_icon
- name="build_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <scripts_icon
- name="scripts_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <damage_icon
- name="damage_icon"
- width="0"
- height="0"
- visible="false"
- top="19"
- left="2"
- follows="right|top"
- />
- <!-- Default text color is invisible on top of nav bar background -->
- <damage_text
- name="damage_text"
- width="0"
- height="0"
- max_length="0"
- top="17"
- follows="right|top"
- halign="right"
- font="SansSerifSmall"
- text_color="TextFgColor"
- />
- <see_avatars_icon
- name="see_avatars_icon"
- width="0"
- height="0"
- visible="false"
- top="21"
- follows="right|top"
- />
- <combo_button
- name="Location History"
- label=""
- pad_right="0"/>
- <combo_list
- bg_writeable_color="MenuDefaultBgColor"
- page_lines="10"
- scroll_bar_bg_visible="true" />
- <combo_editor name="Combo Text Entry"
- text_pad_left="4"
- select_on_focus="false"
- font="SansSerifSmall"
- bevel_style="none"
- border_style="line"
- border.border_thickness="0" />
-</location_input>
diff --git a/indra/newview/skins/minimal/xui/es/floater_camera.xml b/indra/newview/skins/minimal/xui/es/floater_camera.xml
deleted file mode 100644
index 87177e285c..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Girar la cámara alrededor de lo enfocado
- </floater.string>
- <floater.string name="zoom_tooltip">
- Hacer zoom con la cámara en lo enfocado
- </floater.string>
- <floater.string name="move_tooltip">
- Mover la cámara arriba y abajo, izquierda y derecha
- </floater.string>
- <floater.string name="camera_modes_title">
- Modos de cámara
- </floater.string>
- <floater.string name="pan_mode_title">
- Orbital - Zoom - Panorámica
- </floater.string>
- <floater.string name="presets_mode_title">
- Vistas predefinidas
- </floater.string>
- <floater.string name="free_mode_title">
- Centrar el objeto
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- De frente
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Vista lateral
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Desde detrás
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Vista de objeto
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Vista subjetiva
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado">
- <joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/>
- <slider_bar name="zoom_slider" tool_tip="Hacer zoom en lo enfocado"/>
- <joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Vistas predefinidas"/>
- <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panorámica"/>
- <button label="" name="avatarview_btn" tool_tip="Modos de cámara"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml b/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
deleted file mode 100644
index 67590ebfbb..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="INDICACIONES">
- <floater.string name="loading_text">
- Cargando...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml b/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
deleted file mode 100644
index a7086c2d6d..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="EXPLORADOR DE MEDIA">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Atrás" name="back"/>
- <button label="Adelante" name="forward"/>
- <button label="Recargar" name="reload"/>
- <button label="Ir" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="rebobinar" name="rewind"/>
- <button label="parar" name="stop"/>
- <button label="avanzar" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Enviar a la parcela la página actual" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Abrir en mi propio navegador" name="open_browser"/>
- <check_box label="Abrir siempre en mi propio navegador" name="open_always"/>
- <button label="Cerrar" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
deleted file mode 100644
index 1fee9ab056..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT">
- <check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_web_content.xml b/indra/newview/skins/minimal/xui/es/floater_web_content.xml
deleted file mode 100644
index b012809679..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Navegar hacia atrás"/>
- <button name="forward" tool_tip="Navegar hacia adelante"/>
- <button name="stop" tool_tip="Parar navegación"/>
- <button name="reload" tool_tip="Recargar página"/>
- <combo_box name="address" tool_tip="Escribe la URL aquí"/>
- <icon name="media_secure_lock_flag" tool_tip="Navegación segura"/>
- <button name="popexternal" tool_tip="Abrir la URL actual en tu explorador de escritorio"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml b/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
deleted file mode 100644
index 1d70fa6a90..0000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_details">
- Ésta es mi descripción de Second Life que, por cierto, me encanta. Pero, por lo que sea, me he enrollado más de la cuenta y la descripción es larguísima.
- </text>
- <slider name="volume_slider" tool_tip="Volumen de la voz" value="0.5"/>
- <button label="Añadir como amigo" name="add_friend_btn"/>
- <button label="MI" name="im_btn"/>
- <button label="Perfil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Desactivar la voz" name="disable_voice"/>
- <button label="Activar la voz" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/inspect_object.xml b/indra/newview/skins/minimal/xui/es/inspect_object.xml
deleted file mode 100644
index d608b4a0f7..0000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Por [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Por [CREATOR]
-Propietario [OWNER]
- </string>
- <string name="Price">
- [AMOUNT] L$
- </string>
- <string name="PriceFree">
- ¡Gratis!
- </string>
- <string name="Touch">
- Tocar
- </string>
- <string name="Sit">
- Sentarme
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="price_text">
- 30.000 L$
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <button label="Comprar" name="buy_btn"/>
- <button label="Pagar" name="pay_btn"/>
- <button label="Coger una copia" name="take_free_copy_btn"/>
- <button label="Tocar" name="touch_btn"/>
- <button label="Sentarme" name="sit_btn"/>
- <button label="Abrir" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Navegación segura"/>
- <button label="Más" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
deleted file mode 100644
index f2367c72a3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Ordenar por los más recientes" name="sort_by_most_recent"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
- <menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
deleted file mode 100644
index b8ae93afd2..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver el perfil" name="Profile..."/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Invitar al grupo" name="Invite..."/>
- <menu_item_call label="Ignorar" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Expulsar" name="Eject..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <menu_item_call label="Acercar el zoom" name="Zoom In"/>
- <menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_call label="Perfil del objeto" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
deleted file mode 100644
index ab76c92d65..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Tocar" name="Attachment Object Touch"/>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Quitar" name="Detach"/>
- <menu_item_call label="Sentarte" name="Sit Down Here"/>
- <menu_item_call label="Levantarme" name="Stand Up"/>
- <menu_item_call label="Cambiar vestuario" name="Change Outfit"/>
- <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
- <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
- <menu_item_call label="Mis amigos" name="Friends..."/>
- <menu_item_call label="Mis grupos" name="Groups..."/>
- <menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <menu_item_call label="Soltar" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
deleted file mode 100644
index fe7331a108..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Ver el perfil" name="Show Profile"/>
- <menu_item_call label="Enviar un MI..." name="Send IM"/>
- <menu_item_call label="Añadir como amigo..." name="Add Friend"/>
- <menu_item_call label="Quitar de los amigos..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
deleted file mode 100644
index 5fb3e51575..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver el perfil" name="Profile..."/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Invitar al grupo" name="Invite..."/>
- <menu_item_call label="Ignorar" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Expulsar" name="Eject..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <menu_item_call label="Acercar el zoom" name="Zoom In"/>
- <menu_item_call label="Pagar" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
deleted file mode 100644
index 50f8384b0f..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Sentarte" name="Sit Down Here"/>
- <menu_item_call label="Levantarme" name="Stand Up"/>
- <context_menu label="Quitarme" name="Take Off &gt;">
- <context_menu label="Ropas" name="Clothes &gt;">
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Pantalón" name="Pants"/>
- <menu_item_call label="Falda" name="Skirt"/>
- <menu_item_call label="Zapatos" name="Shoes"/>
- <menu_item_call label="Calcetines" name="Socks"/>
- <menu_item_call label="Chaqueta" name="Jacket"/>
- <menu_item_call label="Guantes" name="Gloves"/>
- <menu_item_call label="Camiseta" name="Self Undershirt"/>
- <menu_item_call label="Ropa interior" name="Self Underpants"/>
- <menu_item_call label="Tatuaje" name="Self Tattoo"/>
- <menu_item_call label="Alfa" name="Self Alpha"/>
- <menu_item_call label="Toda la ropa" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Quitar" name="Object Detach"/>
- <menu_item_call label="Quitarse todo" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/>
- <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
- <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
- <menu_item_call label="Mis amigos" name="Friends..."/>
- <menu_item_call label="Mis grupos" name="Groups..."/>
- <menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
deleted file mode 100644
index 62683f3076..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Botón Gestos" name="ShowGestureButton"/>
- <menu_item_check label="Botón Moverse" name="ShowMoveButton"/>
- <menu_item_check label="Botón Vista" name="ShowCameraButton"/>
- <menu_item_check label="Botón Foto" name="ShowSnapshotButton"/>
- <menu_item_check label="Botón Barra lateral" name="ShowSidebarButton"/>
- <menu_item_check label="Botón Construir" name="ShowBuildButton"/>
- <menu_item_check label="Botón Buscar" name="ShowSearchButton"/>
- <menu_item_check label="Botón Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Botón Minimapa" name="ShowMiniMapButton"/>
- <menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Pegar" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Borrar" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Seleccionar todo" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
deleted file mode 100644
index 7541530601..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Quitar" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
deleted file mode 100644
index 56b95bdc3b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Reemplazar" name="replace"/>
- <menu_item_call label="Editar" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
deleted file mode 100644
index 3c0c588284..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Quitarme" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Reemplazar" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
deleted file mode 100644
index ff8ad0977a..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Ropas nuevas" name="COF.Gear.New_Clothes"/>
- <menu label="Nuevas partes del cuerpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_edit.xml b/indra/newview/skins/minimal/xui/es/menu_edit.xml
deleted file mode 100644
index 96fc9d8881..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Editar" name="Edit">
- <menu_item_call label="Deshacer" name="Undo"/>
- <menu_item_call label="Rehacer" name="Redo"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Duplicar" name="Duplicate"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
- <menu_item_call label="Deseleccionar" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_favorites.xml b/indra/newview/skins/minimal/xui/es/menu_favorites.xml
deleted file mode 100644
index 85210d5c49..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportar" name="Teleport To Landmark"/>
- <menu_item_call label="Ver/Editar el hito" name="Landmark Open"/>
- <menu_item_call label="Copiar la SLurl" name="Copy slurl"/>
- <menu_item_call label="Mostrar en el mapa" name="Show On Map"/>
- <menu_item_call label="Copiar" name="Landmark Copy"/>
- <menu_item_call label="Pegar" name="Landmark Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
deleted file mode 100644
index 24706eb2c8..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Añadir a / Quitar de los favoritos" name="activate"/>
- <menu_item_call label="Copiar" name="copy_gesture"/>
- <menu_item_call label="Pegar" name="paste"/>
- <menu_item_call label="Copiar la UUID" name="copy_uuid"/>
- <menu_item_call label="Añadir al vestuario actual" name="save_to_outfit"/>
- <menu_item_call label="Editar" name="edit_gesture"/>
- <menu_item_call label="Inspeccionar" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml b/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
deleted file mode 100644
index 6b26ba42c4..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Entrar al grupo..." name="item_join"/>
- <menu_item_call label="Grupo nuevo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
deleted file mode 100644
index 22a1873234..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
deleted file mode 100644
index c8f6c217cc..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Cerrar todo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
deleted file mode 100644
index e11e9bdc58..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
deleted file mode 100644
index a5e60ea40b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Información del grupo" name="Show Profile"/>
- <menu_item_call label="Mostrar la sesión" name="Chat"/>
- <menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
deleted file mode 100644
index 492801026c..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Ver el perfil" name="Show Profile"/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="Mostrar la sesión" name="Send IM"/>
- <menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 728637de78..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Ver el perfil" name="view_profile"/>
- <menu_item_call label="Añadir como amigo" name="add_friend"/>
- <menu_item_call label="MI" name="im"/>
- <menu_item_call label="Llamar" name="call"/>
- <menu_item_call label="Teleportar" name="teleport"/>
- <menu_item_call label="Ignorar" name="block"/>
- <menu_item_call label="Designorar" name="unblock"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Expulsar" name="eject"/>
- <menu_item_call label="Expulsar" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Depurar las texturas" name="debug"/>
- <menu_item_call label="Encontrar en el mapa" name="find_on_map"/>
- <menu_item_call label="Acercar el zoom" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
deleted file mode 100644
index bcdc25894f..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Tocar" name="touch"/>
- <menu_item_call label="Sentarse" name="sit"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Comprar" name="buy"/>
- <menu_item_call label="Tomar" name="take"/>
- <menu_item_call label="Coger una copia" name="take_copy"/>
- <menu_item_call label="Abrir" name="open"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Ponerse" name="wear"/>
- <menu_item_call label="Añadir" name="add"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Ignorar" name="block"/>
- <menu_item_call label="Acercar el zoom" name="zoom_in"/>
- <menu_item_call label="Quitar" name="remove"/>
- <menu_item_call label="Más información" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
deleted file mode 100644
index 1a49efb9d0..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="Sentarme" name="Sit Down Here"/>
- <menu_item_call label="Levantarme" name="Stand Up"/>
- <menu_item_call label="Mis amigos" name="Friends..."/>
- <menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 20d99afde1..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Cerrar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_inventory.xml
deleted file mode 100644
index 94ee162bbc..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Comprar" name="Task Buy"/>
- <menu_item_call label="Abrir" name="Task Open"/>
- <menu_item_call label="Ejecutar" name="Task Play"/>
- <menu_item_call label="Propiedades" name="Task Properties"/>
- <menu_item_call label="Renombrar" name="Task Rename"/>
- <menu_item_call label="Borrar" name="Task Remove"/>
- <menu_item_call label="Vaciar la papelera" name="Empty Trash"/>
- <menu_item_call label="Vaciar Objetos Perdidos" name="Empty Lost And Found"/>
- <menu_item_call label="Carpeta nueva" name="New Folder"/>
- <menu_item_call label="Script nuevo" name="New Script"/>
- <menu_item_call label="Nota nueva" name="New Note"/>
- <menu_item_call label="Gesto nuevo" name="New Gesture"/>
- <menu label="Ropas nuevas" name="New Clothes">
- <menu_item_call label="Camisa nueva" name="New Shirt"/>
- <menu_item_call label="Pantalones nuevos" name="New Pants"/>
- <menu_item_call label="Zapatos nuevos" name="New Shoes"/>
- <menu_item_call label="Calcetines nuevos" name="New Socks"/>
- <menu_item_call label="Chaqueta nueva" name="New Jacket"/>
- <menu_item_call label="Falda nueva" name="New Skirt"/>
- <menu_item_call label="Guantes nuevos" name="New Gloves"/>
- <menu_item_call label="Camiseta nueva" name="New Undershirt"/>
- <menu_item_call label="Ropa interior nueva" name="New Underpants"/>
- <menu_item_call label="Nueva capa Alpha" name="New Alpha Mask"/>
- <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
- </menu>
- <menu label="Nuevas partes del cuerpo" name="New Body Parts">
- <menu_item_call label="Forma nueva" name="New Shape"/>
- <menu_item_call label="Piel nueva" name="New Skin"/>
- <menu_item_call label="Pelo nuevo" name="New Hair"/>
- <menu_item_call label="Ojos nuevos" name="New Eyes"/>
- </menu>
- <menu label="Change Type" name="Change Type">
- <menu_item_call label="Por defecto" name="Default"/>
- <menu_item_call label="Guantes" name="Gloves"/>
- <menu_item_call label="Chaqueta" name="Jacket"/>
- <menu_item_call label="Pantalón" name="Pants"/>
- <menu_item_call label="Forma" name="Shape"/>
- <menu_item_call label="Zapatos" name="Shoes"/>
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Falda" name="Skirt"/>
- <menu_item_call label="Ropa interior" name="Underpants"/>
- <menu_item_call label="Camiseta" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportar" name="Landmark Open"/>
- <menu_item_call label="Abrir" name="Animation Open"/>
- <menu_item_call label="Abrir" name="Sound Open"/>
- <menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/>
- <menu_item_call label="Añadir al vestuario" name="Add To Outfit"/>
- <menu_item_call label="Quitar del vestuario actual" name="Remove From Outfit"/>
- <menu_item_call label="Encontrar el original" name="Find Original"/>
- <menu_item_call label="Eliminar el ítem" name="Purge Item"/>
- <menu_item_call label="Restaurar el ítem" name="Restore Item"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Abrir original" name="Open Original"/>
- <menu_item_call label="Propiedades" name="Properties"/>
- <menu_item_call label="Renombrar" name="Rename"/>
- <menu_item_call label="Copiar la UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Pegar como enlace" name="Paste As Link"/>
- <menu_item_call label="Borrar" name="Remove Link"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Borrar carpeta del sistema" name="Delete System Folder"/>
- <menu_item_call label="Empezar multiconferencia" name="Conference Chat Folder"/>
- <menu_item_call label="Escuchar" name="Sound Play"/>
- <menu_item_call label="Acerca del hito" name="About Landmark"/>
- <menu_item_call label="Escuchar en el mundo" name="Animation Play"/>
- <menu_item_call label="Ejecutarla para usted" name="Animation Audition"/>
- <menu_item_call label="Enviar un mensaje instantáneo" name="Send Instant Message"/>
- <menu_item_call label="Ofrecer teleporte..." name="Offer Teleport..."/>
- <menu_item_call label="Empezar multiconferencia" name="Conference Chat"/>
- <menu_item_call label="Activar" name="Activate"/>
- <menu_item_call label="Desactivar" name="Deactivate"/>
- <menu_item_call label="Guardar como" name="Save As"/>
- <menu_item_call label="Quitarse" name="Detach From Yourself"/>
- <menu_item_call label="Ponerme" name="Wearable And Object Wear"/>
- <menu label="Anexar a" name="Attach To"/>
- <menu label="Anexar como HUD" name="Attach To HUD"/>
- <menu_item_call label="Editar" name="Wearable Edit"/>
- <menu_item_call label="Añadir" name="Wearable Add"/>
- <menu_item_call label="Quitarse" name="Take Off"/>
- <menu_item_call label="--sin opciones--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
deleted file mode 100644
index ba106e8335..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Subir" name="upload">
- <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/>
- <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/>
- <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/>
- <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/>
- <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
- </menu>
- <menu_item_call label="Carpeta nueva" name="New Folder"/>
- <menu_item_call label="Script nuevo" name="New Script"/>
- <menu_item_call label="Nota nueva" name="New Note"/>
- <menu_item_call label="Gesto nuevo" name="New Gesture"/>
- <menu label="Ropas nuevas" name="New Clothes">
- <menu_item_call label="Camisa nueva" name="New Shirt"/>
- <menu_item_call label="Pantalón nuevo" name="New Pants"/>
- <menu_item_call label="Zapatos nuevos" name="New Shoes"/>
- <menu_item_call label="Calcetines nuevos" name="New Socks"/>
- <menu_item_call label="Chaqueta nueva" name="New Jacket"/>
- <menu_item_call label="Falda nueva" name="New Skirt"/>
- <menu_item_call label="Guantes nuevos" name="New Gloves"/>
- <menu_item_call label="Camiseta nueva" name="New Undershirt"/>
- <menu_item_call label="Ropa interior nueva" name="New Underpants"/>
- <menu_item_call label="Nueva Alfa" name="New Alpha"/>
- <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
- </menu>
- <menu label="Nuevas partes del cuerpo" name="New Body Parts">
- <menu_item_call label="Forma nueva" name="New Shape"/>
- <menu_item_call label="Piel nueva" name="New Skin"/>
- <menu_item_call label="Pelo nuevo" name="New Hair"/>
- <menu_item_call label="Ojos nuevos" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
deleted file mode 100644
index 8e498fefba..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nueva ventana del inventario" name="new_window"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
- <menu_item_check label="Ordenar por los más recientes" name="sort_by_recent"/>
- <menu_item_check label="Las carpetas del sistema, arriba" name="sort_system_folders_to_top"/>
- <menu_item_call label="Ver los filtros" name="show_filters"/>
- <menu_item_call label="Restablecer los filtros" name="reset_filters"/>
- <menu_item_call label="Cerrar todas las carpetas" name="close_folders"/>
- <menu_item_call label="Vaciar Objetos Perdidos" name="empty_lostnfound"/>
- <menu_item_call label="Guardar la textura como" name="Save Texture As"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Encontrar el original" name="Find Original"/>
- <menu_item_call label="Encontrar todos los enlazados" name="Find All Links"/>
- <menu_item_call label="Vaciar la Papelera" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_land.xml b/indra/newview/skins/minimal/xui/es/menu_land.xml
deleted file mode 100644
index b0f15be1b6..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Acerca del terreno" name="Place Information..."/>
- <menu_item_call label="Sentarme aquí" name="Sit Here"/>
- <menu_item_call label="Comprar este terreno" name="Land Buy"/>
- <menu_item_call label="Comprar un pase" name="Land Buy Pass"/>
- <menu_item_call label="Construir" name="Create"/>
- <menu_item_call label="Modificar el terreno" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_landmark.xml
deleted file mode 100644
index f69b1539b8..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copiar la SLurl" name="copy"/>
- <menu_item_call label="Borrar" name="delete"/>
- <menu_item_call label="Crear un Destacado" name="pick"/>
- <menu_item_call label="Añadir a la barra de favoritos" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_login.xml b/indra/newview/skins/minimal/xui/es/menu_login.xml
deleted file mode 100644
index c27d624732..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Yo" name="File">
- <menu_item_call label="Preferencias" name="Preferences..."/>
- <menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Ayuda" name="Help">
- <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Mostrar el menú &apos;Debug&apos;" name="Show Debug Menu"/>
- <menu label="Depurar" name="Debug">
- <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/>
- <menu_item_call label="Configuraciones del Visor/Color" name="UI/Color Settings"/>
- <menu label="Pruebas de la interfaz" name="UI Tests"/>
- <menu_item_call label="Definir el tamaño de la ventana..." name="Set Window Size..."/>
- <menu_item_call label="Mostrar los &apos;TOS&apos;" name="TOS"/>
- <menu_item_call label="Mostrar mensaje crítico" name="Critical"/>
- <menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/>
- <menu_item_call label="Prueba de ventanas de contenidos web" name="Web Content Floater Test"/>
- <menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/>
- <menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml b/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
deleted file mode 100644
index 07d1b08572..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom cerca" name="Zoom Close"/>
- <menu_item_call label="Zoom medio" name="Zoom Medium"/>
- <menu_item_call label="Zoom lejos" name="Zoom Far"/>
- <menu_item_call label="Zoom por defecto" name="Zoom Default"/>
- <menu_item_check label="Girar el mapa" name="Rotate Map"/>
- <menu_item_check label="Centrar automáticamente" name="Auto Center"/>
- <menu_item_call label="Parar la búsqueda" name="Stop Tracking"/>
- <menu_item_call label="Mapa del mundo" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_navbar.xml
deleted file mode 100644
index 63e5468020..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/>
- <menu_item_call label="Hito" name="Landmark"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
deleted file mode 100644
index 94b281b6c7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Mostrar la gente que está cerca..." name="nearby_people"/>
- <menu_item_check label="Ver el texto ignorado" name="muted_text"/>
- <menu_item_check label="Mostrar los iconos del amigo" name="show_buddy_icons"/>
- <menu_item_check label="Mostrar los nombres" name="show_names"/>
- <menu_item_check label="Mostrar los iconos y los nombres" name="show_icons_and_names"/>
- <menu_item_call label="Tamaño de la fuente" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
deleted file mode 100644
index 0562d35be7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Cerrar todo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_object.xml b/indra/newview/skins/minimal/xui/es/menu_object.xml
deleted file mode 100644
index 06121e0c09..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Tocar" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/>
- </menu_item_call>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Construir" name="Build"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Sentarme aquí" name="Object Sit"/>
- <menu_item_call label="Levantarme" name="Object Stand Up"/>
- <menu_item_call label="Perfil del objeto" name="Object Inspect"/>
- <menu_item_call label="Acercar el zoom" name="Zoom In"/>
- <context_menu label="Ponerme" name="Put On">
- <menu_item_call label="Ponerme" name="Wear"/>
- <menu_item_call label="Añadir" name="Add"/>
- <context_menu label="Anexar" name="Object Attach"/>
- <context_menu label="Anexar el HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Quitar" name="Remove">
- <menu_item_call label="Denunciar una infracción" name="Report Abuse..."/>
- <menu_item_call label="Ignorar" name="Object Mute"/>
- <menu_item_call label="Devolver" name="Return..."/>
- <menu_item_call label="Eliminar" name="Delete"/>
- </context_menu>
- <menu_item_call label="Tomar" name="Pie Object Take"/>
- <menu_item_call label="Coger una copia" name="Take Copy"/>
- <menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_call label="Comprar" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml b/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
deleted file mode 100644
index 7e4578b950..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Perfil del objeto..." name="Object Profile"/>
- <menu_item_call label="Ignorar..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
deleted file mode 100644
index 3b11bceecf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear"/>
- <menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/>
- <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/>
- <menu label="Ropas nuevas" name="New Clothes">
- <menu_item_call label="Camisa nueva" name="New Shirt"/>
- <menu_item_call label="Pantalón nuevo" name="New Pants"/>
- <menu_item_call label="Zapatos nuevos" name="New Shoes"/>
- <menu_item_call label="Calcetines nuevos" name="New Socks"/>
- <menu_item_call label="Chaqueta nueva" name="New Jacket"/>
- <menu_item_call label="Falda nueva" name="New Skirt"/>
- <menu_item_call label="Guantes nuevos" name="New Gloves"/>
- <menu_item_call label="Camiseta nueva" name="New Undershirt"/>
- <menu_item_call label="Ropa interior nueva" name="New Underpants"/>
- <menu_item_call label="Nueva Alfa" name="New Alpha"/>
- <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
- </menu>
- <menu label="Nuevas partes del cuerpo" name="New Body Parts">
- <menu_item_call label="Anatomía nueva" name="New Shape"/>
- <menu_item_call label="Piel nueva" name="New Skin"/>
- <menu_item_call label="Pelo nuevo" name="New Hair"/>
- <menu_item_call label="Ojos nuevos" name="New Eyes"/>
- </menu>
- <menu_item_call label="Renombrar el vestuario" name="rename"/>
- <menu_item_call label="Borrar el vestuario" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
deleted file mode 100644
index 4136082a62..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear_replace"/>
- <menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/>
- <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/>
- <menu_item_call label="Editar el vestuario" name="edit"/>
- <menu_item_call label="Renombrar el vestuario" name="rename"/>
- <menu_item_call label="Borrar el vestuario" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml b/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
deleted file mode 100644
index f6eedd1170..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Ordenar alfabéticamente" name="SortByName"/>
- <menu_item_check label="Ordenar según las intervenciones recientes" name="SortByRecentSpeakers"/>
- <menu_item_call label="Ver el perfil" name="View Profile"/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ver los iconos de la gente" name="View Icons"/>
- <menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
- <menu_item_check label="Ignorar el texto" name="MuteText"/>
- <context_menu label="Opciones del moderador" name="Moderator Options">
- <menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
- <menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Silenciar a todos" name="ModerateVoiceMute"/>
- <menu_item_call label="Quitar el silencio a todos" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3899ad9e96..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
- <menu_item_check label="Ordenar por estatus" name="sort_status"/>
- <menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
- <menu_item_check label="Ver permisos concedidos" name="view_permissions"/>
- <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
deleted file mode 100644
index 51bd2c7208..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Ver la información" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Activar" name="Activate"/>
- <menu_item_call label="Dejar" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
deleted file mode 100644
index 1bd3efb611..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Mostrar los iconos de grupo" name="Display Group Icons"/>
- <menu_item_call label="Dejar el grupo seleccionado" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
deleted file mode 100644
index dc1486d879..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Ver el perfil" name="View Profile"/>
- <menu_item_call label="Añadir como amigo" name="Add Friend"/>
- <menu_item_call label="Quitarle como amigo" name="Remove Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Mapa" name="Map"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
- <menu_item_call label="Ofrecer teleporte" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 227c5ebe58..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Añadir como amigos" name="Add Friends"/>
- <menu_item_call label="Quitar amigos" name="Remove Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamar" name="Call"/>
- <menu_item_call label="Compartir" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_call label="Ofrecer teleporte" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
deleted file mode 100644
index f0fe383c0c..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
- <menu_item_check label="Ordenar según distancia" name="sort_distance"/>
- <menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
- <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
deleted file mode 100644
index e4aaa89110..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por los más recientes" name="sort_most"/>
- <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
- <menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
- <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks.xml b/indra/newview/skins/minimal/xui/es/menu_picks.xml
deleted file mode 100644
index 9da68d7c9b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Información" name="pick_info"/>
- <menu_item_call label="Editar" name="pick_edit"/>
- <menu_item_call label="Teleportar" name="pick_teleport"/>
- <menu_item_call label="Mapa" name="pick_map"/>
- <menu_item_call label="Eliminar" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
deleted file mode 100644
index cc59bf1d29..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Destacado nuevo" name="create_pick"/>
- <menu_item_call label="Clasificado nuevo" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_place.xml b/indra/newview/skins/minimal/xui/es/menu_place.xml
deleted file mode 100644
index 675f0699e9..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Crear un hito" name="landmark"/>
- <menu_item_call label="Crear un destacado" name="pick"/>
- <menu_item_call label="Comprar un pase" name="pass"/>
- <menu_item_call label="Editar" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
deleted file mode 100644
index 4b2f908a06..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Añadir una carpeta" name="add_folder"/>
- <menu_item_call label="Añadir este hito" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
deleted file mode 100644
index bf46eb58e3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Añadir este hito" name="add_landmark"/>
- <menu_item_call label="Añadir una carpeta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar" name="copy_folder"/>
- <menu_item_call label="Pegar" name="paste"/>
- <menu_item_call label="Renombrar" name="rename"/>
- <menu_item_call label="Borrar" name="delete"/>
- <menu_item_call label="Abrir" name="expand"/>
- <menu_item_call label="Cerrar" name="collapse"/>
- <menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
- <menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
- <menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
deleted file mode 100644
index eac85de846..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportar" name="teleport"/>
- <menu_item_call label="Más información" name="more_info"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Añadir un hito" name="add_landmark"/>
- <menu_item_call label="Añadir una carpeta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar el hito" name="copy_landmark"/>
- <menu_item_call label="Copiar la SLurl" name="copy_slurl"/>
- <menu_item_call label="Pegar" name="paste"/>
- <menu_item_call label="Renombrar" name="rename"/>
- <menu_item_call label="Eliminar" name="delete"/>
- <menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
- <menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
- <menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
- <menu_item_call label="Crear un Destacado" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
deleted file mode 100644
index 5ee8c50949..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mapa" name="show_on_map"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Compartir" name="share"/>
- <menu_item_call label="Ignorar" name="block"/>
- <menu_item_call label="Designorar" name="unblock"/>
- <menu_item_call label="Expulsar" name="kick"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Descongelar" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
deleted file mode 100644
index a04ec75b60..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Guardar" name="save_outfit"/>
- <menu_item_call label="Guardar como" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
deleted file mode 100644
index f517baf566..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Cerrar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_slurl.xml
deleted file mode 100644
index ca19acec6e..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Acerca de la URL" name="about_url"/>
- <menu_item_call label="Teleportar a la URL" name="teleport_to_url"/>
- <menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
deleted file mode 100644
index b708f3bc20..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Abrir todas las carpetas" name="Expand all folders"/>
- <menu_item_call label="Cerrar todas las carpetas" name="Collapse all folders"/>
- <menu_item_call label="Limpiar el historial de teleportes" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
deleted file mode 100644
index c482907812..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportar" name="Teleport"/>
- <menu_item_call label="Más información" name="More Information"/>
- <menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
deleted file mode 100644
index 17e90422a5..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Abrir" name="TabOpen"/>
- <menu_item_call label="Cerrar" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml b/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
deleted file mode 100644
index 095e461734..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Pegar" name="Paste"/>
- <menu_item_call label="Borrar" name="Delete"/>
- <menu_item_call label="Seleccionar todo" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
deleted file mode 100644
index 2125fd51b2..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/>
- <menu_item_call label="Hito" name="Landmark"/>
- <menu_item_call label="Copiar" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml b/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
deleted file mode 100644
index a089c8f68e..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar el perfil del Residente" name="show_agent"/>
- <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_group.xml b/indra/newview/skins/minimal/xui/es/menu_url_group.xml
deleted file mode 100644
index 79374b9739..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información del grupo" name="show_group"/>
- <menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_http.xml b/indra/newview/skins/minimal/xui/es/menu_url_http.xml
deleted file mode 100644
index 585c059ff3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Abrir la página web" name="url_open"/>
- <menu_item_call label="Abrir en el navegador incorporado" name="url_open_internal"/>
- <menu_item_call label="Abrir en mi navegador" name="url_open_external"/>
- <menu_item_call label="Copiar la URL al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
deleted file mode 100644
index 13a8711c76..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar ítem del inventario" name="show_item"/>
- <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_map.xml b/indra/newview/skins/minimal/xui/es/menu_url_map.xml
deleted file mode 100644
index f96a0c7170..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Teleportarse a la localización" name="teleport_to_location"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
deleted file mode 100644
index 8791a290af..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información del objeto" name="show_object"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
- <menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
deleted file mode 100644
index 9e789ef8ee..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información de la parcela" name="show_parcel"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
deleted file mode 100644
index 7147dcd3cf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ejecutar este comando" name="run_slapp"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
deleted file mode 100644
index 4ab47c2f61..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar la información del lugar" name="show_place"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Teleportarse a este lugar" name="teleport_to_location"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
deleted file mode 100644
index 8f86a91be3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleportarse a este lugar" name="teleport"/>
- <menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
- <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_viewer.xml b/indra/newview/skins/minimal/xui/es/menu_viewer.xml
deleted file mode 100644
index 776ccfe21b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Ayuda" name="Help">
- <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
- </menu>
- <menu label="Avanzado" name="Advanced">
- <menu label="Atajos de teclado" name="Shortcuts">
- <menu_item_check label="Volar" name="Fly"/>
- <menu_item_call label="Cerrar la ventana" name="Close Window"/>
- <menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/>
- <menu_item_call label="Volver a la vista por defecto" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
deleted file mode 100644
index 4bffa689e7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Reemplazar" name="wear_replace"/>
- <menu_item_call label="Ponerme" name="wear_wear"/>
- <menu_item_call label="Añadir" name="wear_add"/>
- <menu_item_call label="Quitarme / Quitar" name="take_off_or_detach"/>
- <menu_item_call label="Quitar" name="detach"/>
- <context_menu label="Anexar a" name="wearable_attach_to"/>
- <context_menu label="Anexar al HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Quitarme" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Perfil del elemento" name="object_profile"/>
- <menu_item_call label="Mostrar original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
deleted file mode 100644
index 9d9ce75e53..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Editar el vestuario" name="edit"/>
- <menu_item_call label="Quitarme" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
deleted file mode 100644
index 64fd7ce4cf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Quitarme" name="take_off"/>
- <menu_item_call label="Quitar" name="detach"/>
- <menu_item_call label="Editar el vestuario" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/notifications.xml b/indra/newview/skins/minimal/xui/es/notifications.xml
deleted file mode 100644
index 78b617c429..0000000000
--- a/indra/newview/skins/minimal/xui/es/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] te ofrece un/a [ITEM_SLURL]. Para utilizar este ítem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reiníciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
- <form name="form">
- <button name="Show" text="Conservar ítem"/>
- <button name="Discard" text="Rechazar ítem"/>
- <button name="Mute" text="Bloquear usuario"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Un objeto de nombre &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, propiedad de [NAME_SLURL], te ofrece un/a &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Para utilizar este ítem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reiníciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
- <form name="form">
- <button name="Keep" text="Conservar ítem"/>
- <button name="Discard" text="Rechazar ítem"/>
- <button name="Mute" text="Bloquear objeto"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
deleted file mode 100644
index 254cf58437..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Llamar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Colgar" name="end_call_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
deleted file mode 100644
index 0989a3d0a1..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Activa/Desactiva el micrófono"/>
- <string name="VoiceControlBtnToolTip" value="Muestra/Oculta el panel del control de voz"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Hablar" name="speak_btn" tool_tip="Activar y desactivar tu micrófono"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Cambiar tus preferencias de sonido"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Hacer que tu avatar realice distintas acciones"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Visión" name="camera_btn" tool_tip="Controlar el ángulo de tu cámara"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar por Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Mi avatar" name="avatar_btn" tool_tip="Cambiar tu aspecto"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Gente" name="show_people_button" tool_tip="Encontrar a gente en Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Consultar y editar tu perfil"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Indicaciones" name="show_help_btn" tool_tip="Ver la información de ayuda de Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversaciones"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notificaciones"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
deleted file mode 100644
index e77156b0d4..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Colgar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Abrir los controles de la voz" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
deleted file mode 100644
index 93b6526f77..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Perfil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Añadir como amigo" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Llamar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Colgar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Ignorar" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="No ignorar" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volumen de la llamada" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_login.xml b/indra/newview/skins/minimal/xui/es/panel_login.xml
deleted file mode 100644
index 689a71e277..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/index.php?lang=es-ES
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=es
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nombre de usuario:
- </text>
- <combo_box name="username_combo" tool_tip="El nombre de usuario que elegiste al registrarte, como bobsmith12 o Steller Sunshine"/>
- <text name="password_text">
- Contraseña:
- </text>
- <check_box label="Recordar la contraseña" name="remember_check"/>
- <button label="Iniciar sesión" name="connect_btn"/>
- <text name="mode_selection_text">
- Modo:
- </text>
- <combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
- <combo_box.item label="Básico" name="Basic"/>
- <combo_box.item label="Avanzado" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Registrarme
- </text>
- <text name="forgot_password_text">
- ¿Olvidaste el nombre de usuario o la contraseña?
- </text>
- <text name="login_help">
- ¿Necesitas ayuda para conectarte?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
deleted file mode 100644
index e8e95c3bac..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/>
- <pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
- <button name="home_btn" tool_tip="Teleportar a mi Base"/>
- <location_input label="Localización" name="location_combo"/>
- <search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar">
- <combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
- <label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
- Barra de Favoritos
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml
deleted file mode 100644
index a06f3010d7..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Gente" name="people_panel">
- <string name="no_recent_people" value="No hay gente reciente. ¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación."/>
- <string name="no_filtered_recent_people" value="No hay gente reciente con ese nombre."/>
- <string name="no_one_near" value="No hay nadie cerca. ¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación."/>
- <string name="no_one_filtered_near" value="No hay nadie cerca con ese nombre."/>
- <string name="no_friends_online" value="No hay amigos conectados"/>
- <string name="no_friends" value="No hay amigos"/>
- <string name="no_friends_msg">
- Haz clic con el botón derecho del ratón en un residente para agregarlo como amigo.
-¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación.
- </string>
- <string name="no_filtered_friends_msg">
- ¿No encuentras lo que buscas? Prueba con el botón Destinos que aparece a continuación.
- </string>
- <string name="people_filter_label" value="Filtrar a la gente"/>
- <string name="groups_filter_label" value="Filtrar a los grupos"/>
- <string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
- <string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
- <string name="MiniMapToolTipMsg" value="[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGIÓN](Haz doble clic para teleportarte y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)"/>
- <filter_editor label="Filtrar" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="CERCANA" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MIS AMIGOS" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Conectado"/>
- <accordion_tab name="tab_all" title="Todos"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="RECIENTE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Llamar al grupo" name="group_call_btn" tool_tip="Llama a este grupo"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 775e343dc9..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Panel lateral"/>
- <button name="undock" tool_tip="Soltar"/>
- <button name="dock" tool_tip="Fijar"/>
- <button name="show_help" tool_tip="Ver ayuda"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml b/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
deleted file mode 100644
index f3db35e8ec..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Pérdida de paquetes
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Ancho de banda
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
- <combo_box.item label="Modo Básico" name="Basic"/>
- <combo_box.item label="Modo Avanzado" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Iniciar/Parar todos los media (música, vídeo, páginas web)"/>
- <button name="volume_btn" tool_tip="Control general del volumen"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_camera.xml b/indra/newview/skins/minimal/xui/fr/floater_camera.xml
deleted file mode 100644
index 1d62a89ff2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- Faire tourner la caméra autour du point central
- </floater.string>
- <floater.string name="zoom_tooltip">
- Zoomer en direction du point central
- </floater.string>
- <floater.string name="move_tooltip">
- Déplacer la caméra vers le haut et le bas, la gauche et la droite
- </floater.string>
- <floater.string name="camera_modes_title">
- Modes
- </floater.string>
- <floater.string name="pan_mode_title">
- Rotation - Zoom - Panoramique
- </floater.string>
- <floater.string name="presets_mode_title">
- Préréglages
- </floater.string>
- <floater.string name="free_mode_title">
- Voir l&apos;objet
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Vue frontale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Vue latérale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Vue arrière
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Vue de l&apos;objet
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Vue subjective
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Zoomer en direction du point central">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Faire tourner la caméra autour du point central"/>
- <slider_bar name="zoom_slider" tool_tip="Zoomer en direction du point central"/>
- <joystick_track name="cam_track_stick" tool_tip="Déplacer la caméra vers le haut et le bas, la gauche et la droite"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Préréglages"/>
- <button label="" name="pan_btn" tool_tip="Rotation - Zoom - Panoramique"/>
- <button label="" name="avatarview_btn" tool_tip="Modes"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
deleted file mode 100644
index 09d763b809..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="AIDE RAPIDE">
- <floater.string name="loading_text">
- Chargement…
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
deleted file mode 100644
index ba171c6363..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVIGATEUR DE MÉDIAS">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Préc." name="back"/>
- <button label="Suiv." name="forward"/>
- <button label="Recharger" name="reload"/>
- <button label="OK" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="retour" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="avance" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Envoyer la page actuelle à la parcelle" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Ouvrir dans mon navigateur Web" name="open_browser"/>
- <check_box label="Toujours ouvrir dans mon navigateur Web" name="open_always"/>
- <button label="Fermer" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
deleted file mode 100644
index 9b1b21c434..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT PRÈS DE MOI">
- <check_box label="Traduction du chat (fournie par Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml b/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
deleted file mode 100644
index 71f44b6ec3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Précédente"/>
- <button name="forward" tool_tip="Suivante"/>
- <button name="stop" tool_tip="Arrêter"/>
- <button name="reload" tool_tip="Recharger la page"/>
- <combo_box name="address" tool_tip="Saisir une URL ici"/>
- <icon name="media_secure_lock_flag" tool_tip="Navigation sécurisée"/>
- <button name="popexternal" tool_tip="Ouvrir l&apos;URL actuelle dans votre navigateur de bureau"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml b/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
deleted file mode 100644
index 553646f8e9..0000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_subtitle" value="11 mois, 3 jours"/>
- <text name="user_details">
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
- <button label="Devenir amis" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Désactiver le chat vocal" name="disable_voice"/>
- <button label="Activer le chat vocal" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_object.xml b/indra/newview/skins/minimal/xui/fr/inspect_object.xml
deleted file mode 100644
index b66af7a2bf..0000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Par [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- De [CREATOR]
-Propriétaire [OWNER]
- </string>
- <string name="Price">
- [AMOUNT] L$
- </string>
- <string name="PriceFree">
- Gratuit !
- </string>
- <string name="Touch">
- Toucher
- </string>
- <string name="Sit">
- M&apos;asseoir
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="object_creator">
- par secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text name="price_text">
- 30 000 L$
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <text name="object_media_url">
- http://www.superdupertest.com
- </text>
- <button label="Acheter" name="buy_btn"/>
- <button label="Payer" name="pay_btn"/>
- <button label="Prendre une copie" name="take_free_copy_btn"/>
- <button label="Toucher" name="touch_btn"/>
- <button label="M&apos;asseoir" name="sit_btn"/>
- <button label="Ouvert" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Navigation sécurisée"/>
- <button label="Plus" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
deleted file mode 100644
index 7e7993175e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Trier en commençant par le plus récent" name="sort_by_most_recent"/>
- <menu_item_check label="Trier par nom" name="sort_by_name"/>
- <menu_item_check label="Trier par type" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
deleted file mode 100644
index f48513eb2b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Voir le profil" name="Profile..."/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Inviter dans le groupe" name="Invite..."/>
- <menu_item_call label="Ignorer" name="Avatar Mute"/>
- <menu_item_call label="Signaler" name="abuse"/>
- <menu_item_call label="Figer" name="Freeze..."/>
- <menu_item_call label="Expulser" name="Eject..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
- <menu_item_call label="Zoomer en avant" name="Zoom In"/>
- <menu_item_call label="Payer" name="Pay..."/>
- <menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
deleted file mode 100644
index 78198fb5a8..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Toucher" name="Attachment Object Touch"/>
- <menu_item_call label="Modifier" name="Edit..."/>
- <menu_item_call label="Détacher" name="Detach"/>
- <menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
- <menu_item_call label="Me lever" name="Stand Up"/>
- <menu_item_call label="Changer de tenue" name="Change Outfit"/>
- <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
- <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
- <menu_item_call label="Mes amis" name="Friends..."/>
- <menu_item_call label="Mes groupes" name="Groups..."/>
- <menu_item_call label="Mon profil" name="Profile..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
- <menu_item_call label="Lâcher" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
deleted file mode 100644
index 3bac25c79b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Voir le profil" name="Show Profile"/>
- <menu_item_call label="Envoyer IM..." name="Send IM"/>
- <menu_item_call label="Devenir amis..." name="Add Friend"/>
- <menu_item_call label="Supprimer cet ami..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
deleted file mode 100644
index 08d1a20361..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Voir le profil" name="Profile..."/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Inviter dans le groupe" name="Invite..."/>
- <menu_item_call label="Ignorer" name="Avatar Mute"/>
- <menu_item_call label="Signaler" name="abuse"/>
- <menu_item_call label="Figer" name="Freeze..."/>
- <menu_item_call label="Expulser" name="Eject..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
- <menu_item_call label="Zoomer en avant" name="Zoom In"/>
- <menu_item_call label="Payer" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
deleted file mode 100644
index c7ee2e9f88..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
- <menu_item_call label="Me lever" name="Stand Up"/>
- <context_menu label="Enlever" name="Take Off &gt;">
- <context_menu label="Habits" name="Clothes &gt;">
- <menu_item_call label="Chemise" name="Shirt"/>
- <menu_item_call label="Pantalon" name="Pants"/>
- <menu_item_call label="Jupe" name="Skirt"/>
- <menu_item_call label="Chaussures" name="Shoes"/>
- <menu_item_call label="Chaussettes" name="Socks"/>
- <menu_item_call label="Veste" name="Jacket"/>
- <menu_item_call label="Gants" name="Gloves"/>
- <menu_item_call label="Débardeur" name="Self Undershirt"/>
- <menu_item_call label="Caleçon" name="Self Underpants"/>
- <menu_item_call label="Tatouage" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Tous les habits" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Détacher" name="Object Detach"/>
- <menu_item_call label="Tout détacher" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Changer de tenue" name="Chenge Outfit"/>
- <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
- <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
- <menu_item_call label="Mes amis" name="Friends..."/>
- <menu_item_call label="Mes groupes" name="Groups..."/>
- <menu_item_call label="Mon profil" name="Profile..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
deleted file mode 100644
index bfdc89c5bb..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Bouton Geste" name="ShowGestureButton"/>
- <menu_item_check label="Bouton Bouger" name="ShowMoveButton"/>
- <menu_item_check label="Bouton Affichage" name="ShowCameraButton"/>
- <menu_item_check label="Bouton Photo" name="ShowSnapshotButton"/>
- <menu_item_check label="Bouton Panneau latéral" name="ShowSidebarButton"/>
- <menu_item_check label="Bouton Construire" name="ShowBuildButton"/>
- <menu_item_check label="Bouton Rechercher" name="ShowSearchButton"/>
- <menu_item_check label="Bouton Carte" name="ShowWorldMapButton"/>
- <menu_item_check label="Bouton Mini-carte" name="ShowMiniMapButton"/>
- <menu_item_call label="Couper" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copier" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Coller" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Supprimer" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Tout sélectionner" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
deleted file mode 100644
index a4ead48b6b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Détacher" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
deleted file mode 100644
index 4b6907fcc6..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Remplacer" name="replace"/>
- <menu_item_call label="Modifier" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
deleted file mode 100644
index 03cc569704..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Enlever" name="take_off"/>
- <menu_item_call label="Modifier" name="edit"/>
- <menu_item_call label="Remplacer" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
deleted file mode 100644
index 8276d57025..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nouveaux habits" name="COF.Gear.New_Clothes"/>
- <menu label="Nouvelles parties du corps" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_edit.xml b/indra/newview/skins/minimal/xui/fr/menu_edit.xml
deleted file mode 100644
index 56669f31e1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Modifier" name="Edit">
- <menu_item_call label="Annuler" name="Undo"/>
- <menu_item_call label="Refaire" name="Redo"/>
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Dupliquer" name="Duplicate"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
- <menu_item_call label="Désélectionner" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml b/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
deleted file mode 100644
index 5f1545fde7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Téléporter" name="Teleport To Landmark"/>
- <menu_item_call label="Voir/Modifier le repère" name="Landmark Open"/>
- <menu_item_call label="Copier la SLurl" name="Copy slurl"/>
- <menu_item_call label="Voir sur la carte" name="Show On Map"/>
- <menu_item_call label="Copier" name="Landmark Copy"/>
- <menu_item_call label="Coller" name="Landmark Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
deleted file mode 100644
index 062dd0f005..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Ajouter/Supprimer des favoris" name="activate"/>
- <menu_item_call label="Copier" name="copy_gesture"/>
- <menu_item_call label="Coller" name="paste"/>
- <menu_item_call label="Copier l&apos;UUID" name="copy_uuid"/>
- <menu_item_call label="Enregistrer dans la tenue actuelle" name="save_to_outfit"/>
- <menu_item_call label="Modifier" name="edit_gesture"/>
- <menu_item_call label="Inspecter" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
deleted file mode 100644
index 0db5afedc7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Rejoindre des groupes..." name="item_join"/>
- <menu_item_call label="Nouveau groupe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
deleted file mode 100644
index 20af901ddc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Afficher la mini-barre d&apos;emplacement" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
deleted file mode 100644
index 8ef1529e6b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Tout fermer" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4d9a103058..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
deleted file mode 100644
index 59f97d8b48..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Profil du groupe" name="Show Profile"/>
- <menu_item_call label="Afficher la session" name="Chat"/>
- <menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
deleted file mode 100644
index ecc8cee413..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Voir le profil" name="Show Profile"/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="Afficher la session" name="Send IM"/>
- <menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
deleted file mode 100644
index c3240fa541..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Voir le profil" name="view_profile"/>
- <menu_item_call label="Devenir amis" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Appeler" name="call"/>
- <menu_item_call label="Téléporter" name="teleport"/>
- <menu_item_call label="Ignorer" name="block"/>
- <menu_item_call label="Ne plus ignorer" name="unblock"/>
- <menu_item_call label="Signaler" name="report"/>
- <menu_item_call label="Figer" name="freeze"/>
- <menu_item_call label="Expulser" name="eject"/>
- <menu_item_call label="Éjecter" name="kick"/>
- <menu_item_call label="Représentant de l&apos;Assistance client" name="csr"/>
- <menu_item_call label="Déboguer les textures" name="debug"/>
- <menu_item_call label="Situer sur la carte" name="find_on_map"/>
- <menu_item_call label="Zoomer en avant" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
deleted file mode 100644
index 074bb54cdc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Toucher" name="touch"/>
- <menu_item_call label="M&apos;asseoir" name="sit"/>
- <menu_item_call label="Payer" name="pay"/>
- <menu_item_call label="Acheter" name="buy"/>
- <menu_item_call label="Prendre" name="take"/>
- <menu_item_call label="Prendre une copie" name="take_copy"/>
- <menu_item_call label="Ouvrir" name="open"/>
- <menu_item_call label="Modifier" name="edit"/>
- <menu_item_call label="Porter" name="wear"/>
- <menu_item_call label="Ajouter" name="add"/>
- <menu_item_call label="Signaler" name="report"/>
- <menu_item_call label="Ignorer" name="block"/>
- <menu_item_call label="Zoomer en avant" name="zoom_in"/>
- <menu_item_call label="Supprimer" name="remove"/>
- <menu_item_call label="En savoir plus" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
deleted file mode 100644
index fd48aa4f7d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
- <menu_item_call label="Me lever" name="Stand Up"/>
- <menu_item_call label="Mes amis" name="Friends..."/>
- <menu_item_call label="Mon profil" name="Profile..."/>
- <menu_item_call label="Déboguer les textures" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
deleted file mode 100644
index a9b2883cca..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Fermer" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
deleted file mode 100644
index a2279cf0ac..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Acheter" name="Task Buy"/>
- <menu_item_call label="Ouvrir" name="Task Open"/>
- <menu_item_call label="Jouer" name="Task Play"/>
- <menu_item_call label="Propriétés" name="Task Properties"/>
- <menu_item_call label="Renommer" name="Task Rename"/>
- <menu_item_call label="Supprimer" name="Task Remove"/>
- <menu_item_call label="Vider la corbeille" name="Empty Trash"/>
- <menu_item_call label="Vider les objets trouvés" name="Empty Lost And Found"/>
- <menu_item_call label="Nouveau dossier" name="New Folder"/>
- <menu_item_call label="Nouveau script" name="New Script"/>
- <menu_item_call label="Nouvelle note" name="New Note"/>
- <menu_item_call label="Nouveau geste" name="New Gesture"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
- <menu_item_call label="Nouveau caleçon" name="New Underpants"/>
- <menu_item_call label="Nouveau masque alpha" name="New Alpha Mask"/>
- <menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
- <menu label="Changer de type" name="Change Type">
- <menu_item_call label="Défaut" name="Default"/>
- <menu_item_call label="Gants" name="Gloves"/>
- <menu_item_call label="Veste" name="Jacket"/>
- <menu_item_call label="Pantalon" name="Pants"/>
- <menu_item_call label="Silhouette" name="Shape"/>
- <menu_item_call label="Chaussures" name="Shoes"/>
- <menu_item_call label="Chemise" name="Shirt"/>
- <menu_item_call label="Jupe" name="Skirt"/>
- <menu_item_call label="Caleçon" name="Underpants"/>
- <menu_item_call label="Débardeur" name="Undershirt"/>
- </menu>
- <menu_item_call label="Téléporter" name="Landmark Open"/>
- <menu_item_call label="Ouvrir" name="Animation Open"/>
- <menu_item_call label="Ouvrir" name="Sound Open"/>
- <menu_item_call label="Remplacer la tenue actuelle" name="Replace Outfit"/>
- <menu_item_call label="Ajouter à la tenue actuelle" name="Add To Outfit"/>
- <menu_item_call label="Enlever de la tenue actuelle" name="Remove From Outfit"/>
- <menu_item_call label="Trouver l&apos;original" name="Find Original"/>
- <menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
- <menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
- <menu_item_call label="Ouvrir" name="Open"/>
- <menu_item_call label="Ouvrir l&apos;original" name="Open Original"/>
- <menu_item_call label="Propriétés" name="Properties"/>
- <menu_item_call label="Renommer" name="Rename"/>
- <menu_item_call label="Copier l&apos;UUID (identifiant universel unique)" name="Copy Asset UUID"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Coller comme lien" name="Paste As Link"/>
- <menu_item_call label="Supprimer" name="Remove Link"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
- <menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
- <menu_item_call label="Jouer" name="Sound Play"/>
- <menu_item_call label="À propos du repère" name="About Landmark"/>
- <menu_item_call label="Jouer dans Second Life" name="Animation Play"/>
- <menu_item_call label="Jouer localement" name="Animation Audition"/>
- <menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
- <menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
- <menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
- <menu_item_call label="Activer" name="Activate"/>
- <menu_item_call label="Désactiver" name="Deactivate"/>
- <menu_item_call label="Enregistrer sous" name="Save As"/>
- <menu_item_call label="Détacher de vous" name="Detach From Yourself"/>
- <menu_item_call label="Porter" name="Wearable And Object Wear"/>
- <menu label="Attacher à" name="Attach To"/>
- <menu label="Attacher au HUD " name="Attach To HUD"/>
- <menu_item_call label="Modifier" name="Wearable Edit"/>
- <menu_item_call label="Ajouter" name="Wearable Add"/>
- <menu_item_call label="Enlever" name="Take Off"/>
- <menu_item_call label="--aucune option--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
deleted file mode 100644
index fe096b4a7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Importer" name="upload">
- <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/>
- <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/>
- <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
- <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/>
- <menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nouveau dossier" name="New Folder"/>
- <menu_item_call label="Nouveau script" name="New Script"/>
- <menu_item_call label="Nouvelle note" name="New Note"/>
- <menu_item_call label="Nouveau geste" name="New Gesture"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
- <menu_item_call label="Nouveau caleçon" name="New Underpants"/>
- <menu_item_call label="Nouvel alpha" name="New Alpha"/>
- <menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
deleted file mode 100644
index f28918ae14..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nouvelle fenêtre d&apos;inventaire" name="new_window"/>
- <menu_item_check label="Trier par nom" name="sort_by_name"/>
- <menu_item_check label="Trier en commençant par le plus récent" name="sort_by_recent"/>
- <menu_item_check label="Dossiers système en premier" name="sort_system_folders_to_top"/>
- <menu_item_call label="Afficher les filtres" name="show_filters"/>
- <menu_item_call label="Réinitialiser les filtres" name="reset_filters"/>
- <menu_item_call label="Fermer tous les dossiers" name="close_folders"/>
- <menu_item_call label="Vider les objets trouvés" name="empty_lostnfound"/>
- <menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Trouver l&apos;original" name="Find Original"/>
- <menu_item_call label="Trouver tous les liens" name="Find All Links"/>
- <menu_item_call label="Vider la corbeille" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_land.xml b/indra/newview/skins/minimal/xui/fr/menu_land.xml
deleted file mode 100644
index b84daee3ae..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="À propos du terrain" name="Place Information..."/>
- <menu_item_call label="M&apos;asseoir ici" name="Sit Here"/>
- <menu_item_call label="Acheter ce terrain" name="Land Buy"/>
- <menu_item_call label="Acheter un pass" name="Land Buy Pass"/>
- <menu_item_call label="Construire" name="Create"/>
- <menu_item_call label="Modifier le terrain" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
deleted file mode 100644
index 73eaa4af7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copier la SLurl" name="copy"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Créer un favori" name="pick"/>
- <menu_item_call label="Ajouter à la barre des favoris" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_login.xml b/indra/newview/skins/minimal/xui/fr/menu_login.xml
deleted file mode 100644
index 400c77e51a..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Moi" name="File">
- <menu_item_call label="Préférences" name="Preferences..."/>
- <menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Aide" name="Help">
- <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Afficher le menu de débogage" name="Show Debug Menu"/>
- <menu label="Débogage" name="Debug">
- <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/>
- <menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/>
- <menu_item_call label="Outil d&apos;aperçu XUI" name="UI Preview Tool"/>
- <menu label="Tests de l&apos;interface" name="UI Tests"/>
- <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/>
- <menu_item_call label="Afficher les conditions d&apos;utilisation" name="TOS"/>
- <menu_item_call label="Afficher le message critique" name="Critical"/>
- <menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
- <menu_item_call label="Test de la fenêtre flottante du contenu Web" name="Web Content Floater Test"/>
- <menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/>
- <menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml b/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
deleted file mode 100644
index b9d0a70383..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom rapproché" name="Zoom Close"/>
- <menu_item_call label="Zoom moyen" name="Zoom Medium"/>
- <menu_item_call label="Zoom éloigné" name="Zoom Far"/>
- <menu_item_call label="Zoom par défaut" name="Zoom Default"/>
- <menu_item_check label="Faire pivoter la carte" name="Rotate Map"/>
- <menu_item_check label="Centrage auto" name="Auto Center"/>
- <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/>
- <menu_item_call label="Carte du monde" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
deleted file mode 100644
index 08d810b653..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Voir les coordonnées" name="Show Coordinates"/>
- <menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/>
- <menu_item_call label="Repère" name="Landmark"/>
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
deleted file mode 100644
index 99e22aeff7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Afficher les personnes près de vous..." name="nearby_people"/>
- <menu_item_check label="Afficher le texte ignoré" name="muted_text"/>
- <menu_item_check label="Afficher les icônes des Buddy" name="show_buddy_icons"/>
- <menu_item_check label="Afficher les noms" name="show_names"/>
- <menu_item_check label="Afficher les icônes et les noms" name="show_icons_and_names"/>
- <menu_item_call label="Taille de la police" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
deleted file mode 100644
index 323bfdbf16..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Tout fermer" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object.xml b/indra/newview/skins/minimal/xui/fr/menu_object.xml
deleted file mode 100644
index a50a9df4b1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Toucher" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Toucher"/>
- </menu_item_call>
- <menu_item_call label="Modifier" name="Edit..."/>
- <menu_item_call label="Construire" name="Build"/>
- <menu_item_call label="Ouvrir" name="Open"/>
- <menu_item_call label="M&apos;asseoir ici" name="Object Sit"/>
- <menu_item_call label="Me lever" name="Object Stand Up"/>
- <menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
- <menu_item_call label="Zoomer en avant" name="Zoom In"/>
- <context_menu label="Porter" name="Put On">
- <menu_item_call label="Porter" name="Wear"/>
- <menu_item_call label="Ajouter" name="Add"/>
- <context_menu label="Attacher" name="Object Attach"/>
- <context_menu label="Attacher HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Supprimer" name="Remove">
- <menu_item_call label="Signaler une infraction" name="Report Abuse..."/>
- <menu_item_call label="Ignorer" name="Object Mute"/>
- <menu_item_call label="Retour" name="Return..."/>
- <menu_item_call label="Supprimer" name="Delete"/>
- </context_menu>
- <menu_item_call label="Prendre" name="Pie Object Take"/>
- <menu_item_call label="Prendre une copie" name="Take Copy"/>
- <menu_item_call label="Payer" name="Pay..."/>
- <menu_item_call label="Acheter" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
deleted file mode 100644
index 69f8e88a0d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Profil de l&apos;objet..." name="Object Profile"/>
- <menu_item_call label="Ignorer..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
deleted file mode 100644
index 5db7f176b5..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear"/>
- <menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
- <menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
- <menu_item_call label="Nouveau caleçon" name="New Underpants"/>
- <menu_item_call label="Nouvel alpha" name="New Alpha"/>
- <menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
- <menu_item_call label="Renommer la tenue" name="rename"/>
- <menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
deleted file mode 100644
index 2a7f618e07..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear_replace"/>
- <menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
- <menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
- <menu_item_call label="Modifier la tenue" name="edit"/>
- <menu_item_call label="Renommer la tenue" name="rename"/>
- <menu_item_call label="Supprimer la tenue" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml b/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
deleted file mode 100644
index f91a30f6bb..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Trier par nom" name="SortByName"/>
- <menu_item_check label="Trier par intervenants récents" name="SortByRecentSpeakers"/>
- <menu_item_call label="Voir le profil" name="View Profile"/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Payer" name="Pay"/>
- <menu_item_check label="Afficher les icônes des résidents" name="View Icons"/>
- <menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
- <menu_item_check label="Ignorer le texte" name="MuteText"/>
- <context_menu label="Options du modérateur" name="Moderator Options">
- <menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
- <menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Ignorer les autres" name="ModerateVoiceMute"/>
- <menu_item_call label="Ne plus ignorer les autres" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
deleted file mode 100644
index a6170a6c16..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Trier par nom" name="sort_name"/>
- <menu_item_check label="Trier par statut" name="sort_status"/>
- <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
- <menu_item_check label="Afficher les droits octroyés" name="view_permissions"/>
- <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
deleted file mode 100644
index eb51b4cf7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Afficher les infos" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Activer" name="Activate"/>
- <menu_item_call label="Quitter" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
deleted file mode 100644
index 34f949cf2c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Afficher les icônes des groupes" name="Display Group Icons"/>
- <menu_item_call label="Quitter le groupe sélectionné" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
deleted file mode 100644
index f153ed15ae..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Voir le profil" name="View Profile"/>
- <menu_item_call label="Devenir amis" name="Add Friend"/>
- <menu_item_call label="Supprimer cet ami" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Carte" name="Map"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Payer" name="Pay"/>
- <menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
- <menu_item_call label="Téléporter" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 8400ec0a14..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Devenir amis" name="Add Friends"/>
- <menu_item_call label="Supprimer des amis" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Appeler" name="Call"/>
- <menu_item_call label="Partager" name="Share"/>
- <menu_item_call label="Payer" name="Pay"/>
- <menu_item_call label="Proposer une téléportation" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 45f97e062e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/>
- <menu_item_check label="Trier par nom" name="sort_name"/>
- <menu_item_check label="Trier par distance" name="sort_distance"/>
- <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
- <menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
deleted file mode 100644
index 93b90ae61c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Trier en commençant par le plus récent" name="sort_most"/>
- <menu_item_check label="Trier par nom" name="sort_name"/>
- <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
- <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks.xml b/indra/newview/skins/minimal/xui/fr/menu_picks.xml
deleted file mode 100644
index 7d7174d43c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Infos" name="pick_info"/>
- <menu_item_call label="Modifier" name="pick_edit"/>
- <menu_item_call label="Téléporter" name="pick_teleport"/>
- <menu_item_call label="Carte" name="pick_map"/>
- <menu_item_call label="Supprimer" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
deleted file mode 100644
index b6cde6d6e2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Nouveau favori" name="create_pick"/>
- <menu_item_call label="Nouvelle petite annonce" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place.xml b/indra/newview/skins/minimal/xui/fr/menu_place.xml
deleted file mode 100644
index 6b0f4db752..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Enregistrer comme repère" name="landmark"/>
- <menu_item_call label="Créer un favori" name="pick"/>
- <menu_item_call label="Acheter un pass" name="pass"/>
- <menu_item_call label="Modifier" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
deleted file mode 100644
index 92f9e7719d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Ajouter un dossier" name="add_folder"/>
- <menu_item_call label="Ajouter un repère" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
deleted file mode 100644
index 3570bdec7f..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Ajouter un repère" name="add_landmark"/>
- <menu_item_call label="Ajouter un dossier" name="add_folder"/>
- <menu_item_call label="Couper" name="cut"/>
- <menu_item_call label="Copier" name="copy_folder"/>
- <menu_item_call label="Coller" name="paste"/>
- <menu_item_call label="Renommer" name="rename"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Agrandir" name="expand"/>
- <menu_item_call label="Réduire" name="collapse"/>
- <menu_item_call label="Développer tous les dossiers" name="expand_all"/>
- <menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
- <menu_item_check label="Trier par date" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
deleted file mode 100644
index 5491c1b3fc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Téléporter" name="teleport"/>
- <menu_item_call label="Plus d&apos;informations" name="more_info"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Ajouter un repère" name="add_landmark"/>
- <menu_item_call label="Ajouter un dossier" name="add_folder"/>
- <menu_item_call label="Couper" name="cut"/>
- <menu_item_call label="Copier le repère" name="copy_landmark"/>
- <menu_item_call label="Copier la SLurl" name="copy_slurl"/>
- <menu_item_call label="Coller" name="paste"/>
- <menu_item_call label="Renommer" name="rename"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Développer tous les dossiers" name="expand_all"/>
- <menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
- <menu_item_check label="Trier par date" name="sort_by_date"/>
- <menu_item_call label="Créer un favori" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
deleted file mode 100644
index ddf898b791..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Carte" name="show_on_map"/>
- <menu_item_call label="Payer" name="pay"/>
- <menu_item_call label="Partager" name="share"/>
- <menu_item_call label="Ignorer" name="block"/>
- <menu_item_call label="Ne plus ignorer" name="unblock"/>
- <menu_item_call label="Éjecter" name="kick"/>
- <menu_item_call label="Figer" name="freeze"/>
- <menu_item_call label="Libérer" name="unfreeze"/>
- <menu_item_call label="Représentant du service consommateur" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
deleted file mode 100644
index f78db411b3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Enregistrer" name="save_outfit"/>
- <menu_item_call label="Enregistrer sous" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
deleted file mode 100644
index 46efa30bd6..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Fermer" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
deleted file mode 100644
index ddfa5c0849..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="À propos de l&apos;URL" name="about_url"/>
- <menu_item_call label="Téléporter vers l&apos;URL" name="teleport_to_url"/>
- <menu_item_call label="Carte" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
deleted file mode 100644
index 3dea662cc2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Développer tous les dossiers" name="Expand all folders"/>
- <menu_item_call label="Réduire tous les dossiers" name="Collapse all folders"/>
- <menu_item_call label="Effacer l&apos;historique des téléportations" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
deleted file mode 100644
index fb4582dbce..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Téléporter" name="Teleport"/>
- <menu_item_call label="Plus d&apos;informations" name="More Information"/>
- <menu_item_call label="Copier dans le presse-papiers" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
deleted file mode 100644
index 369680985d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Ouvrir" name="TabOpen"/>
- <menu_item_call label="Fermer" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml b/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
deleted file mode 100644
index b6f429aec9..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
deleted file mode 100644
index dc68f40fe7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Afficher les coordonnées" name="Show Coordinates"/>
- <menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/>
- <menu_item_call label="Repère" name="Landmark"/>
- <menu_item_call label="Copier" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml b/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
deleted file mode 100644
index 5ed627fbc3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir le profil du résident" name="show_agent"/>
- <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml b/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
deleted file mode 100644
index de90c3ff7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir le profil du groupe" name="show_group"/>
- <menu_item_call label="Copier le groupe dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml b/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
deleted file mode 100644
index 5e96352999..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ouvrir la page Web" name="url_open"/>
- <menu_item_call label="Ouvrir dans un navigateur interne" name="url_open_internal"/>
- <menu_item_call label="Ouvrir dans un navigateur externe" name="url_open_external"/>
- <menu_item_call label="Copier l&apos;URL dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
deleted file mode 100644
index 8ab88b4be7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher l&apos;article d&apos;inventaire" name="show_item"/>
- <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml b/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
deleted file mode 100644
index 67e6986f5d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
deleted file mode 100644
index f581c3ef9d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Me téléporter à l&apos;emplacement de l&apos;objet" name="teleport_to_object"/>
- <menu_item_call label="Copier le nom de l&apos;objet dans le presse-papiers" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
deleted file mode 100644
index 07b0eeca49..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur la parcelle" name="show_parcel"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
deleted file mode 100644
index f4b7e212ca..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Exécuter cette commande" name="run_slapp"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
deleted file mode 100644
index e44943cf15..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur ce lieu" name="show_place"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
deleted file mode 100644
index a5075a2740..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Me téléporter à cet endroit." name="teleport"/>
- <menu_item_call label="Voir sur la carte" name="show_on_map"/>
- <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml b/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
deleted file mode 100644
index bd1c077f52..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Aide" name="Help">
- <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
- </menu>
- <menu label="Avancé" name="Advanced">
- <menu label="Raccourcis" name="Shortcuts">
- <menu_item_check label="Voler" name="Fly"/>
- <menu_item_call label="Fermer la fenêtre" name="Close Window"/>
- <menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/>
- <menu_item_call label="Réinitialiser la vue" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
deleted file mode 100644
index 187cb4bcd2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Remplacer" name="wear_replace"/>
- <menu_item_call label="Porter" name="wear_wear"/>
- <menu_item_call label="Ajouter" name="wear_add"/>
- <menu_item_call label="Enlever / Détacher" name="take_off_or_detach"/>
- <menu_item_call label="Détacher" name="detach"/>
- <context_menu label="Attacher à" name="wearable_attach_to"/>
- <context_menu label="Attacher au HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Enlever" name="take_off"/>
- <menu_item_call label="Modifier" name="edit"/>
- <menu_item_call label="Profil de l&apos;article" name="object_profile"/>
- <menu_item_call label="Afficher l&apos;original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
deleted file mode 100644
index 0ca9fe1879..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Modifier la tenue" name="edit"/>
- <menu_item_call label="Enlever" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
deleted file mode 100644
index 4d88445506..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Enlever" name="take_off"/>
- <menu_item_call label="Détacher" name="detach"/>
- <menu_item_call label="Modifier la tenue" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/notifications.xml b/indra/newview/skins/minimal/xui/fr/notifications.xml
deleted file mode 100644
index 05fa03cdc1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] vous offre [ITEM_SLURL]. Pour utiliser cet article, vous devez passer en mode Avancé. L&apos;article se trouve dans votre inventaire. Pour changer de mode, quittez l&apos;application, redémarrez-la, puis sélectionnez un autre mode sur l&apos;écran de connexion.
- <form name="form">
- <button name="Show" text="Garder l&apos;article"/>
- <button name="Discard" text="Refuser l&apos;article"/>
- <button name="Mute" text="Ignorer l&apos;utilisateur"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Un objet nommé &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; appartenant à [NAME_SLURL] vous offre &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Pour utiliser cet article, vous devez passer en mode Avancé. L&apos;article se trouve dans votre inventaire. Pour changer de mode, quittez l&apos;application, redémarrez-la, puis sélectionnez un autre mode sur l&apos;écran de connexion.
- <form name="form">
- <button name="Keep" text="Garder l&apos;article"/>
- <button name="Discard" text="Refuser l&apos;article"/>
- <button name="Mute" text="Ignorer l&apos;objet"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
deleted file mode 100644
index 376a7d2b72..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Appeler" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Quitter l&apos;appel" name="end_call_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
deleted file mode 100644
index 094d3e66de..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Active/Désactive le micro"/>
- <string name="VoiceControlBtnToolTip" value="Affiche/Masque le panneau de contrôle de la voix"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Parler" name="speak_btn" tool_tip="Activer/désactiver le micro."/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Modifier les préférences audio."/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Geste" name="Gesture" tool_tip="Faire faire des gestes à votre avatar."/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Affichage" name="camera_btn" tool_tip="Contrôler l&apos;angle de la caméra."/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinations" name="destination_btn" tool_tip="Voyager à travers Second Life."/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Mon avatar" name="avatar_btn" tool_tip="Modifier votre apparence."/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Personnes" name="show_people_button" tool_tip="Trouver des personnes dans Second Life."/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Afficher et modifier votre profil."/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Aide rapide" name="show_help_btn" tool_tip="Afficher des infos d&apos;aide sur Second Life."/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversations"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notifications"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
deleted file mode 100644
index 676fa1d222..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Quitter l&apos;appel" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Ouvrir contrôles vocaux" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
deleted file mode 100644
index 1643cf3229..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Devenir amis" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne."/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Appeler" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Quitter l&apos;appel" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Ignorer" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Ne plus ignorer" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volume de l&apos;appel." value="0,5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_login.xml b/indra/newview/skins/minimal/xui/fr/panel_login.xml
deleted file mode 100644
index 0869778a54..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://fr.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=fr
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nom d&apos;utilisateur :
- </text>
- <combo_box name="username_combo" tool_tip="Nom d&apos;utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/>
- <text name="password_text">
- Mot de passe :
- </text>
- <check_box label="Enregistrer" name="remember_check"/>
- <button label="Connexion" name="connect_btn"/>
- <text name="mode_selection_text">
- Mode :
- </text>
- <combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
- <combo_box.item label="Basique" name="Basic"/>
- <combo_box.item label="Avancé" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- S&apos;inscrire
- </text>
- <text name="forgot_password_text">
- Nom d&apos;utilisateur ou mot de passe oublié ?
- </text>
- <text name="login_help">
- Besoin d&apos;aide ?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
deleted file mode 100644
index 45caf2323d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
- <pull_button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
- <button name="home_btn" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
- <location_input label="Emplacement" name="location_combo"/>
- <search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher">
- <combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
- Favoris
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml
deleted file mode 100644
index 427a420b91..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Résidents" name="people_panel">
- <string name="no_recent_people" value="Personne de récent. Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous."/>
- <string name="no_filtered_recent_people" value="Personne de récent portant ce nom."/>
- <string name="no_one_near" value="Personne près de vous. Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous."/>
- <string name="no_one_filtered_near" value="Personne près de vous portant ce nom."/>
- <string name="no_friends_online" value="Pas d&apos;amis connectés"/>
- <string name="no_friends" value="Pas d&apos;amis"/>
- <string name="no_friends_msg">
- Pour ajouter un résident à votre liste d&apos;amis, cliquez-droit dessus.
-Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous.
- </string>
- <string name="no_filtered_friends_msg">
- Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez avec le bouton Destinations ci-dessous.
- </string>
- <string name="people_filter_label" value="Filtrer les personnes"/>
- <string name="groups_filter_label" value="Filtrer les groupes"/>
- <string name="no_filtered_groups_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/groups/[SEARCH_TERM] Rechercher]."/>
- <string name="no_groups_msg" value="Vous souhaitez trouver des groupes à rejoindre ? Utilisez [secondlife:///app/search/groups Rechercher]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)"/>
- <filter_editor label="Filtre" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="PRÈS DE VOUS" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MES AMIS" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="En ligne"/>
- <accordion_tab name="tab_all" title="Tout"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis."/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="RÉCENT" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident."/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Profil du groupe" name="group_info_btn" tool_tip="Afficher les informations sur le groupe"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 45efbdc980..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Panneau latéral"/>
- <button name="undock" tool_tip="Détacher"/>
- <button name="dock" tool_tip="Attacher"/>
- <button name="show_help" tool_tip="Afficher l&apos;aide"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
deleted file mode 100644
index 9e814ee7ab..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Perte de paquets
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Bande passante
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
- <combo_box.item label="Mode basique" name="Basic"/>
- <combo_box.item label="Mode avancé" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)"/>
- <button name="volume_btn" tool_tip="Contrôle du volume global"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/floater_camera.xml b/indra/newview/skins/minimal/xui/it/floater_camera.xml
deleted file mode 100644
index 3fdf4f48a2..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Ruota la telecamera Intorno all&apos;Inquadratura
- </floater.string>
- <floater.string name="zoom_tooltip">
- Avvicina la telecamera nell&apos;inquadratura
- </floater.string>
- <floater.string name="move_tooltip">
- Muovi la telecamera su e giù e a sinistra e destra
- </floater.string>
- <floater.string name="camera_modes_title">
- Modalità della fotocamera
- </floater.string>
- <floater.string name="pan_mode_title">
- Ruota visuale - Ingrandisci - Panoramica
- </floater.string>
- <floater.string name="presets_mode_title">
- Visuali predefinite
- </floater.string>
- <floater.string name="free_mode_title">
- Vedi oggetto
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Visuale frontale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Visuale laterale
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Visuale posteriore
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Visuale oggetto
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Visuale soggettiva
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Avvicina la telecamera nell&apos;inquadratura">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al punto focale"/>
- <slider_bar name="zoom_slider" tool_tip="Zoom verso il centro focale"/>
- <joystick_track name="cam_track_stick" tool_tip="Sposta la visuale in su e in giù, a sinistra e a destra"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Visuali predefinite"/>
- <button label="" name="pan_btn" tool_tip="Ruota visuale - Ingrandisci - Panoramica"/>
- <button label="" name="avatarview_btn" tool_tip="Modalità della fotocamera"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml b/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
deleted file mode 100644
index 18264cdd17..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ISTRUZIONI">
- <floater.string name="loading_text">
- Caricamento in corso...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml b/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
deleted file mode 100644
index b1e87290d2..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="BROWSER MULTIMEDIA">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Indietro" name="back" width="75"/>
- <button label="Avanti" left_delta="75" name="forward" width="70"/>
- <button label="Ricarica" left_delta="75" name="reload"/>
- <combo_box left_delta="75" name="address" width="510"/>
- <button label="Vai" left_delta="515" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="indietro rapido" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="avanti" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Invia la pagina attuale al lotto" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Apri nel mio browser Web" name="open_browser"/>
- <check_box label="Apri sempre nel mio browser Web" name="open_always"/>
- <button label="Chiudi" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
deleted file mode 100644
index 4c41df8a62..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT NEI DINTORNI">
- <check_box label="Traduci chat (tecnologia Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_web_content.xml b/indra/newview/skins/minimal/xui/it/floater_web_content.xml
deleted file mode 100644
index 5603e85417..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Naviga indietro"/>
- <button name="forward" tool_tip="Naviga avanti"/>
- <button name="stop" tool_tip="Interrompi navigazione"/>
- <button name="reload" tool_tip="Ricarica pagina"/>
- <combo_box name="address" tool_tip="Inserisci URL qui"/>
- <icon name="media_secure_lock_flag" tool_tip="Navigazione sicura"/>
- <button name="popexternal" tool_tip="Apri URL corrente nel browser del computer"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml b/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
deleted file mode 100644
index 6f52aaef74..0000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_name_small" value="Grumpity ProductEngine con un nome lungo"/>
- <text name="user_slid" value="james.linden"/>
- <text name="user_details">
- Questa è la mia descrizione in second life e penso che sia perfetta. Ma per qualche motivo la mia descrizione è davvero molto lunga, perché mi piace parlare a lungo
- </text>
- <slider name="volume_slider" tool_tip="Volume voce" value="0.5"/>
- <button label="Aggiungi amico" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profilo" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Disattiva voce" name="disable_voice"/>
- <button label="Attiva voce" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/inspect_object.xml b/indra/newview/skins/minimal/xui/it/inspect_object.xml
deleted file mode 100644
index d8ab10cfda..0000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Di [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Di [CREATOR]
-Proprietario [OWNER]
- </string>
- <string name="Price">
- L$ [AMOUNT]
- </string>
- <string name="PriceFree">
- Gratis!
- </string>
- <string name="Touch">
- Tocca
- </string>
- <string name="Sit">
- Siediti
- </string>
- <text name="object_name" value="Nome oggetto di prova che si trova su due righe ed è molto lungo"/>
- <text name="price_text">
- L$ 30.000
- </text>
- <text name="object_description">
- Questa è una descrizione di un oggetto che è molto lunga ed è di almeno 80 caratteri, ma potrebbe essere di 120 caratteri a questo punto. Chi lo sa veramente?
- </text>
- <button label="Acquista" name="buy_btn"/>
- <button label="Paga" name="pay_btn"/>
- <button label="Prendi copia" name="take_free_copy_btn"/>
- <button label="Tocca" name="touch_btn"/>
- <button label="Siediti" name="sit_btn"/>
- <button label="Apri" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Browsing sicuro"/>
- <button label="Altro" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
deleted file mode 100644
index 46abd7deed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Mostra prima i più recenti" name="sort_by_most_recent"/>
- <menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
- <menu_item_check label="Ordina in base al tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
deleted file mode 100644
index d4d6fd68d0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Vedi profilo" name="Profile..."/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Invita al gruppo" name="Invite..."/>
- <menu_item_call label="Blocca" name="Avatar Mute"/>
- <menu_item_call label="Segnala" name="abuse"/>
- <menu_item_call label="Congela" name="Freeze..."/>
- <menu_item_call label="Espelli" name="Eject..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
- <menu_item_call label="Zoom avanti" name="Zoom In"/>
- <menu_item_call label="Paga" name="Pay..."/>
- <menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
deleted file mode 100644
index 0b841d591f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Tocca" name="Attachment Object Touch"/>
- <menu_item_call label="Modifica" name="Edit..."/>
- <menu_item_call label="Stacca" name="Detach"/>
- <menu_item_call label="Siedi" name="Sit Down Here"/>
- <menu_item_call label="Alzati" name="Stand Up"/>
- <menu_item_call label="Il mio aspetto" name="Change Outfit"/>
- <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
- <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
- <menu_item_call label="I miei amici..." name="Friends..."/>
- <menu_item_call label="I miei gruppi" name="Groups..."/>
- <menu_item_call label="Il mio profilo" name="Profile..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
- <menu_item_call label="Lascia" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
deleted file mode 100644
index b93b695300..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Vedi profilo" name="Show Profile"/>
- <menu_item_call label="Manda IM..." name="Send IM"/>
- <menu_item_call label="Aggiungi come amico..." name="Add Friend"/>
- <menu_item_call label="Togli amicizia..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
deleted file mode 100644
index c2edc32a49..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Vedi profilo" name="Profile..."/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Invita al gruppo" name="Invite..."/>
- <menu_item_call label="Blocca" name="Avatar Mute"/>
- <menu_item_call label="Segnala" name="abuse"/>
- <menu_item_call label="Congela" name="Freeze..."/>
- <menu_item_call label="Espelli" name="Eject..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
- <menu_item_call label="Zoom avanti" name="Zoom In"/>
- <menu_item_call label="Paga" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
deleted file mode 100644
index a4dafd7b5f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Siedi" name="Sit Down Here"/>
- <menu_item_call label="Alzati" name="Stand Up"/>
- <context_menu label="Togli" name="Take Off &gt;">
- <context_menu label="Abiti" name="Clothes &gt;">
- <menu_item_call label="Camicia" name="Shirt"/>
- <menu_item_call label="Pantaloni" name="Pants"/>
- <menu_item_call label="Gonna" name="Skirt"/>
- <menu_item_call label="Scarpe" name="Shoes"/>
- <menu_item_call label="Calzini" name="Socks"/>
- <menu_item_call label="Giacca" name="Jacket"/>
- <menu_item_call label="Guanti" name="Gloves"/>
- <menu_item_call label="Maglietta intima" name="Self Undershirt"/>
- <menu_item_call label="Slip" name="Self Underpants"/>
- <menu_item_call label="Tatuaggio" name="Self Tattoo"/>
- <menu_item_call label="Fisica" name="Self Physics"/>
- <menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/>
- <menu_item_call label="Tutti gli abiti" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Stacca" name="Object Detach"/>
- <menu_item_call label="Stacca tutto" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Il mio aspetto" name="Chenge Outfit"/>
- <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
- <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
- <menu_item_call label="I miei amici..." name="Friends..."/>
- <menu_item_call label="I miei gruppi" name="Groups..."/>
- <menu_item_call label="Il mio profilo" name="Profile..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
deleted file mode 100644
index ddd6909136..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Pulsante Parla" name="EnableVoiceChat"/>
- <menu_item_check label="Tasto Gesture" name="ShowGestureButton"/>
- <menu_item_check label="Tasto Movimento" name="ShowMoveButton"/>
- <menu_item_check label="Tasto Visuale" name="ShowCameraButton"/>
- <menu_item_check label="Tasto Foto" name="ShowSnapshotButton"/>
- <menu_item_check label="Pulsante Costruisci" name="ShowBuildButton"/>
- <menu_item_check label="Pulsante Cerca" name="ShowSearchButton"/>
- <menu_item_check label="Pulsante Mappa" name="ShowWorldMapButton"/>
- <menu_item_check label="Pulsante Mini mappa" name="ShowMiniMapButton"/>
- <menu_item_call label="Taglia" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copia" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Incolla" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Elimina" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Seleziona tutto" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
deleted file mode 100644
index 699490c8f1..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Stacca" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
deleted file mode 100644
index 1e3658ef45..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Sostituisci" name="replace"/>
- <menu_item_call label="Modifica" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
deleted file mode 100644
index 1e16ce8ed1..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Togli" name="take_off"/>
- <menu_item_call label="Modifica" name="edit"/>
- <menu_item_call label="Sostituisci" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
deleted file mode 100644
index 10524ba92d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nuovi abiti" name="COF.Gear.New_Clothes"/>
- <menu label="Nuove parti del corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_edit.xml b/indra/newview/skins/minimal/xui/it/menu_edit.xml
deleted file mode 100644
index ffb20a02e9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Modifica" name="Edit">
- <menu_item_call label="Annulla" name="Undo"/>
- <menu_item_call label="Ripeti" name="Redo"/>
- <menu_item_call label="Taglia" name="Cut"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
- <menu_item_call label="Duplica" name="Duplicate"/>
- <menu_item_call label="Seleziona tutto" name="Select All"/>
- <menu_item_call label="Deseleziona" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_favorites.xml b/indra/newview/skins/minimal/xui/it/menu_favorites.xml
deleted file mode 100644
index 7813ef44b5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleport" name="Teleport To Landmark"/>
- <menu_item_call label="Vedi/Modifica punto di riferimento" name="Landmark Open"/>
- <menu_item_call label="Copia SLurl" name="Copy slurl"/>
- <menu_item_call label="Mostra sulla mappa" name="Show On Map"/>
- <menu_item_call label="Copia" name="Landmark Copy"/>
- <menu_item_call label="Incolla" name="Landmark Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
deleted file mode 100644
index 7cfcc6287e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Aggiungi/Rimuovi dai preferiti" name="activate"/>
- <menu_item_call label="Copia" name="copy_gesture"/>
- <menu_item_call label="Incolla" name="paste"/>
- <menu_item_call label="Copia UUID" name="copy_uuid"/>
- <menu_item_call label="Salva vestiario" name="save_to_outfit"/>
- <menu_item_call label="Modifica" name="edit_gesture"/>
- <menu_item_call label="Ispeziona" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml b/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
deleted file mode 100644
index 3b76fb94a9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Aderisci al gruppo..." name="item_join"/>
- <menu_item_call label="Nuovo gruppo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
deleted file mode 100644
index 2c2c6c4bc5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
deleted file mode 100644
index 9e471b771c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Chiudi tutto" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f78ed8489f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
deleted file mode 100644
index baa4e671b0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Informazioni sul gruppo" name="Show Profile"/>
- <menu_item_call label="Mostra sessione" name="Chat"/>
- <menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
deleted file mode 100644
index 2eacbb09ad..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Vedi profilo" name="Show Profile"/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="Mostra sessione" name="Send IM"/>
- <menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 1f10734c4a..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Vedi profilo" name="view_profile"/>
- <menu_item_call label="Aggiungi amico" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Chiama" name="call"/>
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Invita al gruppo" name="invite_to_group"/>
- <menu_item_call label="Blocca" name="block"/>
- <menu_item_call label="Sblocca" name="unblock"/>
- <menu_item_call label="Segnala" name="report"/>
- <menu_item_call label="Congela" name="freeze"/>
- <menu_item_call label="Espelli" name="eject"/>
- <menu_item_call label="Espelli" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Debug delle texture" name="debug"/>
- <menu_item_call label="Trova sulla mappa" name="find_on_map"/>
- <menu_item_call label="Zoom avanti" name="zoom_in"/>
- <menu_item_call label="Paga" name="pay"/>
- <menu_item_call label="Condividi" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
deleted file mode 100644
index ede4a507c0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Tocca" name="touch"/>
- <menu_item_call label="Siediti" name="sit"/>
- <menu_item_call label="Paga" name="pay"/>
- <menu_item_call label="Acquista" name="buy"/>
- <menu_item_call label="Prendi" name="take"/>
- <menu_item_call label="Prendi copia" name="take_copy"/>
- <menu_item_call label="Apri" name="open"/>
- <menu_item_call label="Modifica" name="edit"/>
- <menu_item_call label="Indossa" name="wear"/>
- <menu_item_call label="Aggiungi" name="add"/>
- <menu_item_call label="Segnala" name="report"/>
- <menu_item_call label="Blocca" name="block"/>
- <menu_item_call label="Zoom avanti" name="zoom_in"/>
- <menu_item_call label="Rimuovi" name="remove"/>
- <menu_item_call label="Maggiori informazioni" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
deleted file mode 100644
index 4f62ccaa9c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Siedi" name="Sit Down Here"/>
- <menu_item_call label="Alzati" name="Stand Up"/>
- <context_menu label="Togli" name="Take Off &gt;">
- <context_menu label="Abiti" name="Clothes &gt;">
- <menu_item_call label="Camicia" name="Shirt"/>
- <menu_item_call label="Pantaloni" name="Pants"/>
- <menu_item_call label="Gonna" name="Skirt"/>
- <menu_item_call label="Scarpe" name="Shoes"/>
- <menu_item_call label="Calzini" name="Socks"/>
- <menu_item_call label="Giacca" name="Jacket"/>
- <menu_item_call label="Guanti" name="Gloves"/>
- <menu_item_call label="Maglietta intima" name="Self Undershirt"/>
- <menu_item_call label="Slip" name="Self Underpants"/>
- <menu_item_call label="Tatuaggio" name="Self Tattoo"/>
- <menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/>
- <menu_item_call label="Tutti gli abiti" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Stacca" name="Object Detach"/>
- <menu_item_call label="Stacca tutto" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Cambia vestiario" name="Chenge Outfit"/>
- <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
- <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
- <menu_item_call label="I miei amici" name="Friends..."/>
- <menu_item_call label="I miei gruppi" name="Groups..."/>
- <menu_item_call label="Il mio profilo" name="Profile..."/>
- <menu_item_call label="Debug delle texture" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 471640eff5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Chiudi" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_inventory.xml
deleted file mode 100644
index f18ddb595c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Compra" name="Task Buy"/>
- <menu_item_call label="Apri" name="Task Open"/>
- <menu_item_call label="Esegui" name="Task Play"/>
- <menu_item_call label="Proprietà" name="Task Properties"/>
- <menu_item_call label="Rinomina" name="Task Rename"/>
- <menu_item_call label="Elimina" name="Task Remove"/>
- <menu_item_call label="Svuota il Cestino" name="Empty Trash"/>
- <menu_item_call label="Svuota gli oggetti persi e ritrovati" name="Empty Lost And Found"/>
- <menu_item_call label="Nuova cartella" name="New Folder"/>
- <menu_item_call label="Nuovo script" name="New Script"/>
- <menu_item_call label="Nuovo biglietto" name="New Note"/>
- <menu_item_call label="Nuova gesture" name="New Gesture"/>
- <menu label="Maglietta intima" name="New Clothes">
- <menu_item_call label="Nuova maglietta" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova canottiera" name="New Undershirt"/>
- <menu_item_call label="Nuove mutande" name="New Underpants"/>
- <menu_item_call label="Nuovo Alfa Mask" name="New Alpha Mask"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- <menu_item_call label="Nuova fisica" name="New Physics"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova forma del corpo" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
- <menu label="Cambia tipo" name="Change Type">
- <menu_item_call label="Predefinito" name="Default"/>
- <menu_item_call label="Guanti" name="Gloves"/>
- <menu_item_call label="Giacca" name="Jacket"/>
- <menu_item_call label="Pantaloni" name="Pants"/>
- <menu_item_call label="Figura corporea" name="Shape"/>
- <menu_item_call label="Scarpe" name="Shoes"/>
- <menu_item_call label="Camicia" name="Shirt"/>
- <menu_item_call label="Gonna" name="Skirt"/>
- <menu_item_call label="Slip" name="Underpants"/>
- <menu_item_call label="Maglietta intima" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teletrasportati" name="Landmark Open"/>
- <menu_item_call label="Apri" name="Animation Open"/>
- <menu_item_call label="Apri" name="Sound Open"/>
- <menu_item_call label="Sostituisci vestiti" name="Replace Outfit"/>
- <menu_item_call label="Aggiungi al vestiario" name="Add To Outfit"/>
- <menu_item_call label="Rimuovi dal vestiario attuale" name="Remove From Outfit"/>
- <menu_item_call label="Trova originale" name="Find Original"/>
- <menu_item_call label="Elimina oggetto" name="Purge Item"/>
- <menu_item_call label="Ripristina oggetto" name="Restore Item"/>
- <menu_item_call label="Apri" name="Open"/>
- <menu_item_call label="Apri originale" name="Open Original"/>
- <menu_item_call label="Proprietà" name="Properties"/>
- <menu_item_call label="Rinomina" name="Rename"/>
- <menu_item_call label="Copia UUID dell&apos;oggetto" name="Copy Asset UUID"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Incolla come link" name="Paste As Link"/>
- <menu_item_call label="Elimina" name="Remove Link"/>
- <menu_item_call label="Cancella" name="Delete"/>
- <menu_item_call label="Elimina la cartella di sistema" name="Delete System Folder"/>
- <menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/>
- <menu_item_call label="Esegui" name="Sound Play"/>
- <menu_item_call label="Informazioni sul punto di riferimento" name="About Landmark"/>
- <menu_item_call label="Riproduci in Second Life" name="Animation Play"/>
- <menu_item_call label="Esegui localmente" name="Animation Audition"/>
- <menu_item_call label="Invia un Instant Message" name="Send Instant Message"/>
- <menu_item_call label="Offri teletrasporto..." name="Offer Teleport..."/>
- <menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/>
- <menu_item_call label="Attiva" name="Activate"/>
- <menu_item_call label="Disattiva" name="Deactivate"/>
- <menu_item_call label="Salva con nome" name="Save As"/>
- <menu_item_call label="Stacca da te" name="Detach From Yourself"/>
- <menu_item_call label="Indossa" name="Wearable And Object Wear"/>
- <menu label="Attacca a" name="Attach To"/>
- <menu label="Attacca all&apos;HUD" name="Attach To HUD"/>
- <menu_item_call label="Modifica" name="Wearable Edit"/>
- <menu_item_call label="Aggiungi" name="Wearable Add"/>
- <menu_item_call label="Togli" name="Take Off"/>
- <menu_item_call label="--nessuna opzione--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
deleted file mode 100644
index a2535ce48d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Carica nel server" name="upload">
- <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
- <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
- <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
- <menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/>
- <menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nuova cartella" name="New Folder"/>
- <menu_item_call label="Nuovo script" name="New Script"/>
- <menu_item_call label="Nuovo biglietto" name="New Note"/>
- <menu_item_call label="Nuova gesture" name="New Gesture"/>
- <menu label="Maglietta intima" name="New Clothes">
- <menu_item_call label="Nuova camicia" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
- <menu_item_call label="Nuovi slip" name="New Underpants"/>
- <menu_item_call label="Nuovo Alfa (trasparenza)" name="New Alpha"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- <menu_item_call label="Nuova fisica" name="New Physics"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova figura corporea" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
deleted file mode 100644
index 3d64e4da4e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nuova finestra inventario" name="new_window"/>
- <menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
- <menu_item_check label="Mostra prima i più recenti" name="sort_by_recent"/>
- <menu_item_check label="Ordina le cartelle sempre in base al nome" name="sort_folders_by_name"/>
- <menu_item_check label="Ordina cartelle di sistema all&apos;inizio" name="sort_system_folders_to_top"/>
- <menu_item_call label="Mostra filtri" name="show_filters"/>
- <menu_item_call label="Ripristina filtri" name="reset_filters"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="close_folders"/>
- <menu_item_call label="Svuota oggetti smarriti" name="empty_lostnfound"/>
- <menu_item_call label="Salva texture come" name="Save Texture As"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Trova originale" name="Find Original"/>
- <menu_item_call label="Trova tutti i link" name="Find All Links"/>
- <menu_item_call label="Svuota cestino" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_land.xml b/indra/newview/skins/minimal/xui/it/menu_land.xml
deleted file mode 100644
index f510078e14..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Informazioni sui terreni" name="Place Information..."/>
- <menu_item_call label="Siediti qui" name="Sit Here"/>
- <menu_item_call label="Acquista questo terreno" name="Land Buy"/>
- <menu_item_call label="Acquista Permesso" name="Land Buy Pass"/>
- <menu_item_call label="Costruisci" name="Create"/>
- <menu_item_call label="Modifica terreno" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_landmark.xml
deleted file mode 100644
index b3cddab783..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copia SLurl" name="copy"/>
- <menu_item_call label="Elimina" name="delete"/>
- <menu_item_call label="Crea Luogo consigliato" name="pick"/>
- <menu_item_call label="Aggiungi alla barra dei Preferiti" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_login.xml b/indra/newview/skins/minimal/xui/it/menu_login.xml
deleted file mode 100644
index bdf7d2094f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Io" name="File">
- <menu_item_call label="Preferenze" name="Preferences..."/>
- <menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Aiuto" name="Help">
- <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Mostra menu Debug" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Mostra impostazioni di debug" name="Debug Settings"/>
- <menu_item_call label="Impostazioni colori interfaccia" name="UI/Color Settings"/>
- <menu label="Test interfaccia utente" name="UI Tests"/>
- <menu_item_call label="Imposta dimensioni della finestra..." name="Set Window Size..."/>
- <menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/>
- <menu_item_call label="Mostra messaggio critico" name="Critical"/>
- <menu_item_call label="Test browser multimedia" name="Web Browser Test"/>
- <menu_item_call label="Test finestra contenuti Web" name="Web Content Floater Test"/>
- <menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
- <menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml b/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
deleted file mode 100644
index 561b80e046..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom ravvicinato" name="Zoom Close"/>
- <menu_item_call label="Zoom Medio" name="Zoom Medium"/>
- <menu_item_call label="Zoom Distante" name="Zoom Far"/>
- <menu_item_call label="Zoom predefinito" name="Zoom Default"/>
- <menu_item_check label="Ruota la mappa" name="Rotate Map"/>
- <menu_item_check label="Centra automaticamente" name="Auto Center"/>
- <menu_item_call label="Ferma il puntamento" name="Stop Tracking"/>
- <menu_item_call label="Mappa del mondo" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_navbar.xml
deleted file mode 100644
index e42d913a6f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
- <menu_item_check label="Mostra proprietà lotto" name="Show Parcel Properties"/>
- <menu_item_call label="Punto di riferimento" name="Landmark"/>
- <menu_item_call label="Taglia" name="Cut"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
- <menu_item_call label="Seleziona tutto" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
deleted file mode 100644
index 719a6d3261..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Mostra le persone vicine..." name="nearby_people"/>
- <menu_item_check label="Mostra il testo bloccato" name="muted_text"/>
- <menu_item_check label="Mostra icone amici" name="show_buddy_icons"/>
- <menu_item_check label="Mostra nomi" name="show_names"/>
- <menu_item_check label="Mostra icone e nomi" name="show_icons_and_names"/>
- <menu_item_call label="Dimensioni caratteri" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
deleted file mode 100644
index 8c82e30f0e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Chiudi tutto" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_object.xml b/indra/newview/skins/minimal/xui/it/menu_object.xml
deleted file mode 100644
index a172cf3b26..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Tocca" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Tocca"/>
- </menu_item_call>
- <menu_item_call label="Modifica" name="Edit..."/>
- <menu_item_call label="Costruisci" name="Build"/>
- <menu_item_call label="Apri" name="Open"/>
- <menu_item_call label="Siediti qui" name="Object Sit"/>
- <menu_item_call label="Alzati" name="Object Stand Up"/>
- <menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
- <menu_item_call label="Zoom avanti" name="Zoom In"/>
- <context_menu label="Metti" name="Put On">
- <menu_item_call label="Indossa" name="Wear"/>
- <menu_item_call label="Aggiungi" name="Add"/>
- <context_menu label="Attacca" name="Object Attach"/>
- <context_menu label="Attacca HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Gestisci" name="Remove">
- <menu_item_call label="Segnala abuso" name="Report Abuse..."/>
- <menu_item_call label="Blocca" name="Object Mute"/>
- <menu_item_call label="Restituisci" name="Return..."/>
- </context_menu>
- <menu_item_call label="Prendi" name="Pie Object Take"/>
- <menu_item_call label="Prendi copia" name="Take Copy"/>
- <menu_item_call label="Paga" name="Pay..."/>
- <menu_item_call label="Acquista" name="Buy..."/>
- <menu_item_call label="Elimina" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml b/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
deleted file mode 100644
index 0f347b1a90..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Profilo oggetto..." name="Object Profile"/>
- <menu_item_call label="Blocca..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
deleted file mode 100644
index 09fc867d7c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Outfit">
- <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear"/>
- <menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/>
- <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/>
- <menu label="Nuovi abiti" name="New Clothes">
- <menu_item_call label="Nuova camicia" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
- <menu_item_call label="Nuovi slip" name="New Underpants"/>
- <menu_item_call label="Nuovo Alpha (trasparenza)" name="New Alpha"/>
- <menu_item_call label="Nuova fisica" name="New Physics"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova figura corporea" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
- <menu_item_call label="Cambia nome del vestiario" name="rename"/>
- <menu_item_call label="Elimina vestito" name="delete_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
deleted file mode 100644
index 8166cf20ed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear_replace"/>
- <menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/>
- <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/>
- <menu_item_call label="Modifica vestiario" name="edit"/>
- <menu_item_call label="Cambia nome del vestiario" name="rename"/>
- <menu_item_call label="Elimina vestito" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml b/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
deleted file mode 100644
index 1b057c4077..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Ordina in base al nome" name="SortByName"/>
- <menu_item_check label="Ordina in base a intervenuti recenti" name="SortByRecentSpeakers"/>
- <menu_item_call label="Vedi profilo" name="View Profile"/>
- <menu_item_call label="Aggiungi amico" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Paga" name="Pay"/>
- <menu_item_check label="Icone persone" name="View Icons"/>
- <menu_item_check label="Blocca voce" name="Block/Unblock"/>
- <menu_item_check label="Blocca testo" name="MuteText"/>
- <context_menu label="Opzioni moderatore" name="Moderator Options">
- <menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
- <menu_item_call label="Disattiva audio di questo participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Riattiva audio di questo participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
- <menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3a799f44eb..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordina in base al nome" name="sort_name"/>
- <menu_item_check label="Ordina in base allo stato" name="sort_status"/>
- <menu_item_check label="Icone persone" name="view_icons"/>
- <menu_item_check label="Visualizza autorizzazioni concesse" name="view_permissions"/>
- <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
deleted file mode 100644
index 30a97a1c72..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Mostra informazioni" name="View Info"/>
- <menu_item_call label="Chat" name="Chat"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Attiva" name="Activate"/>
- <menu_item_call label="Chiudi" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
deleted file mode 100644
index d31ddaf1aa..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Visualizza le icone di gruppo" name="Display Group Icons"/>
- <menu_item_call label="Lascia i gruppi selezionati" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
deleted file mode 100644
index ab06d28c36..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Vedi profilo" name="View Profile"/>
- <menu_item_call label="Aggiungi come amico" name="Add Friend"/>
- <menu_item_call label="Rimuovi amico" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Mappa" name="Map"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Paga" name="Pay"/>
- <menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
- <menu_item_call label="Offri Teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
deleted file mode 100644
index e0b9ceb63d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Aggiungi amici" name="Add Friends"/>
- <menu_item_call label="Rimuovi amici" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Chiama" name="Call"/>
- <menu_item_call label="Condividi" name="Share"/>
- <menu_item_call label="Paga" name="Pay"/>
- <menu_item_call label="Offri Teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
deleted file mode 100644
index aae2313702..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/>
- <menu_item_check label="Ordina in base al nome" name="sort_name"/>
- <menu_item_check label="Ordina in base alla distanza" name="sort_distance"/>
- <menu_item_check label="Icone persone" name="view_icons"/>
- <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
deleted file mode 100644
index 7fccd1621a..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Mostra prima i più recenti" name="sort_most"/>
- <menu_item_check label="Ordina in base al nome" name="sort_name"/>
- <menu_item_check label="Icone persone" name="view_icons"/>
- <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks.xml b/indra/newview/skins/minimal/xui/it/menu_picks.xml
deleted file mode 100644
index 000d219ed0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Informazioni" name="pick_info"/>
- <menu_item_call label="Modifica" name="pick_edit"/>
- <menu_item_call label="Teleport" name="pick_teleport"/>
- <menu_item_call label="Mappa" name="pick_map"/>
- <menu_item_call label="Elimina" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
deleted file mode 100644
index 7fbd5abd57..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Nuovo luogo preferito" name="create_pick"/>
- <menu_item_call label="Nuovo annuncio" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_place.xml b/indra/newview/skins/minimal/xui/it/menu_place.xml
deleted file mode 100644
index 5381a4effa..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Salva come punto di riferimento" name="landmark"/>
- <menu_item_call label="Crea Luogo consigliato" name="pick"/>
- <menu_item_call label="Acquista Permesso" name="pass"/>
- <menu_item_call label="Modifica" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
deleted file mode 100644
index 0e783c0000..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Aggiungi cartella" name="add_folder"/>
- <menu_item_call label="Aggiungi punto di riferimento" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
deleted file mode 100644
index 23757d47e0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="Aggiungi punto di riferimento" name="add_landmark"/>
- <menu_item_call label="Aggiungi cartella" name="add_folder"/>
- <menu_item_call label="Ripristina oggetto" name="restore_item"/>
- <menu_item_call label="Taglia" name="cut"/>
- <menu_item_call label="Copia" name="copy_folder"/>
- <menu_item_call label="Incolla" name="paste"/>
- <menu_item_call label="Modifica nome" name="rename"/>
- <menu_item_call label="Elimina" name="delete"/>
- <menu_item_call label="Espandi" name="expand"/>
- <menu_item_call label="Comprimi" name="collapse"/>
- <menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
- <menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
deleted file mode 100644
index a458b1a768..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="Teleport" name="teleport"/>
- <menu_item_call label="Maggiori informazioni" name="more_info"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Aggiungi Punto di riferimento" name="add_landmark"/>
- <menu_item_call label="Aggiungi cartella" name="add_folder"/>
- <menu_item_call label="Ripristina oggetto" name="restore_item"/>
- <menu_item_call label="Taglia" name="cut"/>
- <menu_item_call label="Copia punto di riferimento" name="copy_landmark"/>
- <menu_item_call label="Copia SLurl" name="copy_slurl"/>
- <menu_item_call label="Incolla" name="paste"/>
- <menu_item_call label="Modifica nome" name="rename"/>
- <menu_item_call label="Elimina" name="delete"/>
- <menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
- <menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
- <menu_item_call label="Crea Luogo consigliato" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
deleted file mode 100644
index 56b695c597..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mappa" name="show_on_map"/>
- <menu_item_call label="Paga" name="pay"/>
- <menu_item_call label="Condividi" name="share"/>
- <menu_item_call label="Blocca" name="block"/>
- <menu_item_call label="Sblocca" name="unblock"/>
- <menu_item_call label="Espelli" name="kick"/>
- <menu_item_call label="Congela" name="freeze"/>
- <menu_item_call label="Scongela" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
deleted file mode 100644
index 4882a8ac64..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Salva" name="save_outfit"/>
- <menu_item_call label="Salva con nome" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
deleted file mode 100644
index 604f754ba8..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Chiudi" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_slurl.xml
deleted file mode 100644
index be83133efc..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Informazioni sull&apos;indirizzo URL" name="about_url"/>
- <menu_item_call label="Teleportati all&apos;indirizzo URL" name="teleport_to_url"/>
- <menu_item_call label="Mappa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
deleted file mode 100644
index 409a62c31b..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Apri tutte le cartelle" name="Expand all folders"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="Collapse all folders"/>
- <menu_item_call label="Cancella la cronologia Teleport" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
deleted file mode 100644
index 81053fbd65..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleport" name="Teleport"/>
- <menu_item_call label="Maggiori informazioni" name="More Information"/>
- <menu_item_call label="Copia negli appunti" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
deleted file mode 100644
index c221f141a6..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Apri" name="TabOpen"/>
- <menu_item_call label="Chiudi" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml b/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
deleted file mode 100644
index 4636ce9929..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Taglia" name="Cut"/>
- <menu_item_call label="Copia" name="Copy"/>
- <menu_item_call label="Incolla" name="Paste"/>
- <menu_item_call label="Elimina" name="Delete"/>
- <menu_item_call label="Seleziona tutto" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
deleted file mode 100644
index 0beb9314de..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
- <menu_item_check label="Mostra proprietà del lotto" name="Show Parcel Properties"/>
- <menu_item_call label="Punto di riferimento" name="Landmark"/>
- <menu_item_call label="Copia" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml b/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
deleted file mode 100644
index 37755d5749..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra profilo residente" name="show_agent"/>
- <menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_group.xml b/indra/newview/skins/minimal/xui/it/menu_url_group.xml
deleted file mode 100644
index d9a792ebdf..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni gruppo" name="show_group"/>
- <menu_item_call label="Copia gruppo negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_http.xml b/indra/newview/skins/minimal/xui/it/menu_url_http.xml
deleted file mode 100644
index e0153d9169..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Apri pagina Web" name="url_open"/>
- <menu_item_call label="Apri nel browser interno" name="url_open_internal"/>
- <menu_item_call label="Apri nel browser esterno" name="url_open_external"/>
- <menu_item_call label="Copia URL negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
deleted file mode 100644
index a45a6bbc10..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra oggetto dell&apos;inventario" name="show_item"/>
- <menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_map.xml b/indra/newview/skins/minimal/xui/it/menu_url_map.xml
deleted file mode 100644
index cb7935b3ed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Teleport al luogo" name="teleport_to_location"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
deleted file mode 100644
index 763e65f17c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni oggetto" name="show_object"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
- <menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
deleted file mode 100644
index a032c33585..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni lotto" name="show_parcel"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
deleted file mode 100644
index b368aa9141..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Esegui questo comando" name="run_slapp"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
deleted file mode 100644
index 355c7dbed9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostra informazioni del luogo" name="show_place"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Teleport al luogo" name="teleport_to_location"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
deleted file mode 100644
index c129e61f25..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleport a questa destinazione" name="teleport"/>
- <menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
- <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_viewer.xml b/indra/newview/skins/minimal/xui/it/menu_viewer.xml
deleted file mode 100644
index 8353044f37..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Aiuto" name="Help">
- <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
- </menu>
- <menu label="Avanzate" name="Advanced">
- <menu label="Scorciatoie" name="Shortcuts">
- <menu_item_check label="Vola" name="Fly"/>
- <menu_item_call label="Chiudi finestra" name="Close Window"/>
- <menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/>
- <menu_item_call label="Reimposta vista" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
deleted file mode 100644
index c9a02d8a86..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Sostituisci" name="wear_replace"/>
- <menu_item_call label="Indossa" name="wear_wear"/>
- <menu_item_call label="Aggiungi" name="wear_add"/>
- <menu_item_call label="Togli / Stacca" name="take_off_or_detach"/>
- <menu_item_call label="Stacca" name="detach"/>
- <context_menu label="Attacca a" name="wearable_attach_to"/>
- <context_menu label="Attacca a HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Togli" name="take_off"/>
- <menu_item_call label="Modifica" name="edit"/>
- <menu_item_call label="Profilo articolo" name="object_profile"/>
- <menu_item_call label="Mostra originale" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
deleted file mode 100644
index 7c8eef64e5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Modifica vestiario" name="edit"/>
- <menu_item_call label="Togli" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
deleted file mode 100644
index 4a5366091f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Togli" name="take_off"/>
- <menu_item_call label="Stacca" name="detach"/>
- <menu_item_call label="Modifica vestiario" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/notifications.xml b/indra/newview/skins/minimal/xui/it/notifications.xml
deleted file mode 100644
index cf24d6cbf5..0000000000
--- a/indra/newview/skins/minimal/xui/it/notifications.xml
+++ /dev/null
@@ -1,2951 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Non mostrare più la prossima volta
- </global>
- <global name="alwayschoose">
- Scegli sempre questa opzione
- </global>
- <global name="implicitclosebutton">
- Chiudi
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$notext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Messaggio di notifica sconosciuto" name="MissingAlert">
- La versione di [APP_NAME] non riesce a visualizzare la notifica appena ricevuta. Verifica di avere l&apos;ultima versione del Viewer installata.
-
-Dettagli errore: La notifica denominata &apos;[_NAME]&apos; non è stata trovata in notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Errore visualizzazione finestra: Non trovati i seguenti controlli:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Nessun tutorial disponibile al momento.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
- </notification>
- <notification name="BadInstallation">
- Il programma [APP_NAME] ha riscontrato un&apos;errore durante il tentativo di aggiornamento. [http://get.secondlife.com Scarica l&apos;ultima versione] del Viewer.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Non è possibile collegarsi alla [SECOND_LIFE_GRID].
- &apos;[DIAGNOSTIC]&apos;
-Accertati che la tua connessione Internet stia funzionando correttamente.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Il modello di messaggio [PATH] non è stato trovato.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Salva i cambiamenti all&apos;attuale parte del corpo/abito?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
- </notification>
- <notification name="CompileQueueSaveText">
- C&apos;è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- C&apos;è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi.
- </notification>
- <notification name="WriteAnimationFail">
- C&apos;è stato un problema di scrittura dati dell&apos;animazione. Riprova più tardi.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- C&apos;è stato un problema importando la fotografia dell&apos;asta per la seguente ragione: [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Non è possibile vedere il contenuto di più di un elemento per volta.
-Scegli solo un oggetto e riprova.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Salva tutte le modifiche alle parti del corpo/abiti?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non Salvare" yestext="Salva Tutto"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- Chi non è tuo amico non saprà che hai scelto di ignorare le loro chiamate e IM.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- Nota: Se attivi questa opzione, chiunque usa questo computer può vedere l&apos;elenco di luoghi preferiti.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare, eliminare o prendere QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica a [NAME]?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica ai residenti selezionati?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="RevokeModifyRights">
- Vuoi revocare i diritti di modifica di [NAME]?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Vuoi revocare i permessi di modifica dati ai residenti selezionati?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Non è possibile creare il gruppo.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Ignora le modifiche" yestext="Applica le modifiche"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Devi specificare un oggetto per mandare una notice al gruppo.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Stai per aggiungere dei membri al ruolo [ROLE_NAME].
-Non si possono rimuovere membri da quel ruolo.
-I membri devono dimettersi volontariamente dal ruolo.
-Confermi l&apos;operazione?
- <usetemplate ignoretext="Conferma prima di aggiungere un nuovo proprietario del gruppo" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- ruoli che hanno più poteri di quelli che hanno correntemente, potenzialmente consentendogli di avere quasi i poteri del proprietario. Accertati di sapere quello che stai facendo prima di assegnare questo potere.
-
-Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- tutti i poteri, elevandosi al livello di quasi proprietario.
-
-Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="AttachmentDrop">
- Stai per abbandonare il tuo accessorio.
- Vuoi continuare?
- <usetemplate ignoretext="Conferma prima di distaccare gli accessori" name="okcancelignore" notext="No" yestext="Sì"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- Iscriversi a questo gruppo costa [COST]L$.
-Vuoi proseguire?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/>
- </notification>
- <notification name="JoinGroupNoCost">
- Aderisci al gruppo [NAME].
-Continuare?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Iscriversi a questo gruppo costa [COST]L$.
-Non hai abbastanza L$ per iscriverti a questo gruppo.
- </notification>
- <notification name="CreateGroupCost">
- La creazione di questo gruppo costerà L$ 100.
-I gruppi devono avere più di un partecipante, o saranno eliminati definitivamente.
-Invita altri partecipanti entro le prossime 48 ore.
- <usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Annulla" yestext="Crea un gruppo per L$ 100"/>
- </notification>
- <notification name="LandBuyPass">
- Pagando [COST]L$ puoi entrare in questa terra (&apos;[PARCEL_NAME]&apos;) per [TIME] ore. Compri un pass?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- Il prezzo di vendita deve essere superiore a 0L$ se vendi a tutti.
-Seleziona una vendita individuale per vendere a 0L$.
- </notification>
- <notification name="ConfirmLandSaleChange">
- Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME].
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- ATTENZIONE: Quando selezioni &apos;vendi a tutti&apos;, rendi questo terreno disponibile all&apos;intera comunità di [SECOND_LIFE], anche alle persone che non si trovano in questa regione.
-
-Il terrendo selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il prezzo di vendità sarà [SALE_PRICE]L$ e [NAME] viene autorizzato alla vendita.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Confermi di volere restituire tutti gli oggetti condivisi con il gruppo &apos;[NAME]&apos; di questo terreno agli inventari dei proprietari precedenti?
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Confermi di volere restituire tutti gli oggetti posseduti dal residente &apos;[NAME]&apos; in questo terreno al suo inventario?
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Confermi di volere restituire tutti gli oggetti posseduti da te in questo terreno, di nuovo nel tuo inventario?
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Confermi di volere restituire tutti gli oggetti di cui NON sei proprietario in questo terreno all&apos;inventario dei rispettivi proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Confermi di volere restituire tutti gli oggetti NON posseduti da [NAME] in questo terreno nell&apos;inventario dei loro proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Confermi di volere restituire tutti gli oggetti elencati nell&apos;inventario dei loro proprietari?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Confermi di volere disabilitare tutti gli oggetti in questa regione?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Restituisci gli oggetti in questo terreno che NON sono condivisi con il gruppo [NAME] ai loro proprietari?
-
-Oggetti: [N]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Non è possibile disabilitare gli script.
-L&apos;intera regione ha l&apos;abilitazione danni.
-Gli script devono essere autorizzati all&apos;esecuzione affinchè le armi funzionino.
- </notification>
- <notification name="MultipleFacesSelected">
- Sono state selezionate più facce.
-Se prosegui con questa azione, sulle diverse facce dell&apos;oggetto verranno definite sessioni multimediali distinte.
-Per collocare il media su una sola faccia, scegli Seleziona faccia, clicca su una faccia e clicca su Aggiungi.
- <usetemplate ignoretext="Il canale multimediale sarà impostato su più facce selezionate" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="MustBeInParcel">
- Devi essere dentro il terreno per impostare il suo Punto di Atterraggio.
- </notification>
- <notification name="PromptRecipientEmail">
- Introduci un indirizzo email per il destinatario/i.
- </notification>
- <notification name="PromptSelfEmail">
- Introduci il tuo indirizzo email.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Invia la foto via email con soggetto o messaggio predefinito?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Errore nell&apos;elaborazione della fotografia.
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Errore nella codifica della fotografia.
- </notification>
- <notification name="ErrorUploadingPostcard">
- C&apos;è stato un problema inviando la fotografia per il seguente motivo: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- C&apos;è stato un problema importando la foto del rapporto per il seguente motivo: [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- Devi accettare i Termini di Servizio prima di proseguire il collegamento con [SECOND_LIFE].
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Non è stato possibile indossare un equipaggiamento.
-La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attachment.
- </notification>
- <notification name="CannotWearTrash">
- Non puoi indossare abiti e parti del corpo che sono nel cestino
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- L&apos;oggetto non può essere collegato.
-Superato il limite di oggetti collegati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
- </notification>
- <notification name="CannotWearInfoNotComplete">
- Non puoi indossare quell&apos;elemento perchè non è ancora stato caricato. Riprova fra un minuto.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Spiacenti. Un campo è vuoto.
-Inserisci il Nome utente del tuo avatar.
-
-Devi avere un account per entrare in [SECOND_LIFE]. Vuoi crearne uno adesso?
- <url name="url">
- https://join.secondlife.com/index.php?lang=it-IT
- </url>
- <usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- Immetti il nome utente oppure sia il nome che il cognome del tuo avatar nel campo del nome utente, quindi effettua nuovamente l&apos;accesso.
- </notification>
- <notification name="DeleteClassified">
- Cancella annuncio &apos;[NAME]&apos;?
-Non ci sono rimborsi per la tariffa pagata.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DeleteMedia">
- Hai selezionato la cancellazione del media associato a questa faccia.
-Vuoi continuare?
- <usetemplate ignoretext="Conferma prima di eliminare elementi multimediali dall&apos;oggetto" name="okcancelignore" notext="No" yestext="Sì"/>
- </notification>
- <notification name="ClassifiedSave">
- Salva le modifiche all&apos;annuncio [NAME]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- Denaro insufficiente per creare un&apos;inserzione.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Elimina preferito &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DeleteOutfits">
- Elimina il vestiario selezionato?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Vai alla pagina degli eventi di [SECOND_LIFE]?
- <url name="url">
- http://secondlife.com/events/?lang=it-IT
- </url>
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Scegli una proposta da vedere.
- </notification>
- <notification name="SelectHistoryItemToView">
- Scegli un item storico da vedere.
- </notification>
- <notification name="CacheWillClear">
- La cache verrà cancellata dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- La cache verrà spostata dopo il riavvio di [APP_NAME].
-Nota: questa operazione cancellerà la cache.
- </notification>
- <notification name="ChangeConnectionPort">
- Le impostazioni della porta avranno effetto dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- La nuova pelle comparirà dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="ChangeLanguage">
- La modifica della lingua avrà effetto dopo il riavvio di [APP_NAME].
- </notification>
- <notification name="GoToAuctionPage">
- Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell&apos;asta oppure fai un&apos;offerta?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Salva le modifiche?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- Il salvataggio della Gesture è fallito.
-La gesture ha troppi passi.
-Prova a togliere qualche passo e quindi risalva.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- Il salvataggio della gesture è fallito. Riprova fra un minuto.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Non è possibile salvare la gesture perchè non è stato trovato l&apos;oggetto o l&apos;inventario associato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="GestureSaveFailedReason">
- C&apos;è stato un problema salvando la gesture a causa del seguente motivo: [REASON]. Riprova a salvare la gesture più tardi.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- Non è possibile salvare la notecard perchè non è stato trovato l&apos;oggetto o l&apos;inventario associato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="SaveNotecardFailReason">
- C&apos;è stato un problema salvando la notecard a causa del seguente motivo: [REASON]. Riprova a salvare la notecard più tardi.
- </notification>
- <notification name="ScriptCannotUndo">
- Non è stato possibile annullare tutti i cambiamenti nella tua versione dello script.
-Vuoi ripristinare l&apos;ultima versione salvata sul server?
-(**Attenzione** Questa operazione non è reversibile)
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- C&apos;è stato un problema salvando lo script a causa del seguente motivo : [REASON]. Riprova a salvare lo script più tardi.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Non è stato possibile salvare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="SaveBytecodeFailReason">
- C&apos;è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi.
- </notification>
- <notification name="StartRegionEmpty">
- La tua Regione di inizio non è stata definita.
-Per scegliere il luogo dove vuoi trovarti all&apos;accesso, digita il nome della regione nel campo del luogo di partenza oppure scegli La mia ultima Ubicazione o Casa mia.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- Non è stato possibile lanciare o fermare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
- </notification>
- <notification name="CannotDownloadFile">
- Non è stato possibile scaricare il file
- </notification>
- <notification name="CannotWriteFile">
- Non è stato possibile scrivere il file [[FILE]]
- </notification>
- <notification name="UnsupportedHardware">
- Ti informiamo che il tuo computer non dispone dei requisiti minimi di sistema per [APP_NAME]. Il funzionamento può pertanto risultare ridotto. Purtroppo la pagina [SUPPORT_SITE] non può fornire assistenza tecnica in caso di problemi dovuti a configurazioni di sistema non compatibili.
-
-Visitare [_URL] per ulteriori informazioni?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=it
- </url>
- <usetemplate ignoretext="L&apos;hardware di questo computer non è compatibile" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="UnknownGPU">
- Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
-Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME]. Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
-(Io &gt; Preferenze &gt; Grafica).
- <form name="form">
- <ignore name="ignore" text="La tua scheda grafica non è stata riconosciuta"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- L&apos;esecuzione di [APP_NAME] si è interrotta durante l&apos;inizializzazione dei driver grafici.
-La qualità grafica verrà impostata a livello basso per evitare alcuni errori comuni di driver. Alcune funzionalità grafiche saranno disattivate.
-Si consiglia di aggiornare i driver della scheda grafica.
-La qualità grafica può essere aumentata in Preferenze &gt; Grafica.
- </notification>
- <notification name="RegionNoTerraforming">
- La regione [REGION] non consente di terraformare.
- </notification>
- <notification name="CannotCopyWarning">
- Non hai l&apos;autorizzazione a copiare i seguenti oggetti:
-[ITEMS]
-e se li dai via, verranno eliminati dal tuo inventario. Sicuro di volere offrire questi oggetti?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="CannotGiveItem">
- Impossibile consegnare l&apos;elemento dell&apos;inventario.
- </notification>
- <notification name="TransactionCancelled">
- La transazione è stata annullata.
- </notification>
- <notification name="TooManyItems">
- Non è possibile dare più di 42 elementi in un singolo trasferimento di inventario.
- </notification>
- <notification name="NoItems">
- Non hai i permessi di trasferimento per gli elementi selezionati.
- </notification>
- <notification name="CannotCopyCountItems">
- Non hai i permessi di copia per copiare [COUNT]
-degli elementi selezionati. Perderai questi elementi dal tuo inventario.
-Vuoi veramente perdere questi elementi?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="CannotGiveCategory">
- Non hai i permessi per trasferire la cartella selezionata.
- </notification>
- <notification name="FreezeAvatar">
- Immobilizza questo avatar?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- Immobilizza [AVATAR_NAME]?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/>
- </notification>
- <notification name="EjectAvatarFullname">
- Espelli [AVATAR_NAME] dal tuo terreno?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Espelli e blocca" yestext="Espelli"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- Espelli questo avatar dal tuo terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- Espelli [AVATAR_NAME] dal tuo terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
- </notification>
- <notification name="EjectAvatarFromGroup">
- Hai espulso [AVATAR_NAME] dal gruppo [GROUP_NAME]
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti.
- </notification>
- <notification name="AcquireErrorObjectSpan">
- ERRORE DI ACQUISIZIONE: Gli oggetti sono a cavallo di più di una regione.
-Sposta tutti gli oggetti che vuoi acquisire su una sola regione.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Vai su [_URL] per informazioni sull&apos;acquisto di L$?
- <url name="url">
- http://secondlife.com/app/currency/?lang=it-IT
- </url>
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Impossibile unire questi [COUNT] oggetti.
-Puoi unire al massimo [MAX] oggetti.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- Puoi unire soltanto un insieme completo di oggetti, e devi selezionare più di un oggetto.
- </notification>
- <notification name="CannotLinkModify">
- Impossibile unire perchè non hai il diritto di modifica su tutti gli oggetti.
-
-Accertati che nessuno sia bloccato e che li possiedi tutti.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario.
-
-Accertati di possedere tutti gli oggetti selezionati.
- </notification>
- <notification name="NoFileExtension">
- Manca l&apos;estensione per il file: &apos;[FILE]&apos;
-
-Accertati che il file abbia una estensione corretta.
- </notification>
- <notification name="InvalidFileExtension">
- L&apos;estensione [EXTENSION] del file non è valida
-Attese [VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Impossibile aprire in lettura il file di suono importato:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Il file audio non sembra essere di tipo RIFF WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Il file audio non sembra essere di tipo PCM WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Il file ha un numero sbagliato di canali (deve essere mono oppure stereo):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Il file non sembra essere della frequenza di campionamento supportata (deve essere 44.1k):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Il file non sembra avere una dimensione della parola supportata (deve essere a 8 o a 16 bit):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- Impossibile trovare il frammento &apos;data&apos; nell&apos;intestazione WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- Dimensione chunk nel file WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Il file audio è troppo lungo (deve essere al massimo 10 secondi):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- Problemi con il file [FILE]:
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Impossibile aprire in scrittura il file temporaneamente compresso: [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Errore di codifica Vorbis sconosciuta per: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Impossibile codificare il file: [FILE]
- </notification>
- <notification name="CorruptedProtectedDataStore">
- Impossibile inserire nome utente e password. Ciò può succedere alla modifica delle impostazioni di rete.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CorruptResourceFile">
- File risorsa corrotto: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Versione di risorsa Linden sconosciuta nel file: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Impossibile creare il file in uscita: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- [APP_NAME] non supporta ancora il caricamento in blocco di file di animazione.
- </notification>
- <notification name="CannotUploadReason">
- Impossibile importare il file [FILE] a causa del seguente motivo: [REASON]
-Riprova più tardi.
- </notification>
- <notification name="LandmarkCreated">
- Hai aggiunto &quot;[LANDMARK_NAME]&quot; alla tua cartella [FOLDER_NAME].
- </notification>
- <notification name="LandmarkAlreadyExists">
- Hai già il punto di riferimento di questo luogo.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- Impossibile fare la &apos;ricompilazione&apos;.
-Seleziona un oggetto con uno script.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- Impossibile fare la &apos;ricompilazione&apos;.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- Impossibile fare &apos;ripristino&apos;.
-
-Seleziona oggetti con degli script.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- Impossibile fare &apos;ripristino&apos;.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- Impossibile aprire la script dell&apos;oggetto senza i diritti di modifica.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- Impossibile mettere &apos;in esecuzione&apos; gli script.
-
-Seleziona oggetti con script.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- Impossibile impostare script a &apos;non in esecuzione&apos;.
-
-Seleziona oggetti con script.
- </notification>
- <notification name="NoFrontmostFloater">
- Non c&apos;è nessuna finestra in evidenza (in primo piano) da salvare.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- La tua ricerca è stata modificata.
-Le parole troppo corte sono state rimosse.
-
-Ho cercato: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Le parole che hai usato per la ricerca sono troppo corte e non è stato possibile iniziare la ricerca.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleport non riuscito.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l&apos;accesso prima di poter usare il teleport.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l&apos;accesso.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
- </notification>
- <notification name="nolandmark_tport">
- Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
- </notification>
- <notification name="timeout_tport">
- Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
- </notification>
- <notification name="noaccess_tport">
- Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
- </notification>
- <notification name="missing_attach_tport">
- Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
- </notification>
- <notification name="too_many_uploads_tport">
- Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un&apos;area meno affollata.
- </notification>
- <notification name="expired_tport">
- Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
- </notification>
- <notification name="expired_region_handoff">
- Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
- </notification>
- <notification name="no_host">
- Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
- </notification>
- <notification name="no_inventory_host">
- L&apos;inventario è temporaneamente inaccessibile.
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- Impossibile impostare il proprietario del terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Impossibile forzare la proprietà del terreno perchè la selezione si estende su diverse regioni. Seleziona una area più piccola e riprova.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Questo lotto è all&apos;asta. La designazione di un proprietario determinerà l&apos;annullamento automatico dell&apos;asta e probabilmente può scontentare qualche residente se l&apos;asta è già iniziata.
-Vuoi designare un proprietario?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Impossibile fare la contentificazione:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Impossibile fare la contentificazione:
-Nessuna regione selezionata.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Impossibile abbandonare il terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Impossibile abbandonare il terreno:
-Non riesco a trovare la regione.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Impossibile comprare il terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Impossibile comprare il terreno:
-Non riesco a trovare la regione dove è situato il terreno.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Non puoi chiudere la finestra Acquista terreno finché [APP_NAME] non finisce di stimare il prezzo di questa transazione.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Impossibile cedere il terreno:
-Nessun terreno selezionato.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Impossibile cedere il terreno:
-Nessun gruppo selezionato.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Non è possibile effettuare la cessione del terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Impossibile cedere il terreno:
-Hai selezionato più di un terreno.
-
-Prova a selezionare un solo terreno.
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Impossibile cedere il terreno:
-Sto aspettando il server per segnalare la proprietà.
-
-Riprova di nuovo.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Impossibile cedere il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Impossibile abbandonare il terreno:
-Sto aspettando il server per aggiornare le informazioni del terreno.
-
-Riprova fra poco.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Impossibile abbandonare il terreno:
-Non possiedi tutti i terreni selezionati.
-
-Seleziona un solo terreno.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Impossibile abbandonare il terreno:
-Non hai i permessi per rilasciare questo terreno.
-I terreni di tua proprietà vengono visualizzati in verde.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Non è possibile abbandonare il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Impossibile abbandonare il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Impossibile abbandonare il terreno:
-Devi selezionare un terreno intero per rilasciarla.
-
-Seleziona un terreno intero, oppure dividi prima il tuo terreno.
- </notification>
- <notification name="ReleaseLandWarning">
- Stai per rilasciare [AREA] m² di terreno.
-Rilasciare questo appezzamento di terreno lo toglierà dalle tue proprietà, ma non ti verranno dati L$.
-
-Rilasciare questo terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Impossibile dividere il terreno:
-
-Non sono stati selezionati terreni.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Impossibile dividere il terreno:
-
-Hai selezionato unintero terreno.
-Prova a selezionare unappezzamento di terreno.
- </notification>
- <notification name="LandDivideWarning">
- La suddivisione di questo terreno lo dividerà in due parti ed ognuna potrà avere le sue impostazioni. Alcune impostazioni verranno reimpostate ai valori iniziali dopo l&apos;operazione.
-
-Dividi il terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Non è possibile suddividere il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Non è possibile unire il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Impossibile unire il terreno:
-Non hai selezionato terreno.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Impossibile unire il terreno:
-Hai selezionato un solo terreno.
-
-Devi selezionare il terreno comprendendo entrambi gli appezzamenti.
- </notification>
- <notification name="CannotJoinLandSelection">
- Impossibile unire il terreno:
-Devi selezionare più di un terreno.
-
-Devi selezionare il terreno comprendendo entrambi gli appezzamenti.
- </notification>
- <notification name="JoinLandWarning">
- Unire questi appezzamenti creerà un terreno più grande a partire da tutti gli appezzamenti che si intersecano nel rettangolo selezionato.
-Dovrai reimpostare il nome e le opzioni del nuovo terreno.
-
-Unisci il terreno?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- Questa notecard deve essere salvata prima che l&apos;elemento possa essere copiato o visualizzato. Salva la notecard?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Copia questo elemento nel tuo inventario?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Copia"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Non sono riuscito a cambiare la risoluzione al valore [RESX] x [RESY]
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Errore: Erba sconosciuta: [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Errore: Alberi sconosciuti: [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- Impossibile salvare &apos;[NAME]&apos; nel file di oggetti indossabili. Dovrai liberare dello spazio sul tuo computer e salvare di nuovo.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Non è possibile salvare [NAME] nel database centrale degli asset.
-In genere si tratta di un problema temporaneo. Attendi alcuni minuti per modificare e salvare nuovamente gli elementi indossabili.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Sei stato scollegato da [SECOND_LIFE].
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Vedi IM &amp; Chat"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Impossibile comprare terreno per il gruppo:
-Non hai i permessi per comprare il terreno per il tuo gruppo attivo.
- </notification>
- <notification label="Aggiungi Amico" name="AddFriendWithMessage">
- Gli amici possono autorizzarsi a vedersi l&apos;un l&apos;altro sulla mappa e sapere quando sono collegati.
-
-Offri l&apos;amicizia a [NAME]?
- <form name="form">
- <input name="message">
- Vorresti essere mio amico?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Salva vestiario" name="SaveOutfitAs">
- Salva gli abiti che indosso come nuovo vestiario:
- <form name="form">
- <input name="message">
- [DESC] (nuovo)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Salva capo da indossare" name="SaveWearableAs">
- Salva oggetto nel mio inventario come:
- <form name="form">
- <input name="message">
- [DESC] (nuovo)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Cambia nome del vestiario" name="RenameOutfit">
- Nuovo nome per il vestiario:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Vuoi rimuovere [NAME] dalla lista dei tuoi amici?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Vuoi rimuovere gli amici selezionati dalla lista dei tuoi amici?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Confermi di volere cancellare tutti gli oggetti scriptati della proprietà di
-** [AVATAR_NAME] **
-su tutti gli altri terreni di questa sim?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Confermi la CANCELLAZIONE di TUTTI gli oggetti scriptati posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Confermi la CANCELLAZIONE di TUTTI gli oggetti (scriptati o no) posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- Devi specificare un nome per il tuo annuncio.
- </notification>
- <notification name="MinClassifiedPrice">
- Il prezzo da pagare per essere messo in lista deve essere almeno [MIN_PRICE]L$.
-
-Introduci un prezzo più alto.
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- Almeno uno degli oggetti selezionati è collegato tramite link ad altri oggetti. Se elimini l&apos;oggetto, i relativi link non funzioneranno più. Pertanto si consiglia vivamente di eliminare prima i link.
-
-Sei sicuro di volere eliminare gli oggetti?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Almeno uno degli elementi selezionati è bloccato.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Almeno uno degli elementi selezionati non è copiabile.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Non possiedi neanche uno degli oggetti selezionati.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Almeno un oggetto è bloccato.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Almeno un oggetto non è copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Almeno un oggetto è bloccato.
-
-Confermi di voler prendere questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-
-Confermi di voler prendere questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Almeno un oggetto è bloccato.
-Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-Puoi comunque prendere gli oggetti selezionati.
-
-Confermi di voler prendere questi elementi?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Impossibile comprare il terreno perchè la selezione comprende più regioni.
-
-Seleziona un&apos;area più piccola e riprova.
- </notification>
- <notification name="DeedLandToGroup">
- Cedendo questo terreno al gruppo sara richiesto ai componenti di avere e di mantenere il terreno con un credito sufficiente.
-Il prezzo di acquisto del terreno non è rifondibile al proprietario.
-Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita verrà diviso in parti uguali fra i membri del gruppo.
-
-Cedi questo terreno di [AREA] m² al gruppo &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Completando la cessione del lotto, il gruppo dovrà avere e mantenere crediti sufficienti per l&apos;uso del terreno.
-La cessione includerà un contributo contemporaneo di terreno al gruppo da &apos;[NAME]&apos;.
-Il prezzo di acquisto del terreno non viene rimborsato al proprietario. Se un lotto ceduto viene venduto, il prezzo di vendita viene distribuito in maniera paritetica tra i membri del gruppo.
-
-Cedere questi [AREA] m² di terreno al gruppo &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l&apos;opzione -safe.
- </notification>
- <notification name="DisplaySetToRecommended">
- Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- L&apos;ubicazione prescelta non è attualmente disponibile.
-Sei stato trasferito in una regione vicina.
- </notification>
- <notification name="AvatarMovedLast">
- La tua ultima posizione non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
- </notification>
- <notification name="AvatarMovedHome">
- L&apos;ubicazione di casa tua non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
-Ti consigliamo di impostare una nuova posizione iniziale.
- </notification>
- <notification name="ClothingLoading">
- Gli abiti sono in corso di scaricamento.
-Puoi comunque usare [SECOND_LIFE] normalmente e gli altri residenti ti vedranno correttamente.
- <form name="form">
- <ignore name="ignore" text="Lo scaricamento sta richiedendo parecchio tempo"/>
- </form>
- </notification>
- <notification name="FirstRun">
- L&apos;installazione di [APP_NAME] è terminata.
-
-Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa effettuare l&apos;accesso.
-Vuoi tornare a [http://join.secondlife.com secondlife.com] per creare un nuovo account?
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Ci sono problemi di connessione. È possibile che ci siano problemi con la tua connessione Internet oppure sulla [SECOND_LIFE_GRID].
-
-Controlla la tua connessione Internet e riprova fra qualche minuto, oppure clicca su Aiuto per visualizzare la pagina [SUPPORT_SITE], oppure clicca su Teleport per tentare il teleport a casa tua.
- <url name="url">
- http://it.secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Aiuto"/>
- <button name="Teleport" text="Teleportati"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Il tuo avatar apparirà fra un attimo.
-
-Usa le frecce per muoverti.
-Premi F1 in qualunque momento per la guida o per apprendere altre cose di [SECOND_LIFE].
-Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
- <usetemplate name="okcancelbuttons" notext="Femminile" yestext="Maschile"/>
- </notification>
- <notification name="CantTeleportToGrid">
- Impossibile effettuare il teleport su [SLURL], in quanto si trova su una griglia ([GRID]) diversa da quella attuale ([CURRENT_GRID]). Chiudi il viewer e prova nuovamente.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- Impossibile collegarsi al server.
-[REASON]
-
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- Autorità di certificazione di questo server sconosciuta.
-
-Informazioni sul certificato:
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
-
-Accettare questa autorità?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Accetta"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
- </notification>
- <notification name="GrantedModifyRights">
- [NAME] ti ha dato il permesso di modificare i suoi oggetti.
- </notification>
- <notification name="RevokedModifyRights">
- Non sei più autorizzato a modificare gli oggetti di [NAME]
- </notification>
- <notification name="FlushMapVisibilityCaches">
- Questo reinizializzerà la cache della mappa di questa regione.
-Funzione usata solo per il debug.
-(Per la produzione, attendere 5 minuti, dopo di che tutte le mappe di ognuno si aggiorneranno dopo la loro riconnessione)
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Non è possibile acquistare più di un oggetto alla volta. Riprova selezionando un solo oggetto.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Impossibile copiare il contenuto di più di un elemento alla volta.
-Scegli solo un oggetto e riprova.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Teleporta a casa tutti i residenti in questa regione?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Impossibile impostare le texture della regione:
-La texture del terreno [TEXTURE_NUM] ha una profondità di bit pari a [TEXTURE_BIT_DEPTH] non corretta.
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 o una immagine più piccola e quindi clicca nuovamente su &apos;Applica&apos;.
- </notification>
- <notification name="InvalidTerrainSize">
- Impossibile impostare le texture di regione:
-La texture del terreno [TEXTURE_NUM] è troppo grande se a [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 oppure con una immagine più piccola e quindi clicca di nuovo &apos;Applica&apos;.
- </notification>
- <notification name="RawUploadStarted">
- Importazione iniziata. Può impiegare fino a due minuti, a seconda della velocità della tua connessione.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Vuoi veramente impostare come base il terreno corrente, impostarlo come riferimento per i limiti dei rialzi/abbassamenti di tutto il territorio ed il suo valore impostato come base per lo strumento &apos;Ripristina&apos;?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- Puoi avere al massimo [MAX_AGENTS] residenti consentiti.
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- Puoi avere al massimo [MAX_BANNED] residenti bloccati.
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- E&apos; fallito il tentativo di aggiungere [NUM_ADDED] avatar:
-Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- Puoi avere al massimo [MAX_GROUPS] gruppi.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Imposta come predefinito"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- Puoi avere al massimo [MAX_MANAGER] manager della proprietà immobiliare.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Impossibile cambiare l&apos;aspetto fisico finchè gli abiti e i vestiti non sono caricati.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- Il nome del tuo annuncio deve iniziare con una lettera da A a Z oppure con un numero.
-Non sono consentiti caratteri di punteggiatura.
- </notification>
- <notification name="CantSetBuyObject">
- Impossibile impostare &apos;Compra l&apos;oggetto&apos;, perchè l&apos;oggetto non è in vendita.
-Imposta l&apos;oggetto per la vendita e riprova.
- </notification>
- <notification name="FinishedRawDownload">
- Hai terminato di scaricare il file del terreno nella cartella:
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadWindows">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica"/>
- </notification>
- <notification name="DownloadLinux">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
- </notification>
- <notification name="DownloadMacMandatory">
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-
-Scaricare nella cartella Applicazioni?
- <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadMac">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-
-Scaricare nella cartella Applicazioni?
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-
-Scaricare nella cartella Applicazioni?
- <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
- </notification>
- <notification name="FailedUpdateInstall">
- Si è verificato un errore durante l&apos;aggiornamento del viewer.
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- Non è stato possibile installare un aggiornamento richiesto.
-Non potrai accedere fino a quando non verrà aggiornato [APP_NAME].
-
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="Esci"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- È disponibile un aggiornamento obbligatorio per l&apos;installazione di Second Life.
-
-Puoi scaricare questo aggiornamento da http://www.secondlife.com/downloads
-oppure puoi installarlo adesso.
- <usetemplate name="okcancelbuttons" notext="Esci da Second Life" yestext="Scarica e aggiorna adesso"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- È stato scaricato un aggiornamento dell&apos;installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
- <usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- È stato scaricato un aggiornamento dell&apos;installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
- <usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- È stato scaricato un aggiornamento obbligatorio del software.
-Versione [VERSION]
-
-Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- La cessione di questo oggetto farà in modo che il gruppo:
-* Riceva i L$ pagati all&apos;oggetto
- <usetemplate ignoretext="Conferma la cessione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Vuoi aprire il browser per vedere questi contenuti?
- <usetemplate ignoretext="Lancia il browser per consultare una pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account?
- <usetemplate ignoretext="Lancia il browser per gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza.
- <usetemplate ignoretext="Lancia il browser per imparare a segnalare un problema di sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Visita il controllo di qualità Wiki [SECOND_LIFE].
- <usetemplate ignoretext="Lancia il browser per vedere la pagina Wiki sul controllo di qualità" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi.
- <usetemplate ignoretext="Lancia il browser per vedere il registro pubblico di monitoraggio dei problemi" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Vai al blog ufficiale Linden, per le ultime notizie ed informazioni.
- <usetemplate ignoretext="Lancia il browser per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Vuoi aprire la Guida per lo scripting per avere aiuto con lo scripting?
- <usetemplate ignoretext="Lancia il browser per vedere la Guida per lo scripting" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Vuoi visitare il Portale LSL per avere aiuto con lo scripting?
- <usetemplate ignoretext="Lancia il browser per vedere il Portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
- </notification>
- <notification name="ReturnToOwner">
- Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti.
-
-*ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati!
- <usetemplate ignoretext="Conferma prima di restituire gli oggetti ai relativi proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- Sei attualmente un membro del gruppo [GROUP].
-Vuoi lasciare il gruppo?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Vuoi veramente espellere tutti i residenti dalla griglia?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti i residenti"/>
- </notification>
- <notification name="MuteLinden">
- Spiacenti, non puoi bloccare un Linden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Non è possibile mettere in vendita all&apos;asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all&apos;asta.
- </notification>
- <notification label="Il blocco dell&apos;oggetto in base al nome non è riuscito," name="MuteByNameFailed">
- hai già bloccato questo nome.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Sebbene consentita, la cancellazione di contenuti può danneggiare l&apos;oggetto.
-Vuoi cancellare quell&apos;elemento?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Impossibile offrire un biglietto da visita in questo momento. Riprova fra poco.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Impossibile offrire l&apos;amicizia in questo momento. Riprova fra poco.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- È stata impostata la modalità Non disponibile.
-La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
- <usetemplate ignoretext="Cambio il mio stato sulla modalità Non disponibile" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l&apos;offerta.
-[NAME] ti invita ad aderire ad un gruppo.
- <usetemplate name="okcancelbuttons" notext="Declino" yestext="Unisciti"/>
- </notification>
- <notification name="JoinedTooManyGroups">
- Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire o crearne uno nuovo.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- Espelli questo residente con quale messaggio?
- <form name="form">
- <input name="message">
- Un amministratore ti ha disconnesso.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Espelli tutti quelli che sono sulla griglia con quale messaggio?
- <form name="form">
- <input name="message">
- Un amministratore ti ha disconnesso.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Congela questo residente con quale messaggio?
- <form name="form">
- <input name="message">
- Sei stato immobilizzato. Non puoi muoverti o usare la chat. Un amministratore ti contatterà con un messaggio (IM).
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Scongela questo residente con quale messaggio?
- <form name="form">
- <input name="message">
- Non sei più immobilizzato.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="SetDisplayNameSuccess">
- Ciao [DISPLAY_NAME]!
-
-Come nel modo reale, prima che tutti conoscano il tuo nuovo nome ci vorrà del tempo. Saranno necessari alcuni giorni per [http://wiki.secondlife.com/wiki/Setting_your_display_name l&apos;aggiornamento del nome] in oggetti, script, ricerca, ecc.
- </notification>
- <notification name="SetDisplayNameBlocked">
- Non puoi cambiare il tuo nome visualizzato. Se ritieni che si tratta di un errore, contatta l&apos;assistenza.
- </notification>
- <notification name="SetDisplayNameFailedLength">
- Il nome è troppo lungo. La lunghezza massima dei nomi visualizzati è di [LENGTH] caratteri.
-
-Riprova con un nome più corto.
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- Non è possibile impostare il tuo nome visualizzato. Riprova più tardi.
- </notification>
- <notification name="SetDisplayNameMismatch">
- I nomi visualizzati inseriti non corrispondono. Inseriscili nuovamente.
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- Devi aspettare prima di cambiare il nome visualizzato.
-
-Vedi http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Riprova più tardi.
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- Non è possibile impostare il nome richiesto perché contiene una parola vietata.
-
- Riprova con un altro nome.
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- Il nome visualizzato scelto contiene caratteri non validi.
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- Il nome visualizzato deve contenere lettere, non solo segni di punteggiatura.
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) ha il nuovo nome [NEW_NAME].
- </notification>
- <notification name="OfferTeleport">
- Offri un teleport nel posto dove sei con il seguente messaggio?
- <form name="form">
- <input name="message">
- Raggiungimi a [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Chiedere, in qualità di Admin, al residente di raggiungerti?
- <form name="form">
- <input name="message">
- Raggiungimi in [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Sei sicuro di volere il teleport a &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
- <usetemplate ignoretext="Conferma il teleport verso un punto di riferimento" name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
- </notification>
- <notification name="TeleportToPick">
- Teleport a [PICK]?
- <usetemplate ignoretext="Conferma che voglio il teleport verso l&apos;ubicazione nei Luoghi preferiti" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToClassified">
- Teleport a [CLASSIFIED]?
- <usetemplate ignoretext="Conferma il teleport verso questa posizione negli annunci" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- Teleport a [HISTORY_ENTRY]?
- <usetemplate ignoretext="Conferma il teleport verso un luogo che compare nella cronologia" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
- </notification>
- <notification label="Manda un messaggio a tutti nella tua proprietà" name="MessageEstate">
- Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Cambia la tipologia della proprietà Linden" name="ChangeLindenEstate">
- Stai per apportare modifiche ad una proprietà che appartiene a Linden (continente, teen grid, orientamento e così via).
-
-Questa è un&apos;operazione da effettuare con molta cautela, in quanto può incidere profondamente sulla vita dei residenti in Second Life. Sul continente, l&apos;azione modificherà migliaia di regioni e creerà un grosso carico sul server.
-
-Vuoi procedere?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification label="Cambia la tipologia Linden di accesso alla proprietà" name="ChangeLindenAccess">
- Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.).
-
-Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse.
-Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd">
- Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedAgentRemove">
- Rimuovi dalla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedGroupAdd">
- Aggiungi al gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateAllowedGroupRemove">
- Rimuovi dal gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateBannedAgentAdd">
- Rifiuta l&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateBannedAgentRemove">
- Rimuovi questo residente dalla lista dei residenti bloccati nell&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateManagerAdd">
- Aggiungi come gestore della proprietà solo a questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Seleziona la proprietà" name="EstateManagerRemove">
- Rimuovi come gestore della proprietà solo per questa proprietà oppure per [ALL_ESTATES]?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
- </notification>
- <notification label="Conferma espulsione" name="EstateKickUser">
- Espelli [EVIL_USER] da questa proprietà?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Confermi di voler cambiare il Regolamento della proprietà?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
-
-Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di accesso?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
- </url>
- <usetemplate ignoretext="Non posso entrare in questa regione a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Non ti è consentito entrare in quella regione a causa della categoria di accesso impostata nelle preferenze.
-
-Per entrare nella regione, dovrai modificare la tua categoria di accesso. Ciò ti consentirà inoltre di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Per annullare le modifiche in un secondo momento, vai a Io &gt; Preferenze &gt; Generali.
- <form name="form">
- <button name="OK" text="Cambia preferenza"/>
- <button default="true" name="Cancel" text="Chiudi"/>
- <ignore name="ignore" text="La categoria di accesso impostata mi impedisce di entrare in una regione"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- La tua categoria di accesso attuale è [RATING].
- </notification>
- <notification name="LandClaimAccessBlocked">
- Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso.
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
- </url>
- <usetemplate ignoretext="Non posso richiedere questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- Non puoi richiedere questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
- <usetemplate ignoretext="Le mie preferenze di categoria di accesso mi impediscono di richiedere terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
- </url>
- <usetemplate ignoretext="Non posso acquistare questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Non puoi acquistare questa land a causa della tua categoria di accesso.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
- <usetemplate ignoretext="Le mie Preferenze di accesso mi impediscono di acquistare terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- Hai selezionato troppi prim. Seleziona non più di [MAX_PRIM_COUNT] prim e riprova
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Problemi nell&apos;importazione del regolamento della proprietà.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Si sono riscontrati problemi nell&apos;aggiungere un nuovo manager della proprietà. Una o più proprietà potrebbero avere la lista dei manager piena.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Si sono riscontrati problemi nell&apos;aggiunta a questo elenco della proprietà. Una o più proprietà potrebbe avere una lista piena.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Impossibile caricare la risorsa della notecard in questo momento.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Permessi insufficienti per vedere la notecard associata con l&apos;asset ID richiesto.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- L&apos;asset ID della notecard è mancante dal database.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Ricorda: le tariffe per gli annunci non sono rimborsabili.
-
-Pubblica questo annuncio adesso per [AMOUNT]L$?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Queste inserzioni includono contenuti di tipo Moderato?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="SetGroupMature">
- Questo gruppo include contenuti di tipo Moderato?
- <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification label="Conferma il riavvio" name="ConfirmRestart">
- Vuoi veramente far ripartire la regione in 2 minuti?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification label="Manda un messaggio a tutti in questa regione" name="MessageRegion">
- Scrivi un breve annuncio che verrà mandato a tutti in questa regione.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="Cambiato il contenuto Moderato" name="RegionMaturityChange">
- La classificazione di questa regione è stata aggiornata.
-Un periodo di tempo è necessario prima che la modifica venga integrata nella mappa.
-
-Per accedere a regioni per adulti, i residenti devono avere un Account verificato, mediante verifica dell&apos;età oppure mediante verifica della modalità di pagamento.
- </notification>
- <notification label="Versione voice non compatibile" name="VoiceVersionMismatch">
- Questa versione di [APP_NAME] non è compatibile con la funzionalità di chat vocale in questa regione. Affinché la chat vocale funzioni correttamente, dovrai aggiornare [APP_NAME].
- </notification>
- <notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner">
- Impossibile comprare oggetti da proprietari diversi nello stesso momento.
-Seleziona solo un oggetto e riprova.
- </notification>
- <notification label="Impossibile comprare il contenuto" name="BuyContentsOneOnly">
- Impossibile comprare il contenuto di più di un oggetto per volta.
-Seleziona solo un oggetto e riprova.
- </notification>
- <notification label="Impossibile comprare il contenuto" name="BuyContentsOneOwner">
- Impossibile comprare oggetti da proprietari differenti nello stesso momento.
-Scegli un solo oggetto e riprova.
- </notification>
- <notification name="BuyOriginal">
- Compra l&apos;oggetto originale da [OWNER] per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Compra l&apos;oggetto originale per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Compra una copia da [OWNER] per [PRICE]L$?
-L&apos;oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Compra una copia per [PRICE]L$?
-L&apos;oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Compra il contenuto da [OWNER] per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Compra il contenuto per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Questa transazione ti permetterà di:
-[ACTION]
-
-Confermi di voler procedere all&apos;acquisto?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Questa transazione farà:
-[ACTION]
-
-Confermi di voler procedere all&apos;acquisto?
-Ridigita la tua password e premi OK.
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Nota:
-Hai aggiornato l&apos;ubicazione di questo preferito ma gli altri dettagli conserveranno il loro valore originale.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- Hai selezionato elementi dall&apos;inventario &apos;non copiabili&apos;.
-Questi elementi verranno trasferiti nel tuo inventario, ma non copiati.
-
-Trasferisci gli elementi nell&apos;inventario?
- <usetemplate ignoretext="Avvertimi quando tento di rimuovore elementi per i quali non è consentita la copia da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- Hai selezionato elementi dell&apos;inventario non copiabili. Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati.
-Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script.
-
-Trasferisci gli elementi nell&apos;inventario?
- <usetemplate ignoretext="Avvertimi se tento di rimuovore di elementi per i quali non è consentita la copia e che potrebbero danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Attenzione: l&apos;azione Paga oggetto è stata impostata, ma funzionerà soltanto se inserisci uno script con un evento money().
- <form name="form">
- <ignore name="ignore" text="Ho impostato l&apos;azione Paga oggetto costruendo un oggetto senza uno script money()"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- Non ci sono elementi in questo oggetto che tu possa copiare.
- </notification>
- <notification name="WebLaunchAccountHistory">
- Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
- <usetemplate ignoretext="Lancia il browser per vedere la cronologia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
- </notification>
- <notification name="ConfirmQuit">
- Confermi di voler uscire?
- <usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="Conferma prima di cancellare gli elementi" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Usa questo strumento per segnalare violazioni a [http://secondlife.com/corporate/tos.php Terms of Service] e [http://secondlife.com/corporate/cs.php Community Standards].
-
-Ogni abuso segnalato verrà esaminato e risolto.
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Scegli una categoria per questa segnalazione di abuso.
-Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Introduci il nome di chi abusa.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Inserisci il luogo dove l&apos;abuso è avvenuto.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Inserisci un yiyolo descrittivo dell&apos;abuso che è avvenuto.
-Introducendo un titolo descrittivo accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Inserisci una descrizione dettagliata dell&apos;abuso che è avvenuto.
-Devi essere il più specifico possibile, includendo i nomi e i dettagli dell&apos;incidente che stai segnalando.
-Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Gentile residente,
-
-Ci risulta che tu stia segnalando una violazione di proprietà intellettuale. Per segnalare correttamente la violazione:
-
-(1) Definizione di abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti di proprietà intellettuale. L&apos;Ufficio abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini del servizio] di [SECOND_LIFE] oppure gli [http://secondlife.com/corporate/cs.php Standard della comunità]. Tieni comunque presente che l&apos;Ufficio abusi non gestisce e non risponde alle richieste di rimozione di contenuti da [SECOND_LIFE].
-
-(2) DMCA o rimozione di contenuti. Per richiedere la rimozione di contenuti da [SECOND_LIFE], devi compilare una denuncia valida di violazione come definito nelle nostra [http://secondlife.com/corporate/dmca.php Regole DMCA] (leggi sul copyright).
-
-Per continuare con il procedimento di abuso, chiudi questa finestra e completa la compilazione della segnalazione. È possibile che dovrai specificare la categoria CopyBot o Sfruttamento dei diritti.
-
-Grazie,
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- I seguenti componenti obbligatori sono mancanti da [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Sostituisci gli oggetti indossati" name="ReplaceAttachment">
- C&apos;è già un oggetto indossato in questo punto del corpo.
-Vuoi sostituirlo con l&apos;oggetto selezionato?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Sostituisci un pezzo collegato con l&apos;elemento selezionato"/>
- <button ignore="Replace Automatically" name="Yes" text="OK"/>
- <button ignore="Never Replace" name="No" text="Annulla"/>
- </form>
- </notification>
- <notification label="Avviso di &apos;Occupato&apos;" name="BusyModePay">
- Sei in modalità &apos;Occupato&apos;, ciò significa che non riceverai ciò che attendi per questo pagamento.
-
-Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono in modalià Non disponibile"/>
- <button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
- <button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- La cartella &apos;[FOLDERNAME]&apos; è una cartella di sistema. L&apos;eliminazione di cartelle di sistema può creare instabilità. Sei sicuro di volerla eliminare?
- <usetemplate ignoretext="Chiedi conferma prima di eliminare una cartella di sistema" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Vuoi veramente eliminare in modo permanente il contenuto del tuo Cestino?
- <usetemplate ignoretext="Conferma prima di svuotare la cartella del Cestino inventario" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Confermi di volere cancellare i tuoi cookie?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Confermi di voler cancellare la lista degli URL salvati?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Vuoi veramente eliminare in modo definitivo il contenuto dei tuoi Oggetti smarriti?
- <usetemplate ignoretext="Conferma prima di svuotare della cartella Oggetti smarriti" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="CopySLURL">
- Lo SLurl seguente è stato copiato negli Appunti:
- [SLURL]
-
-Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra degli indirizzi di un browser web.
- <form name="form">
- <ignore name="ignore" text="Lo SLurl è stato copiato negli Appunti"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- Vuoi sovrascrivere le preimpostazioni salvate?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- Vuoi cancellare [SKY]?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="WLNoEditDefault">
- Non puoi modificare o cancellare una preimpostazione di fabbrica.
- </notification>
- <notification name="WLMissingSky">
- Questo file di ciclo giornaliero fa riferimento ad un file di cielo mancante: [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Effetto di post elaborazione già presente. Vuoi sovrascrivere?
- <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
- </notification>
- <notification name="NewSkyPreset">
- Fornisci il nome per il nuovo cielo.
- <form name="form">
- <input name="message">
- Nuova preimpostazione
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- La preimpostazione esiste già!
- </notification>
- <notification name="NewWaterPreset">
- Fornisci il nome per la nuova preregolazione del livello dell&apos;acqua.
- <form name="form">
- <input name="message">
- Nuova preimpostazione
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- La preimpostazione esiste già!
- </notification>
- <notification name="WaterNoEditDefault">
- Non puoi modificare o cancellare una preimpostazione.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Impossibile iniziare una nuova sessione di chat con [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- La sessione chat con [NAME] deve chiudere.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Non puoi comprare un oggetto mentre è unito.
- </notification>
- <notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails">
- Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell&apos;oggetto deve cancellare l&apos;oggetto oppure reimpostare gli script nell&apos;oggetto.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Vuoi indossare automaticamente gli indumenti che stai per creare?
- <usetemplate ignoretext="Indossare gli abiti che creo mentre modifico il mio aspetto" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="NotAgeVerified">
- Per entrare in questa zona, devi avere eseguito la verifica dell&apos;età. Vuoi andare sul sito di [SECOND_LIFE] per verificare la tua età?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=it
- </url>
- <usetemplate ignoretext="Non ho verificato la mia età" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Per poter visitare questa zona devi avere devi aver fornito informazioni di pagamento a Linden Lab. Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=it
- </url>
- <usetemplate ignoretext="Manca la registrazione delle informazioni di pagamento" name="okcancelignore" notext="No" yestext="Si"/>
- </notification>
- <notification name="MissingString">
- La stringa [STRING_NAME] non è presente in strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Annullato
- </notification>
- <notification name="CancelledSit">
- Seduta annullata
- </notification>
- <notification name="CancelledAttach">
- Attaccamento annullato
- </notification>
- <notification name="ReplacedMissingWearable">
- Gli abiti/parti del corpo mancanti sono stati sostituiti con quelli di default .
- </notification>
- <notification name="GroupNotice">
- Oggetto: [SUBJECT], Messaggio: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] è Online
- </notification>
- <notification name="FriendOffline">
- [NAME] è Offline
- </notification>
- <notification name="AddSelfFriend">
- Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Sto importando le fotografie per l&apos;uso inworld e per il web...
-(Durata circa 5 minuti.)
- </notification>
- <notification name="UploadPayment">
- Hai pagato [AMOUNT]L$ per il caricamento.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Il caricamento della fotografia nel sito web è andato a buon fine.
- </notification>
- <notification name="UploadSnapshotDone">
- Il caricamento della fotografia inworld è andato a buon fine.
- </notification>
- <notification name="TerrainDownloaded">
- Terrain.raw caricato
- </notification>
- <notification name="GestureMissing">
- Manca la gesture [NAME] dal database.
- </notification>
- <notification name="UnableToLoadGesture">
- Impossibile caricare la gesture [NAME].
- </notification>
- <notification name="LandmarkMissing">
- Landmark non trovato nel database.
- </notification>
- <notification name="UnableToLoadLandmark">
- Impossibile caricare il Landmark di riferimento. Riprova.
- </notification>
- <notification name="CapsKeyOn">
- Hai il blocco delle maiuscole attivato.
-Questo potrebbe incidere sulla tua password.
- </notification>
- <notification name="NotecardMissing">
- Notecard non trovata nel database.
- </notification>
- <notification name="NotecardNoPermissions">
- Non hai il permesso di vedere questo biglietto.
- </notification>
- <notification name="RezItemNoPermissions">
- Permessi insufficienti per creare un oggetto.
- </notification>
- <notification name="UnableToLoadNotecard">
- Impossibile caricare la notecard in questo momento.
- </notification>
- <notification name="ScriptMissing">
- Script non trovato nel database.
- </notification>
- <notification name="ScriptNoPermissions">
- Permessi insufficenti per visualizzare lo script.
- </notification>
- <notification name="UnableToLoadScript">
- Impossibile caricare lo script. Riprova.
- </notification>
- <notification name="IncompleteInventory">
- Il contenuto che stai offrendo per il momento non è localmente disponibile. Prova a rioffrire gli oggetti fra un minuto.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Non è possibile modificare le categorie protette.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Non è possibile rimuovere le categorie protette.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Impossibile acquistare l&apos;oggetto durante il download dei dati.
-Riprova.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Impossibile collegare l&apos;oggetto durante il download dei dati.
-Riprova.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Puoi acquistare oggetti soltanto da un proprietario per volta.
-Seleziona solo un oggetto.
- </notification>
- <notification name="ObjectNotForSale">
- Questo oggetto non è in vendita.
- </notification>
- <notification name="EnteringGodMode">
- Entra in modalità divina, livello [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Esci dalla modalità divina, livello [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Non hai l&apos;autorizzazione a copiare.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] ha ricevuto la tua offerta di inventario.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] non ha accettato la tua offerta dall&apos;inventario.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Il tuo biglietto da visita è stato accettato.
- </notification>
- <notification name="CallingCardDeclined">
- Il tuo biglietto da visita non è stato accettato.
- </notification>
- <notification name="TeleportToLandmark">
- Puoi teleportarti alle ubicazioni come &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, quindi selezionare la scheda Punti di riferimento.
-Clicca su un punto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
-(Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e scegliere Teleport.)
- </notification>
- <notification name="TeleportToPerson">
- Puoi contattare il residente &apos;[NAME]&apos; aprendo il pannello Persone nel lato destro del tuo schermo.
-Seleziona il residente dall&apos;elenco, clicca su &apos;IM&apos; in basso nel pannello.
-(Puoi anche fare doppio clic sul nome nell&apos;elenco oppure fare clic con il pulsante destro del mouse e selezionare &apos;IM&apos;).
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Non è possibile selezionare il terreno attraverso i confini del server.
-Prova a selezionare una parte di terreno più piccola.
- </notification>
- <notification name="SearchWordBanned">
- Alcuni termini della ricerca sono stati esclusi a causa delle restrizioni di contenuto come esposto negli Standard della comunità.
- </notification>
- <notification name="NoContentToSearch">
- Seleziona almeno un tipo di contenuto per la ricerca (Generale, Moderato o Adulti).
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Notifica eventi:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Dettagli"/>
- <button name="Cancel" text="Cancella"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Tutti gli oggetti presenti sul terreno, che saranno trasferiti al compratore di questa terra, saranno ora evidenziati.
-
-* Gli alberi e l&apos;erba che cederai non saranno evidenziati.
- <form name="form">
- <button name="Done" text="Fatto"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Usa lo stesso tasto per disattivare la gesture:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Il software QuickTime di Apple sembra non essere installato sul tuo computer.
-Se vuoi vedere contenuto multimediale in streaming sui lotti che lo supportano, vai alla pagina [http://www.apple.com/quicktime QuickTime] e installa il Player QuickTime.
- </notification>
- <notification name="NoPlugin">
- Non è stato trovato alcun plugin multimediale per gestire il tipo mime [MIME_TYPE]. Il media di questo tipo non è disponibile.
- </notification>
- <notification name="MediaPluginFailed">
- Questo plugin multimediale non funziona:
- [PLUGIN]
-
-Reinstalla il plugin o contatta il venditore se continui ad avere questi problemi.
- <form name="form">
- <ignore name="ignore" text="Mancato funzionamento del plugin multimediale"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell&apos;inventario.
- </notification>
- <notification name="OtherObjectsReturned">
- Sono stati restituiti all&apos;inventario di &apos;[NAME]&apos; gli oggetti sul lotto di terreno selezionato di sua proprietà.
- </notification>
- <notification name="OtherObjectsReturned2">
- Sono stati restituiti al proprietario gli oggetti selezionati sul lotto nella terra di proprietà del residente &apos;[NAME]&apos;.
- </notification>
- <notification name="GroupObjectsReturned">
- Gli oggetti selezionati sul terreno e condivisi con il gruppo [GROUPNAME] sono stati restituiti nell&apos;inventario dei propietari.
-Gli oggetti trasferibili ceduti sono stati restituiti ai proprietari precedenti.
-Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancellati.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari.
- </notification>
- <notification name="ServerObjectMessage">
- Messaggio da [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- Su questo terreno sono abilitati i danni.
-Qui potresti essere ferito. Se dovessi morire verrai teleportato a casa tua.
- </notification>
- <notification name="NoFly">
- In questa zona è proibito il volo.
-Qui non puoi volare.
- </notification>
- <notification name="PushRestricted">
- Questa zona non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
- </notification>
- <notification name="NoVoice">
- Questa zona ha la chat vocale disattivata. Non puoi sentire nessuno parlare.
- </notification>
- <notification name="NoBuild">
- In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti.
- </notification>
- <notification name="ScriptsStopped">
- Un amministratore ha temporaneamente disabilitato gli script in questa regione.
- </notification>
- <notification name="ScriptsNotRunning">
- In questa terra nessuno script è attivo.
- </notification>
- <notification name="NoOutsideScripts">
- Questo terreno non consente script esterni.
-
-Qui funzionano soltanto gli script del proprietario del terreno.
- </notification>
- <notification name="ClaimPublicLand">
- Puoi solo richiedere terreni pubblici nella regione in cui sei posizionato.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l&apos;età e/o installare l&apos;ultima versione del programma.
-
-Visita la Knowledge Base per informazioni sull&apos;accesso alle aree con queste categorie di accesso.
- </notification>
- <notification name="URBannedFromRegion">
- Tu hai l&apos;accesso bloccato a questa regione.
- </notification>
- <notification name="NoTeenGridAccess">
- Il tuo account non può connettersi a questa regione della griglia per Teenager.
- </notification>
- <notification name="ImproperPaymentStatus">
- Non hai una impostazioni di pagamento corrette per entrare in questa regione.
- </notification>
- <notification name="MustGetAgeParcel">
- Devi essere di età verificata per entrare in questa terra.
- </notification>
- <notification name="NoDestRegion">
- Non è stata trovata nessuna regione di destinazione.
- </notification>
- <notification name="NotAllowedInDest">
- Non hai il permesso di accedere alla regione di destinazione.
- </notification>
- <notification name="RegionParcelBan">
- Non puoi attraversare la regione passando su un terreno ad accesso interdetto. Prova in un altro modo.
- </notification>
- <notification name="TelehubRedirect">
- Sei stato rediretto ad un punto di snodo di teletrasporto.
- </notification>
- <notification name="CouldntTPCloser">
- Non è stato possibile teleportarti più vicino al luogo di destinazione.
- </notification>
- <notification name="TPCancelled">
- Teletrasporto annullato.
- </notification>
- <notification name="FullRegionTryAgain">
- La regione in cui stai tentando di accedere è attualmente piena.
-Riprova tra qualche istante.
- </notification>
- <notification name="GeneralFailure">
- Fallimento generale.
- </notification>
- <notification name="RoutedWrongRegion">
- Sei stato instradato verso la regione sbagliata. Riprova.
- </notification>
- <notification name="NoValidAgentID">
- Nessun ID valido.
- </notification>
- <notification name="NoValidSession">
- Nessun ID valido.
- </notification>
- <notification name="NoValidCircuit">
- Nessun codice circuito valido.
- </notification>
- <notification name="NoValidTimestamp">
- Nessuna data/timestamp valido.
- </notification>
- <notification name="NoPendingConnection">
- Impossibile creare la connessione in sospeso.
- </notification>
- <notification name="InternalUsherError">
- Si è verificato un errore interno durante il tentativo di trasportarti alla destinazione. Potrebbero esserci problemi in [SECOND_LIFE] al momento.
- </notification>
- <notification name="NoGoodTPDestination">
- Impossibile trovare una buona destinazione per il teletrasporto in questa regione.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Si è verificato un errore interno durante il tentativo di risolvere le coordinate per la richiesta di teletrasporto. Può darsi che ci siano problemi in [SECOND_LIFE] al momento.
- </notification>
- <notification name="NoValidLanding">
- Non è stato trovato un punto di atterraggio valido.
- </notification>
- <notification name="NoValidParcel">
- Non è stato trovato nessun territorio valido.
- </notification>
- <notification name="ObjectGiveItem">
- Un oggetto denominato &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; di proprietà di [NAME_SLURL] ti ha offerto &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell&apos;Inventario. Per passare alla modalità Avanzata, esci e riavvia l&apos;applicazione e cambia le impostazioni della modalità nella schermata di accesso.
- <form name="form">
- <button name="Keep" text="Mantieni oggetto"/>
- <button name="Discard" text="Rifiuta oggetto"/>
- <button name="Mute" text="Blocca oggetto"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] ti ha offerto [ITEM_SLURL]. Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell&apos;Inventario. Per passare alla modalità Avanzata, esci e riavvia l&apos;applicazione e cambia le impostazioni della modalità nella schermata di accesso.
- <form name="form">
- <button name="Show" text="Mantieni oggetto"/>
- <button name="Discard" text="Rifiuta oggetto"/>
- <button name="Mute" text="Blocca utente"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Iscriviti"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Info" text="Info"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] ti ha offerto il teleport alla sua ubicazione:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="Teleport"/>
- <button name="Cancel" text="Cancella"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- Offerta di Teleport inviata a [TO_NAME]
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Successivo"/>
- <button name="GoNow..." text="Vai ora..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] ti ha offerto di diventare amici.
-
-[MESSAGE]
-
-(L&apos;impostazione predefinita consente a ciascuno di vedere se l&apos;altro è online.)
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- Hai offerto l&apos;amicizia a [TO_NAME]
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] ti ha offerto di diventare amici.
-
-(L&apos;impostazione predefinita consente a ciascuno di vedere se l&apos;altro è online.)
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] ha accettato la tua offerta di amicizia.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] ha rifiutato la tua offerta di amicizia.
- </notification>
- <notification name="FriendshipAcceptedByMe">
- Offerta di amicizia accettata.
- </notification>
- <notification name="FriendshipDeclinedByMe">
- Offerta di amicizia rifiutata.
- </notification>
- <notification name="OfferCallingCard">
- [NOME] ti offre il suo biglietto da visita.
-Questo sarà aggiunto nel tuo inventario come segnalibro per consentirti di inviare rapidamente messaggi IM a questo residente.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Questa regione verrà riavviata fra [MINUTES] minuti.
-Se rimani qui verrai scollegato da Second Life.
- </notification>
- <notification name="RegionRestartSeconds">
- Questa regione verrà riavviata fra [SECONDS] secondi.
-Se rimani qui verrai scollegato da Second Life.
- </notification>
- <notification name="LoadWebPage">
- Caricare la pagina Web [URL]?
-
-[MESSAGE]
-
-Dall&apos;oggetto: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, proprietario: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Caricare"/>
- <button name="Cancel" text="Annulla"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- Impossibile trovare [TYPE] nel database.
- </notification>
- <notification name="FailedToFindWearable">
- Impossibile trovare [TYPE] chiamato [DESC] nel database.
- </notification>
- <notification name="InvalidWearable">
- L&apos;elemento che stai tentando di indossare usa delle caratteristiche che il tuo viewer non può leggere. Aggiorna la versione di [APP_NAME] per poterlo indossare.
- </notification>
- <notification name="ScriptQuestion">
- &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, un oggetto posseduto da &apos;[NAME]&apos; vorrebbe:
-
-[QUESTIONS]
-OK?
- <form name="form">
- <button name="Yes" text="Si"/>
- <button name="No" text="No"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Un oggetto di nome &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, posseduto da &apos;[NAME]&apos; vorrebbe:
-
-[QUESTIONS]
-Se non ti fidi di questo oggetto e del suo ideatore, dovresti rifiutare la richiesta.
-
-Concedi questa richiesta?
- <form name="form">
- <button name="Grant" text="Accetta"/>
- <button name="Deny" text="Nega"/>
- <button name="Details" text="Dettagli..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; di [NAME]
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignora"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; di [GROUPNAME]
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignora"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- Grazie per aver inviato il pagamento.
-
-Il tuo saldo in L$ sarà aggiornato al termine dell&apos;elaborazione. Se l&apos;elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l&apos;ammontare dell&apos;acquisto verrà accreditato sul tuo saldo in US$.
-
-Potrai controllare lo stato del pagamento nella pagina della cronologia delle transazioni nel tuo [http://secondlife.com/account/ Dashboard]
- </notification>
- <notification name="FirstOverrideKeys">
- I tuoi movimenti della tastiera vengono ora gestiti da un oggetto.
-Prova i tasti freccia o AWSD per vedere quello che fanno.
-Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro utilizzo.
-Premi &apos;M&apos; per farlo.
- </notification>
- <notification name="FirstSandbox">
- Questa è una Sandbox, serve ai residenti per imparare a costruire.
-
-Gli oggetti che costruisci qui verranno eliminati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro del mouse e scegliere Prendi per trasferirle nel tuo Inventario.
- </notification>
- <notification name="MaxListSelectMessage">
- È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] ti sta invitando ad una chiamata in chat vocale.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [NAME] ha ricevuto un IM ed è stato automaticamente sbloccato.
- </notification>
- <notification name="AutoUnmuteByMoney">
- [NAME] ha ricevuto del denaro ed è stato automaticamente sbloccato.
- </notification>
- <notification name="AutoUnmuteByInventory">
- [NAME] ha ricevuto un&apos;offerta di inventario ed è stato automaticamente sbloccato.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] si è aggiunto alla chiamata in chat vocale con il gruppo [GROUP].
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] si è aggiunto alla chiamata in chat vocale con una conferenza.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] ti sta invitando ad una conferenza in chat.
-Clicca su Accetta per unirti alla chat oppure su Declina per declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
- <form name="form">
- <button name="Accept" text="Accetta"/>
- <button name="Decline" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- La chiamata vocale a cui si sta cercando di unirsi, [VOICE_CHANNEL_NAME], ha raggiunto la capacità massima. Si prega di riprovare più tardi.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Siamo spiacenti. Questa area ha raggiunto la capacità massima per le chiamate voice. Si prega di provare ad usare il voice in un&apos;altra area.
- </notification>
- <notification name="VoiceChannelDisconnected">
- Sei stato scollegato da [VOICE_CHANNEL_NAME]. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] ha chiuso la chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] ha declinato la tua chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Collegamento a [VOICE_CHANNEL_NAME] non riuscito, riprova più tardi. Verrai ora ricollegato alla chat vocale nei dintorni.
- </notification>
- <notification name="VoiceLoginRetry">
- Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto.
- </notification>
- <notification name="VoiceEffectsExpired">
- Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
- </notification>
- <notification name="VoiceEffectsWillExpire">
- Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
- </notification>
- <notification name="VoiceEffectsNew">
- Sono disponibili nuove manipolazioni vocali.
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Soltanto i membri di un determinato gruppo possono visitare questa zona.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Non puoi entrare nel terreno, sei stato bloccato.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Non puoi entrare nel terreno, non fai parte della lista di accesso.
- </notification>
- <notification name="VoiceNotAllowed">
- Non hai il permesso di collegarti ad una voice chat con [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME]. Riprova più tardi.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Lo SLurl su cui hai cliccato non è valido.
- </notification>
- <notification name="BlockedSLURL">
- Uno SLurl è stato ricevuto da un browser sconosciuto o non sicuro e, per sicurezza, è stato bloccato.
- </notification>
- <notification name="ThrottledSLURL">
- Sono stati ricevuti più SLurl da un browser sconosciuto o non sicuro in un breve periodo di tempo.
-Per sicurezza, verranno bloccati per alcuni secondi.
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="Rispondi"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- Sicuro di voler chiudere tutti gli IM?
- <usetemplate ignoretext="Conferma prima della chiusura di tutti gli IM" name="okcancelignore" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- L&apos;elemento da collegare è stato salvato.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Impossibile trovare l&apos;argomento nell&apos;aiuto per questo elemento.
- </notification>
- <notification name="ObjectMediaFailure">
- Errore del server: mancato aggiornamento o ottenimento del media.
-&apos;[ERROR]&apos;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- La tua chat di testo è stata interrotta dal moderatore.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- La tua voce è stata interrotta dal moderatore.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- Sei sicuro di volere cancellare la cronologia dei tuoi teleport?
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- Il pulsante selezionato non può essere visualizzato in questo momento.
-Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
- </notification>
- <notification name="ShareNotification">
- Scegli i residenti con i quali condividere.
- </notification>
- <notification name="ShareItemsConfirmation">
- Sei sicuro di volere condividere gli oggetti
-
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-
-Con i seguenti residenti?
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Ok"/>
- </notification>
- <notification name="ItemsShared">
- Gli oggetti sono stati condivisi.
- </notification>
- <notification name="DeedToGroupFail">
- Cessione al gruppo non riuscita.
- </notification>
- <notification name="AvatarRezNotification">
- ( in esistenza da [EXISTENCE] secondi )
-Nuvola avatar &apos;[NAME]&apos; dileguata dopo [TIME] secondi.
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- ( in esistenza da [EXISTENCE] secondi )
-Baking dei vestiti terminato dopo [TIME] secondi.
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- ( in esistenza da [EXISTENCE] secondi )
-Hai inviato un aggiornamento al tuo aspetto dopo [TIME] secondi.
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; trasformato in nuvola.
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( presente da [EXISTENCE] secondi )
-È comparso l&apos;avatar &apos;[NAME]&apos;.
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; partito dopo [TIME] secondi sotto forma di nuvola.
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; è entrato nella modalità aspetto.
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; ha lasciato la modalità aspetto.
- </notification>
- <notification name="NoConnect">
- Ci sono problemi di connessione tramite [PROTOCOL] [HOSTID].
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- A causa di problemi di connessione al server vocale
-
-[HOSTID]
-
-le comunicazioni tramite voce non saranno disponibili.
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; è partito completamente caricato.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( In esistenza da [EXISTENCE] secondi)
-Hai caricato una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( In esistenza da [EXISTENCE] secondi)
-Hai aggiornato localmente una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
- </notification>
- <notification name="ConfirmLeaveCall">
- Sei sicuro di volere uscire dalla chiamata?
- <usetemplate ignoretext="Conferma prima di uscire dalla chiamata" name="okcancelignore" notext="No" yestext="Sì"/>
- </notification>
- <notification name="ConfirmMuteAll">
- Hai scelto di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo.
-In questo modo verrà disattivato l&apos;audio anche di tutti i residenti che si
-uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato.
-
-Disattiva audio di tutti?
- <usetemplate ignoretext="Conferma prima di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Annulla" yestext="Ok"/>
- </notification>
- <notification label="Chat" name="HintChat">
- Per partecipare alla conversazione, digita nel campo chat in basso.
- </notification>
- <notification label="Alzati" name="HintSit">
- Per alzarti ed uscire dalla posizione seduta, clicca sul pulsante Alzati.
- </notification>
- <notification label="Parla" name="HintSpeak">
- Clicca sul pulsante Parla per attivare o disattivare il microfono.
-
-Clicca sul tasto freccia su per visualizzare il pannello di controllo voce.
-
-Se nascondi il tasto Parla viene disattivata la funzione voce.
- </notification>
- <notification label="Esplora il mondo" name="HintDestinationGuide">
- La Guida alle destinazioni contiene migliaia di nuovi luoghi da scoprire. Seleziona una destinazione e scegli Teleport per iniziare a esplorare.
- </notification>
- <notification label="Pannello laterale" name="HintSidePanel">
- Nel pannello laterale puoi acccedere rapidamente all&apos;inventario, ai vestiti, ai profili e ad altro ancora.
- </notification>
- <notification label="Movimento" name="HintMove">
- Per camminare o correre, apri il pannello Sposta e usa le frecce direzionali per spostarti. Puoi anche usare le frecce direzionali sulla tastiera del computer.
- </notification>
- <notification label="" name="HintMoveClick">
- 1. Clicca per camminare
-Clicca dovunque sul terreno per camminare verso quella posizione.
-
-2. Clicca e trascina per ruotare la visuale
-Clicca e trascina dovunque nel mondo per ruotare la visuale
- </notification>
- <notification label="Nome visualizzato" name="HintDisplayName">
- Imposta qui il tuo nome visualizzato personalizzabile. È in aggiunta al tuo nome utente, che non può essere cambiato. Nelle preferenze puoi anche cambiare il modo in cui vedi i nomi degli altri.
- </notification>
- <notification label="Visuale" name="HintView">
- Per cambiare la visuale della fotocamera, usa i controlli Ruota visuale e Panoramica. Ripristina la visuale premendo il tasto Esc o camminando.
- </notification>
- <notification label="Inventario" name="HintInventory">
- Trova oggetti nel tuo inventario. I più recenti si trovano nella scheda Elementi recenti.
- </notification>
- <notification label="Hai dollari Linden!" name="HintLindenDollar">
- Ecco il saldo attuale in L$. Clicca su Acquista L$ per acquistare altri dollari Linden.
- </notification>
- <notification name="PopupAttempt">
- Non è stato possibile aprire una finestra pop-up.
- <form name="form">
- <ignore name="ignore" text="Attiva tutti i pop-up"/>
- <button name="open" text="Apri finestra pop-up"/>
- </form>
- </notification>
- <notification name="AuthRequest">
- Il sito &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; nel reame &apos;[REALM]&apos; richiede un nome utente e una password.
- <form name="form">
- <input name="username" text="Nome utente"/>
- <input name="password" text="Password"/>
- <button name="ok" text="Invia"/>
- <button name="cancel" text="Annulla"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- Per cambiare la modalità è necessario uscire e riavviare.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoClassifieds">
- La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- La creazione e la modifica dei gruppi sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoPicks">
- La creazione e la modifica dei luoghi preferiti sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoWorldMap">
- La visualizzazione della mappa del mondo è disponibile solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- Le chiamate Voce sono disponibili solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- La condivisione è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- Il pagamento ad altri residenti è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
- <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
- </notification>
- <global name="UnsupportedCPU">
- - La velocità della tua CPU non soddisfa i requisiti minimi.
- </global>
- <global name="UnsupportedGLRequirements">
- Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
-
-Se continui ad avere problemi, visita la pagina [SUPPORT_SITE].
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - La tua scheda grafica non soddisfa i requisiti minimi.
- </global>
- <global name="UnsupportedRAM">
- - La memoria del tuo sistema non soddisfa i requisiti minimi.
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Se sei proprietario di un appezzamento di terreno, puoi definirlo come la tua posizione iniziale.
-In alternativa, puoi guardare sulla mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
- </global>
- <global name="You died and have been teleported to your home location">
- Sei deceduto e sei stato teleportato a casa tua.
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
deleted file mode 100644
index be001d09f8..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Chiama" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Abbandona chiamata" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Regolazione voce" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
deleted file mode 100644
index ab9b175f16..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Accende o spegne il microfono"/>
- <string name="VoiceControlBtnToolTip" value="Mostra o nasconde il pannello di regolazione voce"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Parla" name="speak_btn" tool_tip="Accendi e spegni il microfono"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Cambia le preferenze per i suoni"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesture" name="Gesture" tool_tip="Fai fare qualcosa al tuo avatar"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Visuale" name="camera_btn" tool_tip="Controlla l&apos;angolo di visualizzazione"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinazioni" name="destination_btn" tool_tip="Viaggia in Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Il mio avatar" name="avatar_btn" tool_tip="Cambia il tuo aspetto"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Persone" name="show_people_button" tool_tip="Trova persone in Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profilo" name="show_profile_btn" tool_tip="Visualizza e modifica il tuo profilo"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Istruzioni" name="show_help_btn" tool_tip="Visualizza le informazioni della guida di Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversazioni"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notifiche"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
deleted file mode 100644
index 2d17e4a0cd..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="Profilo del gruppo" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Chiama il gruppo" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Abbandona chiamata" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Apri la regolazione voce" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
deleted file mode 100644
index 269931a1a4..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profilo" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Aggiungi come amico" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport a questa persona"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Chiama" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Chiudi chiamata" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Blocca" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Sblocca" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volume chiamata" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_login.xml b/indra/newview/skins/minimal/xui/it/panel_login.xml
deleted file mode 100644
index f88230ed11..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=it
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nome utente:
- </text>
- <combo_box name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come robby12 o Stella Soleggiato"/>
- <text name="password_text">
- Password:
- </text>
- <check_box label="Ricorda password" name="remember_check"/>
- <button label="Accedi" name="connect_btn"/>
- <text name="mode_selection_text">
- Modalità:
- </text>
- <combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
- <combo_box.item label="Di base" name="Basic"/>
- <combo_box.item label="Avanzate" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- Inizia da:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/>
- <combo_box.item label="Casa mia" name="MyHome"/>
- <combo_box.item label="&lt;Scrivi nome regione&gt;" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Iscriviti
- </text>
- <text name="forgot_password_text">
- Hai dimenticato il nome utente o la password?
- </text>
- <text name="login_help">
- Ti serve aiuto con la fase di accesso?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
deleted file mode 100644
index 8e72167759..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
- <pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
- <button name="home_btn" tool_tip="Teleport a casa"/>
- <location_input label="Posizione" name="location_combo"/>
- <search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca">
- <combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
- <label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
- Barra dei Preferiti
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_people.xml b/indra/newview/skins/minimal/xui/it/panel_people.xml
deleted file mode 100644
index 81e886acf0..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Persone" name="people_panel">
- <string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso."/>
- <string name="no_filtered_recent_people" value="Nessuna persona recente con quel nome."/>
- <string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso."/>
- <string name="no_one_filtered_near" value="Nessuno vicino con quel nome."/>
- <string name="no_friends_online" value="Nessun amico online"/>
- <string name="no_friends" value="Nessun amico"/>
- <string name="no_friends_msg">
- Clicca con il pulsante destro su un Residente per aggiungerlo come amico.
-Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso.
- </string>
- <string name="no_filtered_friends_msg">
- Non riesci a trovare quello che cerchi? Prova il pulsante Destinazioni in basso.
- </string>
- <string name="people_filter_label" value="Filtro persone"/>
- <string name="groups_filter_label" value="Filtro gruppi"/>
- <string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups/[SEARCH_TERM] Cerca]."/>
- <string name="no_groups_msg" value="Stai cercando gruppi di cui far parte? Prova [secondlife:///app/search/groups Cerca]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)"/>
- <filter_editor label="Filtro" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="NELLE VICINANZE" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="Opzioni"/>
- <button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
- </panel>
- </panel>
- <panel label="I MIEI AMICI" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Tutto"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="Mostra ulteriori opzioni"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="Offri amicizia a un residente"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla lista degli amici"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="I MIEI GRUPPI" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="Opzioni"/>
- <button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
- <button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/>
- </panel>
- </panel>
- <panel label="RECENTE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="Opzioni"/>
- <button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Profilo del gruppo" name="group_info_btn" tool_tip="Mostra informazioni gruppo"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Chiamata al gruppo" name="group_call_btn" tool_tip="Chiama questo gruppo"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 3c7874e093..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Pannello laterale"/>
- <button name="undock" tool_tip="Disàncora"/>
- <button name="dock" tool_tip="Àncora"/>
- <button name="show_help" tool_tip="Mostra Aiuto"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml b/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
deleted file mode 100644
index cde495ba97..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Perdita di pacchetti
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Larghezza di banda
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
- <combo_box.item label="Modalità di base" name="Basic"/>
- <combo_box.item label="Modalità Avanzata" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/>
- <button name="volume_btn" tool_tip="Regolazione del volume globale"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_camera.xml b/indra/newview/skins/minimal/xui/ja/floater_camera.xml
deleted file mode 100644
index 71a20c8e18..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- フォーカスを中心にカメラを回転
- </floater.string>
- <floater.string name="zoom_tooltip">
- フォーカスに向けてカメラをズーム
- </floater.string>
- <floater.string name="move_tooltip">
- カメラを上下左右に移動
- </floater.string>
- <floater.string name="camera_modes_title">
- カメラモード
- </floater.string>
- <floater.string name="pan_mode_title">
- 旋回 - ズーム - 水平・垂直移動
- </floater.string>
- <floater.string name="presets_mode_title">
- 事前設定の視野
- </floater.string>
- <floater.string name="free_mode_title">
- オブジェクトを見る
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- 前方視界
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- グループ視界
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- 後方視界
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- オブジェクト視点
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- 一人称視点
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="向いている方法にカメラをズーム">
- <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
- <slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/>
- <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="事前設定の視野"/>
- <button label="" name="pan_btn" tool_tip="旋回 - ズーム - 水平・垂直移動"/>
- <button label="" name="avatarview_btn" tool_tip="カメラモード"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
deleted file mode 100644
index 1322343903..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ハウツー">
- <floater.string name="loading_text">
- ローディング...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
deleted file mode 100644
index 439c36dbe9..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="メディアブラウザ">
- <floater.string name="home_page_url">
- http://jp.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://jp.secondlife.com/support
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="戻る" name="back"/>
- <button label="前" name="forward"/>
- <button label="更新" name="reload"/>
- <button label="検索" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="巻き戻し" name="rewind"/>
- <button label="停止" name="stop"/>
- <button label="早送り" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="現在のページを区画に送る" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Web ブラウザで開く" name="open_browser"/>
- <check_box label="常に Web ブラウザで開く" name="open_always"/>
- <button label="閉じる" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
deleted file mode 100644
index a29c6a0630..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="近くのチャット">
- <check_box label="チャットを翻訳(Google翻訳)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml b/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
deleted file mode 100644
index 48fe8aee78..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="前へ"/>
- <button name="forward" tool_tip="次へ"/>
- <button name="stop" tool_tip="ナビゲーションを停止"/>
- <button name="reload" tool_tip="ページを更新"/>
- <combo_box name="address" tool_tip="ここに URL を入力"/>
- <icon name="media_secure_lock_flag" tool_tip="安全な閲覧"/>
- <button name="popexternal" tool_tip="この URL をブラウザで開く"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml b/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
deleted file mode 100644
index 42b67cd333..0000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_name_small" value="Grumpity ProductEngine with a long name"/>
- <text name="user_slid" value="james.linden"/>
- <text name="user_subtitle" value="11 Months, 3 days old"/>
- <text name="user_details">
- This is my second life description and I really think it is great.But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
- <button label="フレンド登録" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="プロフィール" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="ボイスを無効" name="disable_voice"/>
- <button label="ボイスを有効" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_object.xml b/indra/newview/skins/minimal/xui/ja/inspect_object.xml
deleted file mode 100644
index e6999ac9b1..0000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- 制作者: [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- [CREATOR]によるチェック
-[OWNER]によるチェック
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- 無料です!
- </string>
- <string name="Touch">
- 触る
- </string>
- <string name="Sit">
- 座る
- </string>
- <text name="object_name" value="二行にわたる長いオブジェクト名をテスト"/>
- <text name="object_creator">
- by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
- </text>
- <text name="price_text">
- L$30,000
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <text name="object_media_url">
- http://www.superdupertest.com
- </text>
- <button label="買う" name="buy_btn"/>
- <button label="支払う" name="pay_btn"/>
- <button label="コピーを取る" name="take_free_copy_btn"/>
- <button label="触る" name="touch_btn"/>
- <button label="座る" name="sit_btn"/>
- <button label="開く" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="安全な閲覧"/>
- <button label="詳細" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
deleted file mode 100644
index 982a03c6a8..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="新しい順に並べ替え" name="sort_by_most_recent"/>
- <menu_item_check label="名前で並べ替え" name="sort_by_name"/>
- <menu_item_check label="タイプによる並べ替え" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
deleted file mode 100644
index 5adf0b3745..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="プロフィールの表示" name="Profile..."/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="グループに招待" name="Invite..."/>
- <menu_item_call label="ブロック" name="Avatar Mute"/>
- <menu_item_call label="報告" name="abuse"/>
- <menu_item_call label="フリーズ" name="Freeze..."/>
- <menu_item_call label="追放" name="Eject..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
- <menu_item_call label="ズームイン" name="Zoom In"/>
- <menu_item_call label="支払う" name="Pay..."/>
- <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
deleted file mode 100644
index 830ddc9f63..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="タッチ" name="Attachment Object Touch"/>
- <menu_item_call label="編集" name="Edit..."/>
- <menu_item_call label="取り外す" name="Detach"/>
- <menu_item_call label="座る" name="Sit Down Here"/>
- <menu_item_call label="立ち上がる" name="Stand Up"/>
- <menu_item_call label="容姿" name="Change Outfit"/>
- <menu_item_call label="アウトフィットの編集" name="Edit Outfit"/>
- <menu_item_call label="シェイプの編集" name="Edit My Shape"/>
- <menu_item_call label="フレンド" name="Friends..."/>
- <menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="プロフィール" name="Profile..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
- <menu_item_call label="下に落とす" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
deleted file mode 100644
index b04f602134..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="プロフィールの表示" name="Show Profile"/>
- <menu_item_call label="IMを送信..." name="Send IM"/>
- <menu_item_call label="フレンドを追加..." name="Add Friend"/>
- <menu_item_call label="フレンドを削除..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
deleted file mode 100644
index 54dd96f5ef..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="プロフィールの表示" name="Profile..."/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="グループに招待" name="Invite..."/>
- <menu_item_call label="ブロック" name="Avatar Mute"/>
- <menu_item_call label="報告" name="abuse"/>
- <menu_item_call label="フリーズ" name="Freeze..."/>
- <menu_item_call label="追放" name="Eject..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
- <menu_item_call label="ズームイン" name="Zoom In"/>
- <menu_item_call label="支払う" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
deleted file mode 100644
index 4709522665..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="座る" name="Sit Down Here"/>
- <menu_item_call label="立ち上がる" name="Stand Up"/>
- <context_menu label="取り外す" name="Take Off &gt;">
- <context_menu label="衣類" name="Clothes &gt;">
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="靴下" name="Socks"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="下着シャツ" name="Self Undershirt"/>
- <menu_item_call label="下着パンツ" name="Self Underpants"/>
- <menu_item_call label="タトゥ" name="Self Tattoo"/>
- <menu_item_call label="物理作用" name="Self Physics"/>
- <menu_item_call label="アルファ" name="Self Alpha"/>
- <menu_item_call label="すべての衣類" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="取り外す" name="Object Detach"/>
- <menu_item_call label="すべて取り外す" name="Detach All"/>
- </context_menu>
- <menu_item_call label="容姿" name="Chenge Outfit"/>
- <menu_item_call label="アウトフィットを編集" name="Edit Outfit"/>
- <menu_item_call label="シェイプを編集" name="Edit My Shape"/>
- <menu_item_call label="フレンド" name="Friends..."/>
- <menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="プロフィール" name="Profile..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
deleted file mode 100644
index 7f106c1ab5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="スピーカーボタン" name="EnableVoiceChat"/>
- <menu_item_check label="ジェスチャーボタン" name="ShowGestureButton"/>
- <menu_item_check label="移動ボタン" name="ShowMoveButton"/>
- <menu_item_check label="視界ボタン" name="ShowCameraButton"/>
- <menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/>
- <menu_item_check label="制作ボタン" name="ShowBuildButton"/>
- <menu_item_check label="検索ボタン" name="ShowSearchButton"/>
- <menu_item_check label="地図ボタン" name="ShowWorldMapButton"/>
- <menu_item_check label="ミニマップボタン" name="ShowMiniMapButton"/>
- <menu_item_call label="切り取り" name="NearbyChatBar_Cut"/>
- <menu_item_call label="コピー" name="NearbyChatBar_Copy"/>
- <menu_item_call label="貼り付け" name="NearbyChatBar_Paste"/>
- <menu_item_call label="削除" name="NearbyChatBar_Delete"/>
- <menu_item_call label="すべて選択" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
deleted file mode 100644
index e786d02e40..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="取り外す" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
deleted file mode 100644
index eb5faa2545..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="交換" name="replace"/>
- <menu_item_call label="編集" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
deleted file mode 100644
index d984342896..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="取り外す" name="take_off"/>
- <menu_item_call label="編集" name="edit"/>
- <menu_item_call label="交換" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
deleted file mode 100644
index a071abbd2e..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="衣類" name="COF.Gear.New_Clothes"/>
- <menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_edit.xml b/indra/newview/skins/minimal/xui/ja/menu_edit.xml
deleted file mode 100644
index c2ef0179b2..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="編集" name="Edit">
- <menu_item_call label="元に戻す" name="Undo"/>
- <menu_item_call label="やり直し" name="Redo"/>
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="複製" name="Duplicate"/>
- <menu_item_call label="すべて選択" name="Select All"/>
- <menu_item_call label="選択解除" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml b/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
deleted file mode 100644
index 4708b1446c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="テレポート" name="Teleport To Landmark"/>
- <menu_item_call label="ランドマークを表示・編集" name="Landmark Open"/>
- <menu_item_call label="SLurl をコピー" name="Copy slurl"/>
- <menu_item_call label="地図に表示" name="Show On Map"/>
- <menu_item_call label="コピー" name="Landmark Copy"/>
- <menu_item_call label="貼り付け" name="Landmark Paste"/>
- <menu_item_call label="削除" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
deleted file mode 100644
index abf490a247..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="お気に入りからの追加・削除" name="activate"/>
- <menu_item_call label="コピー" name="copy_gesture"/>
- <menu_item_call label="貼り付け" name="paste"/>
- <menu_item_call label="UUID をコピー" name="copy_uuid"/>
- <menu_item_call label="現在のアウトフィットに保存" name="save_to_outfit"/>
- <menu_item_call label="編集" name="edit_gesture"/>
- <menu_item_call label="調べる" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
deleted file mode 100644
index 3787f7d645..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="グループに参加..." name="item_join"/>
- <menu_item_call label="新しいグループ..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
deleted file mode 100644
index 3a1ae49700..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
deleted file mode 100644
index 3397004bd7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="すべて閉じる" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 8cd6fa4a27..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
deleted file mode 100644
index 5bcb96f083..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="グループ情報" name="Show Profile"/>
- <menu_item_call label="セッションを表示" name="Chat"/>
- <menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
deleted file mode 100644
index 5453f998fa..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="プロフィールの表示" name="Show Profile"/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="セッションを表示" name="Send IM"/>
- <menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 9d0d0f10a6..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="プロフィールの表示" name="view_profile"/>
- <menu_item_call label="フレンド登録" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="コール" name="call"/>
- <menu_item_call label="テレポート" name="teleport"/>
- <menu_item_call label="グループに招待" name="invite_to_group"/>
- <menu_item_call label="ブロック" name="block"/>
- <menu_item_call label="ブロック解除" name="unblock"/>
- <menu_item_call label="報告" name="report"/>
- <menu_item_call label="フリーズ" name="freeze"/>
- <menu_item_call label="追放" name="eject"/>
- <menu_item_call label="追放" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="テクスチャのデバッグ" name="debug"/>
- <menu_item_call label="地図で探す" name="find_on_map"/>
- <menu_item_call label="ズームイン" name="zoom_in"/>
- <menu_item_call label="支払う" name="pay"/>
- <menu_item_call label="共有" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
deleted file mode 100644
index 2edade70bf..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="触る" name="touch"/>
- <menu_item_call label="座る" name="sit"/>
- <menu_item_call label="支払う" name="pay"/>
- <menu_item_call label="買う" name="buy"/>
- <menu_item_call label="取る" name="take"/>
- <menu_item_call label="コピーを取る" name="take_copy"/>
- <menu_item_call label="開く" name="open"/>
- <menu_item_call label="編集" name="edit"/>
- <menu_item_call label="装着" name="wear"/>
- <menu_item_call label="追加" name="add"/>
- <menu_item_call label="報告" name="report"/>
- <menu_item_call label="ブロック" name="block"/>
- <menu_item_call label="ズームイン" name="zoom_in"/>
- <menu_item_call label="削除" name="remove"/>
- <menu_item_call label="詳細" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
deleted file mode 100644
index e3e206f3aa..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="座る" name="Sit Down Here"/>
- <menu_item_call label="立ち上がる" name="Stand Up"/>
- <context_menu label="取り外す" name="Take Off &gt;">
- <context_menu label="衣類" name="Clothes &gt;">
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="靴下" name="Socks"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="下着シャツ" name="Self Undershirt"/>
- <menu_item_call label="下着パンツ" name="Self Underpants"/>
- <menu_item_call label="タトゥ" name="Self Tattoo"/>
- <menu_item_call label="アルファ" name="Self Alpha"/>
- <menu_item_call label="すべての衣類" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="取り外す" name="Object Detach"/>
- <menu_item_call label="すべて取り外す" name="Detach All"/>
- </context_menu>
- <menu_item_call label="アウトフィットの変更" name="Chenge Outfit"/>
- <menu_item_call label="アウトフィットの編集" name="Edit Outfit"/>
- <menu_item_call label="シェイプの編集" name="Edit My Shape"/>
- <menu_item_call label="フレンド" name="Friends..."/>
- <menu_item_call label="グループ" name="Groups..."/>
- <menu_item_call label="プロフィール" name="Profile..."/>
- <menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 9a4a8138f5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="閉じる" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
deleted file mode 100644
index f78ec09e5e..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="購入" name="Task Buy"/>
- <menu_item_call label="開く" name="Task Open"/>
- <menu_item_call label="再生" name="Task Play"/>
- <menu_item_call label="プロパティ" name="Task Properties"/>
- <menu_item_call label="名前の変更" name="Task Rename"/>
- <menu_item_call label="削除" name="Task Remove"/>
- <menu_item_call label="ごみ箱を空にする" name="Empty Trash"/>
- <menu_item_call label="紛失物フォルダを空にする" name="Empty Lost And Found"/>
- <menu_item_call label="新しいフォルダ" name="New Folder"/>
- <menu_item_call label="新しいスクリプト" name="New Script"/>
- <menu_item_call label="新しいノートカード" name="New Note"/>
- <menu_item_call label="新しいジェスチャー" name="New Gesture"/>
- <menu label="新しい衣類" name="New Clothes">
- <menu_item_call label="新しいシャツ" name="New Shirt"/>
- <menu_item_call label="新しいズボン" name="New Pants"/>
- <menu_item_call label="新しい靴" name="New Shoes"/>
- <menu_item_call label="新しい靴下" name="New Socks"/>
- <menu_item_call label="新しいジャケット" name="New Jacket"/>
- <menu_item_call label="新しいスカート" name="New Skirt"/>
- <menu_item_call label="新しい手袋" name="New Gloves"/>
- <menu_item_call label="新しい下着" name="New Undershirt"/>
- <menu_item_call label="新しいパンツ" name="New Underpants"/>
- <menu_item_call label="新しいアルファマスク" name="New Alpha Mask"/>
- <menu_item_call label="新しいタトゥ" name="New Tattoo"/>
- <menu_item_call label="新規の物理作用" name="New Physics"/>
- </menu>
- <menu label="新しい身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
- <menu_item_call label="新しいスキン" name="New Skin"/>
- <menu_item_call label="新しい髪" name="New Hair"/>
- <menu_item_call label="新しい眼" name="New Eyes"/>
- </menu>
- <menu label="種類を変更" name="Change Type">
- <menu_item_call label="デフォルト" name="Default"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="シェイプ" name="Shape"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="下着パンツ" name="Underpants"/>
- <menu_item_call label="下着シャツ" name="Undershirt"/>
- </menu>
- <menu_item_call label="テレポート" name="Landmark Open"/>
- <menu_item_call label="開く" name="Animation Open"/>
- <menu_item_call label="開く" name="Sound Open"/>
- <menu_item_call label="着用中のアウトフィットを入れ替える" name="Replace Outfit"/>
- <menu_item_call label="着用中のアウトフィットに追加する" name="Add To Outfit"/>
- <menu_item_call label="着用中のアウトフィットから取り除く" name="Remove From Outfit"/>
- <menu_item_call label="オリジナルを探す" name="Find Original"/>
- <menu_item_call label="アイテムを除外する" name="Purge Item"/>
- <menu_item_call label="アイテムを復元する" name="Restore Item"/>
- <menu_item_call label="開く" name="Open"/>
- <menu_item_call label="オリジナルを開きます" name="Open Original"/>
- <menu_item_call label="プロパティ" name="Properties"/>
- <menu_item_call label="名前を変更する" name="Rename"/>
- <menu_item_call label="UUID をコピーする" name="Copy Asset UUID"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="リンクを貼り付ける" name="Paste As Link"/>
- <menu_item_call label="削除" name="Remove Link"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="システムフォルダを削除する" name="Delete System Folder"/>
- <menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat Folder"/>
- <menu_item_call label="再生する" name="Sound Play"/>
- <menu_item_call label="ランドマークの情報" name="About Landmark"/>
- <menu_item_call label="インワールドで再生する" name="Animation Play"/>
- <menu_item_call label="ローカルで再生する" name="Animation Audition"/>
- <menu_item_call label="インスタントメッセージを送信する" name="Send Instant Message"/>
- <menu_item_call label="テレポートを送る..." name="Offer Teleport..."/>
- <menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat"/>
- <menu_item_call label="アクティブ" name="Activate"/>
- <menu_item_call label="非アクティブ" name="Deactivate"/>
- <menu_item_call label="別名で保存する" name="Save As"/>
- <menu_item_call label="自分から取り外す" name="Detach From Yourself"/>
- <menu_item_call label="装着" name="Wearable And Object Wear"/>
- <menu label="装着先" name="Attach To"/>
- <menu label="HUD 装着先" name="Attach To HUD"/>
- <menu_item_call label="編集" name="Wearable Edit"/>
- <menu_item_call label="追加" name="Wearable Add"/>
- <menu_item_call label="取り外す" name="Take Off"/>
- <menu_item_call label="--オプションなし--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
deleted file mode 100644
index 6c754e5d08..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="アップロード" name="upload">
- <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/>
- <menu_item_call label="サウンド (L$[COST] )..." name="Upload Sound"/>
- <menu_item_call label="アニメーション (L$ [COST] )..." name="Upload Animation"/>
- <menu_item_call label="一括 (ファイルにつき L$[COST] )..." name="Bulk Upload"/>
- <menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
- </menu>
- <menu_item_call label="新規フォルダ" name="New Folder"/>
- <menu_item_call label="新規スクリプト" name="New Script"/>
- <menu_item_call label="新しいノートカード" name="New Note"/>
- <menu_item_call label="新規ジェスチャー" name="New Gesture"/>
- <menu label="新しい衣類" name="New Clothes">
- <menu_item_call label="新しいシャツ" name="New Shirt"/>
- <menu_item_call label="新しいパンツ" name="New Pants"/>
- <menu_item_call label="新しい靴" name="New Shoes"/>
- <menu_item_call label="新しい靴下" name="New Socks"/>
- <menu_item_call label="新しいジャケット" name="New Jacket"/>
- <menu_item_call label="新しいスカート" name="New Skirt"/>
- <menu_item_call label="新しい手袋" name="New Gloves"/>
- <menu_item_call label="新しい下着(上)" name="New Undershirt"/>
- <menu_item_call label="新しい下着(下)" name="New Underpants"/>
- <menu_item_call label="新しいアルファ" name="New Alpha"/>
- <menu_item_call label="新しいタトゥー" name="New Tattoo"/>
- <menu_item_call label="新規の物理作用" name="New Physics"/>
- </menu>
- <menu label="新しい身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
- <menu_item_call label="新しいスキン" name="New Skin"/>
- <menu_item_call label="新しい髪" name="New Hair"/>
- <menu_item_call label="新しい目" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
deleted file mode 100644
index 1f425df83c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="新しい持ち物ウィンドウ" name="new_window"/>
- <menu_item_check label="名前で並べ替え" name="sort_by_name"/>
- <menu_item_check label="新しい順に並べ替え" name="sort_by_recent"/>
- <menu_item_check label="フォルダを常に名前順に並べる" name="sort_folders_by_name"/>
- <menu_item_check label="システムフォルダを上にソートする" name="sort_system_folders_to_top"/>
- <menu_item_call label="フィルターを表示" name="show_filters"/>
- <menu_item_call label="フィルターをリセット" name="reset_filters"/>
- <menu_item_call label="すべてのフォルダを閉じる" name="close_folders"/>
- <menu_item_call label="紛失物を空にする" name="empty_lostnfound"/>
- <menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="オリジナルを表示" name="Find Original"/>
- <menu_item_call label="すべてのリンクを表示" name="Find All Links"/>
- <menu_item_call label="ごみ箱を空にする" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_land.xml b/indra/newview/skins/minimal/xui/ja/menu_land.xml
deleted file mode 100644
index 89c122f14f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="土地情報" name="Place Information..."/>
- <menu_item_call label="ここに座る" name="Sit Here"/>
- <menu_item_call label="この土地を購入" name="Land Buy"/>
- <menu_item_call label="入場許可を購入" name="Land Buy Pass"/>
- <menu_item_call label="制作" name="Create"/>
- <menu_item_call label="地形を編集" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
deleted file mode 100644
index c134422955..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="SLurl をコピー" name="copy"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="ピックを作成" name="pick"/>
- <menu_item_call label="お気に入りバーに追加" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_login.xml b/indra/newview/skins/minimal/xui/ja/menu_login.xml
deleted file mode 100644
index 265f3ebcd0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="ミー" name="File">
- <menu_item_call label="環境設定" name="Preferences..."/>
- <menu_item_call label="[APP_NAME] を終了" name="Quit"/>
- </menu>
- <menu label="ヘルプ" name="Help">
- <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
- <menu_item_call label="[APP_NAME] について" name="About Second Life"/>
- </menu>
- <menu_item_check label="デバッグメニューを表示する" name="Show Debug Menu"/>
- <menu label="デバッグ" name="Debug">
- <menu_item_call label="デバッグ設定を表示" name="Debug Settings"/>
- <menu_item_call label="UI/色の設定" name="UI/Color Settings"/>
- <menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/>
- <menu label="UI テスト" name="UI Tests"/>
- <menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/>
- <menu_item_call label="利用規約を表示" name="TOS"/>
- <menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
- <menu_item_call label="メディアブラウザのテスト" name="Web Browser Test"/>
- <menu_item_call label="Web コンテンツフローターのテスト" name="Web Content Floater Test"/>
- <menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
- <menu_item_call label="通知コンソールを表示する" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml b/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
deleted file mode 100644
index 2e733ee24b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="ズーム(近)" name="Zoom Close"/>
- <menu_item_call label="ズーム(中)" name="Zoom Medium"/>
- <menu_item_call label="ズーム(遠)" name="Zoom Far"/>
- <menu_item_call label="ズーム(デフォルト)" name="Zoom Default"/>
- <menu_item_check label="地図を回転" name="Rotate Map"/>
- <menu_item_check label="中央へ自動移動" name="Auto Center"/>
- <menu_item_call label="追跡をやめる" name="Stop Tracking"/>
- <menu_item_call label="世界地図" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
deleted file mode 100644
index 9ae2e58198..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="座標を表示" name="Show Coordinates"/>
- <menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/>
- <menu_item_call label="ランドマーク" name="Landmark"/>
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="すべて選択" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
deleted file mode 100644
index c2e4a27686..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="近くの人を表示する..." name="nearby_people"/>
- <menu_item_check label="ブロックされた文字を表示" name="muted_text"/>
- <menu_item_check label="バディアイコンを表示" name="show_buddy_icons"/>
- <menu_item_check label="名前を表示" name="show_names"/>
- <menu_item_check label="アイコンと名前を表示" name="show_icons_and_names"/>
- <menu_item_call label="文字の大きさ" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
deleted file mode 100644
index 913bae8958..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="すべて閉じる" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object.xml b/indra/newview/skins/minimal/xui/ja/menu_object.xml
deleted file mode 100644
index 4cee8089ee..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="触る" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="触る"/>
- </menu_item_call>
- <menu_item_call label="編集" name="Edit..."/>
- <menu_item_call label="制作" name="Build"/>
- <menu_item_call label="開く" name="Open"/>
- <menu_item_call label="ここに座る" name="Object Sit"/>
- <menu_item_call label="立ち上がる" name="Object Stand Up"/>
- <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
- <menu_item_call label="ズームイン" name="Zoom In"/>
- <context_menu label="装着" name="Put On">
- <menu_item_call label="装着" name="Wear"/>
- <menu_item_call label="追加" name="Add"/>
- <context_menu label="取り付ける" name="Object Attach"/>
- <context_menu label="HUD を取り付ける" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="管理" name="Remove">
- <menu_item_call label="嫌がらせの報告" name="Report Abuse..."/>
- <menu_item_call label="ブロック" name="Object Mute"/>
- <menu_item_call label="返却" name="Return..."/>
- </context_menu>
- <menu_item_call label="取る" name="Pie Object Take"/>
- <menu_item_call label="コピーを取る" name="Take Copy"/>
- <menu_item_call label="支払う" name="Pay..."/>
- <menu_item_call label="買う" name="Buy..."/>
- <menu_item_call label="削除" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
deleted file mode 100644
index 8c4f328661..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/>
- <menu_item_call label="ブロック..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
deleted file mode 100644
index 2bcbe1915b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Outfit">
- <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear"/>
- <menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/>
- <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/>
- <menu label="衣類" name="New Clothes">
- <menu_item_call label="シャツ" name="New Shirt"/>
- <menu_item_call label="パンツ" name="New Pants"/>
- <menu_item_call label="靴" name="New Shoes"/>
- <menu_item_call label="靴下" name="New Socks"/>
- <menu_item_call label="ジャケット" name="New Jacket"/>
- <menu_item_call label="スカート" name="New Skirt"/>
- <menu_item_call label="手袋" name="New Gloves"/>
- <menu_item_call label="下着(上)" name="New Undershirt"/>
- <menu_item_call label="下着(下)" name="New Underpants"/>
- <menu_item_call label="アルファ" name="New Alpha"/>
- <menu_item_call label="新規の物理作用" name="New Physics"/>
- <menu_item_call label="新しいタトゥ" name="New Tattoo"/>
- </menu>
- <menu label="新しい身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ" name="New Shape"/>
- <menu_item_call label="スキン" name="New Skin"/>
- <menu_item_call label="髪" name="New Hair"/>
- <menu_item_call label="目" name="New Eyes"/>
- </menu>
- <menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
- <menu_item_call label="アウトフィットを削除する" name="delete_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
deleted file mode 100644
index 9491c22f31..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear_replace"/>
- <menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/>
- <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/>
- <menu_item_call label="アウトフィットの編集" name="edit"/>
- <menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
- <menu_item_call label="アウトフィットを削除する" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml b/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
deleted file mode 100644
index 64d8ded722..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="名前で並べ替え" name="SortByName"/>
- <menu_item_check label="最近の発言者で並べ替え" name="SortByRecentSpeakers"/>
- <menu_item_call label="プロフィールの表示" name="View Profile"/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="支払う" name="Pay"/>
- <menu_item_check label="人のアイコン表示" name="View Icons"/>
- <menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
- <menu_item_check label="文字をブロック" name="MuteText"/>
- <context_menu label="モデレーターのオプション" name="Moderator Options">
- <menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
- <menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="全員をミュート" name="ModerateVoiceMute"/>
- <menu_item_call label="全員のミュート解除" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
deleted file mode 100644
index 76340e4d76..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="名前で並べ替え" name="sort_name"/>
- <menu_item_check label="オンライン状態で並べ替え" name="sort_status"/>
- <menu_item_check label="人のアイコン表示" name="view_icons"/>
- <menu_item_check label="与えられた権限を表示" name="view_permissions"/>
- <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
deleted file mode 100644
index 842d79dc4b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="情報を表示" name="View Info"/>
- <menu_item_call label="チャット" name="Chat"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="アクティブ" name="Activate"/>
- <menu_item_call label="脱退" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
deleted file mode 100644
index bfc7d15017..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="グループアイコンを表示" name="Display Group Icons"/>
- <menu_item_call label="選択したグループから脱退" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
deleted file mode 100644
index 8d84b0e521..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="プロフィールの表示" name="View Profile"/>
- <menu_item_call label="フレンド登録" name="Add Friend"/>
- <menu_item_call label="フレンドを削除" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="地図" name="Map"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="支払う" name="Pay"/>
- <menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
- <menu_item_call label="テレポートを送る" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 3f20e5d3ab..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="フレンド登録" name="Add Friends"/>
- <menu_item_call label="フレンドを削除" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="コール" name="Call"/>
- <menu_item_call label="共有" name="Share"/>
- <menu_item_call label="支払う" name="Pay"/>
- <menu_item_call label="テレポートを送る" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
deleted file mode 100644
index a31480158a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="最近の発言者で並べ替え" name="sort_by_recent_speakers"/>
- <menu_item_check label="名前で並べ替え" name="sort_name"/>
- <menu_item_check label="距離で並べ替え" name="sort_distance"/>
- <menu_item_check label="人のアイコン表示" name="view_icons"/>
- <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
deleted file mode 100644
index b4f177a068..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="新しい順に並べ替え" name="sort_most"/>
- <menu_item_check label="名前で並べ替え" name="sort_name"/>
- <menu_item_check label="人のアイコン表示" name="view_icons"/>
- <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks.xml b/indra/newview/skins/minimal/xui/ja/menu_picks.xml
deleted file mode 100644
index 011d3d2526..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="情報" name="pick_info"/>
- <menu_item_call label="編集" name="pick_edit"/>
- <menu_item_call label="テレポート" name="pick_teleport"/>
- <menu_item_call label="地図" name="pick_map"/>
- <menu_item_call label="削除" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
deleted file mode 100644
index 84bf90fea0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="新しいピック" name="create_pick"/>
- <menu_item_call label="新しいクラシファイド広告" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place.xml b/indra/newview/skins/minimal/xui/ja/menu_place.xml
deleted file mode 100644
index a9f05e126d..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="ランドマークを作成" name="landmark"/>
- <menu_item_call label="ピックを作成" name="pick"/>
- <menu_item_call label="入場許可を購入" name="pass"/>
- <menu_item_call label="編集" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
deleted file mode 100644
index d5ce88b055..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="フォルダを追加" name="add_folder"/>
- <menu_item_call label="ランドマークを追加" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
deleted file mode 100644
index e64f97fda5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="ランドマークを追加" name="add_landmark"/>
- <menu_item_call label="フォルダを追加" name="add_folder"/>
- <menu_item_call label="商品を復元" name="restore_item"/>
- <menu_item_call label="切り取り" name="cut"/>
- <menu_item_call label="コピー" name="copy_folder"/>
- <menu_item_call label="貼り付け" name="paste"/>
- <menu_item_call label="名前の変更" name="rename"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="拡大" name="expand"/>
- <menu_item_call label="戻す" name="collapse"/>
- <menu_item_call label="フォルダをすべて開く" name="expand_all"/>
- <menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/>
- <menu_item_check label="日付で並べ替え" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
deleted file mode 100644
index f416b5b1f6..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="テレポート" name="teleport"/>
- <menu_item_call label="もっと詳しく" name="more_info"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="ランドマークを追加" name="add_landmark"/>
- <menu_item_call label="フォルダを追加" name="add_folder"/>
- <menu_item_call label="商品を復元" name="restore_item"/>
- <menu_item_call label="切り取り" name="cut"/>
- <menu_item_call label="ランドマークをコピー" name="copy_landmark"/>
- <menu_item_call label="SLurl をコピー" name="copy_slurl"/>
- <menu_item_call label="貼り付け" name="paste"/>
- <menu_item_call label="名前の変更" name="rename"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="フォルダをすべて開く" name="expand_all"/>
- <menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/>
- <menu_item_check label="日付で並べ替え" name="sort_by_date"/>
- <menu_item_call label="ピックを作成" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
deleted file mode 100644
index 9d3a5dda1c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="地図" name="show_on_map"/>
- <menu_item_call label="支払う" name="pay"/>
- <menu_item_call label="共有" name="share"/>
- <menu_item_call label="ブロック" name="block"/>
- <menu_item_call label="ブロック解除" name="unblock"/>
- <menu_item_call label="追放" name="kick"/>
- <menu_item_call label="フリーズ" name="freeze"/>
- <menu_item_call label="フリーズ解除" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
deleted file mode 100644
index 6513d9264a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="保存" name="save_outfit"/>
- <menu_item_call label="別名で保存" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
deleted file mode 100644
index a89dd0bcbe..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="閉じる" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
deleted file mode 100644
index 61ba3085d9..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="URL について" name="about_url"/>
- <menu_item_call label="URL にテレポートする" name="teleport_to_url"/>
- <menu_item_call label="地図" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
deleted file mode 100644
index 901eab9166..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="フォルダをすべて開く" name="Expand all folders"/>
- <menu_item_call label="フォルダをすべて閉じる" name="Collapse all folders"/>
- <menu_item_call label="テレポートの履歴をクリア" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
deleted file mode 100644
index 66bc32214f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="テレポート" name="Teleport"/>
- <menu_item_call label="もっと詳しく" name="More Information"/>
- <menu_item_call label="クリップボードにコピー" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
deleted file mode 100644
index 4dd44d2ec8..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="開く" name="TabOpen"/>
- <menu_item_call label="閉じる" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml b/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
deleted file mode 100644
index fcb1038a6a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="すべて選択" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
deleted file mode 100644
index 1a67a2a8f7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="座標を表示" name="Show Coordinates"/>
- <menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/>
- <menu_item_call label="ランドマーク" name="Landmark"/>
- <menu_item_call label="コピー" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml b/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
deleted file mode 100644
index 92d118a5ae..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
- <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml b/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
deleted file mode 100644
index 1dd3d79438..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="グループ情報を表示" name="show_group"/>
- <menu_item_call label="グループをクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml b/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
deleted file mode 100644
index c3da8a8686..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Web ページを開く" name="url_open"/>
- <menu_item_call label="内蔵ブラウザで開く" name="url_open_internal"/>
- <menu_item_call label="外部ブラウザで開く" name="url_open_external"/>
- <menu_item_call label="URLをクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
deleted file mode 100644
index 7af2f9e2cd..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="持ち物アイテムを表示" name="show_item"/>
- <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml b/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
deleted file mode 100644
index 8d41e1a571..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="現地にテレポート" name="teleport_to_location"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
deleted file mode 100644
index d6a048dcfc..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
- <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
deleted file mode 100644
index 8d264059d3..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="区画情報を表示" name="show_parcel"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
deleted file mode 100644
index a516c5a075..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="このコマンドを実行" name="run_slapp"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
deleted file mode 100644
index 2c857ec915..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="場所の情報を表示" name="show_place"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="現地にテレポート" name="teleport_to_location"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
deleted file mode 100644
index c3507a9a33..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="この場所にテレポート" name="teleport"/>
- <menu_item_call label="地図に表示" name="show_on_map"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml b/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
deleted file mode 100644
index 52dec2b282..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="ヘルプ" name="Help">
- <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
- </menu>
- <menu label="アドバンス" name="Advanced">
- <menu label="ショートカット" name="Shortcuts">
- <menu_item_check label="飛ぶ" name="Fly"/>
- <menu_item_call label="ウィンドウを閉じる" name="Close Window"/>
- <menu_item_call label="全てのウィンドウを閉じる" name="Close All Windows"/>
- <menu_item_call label="表示をリセットする" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
deleted file mode 100644
index c402fa0b6d..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="交換" name="wear_replace"/>
- <menu_item_call label="装着" name="wear_wear"/>
- <menu_item_call label="追加" name="wear_add"/>
- <menu_item_call label="取り外す" name="take_off_or_detach"/>
- <menu_item_call label="取り外す" name="detach"/>
- <context_menu label="装着:" name="wearable_attach_to"/>
- <context_menu label="HUD に装着" name="wearable_attach_to_hud"/>
- <menu_item_call label="取り外す" name="take_off"/>
- <menu_item_call label="編集" name="edit"/>
- <menu_item_call label="アイテムのプロフィール" name="object_profile"/>
- <menu_item_call label="オリジナルを表示" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
deleted file mode 100644
index 7a97538117..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="アウトフットの編集" name="edit"/>
- <menu_item_call label="取り外す" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
deleted file mode 100644
index 9effed1f42..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="取り外す" name="take_off"/>
- <menu_item_call label="取り外す" name="detach"/>
- <menu_item_call label="アウトフットの編集" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/notifications.xml b/indra/newview/skins/minimal/xui/ja/notifications.xml
deleted file mode 100644
index 43934c9317..0000000000
--- a/indra/newview/skins/minimal/xui/ja/notifications.xml
+++ /dev/null
@@ -1,2995 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- 今後は表示しない
- </global>
- <global name="alwayschoose">
- 常にこのオプションを選択
- </global>
- <global name="implicitclosebutton">
- 閉じる
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$notext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="不明の通知メッセージ" name="MissingAlert">
- あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。
-
-エラー詳細: 「 [_NAME] 」という通知は notifications.xml にありませんでした。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- フロータエラー:下記のコントロールが見つかりませんでした:
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- 現在利用可能なチュートリアルはありません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/>
- </notification>
- <notification name="BadInstallation">
- [APP_NAME] をアップデート中にエラーが発生しました。 ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- [SECOND_LIFE_GRID] に接続できませんでした。
-「[DIAGNOSTIC]」
-インターネット接続が正常かご確認ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- メッセージテンプレート [PATH] がありませんでした。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- 現在の衣類、身体部位の変更を保存しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="CompileQueueSaveText">
- 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。
-[REASON]
-後でもう一度お試しください。
- </notification>
- <notification name="CompileQueueSaveBytecode">
- 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。
-[REASON]
-後でもう一度お試しください。
- </notification>
- <notification name="WriteAnimationFail">
- アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。
-[REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- 一度に複数のアイテムの中身を表示できません。
-アイテムを 1 つだけ選択して、もう一度お試しください。
- </notification>
- <notification name="SaveClothingBodyChanges">
- 衣服、身体部位に対する変更をすべて保存しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。
-[NAME] に修正権限を与えますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。
-選択した住人に修正権限を与えますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="RevokeModifyRights">
- [NAME] の修正権限を解約しますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- 選択した住人から変更権限を取り下げますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="UnableToCreateGroup">
- グループを作成できません。
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="変更を無視" yestext="変更を適用"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- グループ通知の送信には、件名の記入が必要です。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。
-任命されたメンバーが自ら退任しない限り、
-役柄から削除できません。
-操作を続行しますか?
- <usetemplate ignoretext="グループオーナーを新しく追加する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
-与えようとしています。
-
- *警告*
-この能力を持つ役割のメンバーは、
-自分と他のメンバーに現在より強力な権限を割り当て、
-自分をオーナーとほぼ同様の立場に任命することもできるようになります。
-この行為の意味をよく理解してから実行してください。
-
-この能力を [ROLE_NAME] に割り当てますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
-与えようとしています。
-
- *警告*
-この能力をもつ役割のメンバーは、
-自分と他のメンバーにすべての能力を割り当て、
-自分をオーナーとほぼ同様の立場に任命できます。
-
-この能力を [ROLE_NAME] に割り当てますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AttachmentDrop">
- アタッチメントを下に置こうとしています。
-続けますか?
- <usetemplate ignoretext="アタッチメントを下に落とす前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- このグループに参加するには、L$ [COST] かかります。
-続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/>
- </notification>
- <notification name="JoinGroupNoCost">
- [NAME] というグループに入ろうとしています。
-続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="参加"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- このグループに加入するには、L$ [COST] 必要です。
-L$ が不足しているのでこのグループに参加することができません。
- </notification>
- <notification name="CreateGroupCost">
- このグループを作るには L$ 100 かかります。
-一人ではグループにならないので、永久に削除されてしまいます。
-48 時間以内にメンバーを勧誘し、入会してもらってください。
- <usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/>
- </notification>
- <notification name="LandBuyPass">
- L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。
-入場許可を購入しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- 不特定の人に売却する場合には、
-売却価格はL$ 0 以上に設定する必要があります。
-売却価格をL$ 0 に設定する場合は、
-売却する個人を選択してください。
- </notification>
- <notification name="ConfirmLandSaleChange">
- 選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。
-売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- 注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。
-
-選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。
-販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者の「持ち物」に戻そうとしています。
-操作を続行しますか?
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- この区画で、
-住人 [NAME] が所有する全てのオブジェクトを
-本人の「持ち物」に本当に返却してもよいですか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- この土地区画内にある、あなたが所有するすべてのオブジェクトを、
-あなたの「持ち物」に戻そうとしています。続けますか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、
-それぞれの所有者の「持ち物」に戻そうとしています。
-操作を続行しますか?
-グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- この土地区画内にある、
-[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者の「持ち物」に返却しようとしています。
-操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- 全てのリストされたオブジェクトを所有者に本当に返却しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- この土地の区画上のオブジェクトのうち、グループ [NAME] との間で共有していないオブジェクトを所有者に返却しますか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- スクリプトを無効にできません。
-このリージョン(地域)全体が「ダメージ有効」に設定されています。
-武器を使用するにはスクリプトの実行を許可する必要があります。
- </notification>
- <notification name="MultipleFacesSelected">
- 現在複数の面が選択されています。
-このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。
-メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。
- <usetemplate ignoretext="メディアが選択した複数の面にセットされるとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="MustBeInParcel">
- 着地点を設定するには、この区画の内側に
-立ってください。
- </notification>
- <notification name="PromptRecipientEmail">
- 受信者の有効なメールアドレスを入力してください。
- </notification>
- <notification name="PromptSelfEmail">
- あなたのメールアドレスを入力してください。
- </notification>
- <notification name="PromptMissingSubjMsg">
- デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- スナップショットデータの処理エラー
- </notification>
- <notification name="ErrorEncodingSnapshot">
- スナップショットのエンコード化でエラーが出ました!
- </notification>
- <notification name="ErrorUploadingPostcard">
- 次の理由で、スナップショットの送信時に問題が起こりました: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- 次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- [SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。
- </notification>
- <notification name="CouldNotPutOnOutfit">
- アウトフィットを装着できません。
-アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。
- </notification>
- <notification name="CannotWearTrash">
- ごみ箱にある衣類や身体部位の着用はできません。
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- オブジェクトを付けられませんでした。
-最大数の [MAX_ATTACHMENTS] 個を越えています。 どれか取り外してからお試しください。
- </notification>
- <notification name="CannotWearInfoNotComplete">
- まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。
- </notification>
- <notification name="MustHaveAccountToLogIn">
- 注意:記入漏れの箇所があります。
-アバターのユーザー名を入力してください。
-
-[SECOND_LIFE] に入るにはアカウントが必要です。今すぐアカウントを作成しますか?
- <url name="url">
- https://join.secondlife.com/index.php?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。
- </notification>
- <notification name="DeleteClassified">
- クラシファイド広告 [NAME] を削除しますか?
-支払い済みの料金は返金されません。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeleteMedia">
- この面にあるメディアを削除する選択をしました。
-続けますか?
- <usetemplate ignoretext="オブジェクトからメディアを削除する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="ClassifiedSave">
- クラシファイド広告 [NAME] への変更を保存しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- クラシファイド広告を出すには、資金が足りません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- &lt;nolink&gt;[PICK]&lt;/nolink&gt; を削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeleteOutfits">
- 選択したアウトフィットを削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- [SECOND_LIFE] イベント Web ページに移動しますか?
- <url name="url">
- http://secondlife.com/events/?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- 表示する提案を選択してください。
- </notification>
- <notification name="SelectHistoryItemToView">
- 表示する履歴アイテムを選択してください。
- </notification>
- <notification name="CacheWillClear">
- [APP_NAME] を再起動後にキャッシュがクリアされます。
- </notification>
- <notification name="CacheWillBeMoved">
- [APP_NAME] を再起動後にキャッシュが移動されます。
-ご注意: キャッシュがクリアされます。
- </notification>
- <notification name="ChangeConnectionPort">
- ポートの設定は [APP_NAME] を再起動後に反映されます。
- </notification>
- <notification name="ChangeSkin">
- 新しいスキンは [APP_NAME] を再起動後に表示されます。
- </notification>
- <notification name="ChangeLanguage">
- 言語の変更は [APP_NAME] を再起動後に反映されます。
- </notification>
- <notification name="GoToAuctionPage">
- [SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか?
- <url name="url">
- http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- 変更を保存しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- ジェスチャーの保存に失敗しました。
-ステップが多すぎます。
-ステップをいくつか削除してから再保存してください
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="GestureSaveFailedReason">
- 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="SaveNotecardFailReason">
- 次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="ScriptCannotUndo">
- あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。
-サーバーの最新保存バージョンをロードしますか?
-(**警告**:この操作後元に戻すことはできません)
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- 次の理由で、スクリプトの保存に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。
-オブジェクトは範囲外か、または削除されているかもしれません。
- </notification>
- <notification name="SaveBytecodeFailReason">
- 次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="StartRegionEmpty">
- ログイン位置が指定されていません。
-ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「ホーム」を選択してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="CannotDownloadFile">
- ファイルをダウンロードできません。
- </notification>
- <notification name="CannotWriteFile">
- ファイル [[FILE]] を書き込めません。
- </notification>
- <notification name="UnsupportedHardware">
- お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
-
-[_URL] に移動して確認をしますか?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=ja
- </url>
- <usetemplate ignoretext="使用中のコンピューターのハードウェアがサポートされていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="UnknownGPU">
- お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
-[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
-(ミー > 環境設定 > グラフィック)
- <form name="form">
- <ignore name="ignore" text="使用中のグラフックカードが認識されないとき"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。
-ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。
-お使いのグラフィックカードのドライバをアップデートするようおすすめします。
-画質は、環境設定 > グラフィック で設定できます。
- </notification>
- <notification name="RegionNoTerraforming">
- [REGION] では、地形の変更ができません。
- </notification>
- <notification name="CannotCopyWarning">
- あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたの「持ち物」から削除されます。本当にこれらのアイテムを譲りますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CannotGiveItem">
- 持ち物のアイテムを渡せません。
- </notification>
- <notification name="TransactionCancelled">
- 取引がキャンセルされました。
- </notification>
- <notification name="TooManyItems">
- 一度に 42 個以上のアイテムは渡せません。
- </notification>
- <notification name="NoItems">
- 選択したアイテムを渡す権限がありません。
- </notification>
- <notification name="CannotCopyCountItems">
- あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。
-これらのアイテムはあなたの「持ち物」から失われます。
-本当にアイテムを渡したいですか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CannotGiveCategory">
- 選択したフォルダを渡す権限がありません
- </notification>
- <notification name="FreezeAvatar">
- このアバターをフリーズしますか?
-アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- [AVATAR_NAME]をフリーズしますか?
-フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
- </notification>
- <notification name="EjectAvatarFullname">
- あなたの土地から [AVATAR_NAME] を追放しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- このアバターをあなたの土地から追放しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- [AVATAR_NAME] をあなたの土地から追放しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarFromGroup">
- [GROUP_NAME] から [AVATAR_NAME] を追放しました
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- 取得エラー:選択したオブジェクトの数が多すぎます。
- </notification>
- <notification name="AcquireErrorObjectSpan">
- 取得エラー:
-オブジェクトが複数のリージョン(地域)にまたがって存在しています。
-すべて同じリージョン内に移動させてから取得してください。
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-[_URL] に移動してリンデンドル購入に関する情報を確認しますか?
- <url name="url">
- http://secondlife.com/app/currency/?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- [COUNT] 個のオブジェクトをリンクできません。
-リンクできるのは最大 [MAX] 個です。
- </notification>
- <notification name="CannotLinkIncompleteSet">
- セットで揃っているオブジェクトのみリンクできます。
-複数のオブジェクトを選択してください。
- </notification>
- <notification name="CannotLinkModify">
- すべてのオブジェクトの修正許可がないためリンクできません。
-
-どのオブジェクトもロックされておらず、あなたのものであることを確認してください。
- </notification>
- <notification name="CannotLinkDifferentOwners">
- 所有者が異なるため、オブジェクトをリンクできません。
-
-自分が所有しているオブジェクトだけを選択してください。
- </notification>
- <notification name="NoFileExtension">
- 「 [FILE] 」の拡張子が無効です。
-
-このファイルの拡張子が正しいかどうかを確認してください。
- </notification>
- <notification name="InvalidFileExtension">
- [EXTENSION] は無効です。
-正しい拡張子:[VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- 読み込みのためにアップロードされたサウンドファイルを開けません:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- RIFF WAVE ファイルとして認識されません:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- PCM WAVE オーディオファイルとして認識されません:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- ファイルのサンプルレートがサポートされていません(44.1k である必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- WAV ヘッダーにデータチャンクが見つかりません:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- WAV ファイルのチャンクサイズが間違っています:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- オーディオファイルが長すぎます。(最大 10 秒):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- 「 [FILE] 」に問題があります。
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- 書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- 不明の Vorbis のエンコードに失敗: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- 次のファイルのエンコードができません: [FILE]
- </notification>
- <notification name="CorruptedProtectedDataStore">
- ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CorruptResourceFile">
- 破損したリソースファイル: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- 不明のリンデンリソースファイルのバージョン: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- 出力ファイルを作成できません: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- 現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。
- </notification>
- <notification name="CannotUploadReason">
- 次の理由で、「 [FILE] 」をアップロードできません: [REASON]
-あとでもう一度試してください。
- </notification>
- <notification name="LandmarkCreated">
- 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。
- </notification>
- <notification name="LandmarkAlreadyExists">
- 現在地のランドマークを既に持っています。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- 土地の所有者が許可していないため、ランドマークを作成することはできません。
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- 「リコンパイル」できません。
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- 「リコンパイル」できません。
-
-修正修正権限のあるスクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- 「再設定」ができません。
-
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- 「再設定」ができません。
-
-修正権限のあるスクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- 修正権限のないオブジェクトのスクリプトは開くことはできません。
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- スクリプトの「実行」ができません。
-
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- スクリプトを「実行しない」設定にできません。
-
-スクリプトのオブジェクトを選択してください。
- </notification>
- <notification name="NoFrontmostFloater">
- 保存する frontmost フロータがありません。
- </notification>
- <notification name="SeachFilteredOnShortWords">
- 指定した検索クエリは変更され、短すぎる語句は取り除かれています。
-
-検索語句: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- 指定した検索語句が短すぎたため、検索は行われませんでした。
- </notification>
- <notification name="CouldNotTeleportReason">
- テレポートに失敗しました。
-[REASON]
- </notification>
- <notification name="invalid_tport">
- テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。
- </notification>
- <notification name="invalid_region_handoff">
- リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。
- </notification>
- <notification name="blocked_tport">
- 申し訳ございません。テレポートは現在、ブロックされています。しばらくしてから再度お試しください。
-それでもテレポートできない場合は、ログアウトし、ログインし直して問題を解決してください。
- </notification>
- <notification name="nolandmark_tport">
- 申し訳ございません。ランドマークの目的地が見つかりませんでした。
- </notification>
- <notification name="timeout_tport">
- 申し訳ございません。システムによるテレポート接続が完了できませんでした。
-しばらくしてから再度お試しください。
- </notification>
- <notification name="noaccess_tport">
- 残念ながら、目的地へアクセスが許可されていないため、テレポートできません。
- </notification>
- <notification name="missing_attach_tport">
- 添付物がまだ届いていません。テレポートをする前にあと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてください。
- </notification>
- <notification name="too_many_uploads_tport">
- このリージョンのアセットキューが現在混み合っているため、テレポートのリクエストをすぐに処理することが難しい状況です。
-数分後にやり直すか、混雑していない他のリージョンでお試しください。
- </notification>
- <notification name="expired_tport">
- 申し訳ございません。システムはテレポートのリクエストを時間どおりに完了できませんでした。数分後にやり直してください。
- </notification>
- <notification name="expired_region_handoff">
- 申し訳ございません。システムはリージョン間の移動を時間どおりに完了できませんでした。
-数分後にやり直してください。
- </notification>
- <notification name="no_host">
- テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。
- </notification>
- <notification name="no_inventory_host">
- 持ち物システムは現在利用できません。
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- 土地所有者設定ができません:
-区画が選定されていません。
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- 複数のリージョンが選択されたため、土地の所有権を取得できません。
-選択する面積を小さくして、もう一度お試しください。
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。
-所有権を変更しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- コンテンツ化は不可能です:
-区画が選定されていません。
- </notification>
- <notification name="CannotContentifyNoRegion">
- コンテンツ化は不可能です:
-土地が選択されていません。
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- 土地を破棄できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- 土地を破棄できません:
-リージョンが見つかりません。
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- 土地を購入できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotBuyLandNoRegion">
- 土地を購入できません:
-この土地があるリージョンを見つけることができません
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- [APP_NAME] がこの取引価格を見積もるまでは、土地の購入ウィンドウを閉じることはできません。
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- 土地を譲渡できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotDeedLandNoGroup">
- 土地を譲渡できません:
-グループが選択されていません。
- </notification>
- <notification name="CannotDeedLandNoRegion">
- 土地を譲渡できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- 土地を譲渡できません:
-複数の区画が選択されています。
-
-区画を 1 つ選択してください。
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- 土地を譲渡できません:
-サーバーからの所有権情報を待っています。
-
-再度、試みてください。
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- 土地を譲渡できません:
-[REGION] では土地の譲渡が許されていません。
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- 土地を破棄できません:
-サーバーが区画情報を更新するのを待っています。
-
-もう少し後でやり直してください。
- </notification>
- <notification name="CannotReleaseLandSelected">
- 土地を破棄できません:
-あなたは、選択した区画のすべてを所有していません。
-
-区画を 1 つ選択してください。
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- 土地を破棄できません:
-あなたはこの土地を手放すことを許可されていません。
-あなたの区画は緑色で表示されています。
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- 土地を放棄できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- 土地を破棄できません:
-[REGION] では土地の譲渡が許されていません。
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- 土地を破棄できません:
-区画全体を選択して破棄する必要があります。
-
-区画全体を選択するか、または、まず最初に区画を分割してください。
- </notification>
- <notification name="ReleaseLandWarning">
- あなたは、[AREA] 平方メートルの土地を破棄しようとしています。
-この区画を破棄するとあなたの土地ではなくなりますが、
-L$ は返金されません。
-
-土地を破棄しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- 土地を分割できません:
-
-区画が選定されていません。
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- 土地を分割できません:
-
-区画全体が選択されています。
-区画の一部を選択してください。
- </notification>
- <notification name="LandDivideWarning">
- この土地を分割すると、2 つの区画に別れます。
-区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。
-
-土地の分割操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- 土地を分割できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotJoinLandNoRegion">
- 土地を統合できません:
-この土地があるリージョンが見つかりません。
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- 土地を統合できませんでした:
-区画が選定されていません。
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- 土地を統合できません:
-区画が 1 つしか選択されていません。
-
-両方の区画をまたいで土地を選択してください。
- </notification>
- <notification name="CannotJoinLandSelection">
- 土地を統合できません:
-区画を 1 つ以上選択する必要があります。
-
-両方の区画をまたいで土地を選択してください。
- </notification>
- <notification name="JoinLandWarning">
- この土地を統合すると、選択された長方形に交差する全ての区画を基にして、大きな区画が 1 つ作成されます。
-新しい区画の名前とオプションを再設定する必要があります。
-
-土地を統合しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- このアイテムをコピー、表示する前に、ノートカードの保存が必要です。 保存しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- このアイテムをあなたの持ち物にコピーしますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- 解像度を [RESX]x[RESY] に切り替えることができませんでした。
- </notification>
- <notification name="ErrorUndefinedGrasses">
- エラー:未定義の植物:[SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- エラー:未定義の樹木:[SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- 「 [NAME] 」を衣類のファイルに保存できません。
-コンピューターのディスクスペースを少し増やしてから、もう一度保存してみてください。
- </notification>
- <notification name="CannotSaveToAssetStore">
- 「 [NAME] 」を保存できません。
-通常これは一時的なエラーです。 数分後にもう一度着用物をカスタマイズ・保存してください。
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- しまった、 [SECOND_LIFE] からログアウトされてしまいました。
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- グループ用の土地の購入ができません:
-あなたにはアクティブなグループのために土地を購入する権限がありません。
- </notification>
- <notification label="フレンド登録" name="AddFriendWithMessage">
- フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。
-
-[NAME] にフレンドシップを申し出ますか?
- <form name="form">
- <input name="message">
- フレンド登録してくれますか?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification label="アウトフィットを保存する" name="SaveOutfitAs">
- 着用中のアウトフィットを新しいアウトフットとして保存:
- <form name="form">
- <input name="message">
- [DESC] (新)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification label="着用物を保存" name="SaveWearableAs">
- アイテムを別名で持ち物に保存:
- <form name="form">
- <input name="message">
- [DESC](新規)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="アウトフィットの名前を変更する" name="RenameOutfit">
- 新しいアウトフィットの名前:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- フレンドリストから [NAME] を削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- フレンドリストから複数のフレンドを削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのスクリプトオブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのスクリプトオブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのオブジェクト(スクリプトオブジェクトと非スクリプトオブジェクト)を
-このシム内のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- クラシファイドの名前を指定してください。
- </notification>
- <notification name="MinClassifiedPrice">
- 広告料は最低 L$ [MIN_PRICE] 必要です。
-
-金額を増やしてください。
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- ここにリンクされたアイテムが少なくとも1つあります。 このアイテムを削除するとここにリンクされたものが機能しなくなります。 リンクを先に削除することを強くお勧めします。
-
-これらのアイテムを削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- 選択したアイテムのうち、少なくとも 1 つがロックされています。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- 選択したアイテムのうち、少なくとも 1 つがコピーできません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- 選択したアイテムのうち、少なくとも 1 つがあなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- 少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトがコピーできません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- 少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- 少なくとも 1 つのオブジェクトがコピーできません。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- 少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトがコピーできません。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- 少なくとも 1 つのオブジェクトがロックされています。
-
-本当にこのまま取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- 取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
-そのため、将来、修正やコピーの能力が制限される可能性があります。
-
-本当にこのまま取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- 少なくとも 1 つのオブジェクトがロックされています。
-取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
-そのため、将来、編集やコピーの能力が制限される可能性があります。
-この選択内容のままで続行することは可能ですが、
-
-本当にこのまま取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- 複数のリージョンが選択されたため、土地を購入できません。
-
-選択する面積を小さくしてもう一度試してください。
- </notification>
- <notification name="DeedLandToGroup">
- この区画の譲渡に際しては、
-このグループが十分な土地クレジットを保有および維持している必要があります。
-土地の購入価格は、所有者に返金されません。譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。
-
-この [AREA] 平方メートルの土地を、グループ
-「 [GROUP_NAME] 」に譲渡しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- この区画が譲渡されると、グループはその土地利用料として十分な残高を維持していく必要があります。
-譲渡には同時に [NAME] からグループへの土地の貢献が含まれます。
-土地の購入価格は所有者に返金されません。譲渡された区画が売却されると、販売価格はグループメンバーの間で均等に分配されます。
-
-この [AREA] m² の土地を [GROUP_NAME] というグループに譲渡しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- -safe オプションを指定したので、
-表示設定はセーフレベルに設定されています。
- </notification>
- <notification name="DisplaySetToRecommended">
- 表示設定は、あなたのシステム構成に基づいて推奨されたレベルに設定されています。
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- 目的地は現在ご利用いただけません。
-近くのリージョンに移動しました。
- </notification>
- <notification name="AvatarMovedLast">
- 前回いた場所は現在ご利用いただけません。
-近くのリージョンに移動しました。
- </notification>
- <notification name="AvatarMovedHome">
- ホームロケーションは現在ご利用いただけません。
-近くのリージョンに移動しました。
-新たにホームを設定し直す必要があるかもしれません。
- </notification>
- <notification name="ClothingLoading">
- 現在衣類をダウンロード中です。
-このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。
- <form name="form">
- <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっているとき"/>
- </form>
- </notification>
- <notification name="FirstRun">
- [APP_NAME] のインストールが完了しました。
-
-[SECOND_LIFE] を使ったことがない場合は、ログインする前にアカウントの作成を行ってください。
-[http://join.secondlife.com/?lang=ja-JP] で新しいアカウントを作成しますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="新規アカウント..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- 接続がなかなかできません。 お使いのインターネット接続か、[SECOND_LIFE_GRID] の問題と考えられます。
-
-インターネット接続を確認してから数分後に再接続するか、ヘルプをクリックして [SUPPORT_SITE] をご覧になるか、テレポートをクリックしてホームに移動してみてください。
- <url name="url">
- http://jp.secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="ヘルプ"/>
- <button name="Teleport" text="テレポート"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- まもなくあなたのアバターが表示されます。
-
-矢印キーを使用して歩きます。
-ヘルプが必要なときや [SECOND_LIFE] について知りたいときは、
-F1 キーを押してください。
-男性あるいは女性のアバターを選択してください。
-あなたの決定は後で変更できます。
- <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
- </notification>
- <notification name="CantTeleportToGrid">
- 現在のグリッド([CURRENT_GRID])とはグリッド([GRID])が異なるため、[SLURL] にテレポートできませんでした。 ビューワを閉じてからもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- サーバーに接続できませんでした。
-[REASON]
-
-サブジェクト名: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-次の更新日: [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-キー使用法: [KEYUSAGE]
-拡張キー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトキー認識別子: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- このサーバーの認証機関は不明です。
-
-認証情報:
-サブジェクト名: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-次の更新日: [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-キー使用法: [KEYUSAGE]
-拡張キー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトキー認識別子: [SUBJECTKEYIDENTIFIER]
-
-この認証局を信頼しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="信用する"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] L$[PRICE] 残高不足のため実行不可です。
- </notification>
- <notification name="GrantedModifyRights">
- [NAME] は、あなたにオブジェクトの編集権限を与えました。
- </notification>
- <notification name="RevokedModifyRights">
- [NAME] のオブジェクトを編集する権限は取り消されました。
- </notification>
- <notification name="FlushMapVisibilityCaches">
- このリージョンの地図のキャッシュを消去します。
-デバッグ目的のみに便利な操作です。
-(作成中は 5 分間経つと、全員の地図が再度ログイン後に更新されます)
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- 一度に 1 つ以上のオブジェクトを買うことはできません。 オブジェクトを 1 つだけ選んでもう一度お試しください。
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- 一度に複数のアイテムの中身をコピーできません。
-オブジェクトを 1 つだけ選択して、もう一度お試しください。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- このリージョンにいる全ての住人をホームにテレポートしますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- [USER_NAME] が所有しているオブジェクトを返却しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- 地域テクスチャを設定できませんでした:
-地形テクスチャ[TEXTURE_NUM]は、無効のビット深度[TEXTURE_BIT_DEPTH]です。
-
-テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
- </notification>
- <notification name="InvalidTerrainSize">
- 地域テクスチャを設定できませんでした:
-地形テクスチャ「 [TEXTURE_NUM] 」は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] では大きすぎます。
-
-「 [TEXTURE_NUM] 」を 24 ビット 512x512 かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
- </notification>
- <notification name="RawUploadStarted">
- アップロードを開始しました。 接続速度によっては、最大 2 分間かかります。
- </notification>
- <notification name="ConfirmBakeTerrain">
- 現在の地形を構築しようとしています。
-この操作を行うと、現在の地形が上昇・下降の制限範囲の中心となり、「復元」ツールのデフォルトになります。
-操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- 許可住人は [MAX_AGENTS] 人までです。
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- 禁止住人は [MAX_BANNED] 人までです。
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- [NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- 許可グループは [MAX_GROUPS] グループまでです。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- 不動産マネージャーは [MAX_MANAGER] 人までです。
- </notification>
- <notification name="OwnerCanNotBeDenied">
- 不動産オーナーを不動産の「禁止住人」リストに追加できません。
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- 衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- クラシファイド広告の名前は、アルファベットか数字で始めます。句読点では始められません。
- </notification>
- <notification name="CantSetBuyObject">
- オブジェクトが販売対象ではないため、オブジェクトの購入ができません。
-販売対象のオブジェクトを指定してもう一度試してください。
- </notification>
- <notification name="FinishedRawDownload">
- 未加工の地形ファイルをダウンロードしました:
-[DOWNLOAD_PATH]
- </notification>
- <notification name="DownloadWindowsMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadWindows">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinux">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMacMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMac">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="FailedUpdateInstall">
- ビューワのアップデートをインストール中にエラーが発生しました。
-http://secondlife.com/download から最新バージョンをダウンロードしてインストールしてください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- 必要なアップデートをインストールできませんでした。
-[APP_NAME] がアップデートされるまでログインできません。
-
-http://secondlife.com/download から最新バージョンをダウンロードしてインストールしてください。
- <usetemplate name="okbutton" yestext="終了"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- お使いの Second Life に必要なアップデートがインストールされていません。
-
-このアップデートは、http://www.secondlife.com/downloads からダウンロードして、今すぐインストールできます。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="今すぐダウンロードしてインストール"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- お使いの [APP_NAME] に必要なアップデートをダウンロードしました。
-バージョン [VERSION] [[RELEASE_NOTES_FULL_URL] このアップデートに関する情報]
- <usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- お使いの [APP_NAME] に必要なアップデートをダウンロードしました。
-バージョン [VERSION] [[RELEASE_NOTES_FULL_URL] このアップデートに関する情報]
- <usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- 必要なソフトウェアのアップデートをダウンロードしました。
-バージョン [VERSION]
-
-アップデートをインストールするには [APP_NAME] を再起動する必要があります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- アップデートをインストールするには [APP_NAME] を再起動する必要があります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- このオブジェクトを譲渡するとグループは以下のことが可能です:
-* オブジェクトに支払われた L$ を受領します。
- <usetemplate ignoretext="オブジェクトをグループに譲渡する前の確認" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Web ブラウザを開いてこのコンテンツを表示しますか?
- <usetemplate ignoretext="ブラウザを起動して Web ページを見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウントを管理しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウントを管理するとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- [SECOND_LIFE] Wiki で、セキュリティ問題を報告する方法をご覧ください。
- <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認するとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- [SECOND_LIFE] 品質保証関連 Wiki をご覧ください。
- <usetemplate ignoretext="ブラウザを起動して QA Wiki を見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- [SECOND_LIFE] のパブリック問題トラッカーで、
-バグやその他の問題を報告できます。
- <usetemplate ignoretext="ブラウザを起動してパブリック問題トラッカーを使用するとき" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Linden 公式ブログで、最新のニュースや情報を入手してください。
- <usetemplate ignoretext="ブラウザを起動して公式ブログを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- スクリプトガイドを開きますか?
- <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- LSL ポータルでスクリプトに関する情報を確認しますか?
- <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
- </notification>
- <notification name="ReturnToOwner">
- 選択したオブジェクトを、所有者に返却しますか?
-「再販・プレゼント可」の譲渡されたオブジェクトは、以前の所有者に返却されます。
-
-*警告* 「再販・プレゼント不可」の譲渡されたオブジェクトは、削除されます!
- <usetemplate ignoretext="オブジェクトを所有者に返却する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- 現在あなたは [GROUP] のメンバーです。
-このグループを抜けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- 本当に住人全員をグリッドから追い出しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="住人全員を追い出す"/>
- </notification>
- <notification name="MuteLinden">
- リンデンをブロックすることはできません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- 既に売り出し中の区画なのでオークションにかけることはできません。 オークションにかけたい場合は売り出し設定を解除してから行ってください。
- </notification>
- <notification label="名前でのオブジェクトのブロックに失敗しました" name="MuteByNameFailed">
- この名前は既にブロック済みです。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- コンテンツを削除すると、許可があってもオブジェクトに損傷を与えることがあります。
-削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- 現在コーリングカードを送れません。数分後にもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- 現在フレンドシップを送れません。数分後にもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- 取り込み中モードになりました。
-チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。
- <usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- 加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
-[NAME] があなたをグループのメンバーとして勧誘しています。
- <usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
- </notification>
- <notification name="JoinedTooManyGroups">
- 加入できるグループの最大限に達しました。 新しくグループに参加、または作成する前に、どれかグループから抜けてください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- どのようなメッセージを添えてこの住人を追い出しますか?
- <form name="form">
- <input name="message">
- あなたは管理者によりログオフされました。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- どのようなメッセージをつけてグリッドにいる全員を追い出しますか?
- <form name="form">
- <input name="message">
- あなたは管理者によりログオフされました。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- どのようなメッセージを添えてこの住人をフリーズしますか?
- <form name="form">
- <input name="message">
- あなたはフリーズされています。 動くこともチャットすることもできません。 管理者が IM であなたに連絡します。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- どのようなメッセージを添えてこの住人のフリーズを解除しますか?
- <form name="form">
- <input name="message">
- もうフリーズされていません。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="SetDisplayNameSuccess">
- [DISPLAY_NAME] さん、
-
-現実の世界と同じく、Second Life でも新しい名前が浸透するには時間がかかります。オブジェクト、スクリプト、検索などで名前が更新されるまでに([http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update])数日かかりますのでご了承ください。
- </notification>
- <notification name="SetDisplayNameBlocked">
- 申し訳ありませんが、現在表示名は変更できません。システムのエラーだと思われる場合は、サポートにお問い合わせください。
- </notification>
- <notification name="SetDisplayNameFailedLength">
- 申し訳ありませんが、その名前は長すぎます。表示名は最長 [LENGTH] 文字までです。
-
-もう少し短い名前をお試しください。
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- 申し訳ありませんが、表示名を設定できませんでした。あとでもう一度お試しください。
- </notification>
- <notification name="SetDisplayNameMismatch">
- 入力した表示名が一致しません。もう一度入力してください。
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- しばらくは表示名を変更できません。
-
-http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してください。
-
-あとでもう一度お試しください。
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- 申し訳ありませんが、リクエストされた名前は禁句を含むために設定できませんでした。
-
-別の名前をお試しください。
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- 設定しようとする表示名には使えない文字が含まれます。
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- 表示名には句読点以外の文字を含む必要があります。
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) は [NEW_NAME] に変更されました。
- </notification>
- <notification name="OfferTeleport">
- 次のメッセージを添えて現在地にテレポートを送りますか?
- <form name="form">
- <input name="message">
- [REGION] に来ませんか?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- 現在地に住人をゴッドサモンしますか?
- <form name="form">
- <input name="message">
- [REGION] に来ませんか?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- このまま &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; にテレポートしますか?
- <usetemplate ignoretext="ランドマークにテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToPick">
- [PICK] にテレポートしますか?
- <usetemplate ignoretext="ピックの場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToClassified">
- [CLASSIFIED] にテレポートしますか?
- <usetemplate ignoretext="クラシファイド広告の場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- [HISTORY_ENTRY] にテレポートしますか?
- <usetemplate ignoretext="履歴の場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate">
- 今あなたの不動産にいる人全員に送る、短いメッセージを入力してください。
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
- リンデンが所有するエステート(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
-
-住人の体験に根本的に影響を与えるため、非常に危険な行為です。 メインランドでは、何千というリージョンが変更による影響を受け、そのためスペースサーバーに負担をかけることになります。
-
-それでも続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
- あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
-
-この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。
-これにより多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedAgentAdd">
- この不動産限定の許可リストに追加しますか? それとも [ALL_ESTATES] の許可リストに追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedAgentRemove">
- この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedGroupAdd">
- この不動産限定のグループ許可リストに追加しますか? それとも [ALL_ESTATES] のグループ許可リストに追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedGroupRemove">
- この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateBannedAgentAdd">
- この不動産限定でアクセスを拒否しますか? それとも [ALL_ESTATE] へのアクセスを拒否しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateBannedAgentRemove">
- この住人が、この不動産限定、または [ALL_ESTATES] にアクセスできるように、禁止リストから削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateManagerAdd">
- この不動産限定、または [ALL_ESTATES] の不動産マネージャーを追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateManagerRemove">
- 不動産マネージャーを、この不動産限定、または [ALL_ESTATES] から、削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="キックを確認" name="EstateKickUser">
- この不動産から [EVIL_USER] を追い出しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- 不動産約款を変更しようとしています。続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、リージョンに入ることができないとき" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- レーティング区分に関する設定により、その地域(リージョン)には立ち入れません。
-
-その地域に入るには、あなたのレーティング区分の設定を変更してください。変更すると、[REGIONMATURITY]のコンテンツの検索やアクセスが可能になります。変更内容を元に戻すには、ミー &gt; 環境設定 &gt; 一般を選択してください。
- <form name="form">
- <button name="OK" text="環境設定の変更"/>
- <button default="true" name="Cancel" text="閉じる"/>
- <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入れないとき"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- あなたのレーティング区分設定は現在 [RATING] です。
- </notification>
- <notification name="LandClaimAccessBlocked">
- あなたのレーティング区分により、この土地を取得することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- あなたのレーティング区分により、この土地を取得することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、この土地を取得できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- あなたのレーティング区分により、この土地を取得することはできません。
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- あなたのレーティング区分設定により、この土地を取得することはできません。
-
-「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- あなたのレーティング区分により、この土地を購入することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、この土地を購入できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- あなたのレーティング区分により、この土地を購入することはできません。
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- あなたのレーティング区分設定により、この土地を購入することができません。
-
-「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- 選択したプリムが多すぎます。 [MAX_PRIM_COUNT] 個選択するか、プリム数を減らしてもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- 不動産約款のインポート時に問題が発生しました。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- 新しい不動産マネージャーの追加に関する問題:
-いずれかの不動産のマネージャーリストが満杯になっています。
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- 不動産リストの追加に関する問題:
-いずれかの不動産のリストが満杯になっています。
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- 現在ノートカードのアセット ID を読み込むことができません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- 要求したアセット ID に関するノートカードを閲覧するには、権限が不十分です。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- ノートカード用のアセット ID がデータベースに登録されていません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- 注意:クラシファイド広告の料金は払い戻しされません。
-
-L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- この広告に「Moderate」コンテンツは含まれていますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="SetGroupMature">
- このグループに「Moderate」コンテンツが含まれていますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification label="再起動を確認" name="ConfirmRestart">
- このリージョンを 2 分後に再起動しようとしています。
-続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="このリージョンにメッセージを送信" name="MessageRegion">
- このリージョンにいる人全員に送る短いメッセージを入力してください。
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
- このリージョン(地域)のレーティング区分がアップデートされました。
-地図に変更が反映されるまで数分かかることがあります。
-
-Adult 専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。
- </notification>
- <notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch">
- [APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。
- </notification>
- <notification label="オブジェクトを購入できません" name="BuyObjectOneOwner">
- 複数の所有者から同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
- </notification>
- <notification label="コンテンツを購入できません" name="BuyContentsOneOnly">
- 一度に複数のオブジェクトのコンテンツは購入できません。
-選択するオブジェクトを1つだけにして、もう一度試してください。
- </notification>
- <notification label="コンテンツを購入できません" name="BuyContentsOneOwner">
- 複数の所有者から同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
- </notification>
- <notification name="BuyOriginal">
- オリジナルのオブジェクトを [OWNER] から L$ [PRICE] で購入しますか?
-購入すると、あなたがオブジェクトの所有者となります。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- L$ [PRICE] でオリジナルのオブジェクトを購入しますか?
-購入すると、あなたがオブジェクトの所有者となります。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- コピーを [OWNER] から L$ [PRICE] で購入しますか?
-購入したオブジェクトは、あなたの「持ち物」にコピーされます。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- L$ [PRICE] でコピーを購入しますか?
-購入したオブジェクトは、あなたの「持ち物」にコピーされます。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- 中身を [OWNER] から L$ [PRICE] で購入しますか?
-購入した中身は、あなたの「持ち物」にコピーされます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- L$ [PRICE] で中身を購入しますか?
-購入した中身は、あなたの「持ち物」にコピーされます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- この取引は以下のとおり行われます:
-[ACTION]
-
-購入を続けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- この取引は以下のとおり行われます:
-[ACTION]
-
-購入を続けますか?
-パスワードを再入力し、「 OK 」をクリックしてください。
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- メモ:
-本ピックの位置を更新しましたが、
-他の詳細は元の値のままになります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- 「コピー不可」の持ち物アイテムを選択しました。
-これらのアイテムはコピーされないまま、あなたの「持ち物」に移動されます。
-
-
-アイテムを動かしますか?
- <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- 「コピー不可」の持ち物アイテムを選択しました。
-これらのアイテムはコピーされずに、あなたの「持ち物」に移動されます。
-このオブジェクトはスクリプト付きなので、「持ち物」に移動させると
-スクリプトに誤動作が起きる可能性があります。
-
-持ち物アイテムを移動しますか?
- <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- 警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。
- <form name="form">
- <ignore name="ignore" text="オブジェクトを作成中に、money() スクリプトを入れずに「オブジェクトに支払う」アクションを設定したとき"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- このオブジェクトには、あなたがコピーできるアイテムはありません。
- </notification>
- <notification name="WebLaunchAccountHistory">
- [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
- </notification>
- <notification name="ConfirmQuit">
- 終了しようとしています。続けますか?
- <usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="アイテムを削除する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- このツールを利用して [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] の違反を報告してください。
-
-報告された嫌がらせはすべて調査・解決されます。
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- 嫌がらせ報告のカテゴリを選択してください。
-カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- 嫌がらせ行為をした人の名前を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- 嫌がらせがあった場所を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- 嫌がらせの概要を入力してください。
-正確な概要の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- 嫌がらせの詳細な説明を入力してください。
-名前や嫌がらせの詳細を、できるだけ具体的に入力してください。
-
-正確な説明の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- こんにちは、
-
-知的財産権の侵害を報告しようとしています。 正確に報告するために、以下をご確認ください:
-
-(1) 嫌がらせの報告の手順 住人が [SECOND_LIFE] の権限システムを悪用しているのを見つけたら、嫌がらせの報告をすることができます。例えば、CopyBot や似たようなコピーツールを使用して知的財産権を侵害している場合です。 担当チームは調査を行い、[SECOND_LIFE] [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] に違反する行為に対する適切な処罰を下します。 ただし、担当チームは [SECOND_LIFE] の世界からコンテンツを削除して欲しいというリクエストには応じません。
-
-(2) DMCA またはコンテンツの撤去の手順 コンテンツを [SECOND_LIFE] から削除して欲しいというリクエストをするには、弊社 [http://secondlife.com/corporate/dmca.php DMCA ポリシー] で提示されているとおり、有効な侵害の通知を提出しなければなりません。.
-
-このまま嫌がらせの報告を続けたい場合は、このウィンドウを閉じて報告を送ってください。 「コピー Bot 及び権限の悪用」のカテゴリを選んだ方が適切の場合があります。
-
-ご協力ありがとうございます。
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- 以下の必要なコンポーネントが、[FLOATER] から抜け落ちています
-[COMPONENTS]
- </notification>
- <notification label="既存の付属品を置換" name="ReplaceAttachment">
- 体のこの部位には既にオブジェクトが装着されています。
-選択されたオブジェクトと置き換えますか?
- <form name="form">
- <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替えるとき"/>
- <button ignore="自動的に交換" name="Yes" text="OK"/>
- <button ignore="交換しない" name="No" text="キャンセル"/>
- </form>
- </notification>
- <notification label="取り込み中の警告" name="BusyModePay">
- 現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。
-
-この取引を行うために「取り込み中」の設定を解除しますか?
- <form name="form">
- <ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/>
- <button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/>
- <button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- 「 [FOLDERNAME] 」 は、システムフォルダです。 システムフォルダを削除すると不安定になることがあります。 続けますか?
- <usetemplate ignoretext="システムフォルダを削除する前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- ごみ箱の中身をすべて削除しますか?
- <usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- トラベル、Web、検索の履歴をすべて削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- 本当にクッキーをクリアしますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- 保存された URL のリストを消去します。よろしいですか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- 紛失物の中身をすべて削除しますか?
- <usetemplate ignoretext="紛失物フォルダを空にする前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CopySLURL">
- 次の SLurl がクリップボードにコピーされました:
- [SLURL]
-
-Web ページにリンクすると、他人がこの場所に簡単にアクセスできます。Web ブラウザのアドレスバーに貼り付けて試してみてください。
- <form name="form">
- <ignore name="ignore" text="クリップボードに SLurl をコピーするとき"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- 保存された事前設定を上書きしますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- 「 [SKY] 」を削除しますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="WLNoEditDefault">
- デフォルトの設定を編集したり削除したりすることはできません。
- </notification>
- <notification name="WLMissingSky">
- このデイサイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
- </notification>
- <notification name="PPSaveEffectAlert">
- ポストプロセス効果が存在します。 上書きしますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="NewSkyPreset">
- 新しい空の名前を指定してください。
- <form name="form">
- <input name="message">
- 新しい事前設定
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- 事前設定がすでに存在します!
- </notification>
- <notification name="NewWaterPreset">
- 新しい水の事前設定の名前を指定してください。
- <form name="form">
- <input name="message">
- 新しい事前設定
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- 事前設定がすでに存在します!
- </notification>
- <notification name="WaterNoEditDefault">
- デフォルトの設定を編集したり削除したりすることはできません。
- </notification>
- <notification name="ChatterBoxSessionStartError">
- [RECIPIENT] と新しいチャットを開始することができません。
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- [NAME] とのチャットセッションを閉じます。
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- オブジェクトが取り付けられているままでは購入できません。
- </notification>
- <notification label="引き出し許可のリクエストについて" name="DebitPermissionDetails">
- このリクエストを許可すると、スクリプトであなたのアカウントからリンデンドルを引き出せるようになります。
-この許可を取り消すには、オブジェクトの所有者がオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- 作成する衣類を自動的に装着しますか?
- <usetemplate ignoretext="「容姿」を編集中に、作成する衣類を装着するとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="NotAgeVerified">
- 年齢確認を済ませていないとこの区画を訪れることができません。 [SECOND_LIFE] サイトで年齢の確認を行いますか?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=ja
- </url>
- <usetemplate ignoretext="年齢の確認を済ませていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- 支払情報が登録されていないとこのエリアを訪れることができません。 [SECOND_LIFE] サイトで登録を行いますか?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=ja
- </url>
- <usetemplate ignoretext="支払情報が登録されていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="MissingString">
- 文字列 [STRING_NAME] が strings.xml に含まれていません。
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- 取り消されました。
- </notification>
- <notification name="CancelledSit">
- 座るのをやめました。
- </notification>
- <notification name="CancelledAttach">
- 添付が取り消されました。
- </notification>
- <notification name="ReplacedMissingWearable">
- 欠落している衣類や身体部位をデフォルトに置き換えます。
- </notification>
- <notification name="GroupNotice">
- 件名: [SUBJECT]、メッセージ: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] はオンライン中です
- </notification>
- <notification name="FriendOffline">
- [NAME] はオフライン中です
- </notification>
- <notification name="AddSelfFriend">
- 残念ながら自分自身をフレンド登録することはできません。
- </notification>
- <notification name="UploadingAuctionSnapshot">
- インワールドと Web サイトのスナップショットをアップロード中です...
-(所要時間:約 5 分)
- </notification>
- <notification name="UploadPayment">
- アップロードに L$ [AMOUNT] 支払いました。
- </notification>
- <notification name="UploadWebSnapshotDone">
- Web サイトのスナップショットがアップロードされました。
- </notification>
- <notification name="UploadSnapshotDone">
- インワールドでのスナップショットのアップロードが完了しました。
- </notification>
- <notification name="TerrainDownloaded">
- raw 地形がダウンロードされました
- </notification>
- <notification name="GestureMissing">
- ジェスチャーの [NAME] がデータベースに見つかりません。
- </notification>
- <notification name="UnableToLoadGesture">
- [NAME] というジェスチャーを読み込むことができませんでした。
- </notification>
- <notification name="LandmarkMissing">
- データベースにランドマークがありません。
- </notification>
- <notification name="UnableToLoadLandmark">
- ランドマークを読み込めません。 もう一度お試しください。
- </notification>
- <notification name="CapsKeyOn">
- CapsLock キーが有効になっています。
-パスワードに影響するかもしれません。
- </notification>
- <notification name="NotecardMissing">
- ノートカードがデータベースにありません。
- </notification>
- <notification name="NotecardNoPermissions">
- このノートカードを見る権限がありません。
- </notification>
- <notification name="RezItemNoPermissions">
- オブジェクトを Rez するには権限が不足しています。
- </notification>
- <notification name="UnableToLoadNotecard">
- ノートカードを読み込めません。あとで再度お試しください。
- </notification>
- <notification name="ScriptMissing">
- データベースにスクリプトがありません。
- </notification>
- <notification name="ScriptNoPermissions">
- スクリプトを閲覧するには権限が不十分です。
- </notification>
- <notification name="UnableToLoadScript">
- スクリプトをロードできません。 もう一度試してください。
- </notification>
- <notification name="IncompleteInventory">
- あなたの提供するコンテンツは、ローカルではまだ全部揃っていません。
-しばらくしてからもう一度お試しください。
- </notification>
- <notification name="CannotModifyProtectedCategories">
- 保護されたカテゴリは修正できません。
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- 保護されたカテゴリは削除できません。
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- オブジェクトデータのダウンロード中は購入できません。
-もう一度お試しください。
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- オブジェクトデータのウンロード中はリンクできません。
-もう一度お試しください。
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- オブジェクトは一度に一人の所有者から購入できます。
-オブジェクトを 1 つだけ選んでください。
- </notification>
- <notification name="ObjectNotForSale">
- このオブジェクトは販売対象ではありません。
- </notification>
- <notification name="EnteringGodMode">
- レベル [LEVEL] のゴッドモードに入ります
- </notification>
- <notification name="LeavingGodMode">
- レベル [LEVEL] のゴッドモードを解除します
- </notification>
- <notification name="CopyFailed">
- これをコピーする権限がありません。
- </notification>
- <notification name="InventoryAccepted">
- [NAME] は、あなたが渡したアイテムを受け取りました。
- </notification>
- <notification name="InventoryDeclined">
- [NAME] は、持ち物の提供を断りました。
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- コーリングカードが受理されました。
- </notification>
- <notification name="CallingCardDeclined">
- コーリングカードが拒否されました。
- </notification>
- <notification name="TeleportToLandmark">
- 画面右の「場所」パネルを開いて、「ランドマーク」タブを選ぶと、[NAME] といった場所にテレポートできます。
-好きなランドマークをクリックして選び、次にパネル下の「テレポート」をクリックします。
-(ランドマークをダブルクリック、または右クリックして「テレポート」を選んでも同じです。)
- </notification>
- <notification name="TeleportToPerson">
- 画面右の「人」パネルを開いて、[NAME] といった住人に連絡を取ることができます。
-リストから住人を選択して、パネル下の「IM」をクリックします。
-(リストの名前をダブルクリック、または右クリックして「IM」を選んでも同じです。)
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- サーバーの境界を越えて土地を選択することできません。
-もっと小さな土地を選択してください。
- </notification>
- <notification name="SearchWordBanned">
- コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。
- </notification>
- <notification name="NoContentToSearch">
- 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(General、Moderate、Adult)
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- イベント通知:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="詳細"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- この区画の購入者に受け渡されるオブジェクトは、すべて区画上で強調表示されています。
-
-
-*受け渡される樹木や植物は、強調表示されていません。
- <form name="form">
- <button name="Done" text="完了"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- 同じトリガーでアクティブにしないジェスチャー:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Apple の QuickTime ソフトウェアがお使いのシステムにインストールされていないようです。
-ストリーミングメディアをサポートする区画で見たい場合は、[http://www.apple.com/jp/quicktime QuickTime サイト] から QuickTime プレイヤーをインストールしてください。
- </notification>
- <notification name="NoPlugin">
- 「 [MIME_TYPE] 」の MIME タイプを扱うメディアプラグインが見つかりませんでした。 このタイプのメディアはご利用いただけません。
- </notification>
- <notification name="MediaPluginFailed">
- 次のメディアプラグインが実行できませんでした:
- [PLUGIN]
-
-プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。
- <form name="form">
- <ignore name="ignore" text="メディアプラグインの実行に失敗したとき"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- 選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたの「持ち物」に返却されました。
- </notification>
- <notification name="OtherObjectsReturned">
- [NAME] が所有する、選択した区画にあるオブジェクトは、所有者の持ち物に返却されました。
- </notification>
- <notification name="OtherObjectsReturned2">
- 「 [NAME] 」という名前の住人が所有する、選択した区画上のオブジェクトは、本人に返却されました。
- </notification>
- <notification name="GroupObjectsReturned">
- 選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者の「持ち物」に返却されました。
-譲渡されていた「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されました。
-グループに譲渡されていた「再販・プレゼント不可」のオブジェクトは、削除されました。
- </notification>
- <notification name="UnOwnedObjectsReturned">
- 選択した土地の区画上の、あなたの所有物では「なかった」オブジェクトは、本来の所有者に返却されました。
- </notification>
- <notification name="ServerObjectMessage">
- [NAME] からのメッセージ:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- この土地ではダメージが有効です。
-ケガをするかもしれません。 死んでしまった場合は「ホーム」にテレポートされます。
- </notification>
- <notification name="NoFly">
- このエリアでは飛行が禁止されています。
-ここでは飛べません。
- </notification>
- <notification name="PushRestricted">
- このエリアではプッシュが禁止されています。 土地所有者以外は他人をプッシュすることはできません。
- </notification>
- <notification name="NoVoice">
- このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。
- </notification>
- <notification name="NoBuild">
- このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。
- </notification>
- <notification name="ScriptsStopped">
- 管理者がこのリージョンのスクリプトを一時停止しました。
- </notification>
- <notification name="ScriptsNotRunning">
- このリージョンではスクリプトの使用が禁止されています。
- </notification>
- <notification name="NoOutsideScripts">
- この土地では、外部のスクリプトが禁止されています。
-
-土地所有者のもの以外はスクリプトが実行されません。
- </notification>
- <notification name="ClaimPublicLand">
- そのリージョンにいないと公共の土地を取得することはできません。
- </notification>
- <notification name="RegionTPAccessBlocked">
- あなたのレーティング区分によりそのリージョンへは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。
-
-現在のレーティング区分でアクセス可能なエリアに関する詳細はナレッジベースを参照してください。
- </notification>
- <notification name="URBannedFromRegion">
- あなたはリージョンへの立入が禁止されています。
- </notification>
- <notification name="NoTeenGridAccess">
- あなたのアカウントではティーングリッドに接続できません。
- </notification>
- <notification name="ImproperPaymentStatus">
- このリージョンに入るために適した支払いステータスがありません。
- </notification>
- <notification name="MustGetAgeRgion">
- このリージョンに入るためには、年齢確認を済ませる必要があります。
- </notification>
- <notification name="MustGetAgeParcel">
- この区画に入るためには、年齢確認を済ませる必要があります。
- </notification>
- <notification name="NoDestRegion">
- 目的地のリージョンが見つかりませんでした。
- </notification>
- <notification name="NotAllowedInDest">
- 目的地に入る許可がありません。
- </notification>
- <notification name="RegionParcelBan">
- 立入禁止された区画を横断することはできません。 別の方法をお試しください。
- </notification>
- <notification name="TelehubRedirect">
- テレハブに転送されました。
- </notification>
- <notification name="CouldntTPCloser">
- これ以上目的地に近い場所にテレポートができませんでした。
- </notification>
- <notification name="TPCancelled">
- テレポートがキャンセルされました。
- </notification>
- <notification name="FullRegionTryAgain">
- 入ろうとしているリージョンは現在満員です。
-しばらくしてから再度お試しください。
- </notification>
- <notification name="GeneralFailure">
- よくある失敗
- </notification>
- <notification name="RoutedWrongRegion">
- 異なるリージョンに迂回されました。 もう一度お試しください。
- </notification>
- <notification name="NoValidAgentID">
- エージェント ID が無効です。
- </notification>
- <notification name="NoValidSession">
- セッション ID が無効です。
- </notification>
- <notification name="NoValidCircuit">
- 回路コードが無効です。
- </notification>
- <notification name="NoValidTimestamp">
- タイムスタンプが無効です。
- </notification>
- <notification name="NoPendingConnection">
- 接続を生成できません。
- </notification>
- <notification name="InternalUsherError">
- 内部エラーが発生しました。
- </notification>
- <notification name="NoGoodTPDestination">
- このリージョンでは、適切なテレポート目的地が見つかりませんでした。
- </notification>
- <notification name="InternalErrorRegionResolver">
- 内部エラーが発生しました。
- </notification>
- <notification name="NoValidLanding">
- 有効な着地点が見つかりませんでした。
- </notification>
- <notification name="NoValidParcel">
- 有効な区画が見つかりませんでした。
- </notification>
- <notification name="ObjectGiveItem">
- [NAME_SLURL] が所有する &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; という名前のオブジェクトが、あなたに &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; を渡そうとしています。このアイテムを使うにはアドバンスモードへの切り替えが必要です。アドバンスモードでログインしなおすと、あなたの持ち物にこのアイテムが見つかります。アドバンスモードに切り替えるには、このアプリケーションを終了して再起動し、ログイン画面でモード設定を変更してください。
- <form name="form">
- <button name="Keep" text="アイテムを受け取る"/>
- <button name="Discard" text="アイテムを拒否する"/>
- <button name="Mute" text="オブジェクトをブロックする"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] は [ITEM_SLURL] を渡そうとしています。このアイテムを使うにはアドバンスモードへの切り替えが必要です。アドバンスモードでログインしなおすと、あなたの持ち物にこのアイテムが見つかります。アドバンスモードに切り替えるには、このアプリケーションを終了して再起動し、ログイン画面でモード設定を変更してください。
- <form name="form">
- <button name="Show" text="アイテムを受け取る"/>
- <button name="Discard" text="アイテムを拒否する"/>
- <button name="Mute" text="ユーザーをブロックする"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="参加"/>
- <button name="Decline" text="辞退"/>
- <button name="Info" text="情報"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] はテレポートであなたを呼んでいます。
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="テレポート"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- [TO_NAME] にテレポートを送りました。
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="あとで"/>
- <button name="GoNow..." text="今すぐ行く"/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] はフレンド登録を申し込んでいます。
-
-[MESSAGE]
-
-(デフォルト設定だとお互いのオンライン状態を見ることができます)
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="辞退"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- [TO_NAME] にフレンド登録を申し出ました。
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] はフレンド登録を申し込んでいます。
-
-(デフォルト設定だとお互いのオンライン状態を見ることができます)
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME]は、フレンド登録を受け入れました。
- </notification>
- <notification name="FriendshipDeclined">
- [NAME]は、フレンド登録を断りました。
- </notification>
- <notification name="FriendshipAcceptedByMe">
- フレンドの登録依頼が承認されました。
- </notification>
- <notification name="FriendshipDeclinedByMe">
- フレンドの登録依頼が拒否されました。
- </notification>
- <notification name="OfferCallingCard">
- [NAME] がコーリングカードを渡そうとしています。
-あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="辞退"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- このリージョンは [SECONDS] 分後に再起動されます。
-このままここにいるとログアウトされます。
- </notification>
- <notification name="RegionRestartSeconds">
- このリージョンは [SECONDS] 秒後に再起動されます。.
-このままここにいるとログアウトされます。
- </notification>
- <notification name="LoadWebPage">
- Web ページ [URL] をロードしますか?
-
-[MESSAGE]
-
-送信元のオブジェクト:&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;、所有者:[NAME]?
- <form name="form">
- <button name="Gotopage" text="ページに移動"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- データベースに [TYPE] が見つかりませんでした
- </notification>
- <notification name="FailedToFindWearable">
- データベースに [DESC] という名前の [TYPE] が見つかりませんでした。
- </notification>
- <notification name="InvalidWearable">
- 着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME] のバージョンをアップグレードしてからこのアイテムを着用してください。
- </notification>
- <notification name="ScriptQuestion">
- [NAME] が所有する「&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;」 というオブジェクトが、次のことをしようとしています:
-
-[QUESTIONS]
-よろしいですか?
- <form name="form">
- <button name="Yes" text="はい"/>
- <button name="No" text="いいえ"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- [NAME] が所有する「&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;」 というオブジェクトが、次のことをしようとしています:
-
-[QUESTIONS]
-このオブジェクトや制作者を信用できない場合は、このリクエストを拒否してください。
-
-リクエストを受けますか?
- <form name="form">
- <button name="Grant" text="許可"/>
- <button name="Deny" text="拒否"/>
- <button name="Details" text="詳細..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME] の「&lt;nolink&gt;[TITLE]&lt;/nolink&gt;」
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="無視する"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME] の「&lt;nolink&gt;[TITLE]&lt;/nolink&gt;」
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="無視する"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- お支払ありがとうございます。
-
-あなたの L$ 残高は、処理が完了するとアップデートされます。 処理に 20 分以上かかった場合、お取り引きがキャンセルされることがあります。 その場合は、購入金額はあなたの US$ 残高に追加されます。
-
-[http://secondlife.com/account/ マイアカウント] の取引履歴ページで、支払状況を確認できます。
- </notification>
- <notification name="FirstOverrideKeys">
- あなたの移動キーをオブジェクトが操作しています。
-矢印か AWSD のキーで動作を確認してください。
-銃などのオブジェクトだと、一人称視点に変更する必要があります。
-M キーを押して変更します。
- </notification>
- <notification name="FirstSandbox">
- ここはサンドボックスエリアです。住人が制作を学ぶことができます。
-
-ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
- </notification>
- <notification name="MaxListSelectMessage">
- このリストから [MAX_SELECT] 個までのアイテムを選択できます。
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] があなたをボイスチャットコールに招待しています。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [NAME] はインスタントメッセージを受け取り、自動的にブロックが解除されました。
- </notification>
- <notification name="AutoUnmuteByMoney">
- [NAME] はお金を受け取り、自動的にブロックが解除されました。
- </notification>
- <notification name="AutoUnmuteByInventory">
- [NAME] は持ち物を受け取り、自動的にブロックが解除されました。
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] は [GROUP] のボイスチャットコールに参加しました。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] は コンファレンスチャットののボイスチャットコールに参加しました。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] があなたをコンファレンスチャットに招待しています。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ブロック"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- あなたが参加しようとしているボイスコール [VOICE_CHANNEL_NAME] は、参加者が最大限に達しました。後でもう一度お試しください。
- </notification>
- <notification name="ProximalVoiceChannelFull">
- このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。
- </notification>
- <notification name="VoiceChannelDisconnected">
- [VOICE_CHANNEL_NAME] への接続が切れました。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] がコールを終了しました。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] があなたのコールを拒否しました。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] はあなたのコールを受けることができません。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="VoiceChannelJoinFailed">
- [VOICE_CHANNEL_NAME] への接続に失敗しました。あとで再度お試しください。 「近くのボイスチャット」に再接続されます。
- </notification>
- <notification name="VoiceLoginRetry">
- ボイスチャンネルを作成しています。1 分ほどかかります。
- </notification>
- <notification name="VoiceEffectsExpired">
- ボイスモーフィング効果の1つまたは複数の有効期限が終了しました。期限を延長・更新するには[[URL]こちらをクリック]してください。
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。期限を延長・更新するには[[URL]こちらをクリック]してください。
- </notification>
- <notification name="VoiceEffectsWillExpire">
- ボイスモーフィング効果の1つまたは複数の有効期限が[INTERVAL]日以内に終了します。期限を延長・更新するには[[URL]こちらをクリック]してください。
- </notification>
- <notification name="VoiceEffectsNew">
- 新しいボイスモーフィング効果が登場!
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- 特定のグループメンバーのみこのエリアを訪問することができます。
- </notification>
- <notification name="Cannot enter parcel: banned">
- 立入禁止されているため、区画に入ることができません。
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- アクセスリストに含まれていないため、区画に入ることができません。
- </notification>
- <notification name="VoiceNotAllowed">
- あなたには [VOICE_CHANNEL_NAME] のボイスチャットに接続する権限がありません。
- </notification>
- <notification name="VoiceCallGenericError">
- [VOICE_CHANNEL_NAME] のボイスチャットに接続中に、エラーが発生しました。後でもう一度お試しください。
- </notification>
- <notification name="UnsupportedCommandSLURL">
- クリックした SLurl はサポートされていません。
- </notification>
- <notification name="BlockedSLURL">
- 信用できないブラウザから SLurl が送られてきたので、セキュリティのためブロックされました。
- </notification>
- <notification name="ThrottledSLURL">
- 短期間のあいだに、信用できないブラウザから複数の SLurls が送られてきました。
-安全のために数秒間ブロックされます。
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="返答"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- すべての IM を閉じますか?
- <usetemplate ignoretext="すべての IM を閉じる前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- アタッチメントが保存されました。
- </notification>
- <notification name="UnableToFindHelpTopic">
- ヘルプトピックが見つかりませんでした。
- </notification>
- <notification name="ObjectMediaFailure">
- サーバーエラー: メディアのアップデートまたは失敗。
-「[ERROR]」
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- モデレーターがあなたの文字チャットをミュートしました。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- モデレーターがあなたのボイスをミュートしました。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- テレポート履歴を削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- 選択したボタンを現在表示することができません。
-じゅうぶんなスペースができればボタンは表示されます。
- </notification>
- <notification name="ShareNotification">
- 共有する住人を選択します。
- </notification>
- <notification name="ShareItemsConfirmation">
- 次のアイテムを共有しますか?
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-次の住人と共有しますか?
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ItemsShared">
- アイテムが共有されました。
- </notification>
- <notification name="DeedToGroupFail">
- グループへの譲渡に失敗しました。
- </notification>
- <notification name="AvatarRezNotification">
- (作成後[EXISTENCE]秒経過)
-&apos;[NAME]&apos;というアバターは[TIME]秒後に姿を現わしました。
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- (作成後[EXISTENCE]秒経過)
-アウトフィットのベークは[TIME]秒後に完了しました。
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- (作成後[EXISTENCE]秒経過)
-容姿の更新は[TIME]秒後に送信されました。
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」がクラウドになりました。
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が現れました。
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( [EXISTENCE] 秒)
-アバター「 [NAME] 」が [TIME] 秒でクラウド状態から出現します。
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が容姿編集モードに入りました。
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が容姿編集モードを解除しました。
- </notification>
- <notification name="NoConnect">
- [PROTOCOL] [HOSTID]を使って接続できません。
-お使いのネットワークやファイアウォールの設定を確認してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- ボイスサーバーに接続できません:
-
-[HOSTID]
-
-ボイスチャットによるコミュニケーションが利用できません。
-お使いのネットワークやファイアウォールの設定を確認してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( [EXISTENCE] 秒)
-アバター「 NAME 」が完全に読み込まれました。
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( 作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にアップロードされました。
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( 作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にローカルに更新されました。
- </notification>
- <notification name="ConfirmLeaveCall">
- このコールから抜けますか?
- <usetemplate ignoretext="コールから抜ける前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="ConfirmMuteAll">
- グループコールの参加者全員をミュートしました。
-あとからこのコールに参加する住人も
-ミュートされます。あなたがコールを終了しても他の参加者のミュート状態が続きます。
-
-全員をミュートしますか?
- <usetemplate ignoretext="グループコールの参加者全員をミュートする前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="チャット" name="HintChat">
- チャットに参加するには、画面下のチャットフィールドにテキストを入力します。
- </notification>
- <notification label="立ち上がる" name="HintSit">
- 座る姿勢から立ち上がるには、「立ち上がる」ボタンをクリックします。
- </notification>
- <notification label="話す" name="HintSpeak">
- 「スピーカー」ボタンをクリックすると、マイクのオン・オフが切り替わります。
-
-上矢印をクリックすると、ボイスコントロールパネルが表示されます。
-
-「スピーカー」ボタンを非表示にすると、ボイス機能も無効になります。
- </notification>
- <notification label="世界を探検" name="HintDestinationGuide">
- 行き先ガイドには数多くの探索場所が含まれます。どこか行き先を決めたら、テレポートして探索に出かけましょう。
- </notification>
- <notification label="サイドパネル" name="HintSidePanel">
- サイドパネルでインベントリ、服、プロフィールなどにすばやくアクセスできます。
- </notification>
- <notification label="移動" name="HintMove">
- 歩行や走行は、「移動」パネルを開き、矢印コントロールによって操作します。この操作はキーボードの矢印キーで実行することも可能です。
- </notification>
- <notification label="" name="HintMoveClick">
- 1. クリックして歩行
-地面の一箇所をクリックすると、その場所まで歩きます。
-
-2. クリック・ドラッグで視界を回転
-世界の一箇所をクリックしてドラッグすると、視界の向きが変わります。
- </notification>
- <notification label="表示名" name="HintDisplayName">
- 表示名(カスタマイズ可能)を設定します。ユーザー名は固有で変更できませんが、ここで追加する表示名は変更可能です。他の住人の名前の表示方法は環境設定で変更してください。
- </notification>
- <notification label="表示" name="HintView">
- カメラの視点を変更するには、水平・垂直コントロールを使います。Escape を押すか、または歩行すると、視点がリセットされます。
- </notification>
- <notification label="インベントリ" name="HintInventory">
- 持ち物にはあなたのアイテムがすべて含まれます。新しく追加されたアイテムは「最新」タブに一覧表示されています。
- </notification>
- <notification label="あなたのリンデンドル" name="HintLindenDollar">
- これがあなたの L$ 残高です。リンデンドルを購入するには「L$ の購入」をクリックします。
- </notification>
- <notification name="PopupAttempt">
- ポップアップがブロックされました。
- <form name="form">
- <ignore name="ignore" text="全てのポップアップを有効にする"/>
- <button name="open" text="ポップアップウィンドウを開く"/>
- </form>
- </notification>
- <notification name="AuthRequest">
- 「[REALM]」にある「&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;」のサイトにはユーザー名とパスワードが必要です。
- <form name="form">
- <input name="username" text="ユーザー名"/>
- <input name="password" text="パスワード"/>
- <button name="ok" text="送信"/>
- <button name="cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- モードを変更するには終了して再起動する必要があります。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoClassifieds">
- クラシファイド広告の作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- グループの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoPicks">
- ピックの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoWorldMap">
- 世界地図の表示はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- ボイスコールはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- 共有はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- 他の住人への支払いはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
- <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
- </notification>
- <global name="UnsupportedCPU">
- - あなたの CPU の速度は必須動作環境の条件を満たしていません。
- </global>
- <global name="UnsupportedGLRequirements">
- [APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
-
-この問題が何度も起きる場合は、[SUPPORT_SITE] をご確認ください。
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - あなたのグラフィックカードは必須動作環境の条件を満たしていません。
- </global>
- <global name="UnsupportedRAM">
- - あなたのシステムメモリは必須動作環境の条件を満たしていません。
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- 自分の土地をお持ちの場合、「ホーム」に設定できます。
-お持ちでない場合は、地図で「インフォハブ」をお探しください。
- </global>
- <global name="You died and have been teleported to your home location">
- 死んでしまったので、ホームにテレポートされました。
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
deleted file mode 100644
index 17e1283d24..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="コール" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="コール終了" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="ボイスコントロール" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
deleted file mode 100644
index 13be2cea0a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="マイクのオン・オフ"/>
- <string name="VoiceControlBtnToolTip" value="ボイスコントロールパネルの表示・非表示"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="話す" name="speak_btn" tool_tip="マイクのオン・オフを切り替える"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="サウンド環境設定を変更する"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="アバターの動作を起こす"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="視界" name="camera_btn" tool_tip="カメラの角度をコントロール"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="行き先" name="destination_btn" tool_tip="Second Life 内を旅行する"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="マイ アバター" name="avatar_btn" tool_tip="容姿を変更する"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="人" name="show_people_button" tool_tip="Second Life で人を探す"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="プロフィール" name="show_profile_btn" tool_tip="プロフィールを表示・編集"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="ハウツー" name="show_help_btn" tool_tip="Second Life のヘルプ情報を見る"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="会話"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="通知"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
deleted file mode 100644
index f7f575206a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="グループ情報" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="グループコール" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="コール終了" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="ボイスコントロールを開く" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
deleted file mode 100644
index 14c38c796f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="プロフィール" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="フレンド登録" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="テレポート" name="teleport_btn" tool_tip="この人にテレポートを送ります"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="コール" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="コール終了" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="ブロック" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="ブロック解除" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="コールの音量" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_login.xml b/indra/newview/skins/minimal/xui/ja/panel_login.xml
deleted file mode 100644
index ac1fe455c7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://jp.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=ja
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- ユーザーネーム:
- </text>
- <combo_box name="username_combo" tool_tip="登録時に自分で選んだユーザー名(例:bobsmith12、Steller Sunshineなど)"/>
- <text name="password_text">
- パスワード:
- </text>
- <check_box label="パスワードを記憶" name="remember_check"/>
- <button label="ログイン" left_pad="30" name="connect_btn" width="60"/>
- <text name="mode_selection_text">
- モード:
- </text>
- <combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
- <combo_box.item label="ベーシック" name="Basic"/>
- <combo_box.item label="アドバンス" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- 開始地点:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
- <combo_box.item label="ホーム" name="MyHome"/>
- <combo_box.item label="<地域名を入力>" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- お申し込み
- </text>
- <text name="forgot_password_text">
- ユーザー名またはパスワードをお忘れですか?
- </text>
- <text name="login_help">
- ログインの方法
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
deleted file mode 100644
index 0426c4fe9a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="前の場所へ戻ります"/>
- <pull_button name="forward_btn" tool_tip="次の場所へ進みます"/>
- <button name="home_btn" tool_tip="「ホーム」にテレポート"/>
- <location_input label="場所" name="location_combo"/>
- <search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
- <combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
- <label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
- お気に入りバー
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_people.xml b/indra/newview/skins/minimal/xui/ja/panel_people.xml
deleted file mode 100644
index 5caeebc151..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="人" name="people_panel">
- <string name="no_recent_people" value="最近交流した人はいません。一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。"/>
- <string name="no_filtered_recent_people" value="その名前で最近交流した人はいません。"/>
- <string name="no_one_near" value="近くに誰もいません。一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。"/>
- <string name="no_one_filtered_near" value="その名前の人は近くにいません。"/>
- <string name="no_friends_online" value="オンラインのフレンドはいません"/>
- <string name="no_friends" value="フレンドはいません"/>
- <string name="no_friends_msg">
- 住人を右クリックすると、フレンド登録できます。
-一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。
- </string>
- <string name="no_filtered_friends_msg">
- お探しのものは見つかりましたか?下の「行き先ガイド」ボタンをクリックしてください。
- </string>
- <string name="people_filter_label" value="人をフィルター"/>
- <string name="groups_filter_label" value="グループをフィルター"/>
- <string name="no_filtered_groups_msg" value="お探しのものは見つかりましたか? [secondlife:///app/search/groups/[SEARCH_TERM] 検索] をお試しください。"/>
- <string name="no_groups_msg" value="グループをお探しですか? [secondlife:///app/search/groups 検索] をお試しください。"/>
- <string name="MiniMapToolTipMsg" value="[地域](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)"/>
- <string name="AltMiniMapToolTipMsg" value="[地域](ダブルクリックでテレポート。Shift‐ドラッグで水平・垂直移動)"/>
- <filter_editor label="フィルター" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="近く" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="オプション"/>
- <button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
- </panel>
- </panel>
- <panel label="マイ フレンド" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="オンライン"/>
- <accordion_tab name="tab_all" title="全員"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="オプションを表示します"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="フレンド登録を申し出る"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="マイ グループ" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="オプション"/>
- <button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
- <button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
- </panel>
- </panel>
- <panel label="最新" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="オプション"/>
- <button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示します"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="グループコール" name="group_call_btn" tool_tip="このグループにコールする"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
deleted file mode 100644
index d06db8ccb1..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="サイドパネル"/>
- <button name="undock" tool_tip="切り離す"/>
- <button name="dock" tool_tip="ドッキング"/>
- <button name="show_help" tool_tip="ヘルプを表示"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
deleted file mode 100644
index 7d1298c6c0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- パケット損失
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- 帯域幅
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt])
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
- <combo_box.item label="ベーシックモード" name="Basic"/>
- <combo_box.item label="アドバンスモード" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="すべてのメディアを開始・停止(音楽、ビデオ、Web ページ)"/>
- <button name="volume_btn" tool_tip="グローバル音量設定"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_camera.xml b/indra/newview/skins/minimal/xui/pl/floater_camera.xml
deleted file mode 100644
index 5b9dd47616..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Obracaj kamerę wokół obiektu
- </floater.string>
- <floater.string name="zoom_tooltip">
- Najedź kamerą w kierunku obiektu
- </floater.string>
- <floater.string name="move_tooltip">
- Poruszaj kamerą w dół/górę oraz w prawo/lewo
- </floater.string>
- <floater.string name="camera_modes_title">
- Ustawienia
- </floater.string>
- <floater.string name="pan_mode_title">
- W prawo lub w lewo
- </floater.string>
- <floater.string name="presets_mode_title">
- Ustaw widok
- </floater.string>
- <floater.string name="free_mode_title">
- Zobacz obiekt
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Widok z przodu
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Podgląd grupy
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Widok z tyłu
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Widok obiektu
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Widok panoramiczny
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Najedź kamerą w kierunku obiektu">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Obracaj kamerę wokoł osi"/>
- <slider_bar name="zoom_slider" tool_tip="Przybliż kamerę do ogniskowej"/>
- <joystick_track name="cam_track_stick" tool_tip="Poruszaj kamerą w górę, w dół, w lewo i w prawo"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Ustaw widok"/>
- <button label="" name="pan_btn" tool_tip="Kamera horyzontalna"/>
- <button label="" name="avatarview_btn" tool_tip="Ustawienia"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
deleted file mode 100644
index 66fde04f88..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="POMOC">
- <floater.string name="loading_text">
- Ładowanie...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
deleted file mode 100644
index 02b7c6bc2b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="PRZEGLĄDARKA MEDIÓW">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Wstecz" name="back"/>
- <button label="Dalej" name="forward"/>
- <button label="Odśwież" name="reload"/>
- <button label="Idź" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="przewiń" name="rewind"/>
- <button label="zatrzymaj" name="stop"/>
- <button label="dalej" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Wyślij bieżącą stronę do parceli" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Otwórz w przeglądarce zewnętrznej" name="open_browser"/>
- <check_box label="Zawsze otwieraj w przeglądarce zewnętrznej" name="open_always"/>
- <button label="Zamknij" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
deleted file mode 100644
index 7dc3e1f22e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CZAT LOKALNY">
- <check_box label="Tłumaczenie czatu (wspierane przez Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml b/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
deleted file mode 100644
index e3096f1e54..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Wstecz"/>
- <button name="forward" tool_tip="Dalej"/>
- <button name="stop" tool_tip="Zatrzymaj"/>
- <button name="reload" tool_tip="Odśwież stronę"/>
- <combo_box name="address" tool_tip="Wpisz URL tutaj"/>
- <icon name="media_secure_lock_flag" tool_tip="Zabezpieczona przeglądarka"/>
- <button name="popexternal" tool_tip="Otwórz bieżący URL w zewnętrznej przeglądarce"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
deleted file mode 100644
index 5e982c0185..0000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [SL_PROFILE]
- </string>
- <text name="user_details">
- To jest mój opis w Second Life.
- </text>
- <slider name="volume_slider" tool_tip="Poziom głośności" value="0.5"/>
- <button label="Dodaj znajomość" name="add_friend_btn"/>
- <button label="IM" name="im_btn"/>
- <button label="Profil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Wyłącz komunikację głosową" name="disable_voice"/>
- <button label="Włącz komunikację głosową" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_object.xml b/indra/newview/skins/minimal/xui/pl/inspect_object.xml
deleted file mode 100644
index 23d8ce7700..0000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Przez [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Twórca [CREATOR]
-Właściciel [OWNER]
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- Darmowe!
- </string>
- <string name="Touch">
- Dotknij
- </string>
- <string name="Sit">
- Usiądź tutaj
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="price_text">
- L$30,000
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <button label="Kup" name="buy_btn"/>
- <button label="Zapłać" name="pay_btn"/>
- <button label="Weź kopię" name="take_free_copy_btn"/>
- <button label="Dotknij" name="touch_btn"/>
- <button label="Usiądź tutaj" name="sit_btn"/>
- <button label="Otwórz" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Zabezpiecz przeglądanie"/>
- <button label="Więcej" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
deleted file mode 100644
index 7c572b4fc9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Porządkuj według daty" name="sort_by_most_recent"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_by_name"/>
- <menu_item_check label="Porządkuj według typu" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
deleted file mode 100644
index aacdad97e3..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Zobacz profil" name="Profile..."/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Zaproś do grupy" name="Invite..."/>
- <menu_item_call label="Zablokuj" name="Avatar Mute"/>
- <menu_item_call label="Raport" name="abuse"/>
- <menu_item_call label="Unieruchom" name="Freeze..."/>
- <menu_item_call label="Wyrzuć" name="Eject..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
- <menu_item_call label="Przybliż" name="Zoom In"/>
- <menu_item_call label="Zapłać" name="Pay..."/>
- <menu_item_call label="Sprawdź" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
deleted file mode 100644
index 163b3a231e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Dotknij" name="Attachment Object Touch"/>
- <menu_item_call label="Edytuj" name="Edit..."/>
- <menu_item_call label="Odłącz" name="Detach"/>
- <menu_item_call label="Usiądź tutaj" name="Sit Down Here"/>
- <menu_item_call label="Wstań" name="Stand Up"/>
- <menu_item_call label="Mój wygląd" name="Change Outfit"/>
- <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
- <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
- <menu_item_call label="Moi znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="Mój profil" name="Profile..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
- <menu_item_call label="Opuść" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
deleted file mode 100644
index e8d2b14231..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil" name="Show Profile"/>
- <menu_item_call label="Czat/IM..." name="Send IM"/>
- <menu_item_call label="Dodaj znajomość..." name="Add Friend"/>
- <menu_item_call label="Usuń..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
deleted file mode 100644
index dcf7921bad..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Zobacz profil" name="Profile..."/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="IM" name="Send IM..."/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Zaproś do grupy" name="Invite..."/>
- <menu_item_call label="Zablokuj" name="Avatar Mute"/>
- <menu_item_call label="Raport" name="abuse"/>
- <menu_item_call label="Unieruchom" name="Freeze..."/>
- <menu_item_call label="Wyrzuć" name="Eject..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
- <menu_item_call label="Przybliż" name="Zoom In"/>
- <menu_item_call label="Zapłać" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
deleted file mode 100644
index d481475803..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Usiądź tu" name="Sit Down Here"/>
- <menu_item_call label="Wstań" name="Stand Up"/>
- <context_menu label="Zdejmij" name="Take Off &gt;">
- <context_menu label="Ubrania" name="Clothes &gt;">
- <menu_item_call label="Koszulę" name="Shirt"/>
- <menu_item_call label="Spodnie" name="Pants"/>
- <menu_item_call label="Spódnicę" name="Skirt"/>
- <menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Skarpetki" name="Socks"/>
- <menu_item_call label="Kurtkę" name="Jacket"/>
- <menu_item_call label="Rękawiczki" name="Gloves"/>
- <menu_item_call label="Podkoszulek" name="Self Undershirt"/>
- <menu_item_call label="Bieliznę" name="Self Underpants"/>
- <menu_item_call label="Tatuaż" name="Self Tattoo"/>
- <menu_item_call label="Ubranie alpha" name="Self Alpha"/>
- <menu_item_call label="Wszystko" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Odłącz" name="Object Detach"/>
- <menu_item_call label="Odłącz wszystko" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Mój wygląd" name="Chenge Outfit"/>
- <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
- <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
- <menu_item_call label="Moi znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="Mój profil" name="Profile..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
deleted file mode 100644
index 8da40dcedf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Rozmowy głosowe aktywne" name="EnableVoiceChat"/>
- <menu_item_check label="Przycisk gesturki" name="ShowGestureButton"/>
- <menu_item_check label="Przycisk ruchu" name="ShowMoveButton"/>
- <menu_item_check label="Przycisk widoku" name="ShowCameraButton"/>
- <menu_item_check label="Przycisk zdjęć" name="ShowSnapshotButton"/>
- <menu_item_check label="Buduj" name="ShowBuildButton"/>
- <menu_item_check label="Szukaj" name="ShowSearchButton"/>
- <menu_item_check label="Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Mini-Mapa" name="ShowMiniMapButton"/>
- <menu_item_call label="Wytnij" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Kopiuj" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Wklej" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Usuń" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
deleted file mode 100644
index 4e5407601b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Odłącz" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
deleted file mode 100644
index ee60d3feb6..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Zastąp" name="replace"/>
- <menu_item_call label="Edytuj" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
deleted file mode 100644
index ad43900137..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Zdejmij" name="take_off"/>
- <menu_item_call label="Edytuj" name="edit"/>
- <menu_item_call label="Zastąp" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
deleted file mode 100644
index 9fba39be1a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Nowe ubranie" name="COF.Gear.New_Clothes"/>
- <menu label="Nowe części ciała" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_edit.xml b/indra/newview/skins/minimal/xui/pl/menu_edit.xml
deleted file mode 100644
index 578e270fed..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Edycja" name="Edit">
- <menu_item_call label="Cofnij" name="Undo"/>
- <menu_item_call label="Powtórz" name="Redo"/>
- <menu_item_call label="Wytnij" name="Cut"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Powiel" name="Duplicate"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
- <menu_item_call label="Odznacz" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml b/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
deleted file mode 100644
index 7310ff5c27..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportuj" name="Teleport To Landmark"/>
- <menu_item_call label="Zobacz/Edytuj Ulubione miejsce" name="Landmark Open"/>
- <menu_item_call label="Kopiuj SLurl" name="Copy slurl"/>
- <menu_item_call label="Pokaż na mapie" name="Show On Map"/>
- <menu_item_call label="Kopiuj" name="Landmark Copy"/>
- <menu_item_call label="Wklej" name="Landmark Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
deleted file mode 100644
index a72dec22fc..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Dodaj/Usuń z Ulubionych" name="activate"/>
- <menu_item_call label="Kopiuj" name="copy_gesture"/>
- <menu_item_call label="Wklej" name="paste"/>
- <menu_item_call label="Kopiuj UUID" name="copy_uuid"/>
- <menu_item_call label="Zapisz do obecnego zestawu ubrania" name="save_to_outfit"/>
- <menu_item_call label="Edytuj" name="edit_gesture"/>
- <menu_item_call label="Sprawdź" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
deleted file mode 100644
index 83be4d38c5..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Dołącz do grupy..." name="item_join"/>
- <menu_item_call label="Nowa grupa..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
deleted file mode 100644
index 19d9510cd3..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Pokaż pasek Nawigacji" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Pokaż pasek Ulubionych" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Pokaż pasek mini-lokalizacji" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
deleted file mode 100644
index 207bc2211b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Zamknij wszystkie" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4ead44878a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
deleted file mode 100644
index 2b9a362123..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="O grupie" name="Show Profile"/>
- <menu_item_call label="Pokaż sesję" name="Chat"/>
- <menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
deleted file mode 100644
index 8924d6db3e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Zobacz profil" name="Show Profile"/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="Pokaż sesję" name="Send IM"/>
- <menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 59560f236c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Zobacz profil" name="view_profile"/>
- <menu_item_call label="Dodaj znajomość" name="add_friend"/>
- <menu_item_call label="IM" name="im"/>
- <menu_item_call label="Zadzwoń" name="call"/>
- <menu_item_call label="Teleportuj" name="teleport"/>
- <menu_item_call label="Zaproś do grupy" name="invite_to_group"/>
- <menu_item_call label="Zablokuj" name="block"/>
- <menu_item_call label="Odblokuj" name="unblock"/>
- <menu_item_call label="Raport" name="report"/>
- <menu_item_call label="Unieruchom" name="freeze"/>
- <menu_item_call label="Wyrzuć" name="eject"/>
- <menu_item_call label="Kopnij" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Debugowanie tekstur" name="debug"/>
- <menu_item_call label="Znajdź na mapie" name="find_on_map"/>
- <menu_item_call label="Przybliż" name="zoom_in"/>
- <menu_item_call label="Zapłać" name="pay"/>
- <menu_item_call label="Udostępnij" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
deleted file mode 100644
index c12bd490ff..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Dotknij" name="touch"/>
- <menu_item_call label="Usiądź" name="sit"/>
- <menu_item_call label="Zapłać" name="pay"/>
- <menu_item_call label="Kup" name="buy"/>
- <menu_item_call label="Weź" name="take"/>
- <menu_item_call label="Weź kopię" name="take_copy"/>
- <menu_item_call label="Otwórz" name="open"/>
- <menu_item_call label="Edytuj" name="edit"/>
- <menu_item_call label="Ubierz" name="wear"/>
- <menu_item_call label="Dodaj" name="add"/>
- <menu_item_call label="Raport" name="report"/>
- <menu_item_call label="Zablokuj" name="block"/>
- <menu_item_call label="Przybliż" name="zoom_in"/>
- <menu_item_call label="Usuń" name="remove"/>
- <menu_item_call label="Więcej informacji" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
deleted file mode 100644
index c4ef9761d9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Usiądź tutaj" name="Sit Down Here"/>
- <menu_item_call label="Wstań" name="Stand Up"/>
- <context_menu label="Zdejmij" name="Take Off &gt;">
- <context_menu label="Ubranie" name="Clothes &gt;">
- <menu_item_call label="Bluzka" name="Shirt"/>
- <menu_item_call label="Spodnie" name="Pants"/>
- <menu_item_call label="Spódnica" name="Skirt"/>
- <menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Skarpetki" name="Socks"/>
- <menu_item_call label="Kurtka" name="Jacket"/>
- <menu_item_call label="Rękawiczki" name="Gloves"/>
- <menu_item_call label="Podkoszulek" name="Self Undershirt"/>
- <menu_item_call label="Bielizna" name="Self Underpants"/>
- <menu_item_call label="Tatuaż" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Ubranie" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Odłącz" name="Object Detach"/>
- <menu_item_call label="Odłącz wszystko" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Zmień strój" name="Chenge Outfit"/>
- <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
- <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
- <menu_item_call label="Znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="Mój profil" name="Profile..."/>
- <menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 5ef0f2f7a4..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Zamknij" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
deleted file mode 100644
index e47ffa0e18..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Kupuj" name="Task Buy"/>
- <menu_item_call label="Otwórz" name="Task Open"/>
- <menu_item_call label="Odtwarzaj" name="Task Play"/>
- <menu_item_call label="Właściwości" name="Task Properties"/>
- <menu_item_call label="Zmień nazwę" name="Task Rename"/>
- <menu_item_call label="Usuń" name="Task Remove"/>
- <menu_item_call label="Opróżnij Kosz" name="Empty Trash"/>
- <menu_item_call label="Opróżnij Folder Zgubione i odnalezione" name="Empty Lost And Found"/>
- <menu_item_call label="Nowy folder" name="New Folder"/>
- <menu_item_call label="Nowy skrypt" name="New Script"/>
- <menu_item_call label="Nowa nota" name="New Note"/>
- <menu_item_call label="Nowa gesturka" name="New Gesture"/>
- <menu label="Nowe Ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
- <menu_item_call label="Nowe spodnie" name="New Pants"/>
- <menu_item_call label="Nowe buty" name="New Shoes"/>
- <menu_item_call label="Nowe skarpety" name="New Socks"/>
- <menu_item_call label="Nowa kurtka" name="New Jacket"/>
- <menu_item_call label="Nowa spódnica" name="New Skirt"/>
- <menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
- <menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
- <menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha Mask"/>
- <menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
- </menu>
- <menu label="Nowa Część Ciała" name="New Body Parts">
- <menu_item_call label="Nowy kształt" name="New Shape"/>
- <menu_item_call label="Nowa skórka" name="New Skin"/>
- <menu_item_call label="Nowe włosy" name="New Hair"/>
- <menu_item_call label="Nowe oczy" name="New Eyes"/>
- </menu>
- <menu label="Zmień Czcionkę" name="Change Type">
- <menu_item_call label="Domyślna" name="Default"/>
- <menu_item_call label="Rękawiczki" name="Gloves"/>
- <menu_item_call label="Kurtka" name="Jacket"/>
- <menu_item_call label="Spodnie" name="Pants"/>
- <menu_item_call label="Kształt" name="Shape"/>
- <menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Koszula" name="Shirt"/>
- <menu_item_call label="Spódnica" name="Skirt"/>
- <menu_item_call label="Bielizna" name="Underpants"/>
- <menu_item_call label="Podkoszulek" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportuj" name="Landmark Open"/>
- <menu_item_call label="Otwórz" name="Animation Open"/>
- <menu_item_call label="Otwórz" name="Sound Open"/>
- <menu_item_call label="Zmień strój" name="Replace Outfit"/>
- <menu_item_call label="Dodaj do stroju" name="Add To Outfit"/>
- <menu_item_call label="Usuń obiekt" name="Purge Item"/>
- <menu_item_call label="Przywróć obiekt" name="Restore Item"/>
- <menu_item_call label="Otwórz" name="Open"/>
- <menu_item_call label="Otwórz oryginalne" name="Open Original"/>
- <menu_item_call label="Właściwości" name="Properties"/>
- <menu_item_call label="Zmień nazwę" name="Rename"/>
- <menu_item_call label="Kopiuj dane UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Wklej jako link" name="Paste As Link"/>
- <menu_item_call label="Usuń" name="Remove Link"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Skasuj folder systemu" name="Delete System Folder"/>
- <menu_item_call label="Rozpocznij konferencję czatową" name="Conference Chat Folder"/>
- <menu_item_call label="Odtwarzaj" name="Sound Play"/>
- <menu_item_call label="O Miejscu" name="About Landmark"/>
- <menu_item_call label="Używaj in-world" name="Animation Play"/>
- <menu_item_call label="Odtwarzaj lokalnie" name="Animation Audition"/>
- <menu_item_call label="Wyślij IM" name="Send Instant Message"/>
- <menu_item_call label="Teleportuj..." name="Offer Teleport..."/>
- <menu_item_call label="Rozpocznij konferencję czatową" name="Conference Chat"/>
- <menu_item_call label="Aktywuj" name="Activate"/>
- <menu_item_call label="Deaktywuj" name="Deactivate"/>
- <menu_item_call label="Zapisz jako" name="Save As"/>
- <menu_item_call label="Odłącz od siebie" name="Detach From Yourself"/>
- <menu_item_call label="Załóż" name="Wearable And Object Wear"/>
- <menu label="Dołącz do" name="Attach To"/>
- <menu label="Dołącz do załączników HUD" name="Attach To HUD"/>
- <menu_item_call label="Edytuj" name="Wearable Edit"/>
- <menu_item_call label="Dodaj" name="Wearable Add"/>
- <menu_item_call label="Zdejmij" name="Take Off"/>
- <menu_item_call label="--brak opcji--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
deleted file mode 100644
index 4a56586aaf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Załaduj" name="upload">
- <menu_item_call label="obraz (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="animację (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
- <menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nowy folder" name="New Folder"/>
- <menu_item_call label="Nowy skrypt" name="New Script"/>
- <menu_item_call label="Nowa nota" name="New Note"/>
- <menu_item_call label="Nowa gesturka" name="New Gesture"/>
- <menu label="Nowe Ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
- <menu_item_call label="Nowe spodnie" name="New Pants"/>
- <menu_item_call label="Nowe buty" name="New Shoes"/>
- <menu_item_call label="Nowe skarpetki" name="New Socks"/>
- <menu_item_call label="Nowa kurtka" name="New Jacket"/>
- <menu_item_call label="Nowa spódnica" name="New Skirt"/>
- <menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
- <menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
- <menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha"/>
- <menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
- </menu>
- <menu label="Nowa Część Ciała" name="New Body Parts">
- <menu_item_call label="Nowy kształt" name="New Shape"/>
- <menu_item_call label="Nowa skórka" name="New Skin"/>
- <menu_item_call label="Nowe włosy" name="New Hair"/>
- <menu_item_call label="Nowe oczy" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
deleted file mode 100644
index 591c3a81d5..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nowe okno Szafy" name="new_window"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_by_name"/>
- <menu_item_check label="Porządkuj według daty" name="sort_by_recent"/>
- <menu_item_check label="Sortuj foldery zawsze według nazwy" name="sort_folders_by_name"/>
- <menu_item_check label="Posortuj foldery systemowe od góry" name="sort_system_folders_to_top"/>
- <menu_item_call label="Pokaż filtry" name="show_filters"/>
- <menu_item_call label="Zresetuj filtry" name="reset_filters"/>
- <menu_item_call label="Zamknij wszystkie foldery" name="close_folders"/>
- <menu_item_call label="Opróżnij Zagubione i odnalezione" name="empty_lostnfound"/>
- <menu_item_call label="Zapisz teksturę jako" name="Save Texture As"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Znajdź oryginał" name="Find Original"/>
- <menu_item_call label="Znajdź wszystkie linki" name="Find All Links"/>
- <menu_item_call label="Opróżnij Kosz" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_land.xml b/indra/newview/skins/minimal/xui/pl/menu_land.xml
deleted file mode 100644
index cbfecaee56..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="O Posiadłości" name="Place Information..."/>
- <menu_item_call label="Usiądź tutaj" name="Sit Here"/>
- <menu_item_call label="Kup posiadłość" name="Land Buy"/>
- <menu_item_call label="Kup przepustkę" name="Land Buy Pass"/>
- <menu_item_call label="Buduj" name="Create"/>
- <menu_item_call label="Edytuj teren" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
deleted file mode 100644
index aa5808390c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Kopiuj SLurl" name="copy"/>
- <menu_item_call label="Usuń" name="delete"/>
- <menu_item_call label="Utwórz" name="pick"/>
- <menu_item_call label="Dodaj do paska Ulubionych" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_login.xml b/indra/newview/skins/minimal/xui/pl/menu_login.xml
deleted file mode 100644
index e50b694641..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Ja" name="File">
- <menu_item_call label="Ustawienia" name="Preferences..."/>
- <menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Pomoc" name="Help">
- <menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
- <menu_item_call label="O [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Pokaż ustawienia debugowania" name="Show Debug Menu"/>
- <menu label="Debug" name="Debug">
- <menu_item_call label="Ustawienia debugowania" name="Debug Settings"/>
- <menu_item_call label="Ustawienia UI/kolor" name="UI/Color Settings"/>
- <menu label="UI Testy" name="UI Tests"/>
- <menu_item_call label="Ustaw rozmiar interfejsu..." name="Set Window Size..."/>
- <menu_item_call label="Wyświetl TOS" name="TOS"/>
- <menu_item_call label="Wyświetl wiadomość krytyczną" name="Critical"/>
- <menu_item_call label="Test przeglądarki mediów" name="Web Browser Test"/>
- <menu_item_call label="Test zawartości strony" name="Web Content Floater Test"/>
- <menu_item_check label="Pokaż siatkę" name="Show Grid Picker"/>
- <menu_item_call label="Pokaż konsolę Zawiadomień" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
deleted file mode 100644
index 8f86965416..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom blisko" name="Zoom Close"/>
- <menu_item_call label="Zoom średnio" name="Zoom Medium"/>
- <menu_item_call label="Zoom daleko" name="Zoom Far"/>
- <menu_item_call label="Zoom domyślny" name="Zoom Default"/>
- <menu_item_check label="Obróć mapę" name="Rotate Map"/>
- <menu_item_check label="Autocentrowanie" name="Auto Center"/>
- <menu_item_call label="Zatrzymaj" name="Stop Tracking"/>
- <menu_item_call label="Mapa Świata" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
deleted file mode 100644
index 1d434670ee..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Pokaż współrzędne" name="Show Coordinates"/>
- <menu_item_check label="Pokaż właściwości posiadłości" name="Show Parcel Properties"/>
- <menu_item_call label="Landmark" name="Landmark"/>
- <menu_item_call label="Wytnij" name="Cut"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
deleted file mode 100644
index fe5bc6ba6f..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Pokaż osoby w pobliżu..." name="nearby_people"/>
- <menu_item_check label="Pokaż zablokowany tekst" name="muted_text"/>
- <menu_item_check label="Wyświetlaj ikonki znajomych" name="show_buddy_icons"/>
- <menu_item_check label="Wyświetlaj imiona" name="show_names"/>
- <menu_item_check label="Wyświetlaj ikonki i imiona" name="show_icons_and_names"/>
- <menu_item_call label="Rozmiar czcionki" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
deleted file mode 100644
index bd3d42f9b1..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Zamknij" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object.xml b/indra/newview/skins/minimal/xui/pl/menu_object.xml
deleted file mode 100644
index 3da6c5c890..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Dotknij" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Dotknij"/>
- </menu_item_call>
- <menu_item_call label="Edytuj" name="Edit..."/>
- <menu_item_call label="Buduj" name="Build"/>
- <menu_item_call label="Otwórz" name="Open"/>
- <menu_item_call label="Usiądź tutaj" name="Object Sit"/>
- <menu_item_call label="Wstań" name="Object Stand Up"/>
- <menu_item_call label="Sprawdź" name="Object Inspect"/>
- <menu_item_call label="Przybliż" name="Zoom In"/>
- <context_menu label="Załóż na" name="Put On">
- <menu_item_call label="Załóż" name="Wear"/>
- <menu_item_call label="Dodaj" name="Add"/>
- <context_menu label="Dołącz" name="Object Attach"/>
- <context_menu label="Dołącz HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Zarządzaj" name="Remove">
- <menu_item_call label="Raport" name="Report Abuse..."/>
- <menu_item_call label="Zablokuj" name="Object Mute"/>
- <menu_item_call label="Zwróć" name="Return..."/>
- </context_menu>
- <menu_item_call label="Weź" name="Pie Object Take"/>
- <menu_item_call label="Weź kopię" name="Take Copy"/>
- <menu_item_call label="Zapłać" name="Pay..."/>
- <menu_item_call label="Kup" name="Buy..."/>
- <menu_item_call label="Skasuj" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
deleted file mode 100644
index b499bca2db..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Sprawdź..." name="Object Profile"/>
- <menu_item_call label="Zablokuj..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
deleted file mode 100644
index 1a70e76ec7..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Załóż - Zastąp obecny strój" name="wear"/>
- <menu_item_call label="Załóż - Dodaj do bieżącego stroju" name="wear_add"/>
- <menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
- <menu label="Nowe ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
- <menu_item_call label="Nowe spodnie" name="New Pants"/>
- <menu_item_call label="Nowe buty" name="New Shoes"/>
- <menu_item_call label="Nowe skarpetki" name="New Socks"/>
- <menu_item_call label="Nowa kurtka" name="New Jacket"/>
- <menu_item_call label="Nowa spódnica" name="New Skirt"/>
- <menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
- <menu_item_call label="Nowa podkoszulka" name="New Undershirt"/>
- <menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha"/>
- <menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
- </menu>
- <menu label="Nowe części ciała" name="New Body Parts">
- <menu_item_call label="Nowy kształt" name="New Shape"/>
- <menu_item_call label="Nowa skórka" name="New Skin"/>
- <menu_item_call label="Nowe włosy" name="New Hair"/>
- <menu_item_call label="Nowe oczy" name="New Eyes"/>
- </menu>
- <menu_item_call label="Zmień nazwę stroju" name="rename"/>
- <menu_item_call label="Usuń strój" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
deleted file mode 100644
index 998e25f38e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Załóż - Zastąp obecny strój" name="wear_replace"/>
- <menu_item_call label="Załóż - Dodaj do obecnego stroju" name="wear_add"/>
- <menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
- <menu_item_call label="Edytuj strój" name="edit"/>
- <menu_item_call label="Zmień nazwę stroju" name="rename"/>
- <menu_item_call label="Usuń strój" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
deleted file mode 100644
index 9e59102788..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Sortuj według imienia" name="SortByName"/>
- <menu_item_check label="Sortuj według ostatniego mówcy" name="SortByRecentSpeakers"/>
- <menu_item_call label="Zobacz profil" name="View Profile"/>
- <menu_item_call label="Dodaj znajomość" name="Add Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Zapłać" name="Pay"/>
- <menu_item_check label="Przeglądaj ikonki" name="View Icons"/>
- <menu_item_check label="Zablokuj głos" name="Block/Unblock"/>
- <menu_item_check label="Zablokuj tekst" name="MuteText"/>
- <context_menu label="Opcje Moderatora" name="Moderator Options">
- <menu_item_check label="Czat/IM dozwolony" name="AllowTextChat"/>
- <menu_item_call label="Wycisz tego uczestnika" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Odblokuj wyciszenie tego uczestnika" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Wycisz wszystkich" name="ModerateVoiceMute"/>
- <menu_item_call label="Cofnij wyciszenie wszystkim" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
deleted file mode 100644
index b62b85d30a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
- <menu_item_check label="Porządkuj według statusu" name="sort_status"/>
- <menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
- <menu_item_check label="Zobacz udzielone prawa" name="view_permissions"/>
- <menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
deleted file mode 100644
index ace5ebf888..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Zobacz info" name="View Info"/>
- <menu_item_call label="Czat" name="Chat"/>
- <menu_item_call label="Rozmowa" name="Call"/>
- <menu_item_call label="Aktywuj" name="Activate"/>
- <menu_item_call label="Opuść" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
deleted file mode 100644
index c70ea2315f..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Wyświetlaj ikonki grupy" name="Display Group Icons"/>
- <menu_item_call label="Opuść zaznaczone grupy" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
deleted file mode 100644
index 0111e0fd51..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Zobacz profil" name="View Profile"/>
- <menu_item_call label="Dodaj do znajomych" name="Add Friend"/>
- <menu_item_call label="Usuń z listy znajomych" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Mapa" name="Map"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Zapłać" name="Pay"/>
- <menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/>
- <menu_item_call label="Teleportuj" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
deleted file mode 100644
index dcfc48fb60..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Dodaj znajomych" name="Add Friends"/>
- <menu_item_call label="Usuń znajomych" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Zadzwoń" name="Call"/>
- <menu_item_call label="Udostępnij" name="Share"/>
- <menu_item_call label="Zapłać" name="Pay"/>
- <menu_item_call label="Teleportuj" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 8ec3820f84..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Porządkuj według ostatnich rozmówców" name="sort_by_recent_speakers"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
- <menu_item_check label="Porządkuj według odległości" name="sort_distance"/>
- <menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
- <menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
deleted file mode 100644
index b474a556bd..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Porządkuj według daty" name="sort_most"/>
- <menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
- <menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
- <menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks.xml b/indra/newview/skins/minimal/xui/pl/menu_picks.xml
deleted file mode 100644
index 6f6e4b7fa8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Edytuj" name="pick_edit"/>
- <menu_item_call label="Teleportuj" name="pick_teleport"/>
- <menu_item_call label="Mapa" name="pick_map"/>
- <menu_item_call label="Usuń" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
deleted file mode 100644
index e9c00f51a9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Stwórz" name="create_pick"/>
- <menu_item_call label="Nowa reklama" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place.xml b/indra/newview/skins/minimal/xui/pl/menu_place.xml
deleted file mode 100644
index c3b72d6abb..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Zapisz landmark" name="landmark"/>
- <menu_item_call label="Utwórz" name="pick"/>
- <menu_item_call label="Kup przepustkę" name="pass"/>
- <menu_item_call label="Edytuj" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
deleted file mode 100644
index 3d0c1c87fb..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
deleted file mode 100644
index d1f283b7aa..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
- <menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
- <menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Przywróć obiekt" name="restore_item"/>
- <menu_item_call label="Wytnij" name="cut"/>
- <menu_item_call label="Kopiuj" name="copy_folder"/>
- <menu_item_call label="Wklej" name="paste"/>
- <menu_item_call label="Zmień nazwę" name="rename"/>
- <menu_item_call label="Usuń" name="delete"/>
- <menu_item_call label="Rozwiń" name="expand"/>
- <menu_item_call label="Schowaj" name="collapse"/>
- <menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
- <menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
- <menu_item_check label="Sortuj według daty" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
deleted file mode 100644
index 0139d3a987..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportuj" name="teleport"/>
- <menu_item_call label="Więcej informacji" name="more_info"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
- <menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Przywróć obiekt" name="restore_item"/>
- <menu_item_call label="Wytnij" name="cut"/>
- <menu_item_call label="Kopiuj landmark" name="copy_landmark"/>
- <menu_item_call label="Kopiuj SLurl" name="copy_slurl"/>
- <menu_item_call label="Wklej" name="paste"/>
- <menu_item_call label="Zmień nazwę" name="rename"/>
- <menu_item_call label="Usuń" name="delete"/>
- <menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
- <menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
- <menu_item_check label="Sortuj według daty" name="sort_by_date"/>
- <menu_item_call label="Stwórz Ulubione" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
deleted file mode 100644
index ef836c8ecf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mapa" name="show_on_map"/>
- <menu_item_call label="Zapłać" name="pay"/>
- <menu_item_call label="Udostępnij" name="share"/>
- <menu_item_call label="Zablokuj" name="block"/>
- <menu_item_call label="Odblokuj" name="unblock"/>
- <menu_item_call label="Wyrzuć" name="kick"/>
- <menu_item_call label="Unieruchom" name="freeze"/>
- <menu_item_call label="Uruchom" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
deleted file mode 100644
index 4bc65eca38..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Zapisz" name="save_outfit"/>
- <menu_item_call label="Zapisz jako" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
deleted file mode 100644
index 256500a402..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Zamknij" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
deleted file mode 100644
index 862f538aa7..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="O miejscu" name="about_url"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_url"/>
- <menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
deleted file mode 100644
index 0e58592d46..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Rozwiń wszystkie foldery" name="Expand all folders"/>
- <menu_item_call label="Schowaj wszystkie foldery" name="Collapse all folders"/>
- <menu_item_call label="Wyczyść historię teleportacji" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
deleted file mode 100644
index cd36c116b0..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teleportuj" name="Teleport"/>
- <menu_item_call label="Więcej szczegółów" name="More Information"/>
- <menu_item_call label="Kopiuj do schowka" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
deleted file mode 100644
index b12df08d6a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Otwórz" name="TabOpen"/>
- <menu_item_call label="Zamknij" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
deleted file mode 100644
index 812f87bc1a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Wytnij" name="Cut"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
- <menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Usuń" name="Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
deleted file mode 100644
index 53536c8f1c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Pokaż współprzędne" name="Show Coordinates"/>
- <menu_item_check label="Pokaż O Posiadłości" name="Show Parcel Properties"/>
- <menu_item_call label="Landmark" name="Landmark"/>
- <menu_item_call label="Kopiuj" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
deleted file mode 100644
index db729be725..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż profil Rezydenta" name="show_agent"/>
- <menu_item_call label="Kopiuj nazwę do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml b/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
deleted file mode 100644
index f340b3296a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o grupie" name="show_group"/>
- <menu_item_call label="Kopiuj grupę do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml b/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
deleted file mode 100644
index e73f7b6745..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Otwórz przeglądarkę internetową" name="url_open"/>
- <menu_item_call label="Otwórz w wewnętrzenej przeglądarce" name="url_open_internal"/>
- <menu_item_call label="Otwórz w zewnętrznej przeglądarce" name="url_open_external"/>
- <menu_item_call label="Kopiuj URL do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
deleted file mode 100644
index e36fa0dd2b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż obiekt w szafie" name="show_item"/>
- <menu_item_call label="Kopiuj nazwę do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml b/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
deleted file mode 100644
index 179ab1f676..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
deleted file mode 100644
index 7576208a9e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o obiekcie" name="show_object"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Teleportuj to miejsca obiektu" name="teleport_to_object"/>
- <menu_item_call label="Kopiuj nazwę obiektu do schowka" name="url_copy_label"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
deleted file mode 100644
index 1b8dd62137..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o miejscu" name="show_parcel"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
deleted file mode 100644
index eb83245c48..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Uruchom tę komendę" name="run_slapp"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
deleted file mode 100644
index 4d4a5b4c4d..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Pokaż szczegóły o miejscu" name="show_place"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
deleted file mode 100644
index e225546930..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teleportuj do tego miejsca" name="teleport"/>
- <menu_item_call label="Pokaż na mapie" name="show_on_map"/>
- <menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml b/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
deleted file mode 100644
index 0196dc8613..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Pomoc" name="Help">
- <menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/>
- </menu>
- <menu label="Zaawansowane" name="Advanced">
- <menu label="Skróty" name="Shortcuts">
- <menu_item_check label="Zacznij latać" name="Fly"/>
- <menu_item_call label="Zamknij okno" name="Close Window"/>
- <menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/>
- <menu_item_call label="Reset widoku" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
deleted file mode 100644
index bf85246be8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Zastąp" name="wear_replace"/>
- <menu_item_call label="Załóż" name="wear_wear"/>
- <menu_item_call label="Dodaj" name="wear_add"/>
- <menu_item_call label="Zdejmij/Odłącz" name="take_off_or_detach"/>
- <menu_item_call label="Odłącz" name="detach"/>
- <context_menu label="Dołącz do" name="wearable_attach_to"/>
- <context_menu label="Dołącz do załączników HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Zdejmij" name="take_off"/>
- <menu_item_call label="Edytuj" name="edit"/>
- <menu_item_call label="Profil obiektu" name="object_profile"/>
- <menu_item_call label="Pokaż oryginalny" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
deleted file mode 100644
index 47cafdbd99..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Edytuj strój" name="edit"/>
- <menu_item_call label="Zdejmij" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
deleted file mode 100644
index 7531437043..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Zdejmij" name="take_off"/>
- <menu_item_call label="Odłącz" name="detach"/>
- <menu_item_call label="Edytuj strój" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/notifications.xml b/indra/newview/skins/minimal/xui/pl/notifications.xml
deleted file mode 100644
index 6475a37465..0000000000
--- a/indra/newview/skins/minimal/xui/pl/notifications.xml
+++ /dev/null
@@ -1,2907 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Nie pokazuj tej opcji następnym razem
- </global>
- <global name="alwayschoose">
- Pozwalaj na wybór tej opcji
- </global>
- <global name="implicitclosebutton">
- Zamknij
- </global>
- <template name="okbutton">
- <form>
- <button name="OK_okbutton" text="$yestext"/>
- </form>
- </template>
- <template name="okignore">
- <form>
- <button name="OK_okignore" text="$yestext"/>
- </form>
- </template>
- <template name="okcancelbuttons">
- <form>
- <button name="OK_okcancelbuttons" text="$yestext"/>
- <button name="Cancel_okcancelbuttons" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore">
- <form>
- <button name="OK_okcancelignore" text="$yestext"/>
- <button name="Cancel_okcancelignore" text="$canceltext"/>
- </form>
- </template>
- <template name="okhelpbuttons">
- <form>
- <button name="OK_okhelpbuttons" text="$yestext"/>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- <button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Nieznany rodzaj komunikatu" name="MissingAlert">
- Twoja wersja klienta [APP_NAME] nie może wyświetlić odebranej wiadomości. Upewnij się, że posiadasz najnowszą wersję klienta.
-
-Szczegóły błędu: Błąd o nazwie &apos;[_NAME]&apos; nie został odnaleziony w pliku notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Błąd: nie można znaleźć następujących elementów:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Brak samouczka na ten temat
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
- </notification>
- <notification name="BadInstallation">
- Podczas aktualizacji [APP_NAME] wystąpił błąd. Proszę odwiedzić stronę [http://get.secondlife.com pobierz najnowsza wersję] aby ściągnąć ostatnią wersję klienta.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Nie można połączyć z [SECOND_LIFE_GRID].
- &apos;[DIAGNOSTIC]&apos;
-Upewnij się, że Twoje połączenie z internetem działa.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Wzór komunikatu dla [PATH] nie został odnaleziony.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Zapisać zmiany dotyczące ubrania/części ciała?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="CompileQueueSaveText">
- W trakcie ładwania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- W trakcie ładowania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="WriteAnimationFail">
- Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- W trakcie ładwania obrazu aukcji pojawił się problem z następującego powodu: [REASON].
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Nie można przeglądać zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Zapisać wszystkie zmiany dotyczące ubrania/cześci ciała?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="FriendsAndGroupsOnly">
- Osoby spoza listy znajomych, których rozmowy głosowe i IM są ignorowane, nie wiedzą o tym.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FavoritesOnLogin">
- Pamiętaj: kiedy wyłączysz tą opcję, każdy kto używa tego komputera, może zobaczyć Twoją listę ulubionych miejsc.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GrantModifyRights">
- Udzielenie praw modyfikacji innemu Rezydentowi umożliwia modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz udzielić prawa do modyfikacji [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Udzielenie praw modyfikacji innym Rezydentom umożliwia im modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz dać prawa modyfikacji wybranym osobom?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="RevokeModifyRights">
- Czy chcesz odebrać prawa do modyfikacji [NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Czy chcesz odebrać prawa modyfikacji wybranym Rezydentom?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Założenie grupy nie jest możliwe.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Ignoruj zmiany" yestext="Zastosuj zmiany"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Aby wysłać ogłoszenie do grupy musisz nadać mu tytuł.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Dodajesz członków do funkcji [ROLE_NAME].
-Ta funkcja nie może być odebrana.
-Członkowie muszą sami zrezygnować z pełnienia tej funkcji.
-Chcesz kontynuować?
- <usetemplate ignoretext="Przed dodaniem nowego właściciela do grupy, proszę potwierdzić swoją decyzję." name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME].
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać siebie i innych członków nie będących właścicielami do funkcji dających więcej przywilejów niż posiadane obecnie potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagą.&quot;
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME]
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać sobie i innychm członkom nie będącym właścicielami wszystkie przywileje potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagą.
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="AttachmentDrop">
- Wybrałeś opcję opuszczenia swojego załącznika.
- Czy chcesz kontynuować?
- <usetemplate ignoretext="Potwierdź przed zdjęciem załącznika." name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- Dołączenie do tej grupy kosztuje [COST]L$.
-Chcesz kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Dołącz"/>
- </notification>
- <notification name="JoinGroupNoCost">
- Dołączasz do grupy [NAME].
-Czy chcesz kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Akceptuj"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Członkostwo w tej grupie kosztuje [COST]L$
-Masz za mało L$ żeby zostać członkiem.
- </notification>
- <notification name="CreateGroupCost">
- Stworzenie tej grupy kosztuje 100L$.
-W grupie powinien być więcej niż jeden członek, albo zostanie na zawsze skasowana.
-Zaproś proszę członków w ciągu 48 godzin.
- <usetemplate canceltext="Anuluj" name="okcancelbuttons" notext="Anuluj" yestext="Stwórz grupę za 100L$"/>
- </notification>
- <notification name="LandBuyPass">
- Za [COST]L$ możesz odwiedzić tą posiadłość (&apos;[PARCEL_NAME]&apos;) na [TIME] godzin. Chcesz kupić przepustkę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- Cena sprzedaży musi być wyższa niż 0L$ jeżeli sprzedajesz komukolwiek.
-Musisz wybrać kupca jeżeli chcesz sprzedać za 0L$.
- </notification>
- <notification name="ConfirmLandSaleChange">
- Posiadłość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- UWAGA: Wybierając opcję &quot;Sprzedaj Każdemu&quot; udostępniasz swoją posiadłość do sprzedaży dla jakiegokolwiek Rezydenta [SECOND_LIFE] , nawet osób nieobecnych w tym regionie.
-
-Posiadłość o powierzchni [LAND_SIZE] m² zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Czy na pewno chcesz zwrócić wszystkie obiekty udostępnione grupie [NAME] na tej posiadłości do szafy ich poprzednich właścicieli?
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów
-udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Czy na pewno chcesz zwrócić wszystkie obiekty należące do Rezydenta [NAME] znajdujące się na tej posiadłości do szafy właściciela?
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Czy na pewno chcesz zwrócić wszystkie Twoje obiekty znajdujące się na tej posiadłości do swojej szafy?
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Czy na pewno chcesz zwrócić wszystkie obiekty, których nie jesteś właścicielem znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Czy na pewno chcesz zwrócić wszystkie obiekty, które nie należą do [NAME] znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Czy na pewno chcesz zwrócić wszystkie wymienione obiekty znajdujące się na tej posiadłości do szaf ich właścicieli?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Czy na pewno chcesz deaktywować wszystkie obiekty w tym Regionie?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Zwrócić obiekty z tej posiadłości, które nie są udosępnione grupie [NAME] do ich właścicieli?
-
-Obiekty: [N]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Nie można deaktywować skryptów.
-Ten region pozwala na uszkodzenia.
-Skrypty muszą pozostać aktywne dla prawidłowego działania broni.
- </notification>
- <notification name="MultipleFacesSelected">
- Obecnie zaznaczono wiele powierzchni.
-Jeśli działanie będzie kontynuowane, oddzielne media będą ustawione na wielu powierzchniach obiektu.
-W celu umieszczenia mediów tylko na jednej powierzchni skorzystaj z Wybierz powierzchnię i kliknij na wybranej powierzchni obiektu oraz kliknij Dodaj.
- <usetemplate ignoretext="Media zostaną ustawione na wielu zaznaczonych powierzchniach" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="MustBeInParcel">
- Musisz znajdować się wewnątrz posiadłości żeby wybrać punkt lądowania.
- </notification>
- <notification name="PromptRecipientEmail">
- Proszę wpisać adres emailowy odbiorcy.
- </notification>
- <notification name="PromptSelfEmail">
- Proszę wpisać swój adres emailowy.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Wysłać widokówkę z domyślnym tematem i wiadomością?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Błąd w trakcie przetwarzania danych zdjęcia.
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Błąd w kodowaniu zdjęcia.
- </notification>
- <notification name="ErrorUploadingPostcard">
- W trakcie ładowania zdjęcia pojawił się problem z następującego powodu: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- W trakcie ładowania zdjęcia ekranu do raportu pojawił się problem z następującego powodu: [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- Musisz zaakceptować Warunki Umowy (Terms of Service) by kontynuować logowanie się do [SECOND_LIFE].
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Założenie stroju nie powiodło się.
-Folder stroju nie zawiera żadnego ubrania, części ciała ani załączników.
- </notification>
- <notification name="CannotWearTrash">
- Nie możesz założyć ubrania, które znajduje się w koszu.
- </notification>
- <notification name="MaxAttachmentsOnOutfit">
- Nie można dołączyć obiektu.
-Limit [MAX_ATTACHMENTS] załączników został przekroczony. Proszę najpierw odłączyć inny obiekt.
- </notification>
- <notification name="CannotWearInfoNotComplete">
- Nie możesz założyć tego artkułu ponieważ nie załadował się poprawnie. Spróbuj ponownie za kilka minut.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Oops! Brakuje czegoś.
-Należy wprowadzić nazwę użytkownika.
-
-Potrzebujesz konta aby się zalogować do [SECOND_LIFE]. Czy chcesz utworzyć je teraz?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="InvalidCredentialFormat">
- Należy wprowadzić nazwę użytkownika lub imię oraz nazwisko Twojego awatara w pole nazwy użytkownika a następnie ponownie się zalogować.
- </notification>
- <notification name="DeleteClassified">
- Usunąć reklamę &apos;[NAME]&apos;?
-Pamiętaj! Nie ma rekompensaty za poniesione koszta.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DeleteMedia">
- Wybrano usunięcie mediów związanych z tą powierzchnią.
-Czy na pewno chcesz kontynuować?
- <usetemplate ignoretext="Potwierdź przed usunięciem mediów z obiektu" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="ClassifiedSave">
- Zapisać zmiany w reklamie [NAME]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="ClassifiedInsufficientFunds">
- Nie posiadasz wystarczających środków aby dodać reklamę.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Usuń zdjęcie &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DeleteOutfits">
- Skasować wybrane stroje?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Odwiedzić internetową stronę Imprez [SECOND_LIFE]?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Wybierz propozycję, którą chcesz zobaczyć.
- </notification>
- <notification name="SelectHistoryItemToView">
- Wybierz obiekt z historii, który chcesz zobaczyć.
- </notification>
- <notification name="CacheWillClear">
- Bufor danych zostanie wyczyszczony po restarcie aplikacji [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- Bufor danych zostanie przeniesiony po restarcie aplikacji [APP_NAME].
-Pamiętaj: Opcja ta wyczyszcza bufor danych.
- </notification>
- <notification name="ChangeConnectionPort">
- Ustawienia portu zostają zaktualizowane po restarcie aplikacji [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- Nowa skórka zostanie wczytana po restarcie aplikacji [APP_NAME].
- </notification>
- <notification name="ChangeLanguage">
- Zmiana języka zadziała po restarcie [APP_NAME].
- </notification>
- <notification name="GoToAuctionPage">
- Odwiedzić stronę internetową [SECOND_LIFE] żeby zobaczyć szczgóły aukcji lub zrobić ofertę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Zapisać zmiany?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- Nie można zapisać gesturki.
-Ta gesturka ma zbyt wiele etapów.
-Usuń kilka etapów i zapisz jeszcze raz.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- Zapis gesturki nie powiódł się. Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Nie można zapisać gesturki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="GestureSaveFailedReason">
- Nie można zapisać gesturki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- Nie można zapisać notki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="SaveNotecardFailReason">
- Nie można zapisać notki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
- </notification>
- <notification name="ScriptCannotUndo">
- Nie można cofnąć wszystkich zmian w Twojej wersji skryptu.
-Czy chcesz załadować ostatnią wersję zapisaną na serwerze?
-(*UWAGA* Ta operacja jest nieodwracalna.)
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Nie można zapisać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="SaveBytecodeFailReason">
- Nie można zapisać skompilowanego skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
- </notification>
- <notification name="StartRegionEmpty">
- Oops, Twoje miejsce startu nie zostało określone.
-Wpisz proszę nazwę regionu w lokalizację startu w polu Lokalizacja Startu lub wybierz Moja ostatnia lokalizacja albo Miejsce Startu.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- Nie można uruchomić lub zatrzymać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
- </notification>
- <notification name="CannotDownloadFile">
- Nie można załadować pliku
- </notification>
- <notification name="CannotWriteFile">
- Nie można zapisać pliku [[FILE]]
- </notification>
- <notification name="UnsupportedHardware">
- Niestety Twój komputer nie spełnia minimalnych wymogów sprzętowych dla poprawnego działania [APP_NAME]. Możesz odczuwać bardzo niską wydajność operacyjną. Niestety portal pomocy, [SUPPORT_SITE] nie posiada informacji na temat poprawnej konfiguracji technicznej Twojego systemu.
-
-Po więcej info, odwiedź stronę [_URL] .
- <url name="url" option="0">
- http://www.secondlife.com/corporate/sysreqs.php
- </url>
- <usetemplate ignoretext="Dysk twardy mojego komputera nie jest wspomagany" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="UnknownGPU">
- Twój system jest wyposażony w kartę graficzną, która nie jest rozpoznana przez [APP_NAME].
-Zdarza się to często w przypadku nowego sprzętu, który nie był testowany z [APP_NAME]. Prawdopodobnie wystarczy dostosowanie ustawień grafiki aby działanie było poprawne.
-(Ja &gt; Właściwości &gt; Grafika).
- <form name="form">
- <ignore name="ignore" text="Karta graficzna nie została zidentyfikowana."/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] zawiesił się podczas inicjalizacji sterowników graficznych.
-Jakość grafiki została zmniejszona - może to pomóc.
-Pewne funkcje graficzne zostały wyłączone. Zalecamy aktualizcje sterowników graficznych.
-Możesz podnieść jakość grafiki pod Ustawienia &gt; Grafika.
- </notification>
- <notification name="RegionNoTerraforming">
- Region [REGION] nie pozwala na formowanie powierzchni ziemi.
- </notification>
- <notification name="CannotCopyWarning">
- Nie masz pozwolenia na kopiowanie następujących obiektów:
-[ITEMS]
-i stracisz je w momencie przekazania. Czy na pewno chcesz oddać te obiekty?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="CannotGiveItem">
- Podarowanie obiektu nie powiodło się.
- </notification>
- <notification name="TransactionCancelled">
- Transakcja anulowana
- </notification>
- <notification name="TooManyItems">
- Jednorazowo możesz podarować maksymalnie 42 obiekty z szafy.
- </notification>
- <notification name="NoItems">
- Nie masz praw do transferu wybranych obiektów.
- </notification>
- <notification name="CannotCopyCountItems">
- Nie masz praw do skopiowania [COUNT] wybranych obiektów. Obiekty znikną z Twojej szafy.
-Na pewno chcesz oddać te obiekty?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="CannotGiveCategory">
- Nie masz praw do transferu wybranego foldera.
- </notification>
- <notification name="FreezeAvatar">
- Unieruchomić tego awatara?
-Awatar tymczasowo nie będzie mógł się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- Unieruchowmić [AVATAR_NAME]?
-Ta osoba tymczasowo nie będzie mógła się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/>
- </notification>
- <notification name="EjectAvatarFullname">
- Wyrzucić [AVATAR_NAME] z Twojej posiadłości?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wyrzuć i zabroń wstępu (ban)" yestext="Wyrzuć"/>
- </notification>
- <notification name="EjectAvatarFromGroup">
- Wyrzuć [AVATAR_NAME] z grupy [GROUP_NAME]
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- BŁĄD OTRZYMYWANIA: Zbyt wiele wybranych obiektów.
- </notification>
- <notification name="AcquireErrorObjectSpan">
- BŁĄD OTRZYMYWANIA: Obiekty przekraczają granicę regionów. Przemieść wszystkie otrzymywane obiekty do jednego regionu.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Odwiedź stronę [_URL] po więcej informacji na temat zakupu L$?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Nie można połączyć [COUNT] obiektów.
-Maksymalnie można połączyć [MAX] obiektów.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać więcej niż jeden obiekt.
- </notification>
- <notification name="CannotLinkModify">
- Nie możesz połączyć obiektów ponieważ nie masz praw modyfikacji dla wszystkich obiektów.
-
-Upewnij się, że żaden z obiktów nie jest zablokowany i że wszystkie obiekty należą do Ciebie.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Nie możesz połączyć obiektów ponieważ należą one do różnych osób.
-
-Upewnij sie, że wszystkie wybrane obiekty należą do Ciebie.
- </notification>
- <notification name="NoFileExtension">
- Niepoprawna końcówka nazwy pliku: &apos;[FILE]&apos;
-
-Upewnij się, że nazwa pliku ma poprawaną końcówkę.
- </notification>
- <notification name="InvalidFileExtension">
- Niepoprawna końcówka nazwy pliku - [EXTENSION]
-Oczekiwana - [VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Nie można otworzyć załadowanego pliku dźwiękowego:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Plik nie jest w formacie RIFF WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Plik nie jest w formacie PCM WAVE:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Plik zawiera niewłaściwą liczbę kanałów (musi być mono albo stereo):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Plik zawiera niewłaścią częstotliwość (musi być 44.1k):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Plik zawiera niewłaściwą szerokość danych (musi być 8 albo 16 bitów):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- Brak bloku &apos;data&apos; w nagłówku pliku WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChunkSize">
- Niewłaściwy rozmiar &quot;chunk&quot; w pliku WAV:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Plik audio jest zbyt długi (10 sekund maksimum):
-[FILE]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Nie można otworzyć tymczasowego skompresowango pliku dźwiękowego w celu zapisu: [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Nieznany błąd kodowania Vorbis w: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Kodowanie pliku: [FILE] nie powidło się.
- </notification>
- <notification name="CorruptedProtectedDataStore">
- Nie można wpisać Twojego imienia użytkownika ani hasła. To może się zdarzyć kiedy zmieniasz ustawienia sieci.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CorruptResourceFile">
- Skorumpowany plik zasobów: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Nieznana wersja pliku zasobów Linden w pliku: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Nie można utworzyć pliku wyjściowego: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- [APP_NAME] obecnie nie wspomaga ładowania grupowego plików animacji.
- </notification>
- <notification name="CannotUploadReason">
- Ładowanie pliku [FILE] nie powiodło się z powodu: [REASON]
-Spróbuj jeszcze raz póżniej.
- </notification>
- <notification name="LandmarkCreated">
- Dodano &quot;[LANDMARK_NAME]&quot; do folderu [FOLDER_NAME].
- </notification>
- <notification name="LandmarkAlreadyExists">
- Posiadasz już landmark dla tej lokalizacji.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- Nie możesz zapamiętać tego miejsca (LM) ponieważ właściciel posiadłości nie pozwala na to.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- &apos;Rekompilacja&apos; nie powiodła się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- &apos;Rekompilacja&apos; nie powiodła się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- &apos;Resetowanie&apos; nie powiodło się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- &apos;Resetowanie&apos; nie powiodło się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
- </notification>
- <notification name="CannotOpenScriptObjectNoMod">
- Nie można otworzyć skryptu bez prawa do modyfikacji obiektu.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- &apos;Uruchomienie&apos; skryptów nie powiodło się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- &apos;Zatrzymanie&apos; skryptów nie powiodło się.
-
-Wybierz obiekty zawierające skrypty.
- </notification>
- <notification name="NoFrontmostFloater">
- Brak górnego okna do zapisu.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- Twoje zapytanie wyszukiwania zostło zmienione - zbyt krótkie słowa zostały usunięte.
-
-Nowe zapytanie: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Użyte terminy wyszukiwania były zbyt krótkie - wyszukiwanie zostało anulowane.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleportacja nie powiodła się.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- Niestety, pojawił się błąd podczas próby teleportacji. Proponujemy wylogowanie się i spróbowanie teleportacji ponownie.
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Niestety, pojawił się błąd podczas próby przedostania się na drugi region. Proponujemy wylogowanie się i spróbowanie przedostania się na drugi region ponownie.
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Przepraszamy, teleportacja jest chwilowo niedostępna. Spróbuj jeszcze raz.
-Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
- </notification>
- <notification name="nolandmark_tport">
- Przepraszamy, ale nie możemy znaleźć miejsca docelowego.
- </notification>
- <notification name="timeout_tport">
- Przepraszamy, ale nie udało się przeprowadzić teleportacji. Spróbuj jeszcze raz.
- </notification>
- <notification name="noaccess_tport">
- Przepraszamy, ale nie masz dostępu do miejsca docelowego.
- </notification>
- <notification name="missing_attach_tport">
- Czekamy na Twoje akcesoria. Możesz poczekać kilka minut lub zrobić relog przed następną próbą teleportacji.
- </notification>
- <notification name="too_many_uploads_tport">
- Obecnie ten region ma problemy z ładowaniem obiektów w związku z czym teleportacja bardzo sie opóźnia.
-Spróbuj jeszcze raz za kilka minut albo teleportuj się do mniej zatłoczonego miejsca.
- </notification>
- <notification name="expired_tport">
- Przepraszamy, ale nie udało się przeprowadzić teleportacji wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="expired_region_handoff">
- Przepraszamy, ale nie udało się przeprowadzić zmiany regionu wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="no_host">
- Nie możemy znaleść miejsca docelowego. To miejsce może być chwilowo nieosiągalne albo przestało istnieć.
-Spróbuj jeszcze raz za kilka minut.
- </notification>
- <notification name="no_inventory_host">
- Szafa chwilowo nie działa.
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- Nie można wybrać właściciela posiadłości.
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Nie można wybrać właściciela posiadłości ponieważ wybrany obszar przekracza granicę regionów. Wybierz mniejszy obszar i spróbuj jeszcze raz.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Ta posiadłość jest wystawiona na aukcję. Wymuszenie własności anuluje aukcję i potencjalnie może zdenerwować zainteresowanych Rezydentów, jeżeli licytacja już się rozpoczęła.
-Wymusić własność?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Nie można sfinalizować:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Nie można sfinalizować:
-Region nie znaleziony.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Nie można porzucić posiadłości:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Nie można porzucić posiadłości:
-Region nie znaleziony.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Nie można kupić posiadłości:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Nie można kupić posiadłości:
-Region nie znaleziony.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Okno zakupu landu nie może zostać zamknięte dopóki aplikacja [APP_NAME] nie określi ceny dla tej transkacji.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Nie można przekazać posiadłości:
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Nie można przekazać posiadłości:
-Grupa nie została wybrana.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Brak możliwości przepisania posiadłości grupie:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Nie można przekazać posiadłości:
-Wiele posiadłości jest wybranych.
-
-Spróbuj wybrać pojedynczą posiadłość.
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Nie można przekazać posiadłości:
-Serwer aktualizuje dane własności.
-
-Spróbuj jeszcze raz póżniej.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Nie możesz przekazać posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Nie można porzucić posiadłości:
-Serwer aktualizuje dane posiadłości.
-
-Spróbuj jeszcze raz póżniej.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Nie możesz porzucić posiadłości:
-Nie jesteś właścicielem wszystkich wybranych posiadłości.
-
-Wybierz pojedynczą posiadłość.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Nie możesz porzucić posiadłości:
-Nie masz praw do porzucenia tej posiadłości.
-
-Twoje posiadłości są podkreślone na zielono.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Brak możliwości porzucenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Nie możesz porzucić posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Nie można porzucić posiadłości:
-Musisz wybrać całą posiadłość by ją porzucić.
-Wybierz całą posiadłość albo najpierw ją podziel.
- </notification>
- <notification name="ReleaseLandWarning">
- Porzucasz posiadłość o powierzchni [AREA] m².
-Porzucenie tej posiadłości usunie ją z Twoich własności.
-Nie otrzymasz za to żadnej opłaty.
-
-Porzucić posiadłość?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Nie można podzielić posiadłości:
-
-Posiadłość nie została wybrana.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Nie można podzielić posiadłości:
-
-Posiadłość została wybrana w całości.
-Spróbuj wybrać część posiadłości.
- </notification>
- <notification name="LandDivideWarning">
- Podział tej posiadłości stworzy dwie posiadłości z których każda będzie mogła mieć indywidualne ustawienia.
-Niektóre ustawienia zostaną zmienione na domyślne po tej operacji.
-
-Podzielić posiadłość?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Brak możliwości podziału posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Brak możliwości złączenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Nie można połączyć posiadłości:
-Posiadłości nie zostały wybrane.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Nie można połączyć posiadłości:
-Tylko jedna posiadłość została wybrana.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
- </notification>
- <notification name="CannotJoinLandSelection">
- Nie można połączyć posiadłości:
-Musisz wybrać więcej niż jedną posiadłość.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
- </notification>
- <notification name="JoinLandWarning">
- Połączenie tego obszaru utworzy jedną większą posiadłość ze wszystkich posiadłości przecinających wybrany prostokąt. Nazwa i opcje posiadłości bedą musiały zostać skonfigurowane.
-
-Połączyć posiadłości?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- Ta notka musi być zapisana żeby mogła być skopiowana lub zobaczona. Zapisać notkę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Skopiować ten obiekt do Twojej szafy?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Skopiuj"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Zmiana rozdzielczości do [RESX] x [RESY] nie powidła się
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Błąd: niezdefiniowane trawy: [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Bład: niezdefiniowane drzewa: [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- Nie można zapisać &apos;[NAME]&apos; do pliku stroju. Musisz zwolnić trochę miejsca na Twoim komputerze i zapisać strój jeszcze raz.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Nie można zapisać [NAME] w centralnym zbiorze danych.
-Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisać strój ponownie za kilka minut.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Nastąpiło wylogowanie z [SECOND_LIFE]
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Wyłącz" yestext="Kontynuuj"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Nie możesz kupić posiadłości dla grupy.
-Nie masz praw kupowania posiadłości dla Twojej aktywnej grupy.
- </notification>
- <notification label="Add Friend" name="AddFriendWithMessage">
- Znajomi mogą pozwalać na odnajdywanie się wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE].
-
-Zaproponować znajomość [NAME]?
- <form name="form">
- <input name="message">
- Chcesz zawrzeć znajomość?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zapisz strój" name="SaveOutfitAs">
- Zapisz to co noszę jako nowy strój:
- <form name="form">
- <input name="message">
- [DESC] (nowe)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zapisz część stroju" name="SaveWearableAs">
- Zapisz obiekt w mojej Szafie jako:
- <form name="form">
- <input name="message">
- [DESC] (nowy)
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zmień nazwę stroju" name="RenameOutfit">
- Nowa nazwa stroju:
- <form name="form">
- <input name="new_name">
- [NAME]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Czy chcesz usunąć [NAME] z listy znajomych?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Chcesz usunąć grupę osób z listy Twoich znajomych?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-z posiadłości innych w tym symulatorze?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Na pewno chcesz usunąć wszystkie obiekty (skryptowane i nie) należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- Musisz nadać tytuł Twojej reklamie.
- </notification>
- <notification name="MinClassifiedPrice">
- Minimalna cena za publikację wynosi [MIN_PRICE]L$.
-
-Wybierz wyższą cenę.
- </notification>
- <notification name="ConfirmItemDeleteHasLinks">
- Co najmiej jeden z elementów, które masz posiada połączone z nim obiekty. Jeśli go usuniesz połączenia zostaną usunięte na stałe. Zaleca się usunięcie połączeń w pierwszej kolejności.
-
-Jesteś pewnien/pewna, że chcesz usunąć te elementy?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Przynajmnie jeden obiekt jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Przynajmnie jeden obiekt jest zablokowany.
-Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Nie możesz kupić posiadłości ponieważ wybrany obszar przekracza granicę regionów.
-
-Wybierz mniejszy obszar i spróbuj jeszcze raz.
- </notification>
- <notification name="DeedLandToGroup">
- Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości. Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości.
-Przekazanie będzie zawierać równoczesne przypisanie posiadłości do grupy od &apos;[NAME]&apos;.
-Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie &apos;[GROUP_NAME]&apos;?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Ustawienia grafiki zostały zmienione do bezpiecznego poziomu ponieważ opcja -safe została wybrana.
- </notification>
- <notification name="DisplaySetToRecommended">
- Ustawienia grafiki zostały zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarMovedDesired">
- Miejsce, do którego chcesz się teleportować jest chwilowo nieobecne.
-Zostałeś przeniesiony do regionu sąsiedniego.
- </notification>
- <notification name="AvatarMovedLast">
- Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do sąsiedniego regionu.
- </notification>
- <notification name="AvatarMovedHome">
- Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do pobliskiego regionu.
-Możesz ustawić nowe miejsce startu.
- </notification>
- <notification name="ClothingLoading">
- Twoje ubranie wciąż się ładuje.
-Możesz normalnie używać [SECOND_LIFE], inni użytkownicy będą Cię widzieli poprawnie.
- <form name="form">
- <ignore name="ignore" text="Ładowanie ubrań nadal trwa"/>
- </form>
- </notification>
- <notification name="FirstRun">
- Instalacja [APP_NAME] zakończona.
-
-Jeżeli używasz [SECOND_LIFE] po raz pierwszy to musisz stworzyć konto żeby móc się zalogować.
-Czy chcesz przejść na stronę [http://join.secondlife.com secondlife.com] żeby stworzyć nowe konto?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Nowe konto..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Problemy z połączeniem. Problem może być spowodowany Twoim połączeniem z Internetem albo może istnieć po stronie [SECOND_LIFE_GRID].
-
-Możesz sprawdzić swoje połączenie z Internetem i spróbować ponownie za kilka minut lub połączyć się ze stroną pomocy technicznej tutaj [SUPPORT_SITE] lub wybrać Teleportuj by teleportować się do swojego miejsca startu.
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Pomoc"/>
- <button name="Teleport" text="Teleportuj"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Twoja postać pojawi się za moment.
-
-Używaj strzałek żeby sie poruszać.
-Naciśnij F1 w dowolnej chwili po pomoc albo żeby dowiedzieć się więcej o [SECOND_LIFE].
-Wybierz awatara właściwej płci.
-Ten wybór będzie można później zmienić.
- <usetemplate name="okcancelbuttons" notext="Kobieta" yestext="Mężczyzna"/>
- </notification>
- <notification name="CantTeleportToGrid">
- Nie można teleportować do [SLURL], ponieważ jest na innym gridzie ([GRID]) niż obecny grid ([CURRENT_GRID]). Proszę zamknąć przeglądarkę i spróbować ponownie.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GeneralCertificateError">
- Połączenie z serwerem nie mogło zostać nawiązane.
-[REASON]
-
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TrustCertificateError">
- Wydawca certyfikatu dla tego serwera nie jest znany.
-
-Informacje o certyfikacie:
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Czy chcesz zaufać temu wydawcy?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Zaufaj"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] [PRICE]L$ Masz za mało L$.
- </notification>
- <notification name="GrantedModifyRights">
- Masz teraz prawa modyfikacji obiektów należących do [NAME].
- </notification>
- <notification name="RevokedModifyRights">
- Prawa modyfikacji obiektów należących do [NAME] zostały Ci odebrane.
- </notification>
- <notification name="FlushMapVisibilityCaches">
- To spowoduje wyczyszczenie buforów map regionu.
-Jest to użyteczne wyłącznie podczas szukania błędów.
-(Podczas produkcji poczekaj 5 minut i mapy wszystkich zostaną uaktualnione po relogu.)
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Nie możesz zakupić więcej niż jednego obiektu w tym samym czasie. Proszę wybrać tylko jeden obiekt i spróbować ponowanie.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Nie można kopiować zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Teleportować wszystkich Rezydentów z tego regionu to ich miejsca startu?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Na pewno chcesz odesłać wszystkie obiekty należące do
-[USER_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] ma niewłaściwą głębię koloru - [TEXTURE_BIT_DEPTH].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
- </notification>
- <notification name="InvalidTerrainSize">
- Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] jest za duża - [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
- </notification>
- <notification name="RawUploadStarted">
- Ładowanie rozpoczęte. Może potrwać do dwóch minut zależnie od prędkości Twojego połączenia.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Na pewno chcesz zapisać obecne ukształtowanie terenu jako punkt odniesienia dla górnego i dolnego limitu terenu i jako domyślą wartość dla opcji Odtwórz?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- Maksymalna liczba gości wynosi [MAX_AGENTS].
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- Maksymalna liczba niepożądanych Rezydentów (banów) wynosi [MAX_BANNED].
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- Próba dodania [NUM_ADDED] osób nie powiodła się:
-[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- Możesz mieć maksymalnie [MAX_GROUPS] dozwolonych grup.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ustal"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- Możesz mieć maksymalnie [MAX_MANAGER] zarządców Majątku.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Nie możesz dodać właściciela majątku do listy &apos;Niepożądanych Rezydentów (banów)&apos; majątku.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Nie możesz zmienić wyglądu podczas ładowania ubrań i kształtów.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- Tytuł Twojej reklamy musi zaczynać się od litery (A-Z) albo cyfry. Znaki przestankowe są niedozwolone.
- </notification>
- <notification name="CantSetBuyObject">
- Nie możesz wybrać Kup obiekt ponieważ obiekt nie jest na sprzedaż.
-Wybierz obiekt na sprzedaż i spróbuj jeszcze raz.
- </notification>
- <notification name="FinishedRawDownload">
- Plik surowego terenu załadowany pod:
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadWindows">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- Nowa wersja [APP_NAME] jest dostępna.
-[MESSAGE]
-Musisz pobrać aktualizację aby korzystać z [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Wyjdź" yestext="Pobieranie"/>
- </notification>
- <notification name="DownloadLinux">
- Aktualizacja [APP_NAME] jest dostępna.
-[MESSAGE]
-Ta aktualizacja nie jest wymagana ale zaleca się jej instalację w celu poprawienia szybkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Pobieranie"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- Uaktualniona wersja [APP_NAME]została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Pobieranie"/>
- </notification>
- <notification name="DownloadMacMandatory">
- Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
-
-Pobrać i zapisać w folderze Aplikacji?
- <usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadMac">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
- </notification>
- <notification name="FailedUpdateInstall">
- Podczas aktualizacji pojawił się błąd. Proszę pobrać i zainstalować najnowszego klienta z http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FailedRequiredUpdateInstall">
- Nie można zainstalować wymaganej aktualizacji. Nie będzie można zalogować się dopóki [APP_NAME] nie zostanie zaktualizowana.
- Proszę pobrać i zainstalować najnowszą wersję z http://secondlife.com/download.
- <usetemplate name="okbutton" yestext="Rezygnuj"/>
- </notification>
- <notification name="UpdaterServiceNotRunning">
- Istnieje obowiązkowa aktualizacja dla Second Life. Możesz ją pobrać z http://www.secondlife.com/downloads lub zainstalować teraz.
- <usetemplate name="okcancelbuttons" notext="Opuść Second Life" yestext="Pobierz i zainstaluj teraz"/>
- </notification>
- <notification name="DownloadBackgroundTip">
- Aktualizacja dla [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o tej aktualizacji]
- <usetemplate name="okcancelbuttons" notext="Później..." yestext="Zainstaluj teraz i restartuj [APP_NAME]"/>
- </notification>
- <notification name="DownloadBackgroundDialog">
- Aktualizacja [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o aktualizacji]
- <usetemplate name="okcancelbuttons" notext="Później..." yestext="Zainstaluj teraz i restartuj [APP_NAME]"/>
- </notification>
- <notification name="RequiredUpdateDownloadedVerboseDialog">
- Pobrano wymaganą aktualizację.
-Wersja [VERSION]
-
-W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RequiredUpdateDownloadedDialog">
- W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="DeedObjectToGroup">
- Przekazanie tego obiektu spowoduje, że grupa:
-* Otrzyma L$ zapłacone temu obiektowi
- <usetemplate ignoretext="Proszę potwierdzić decyzję przed przepisaniem obiektu do grupy" name="okcancelignore" notext="Anuluj" yestext="Przekaż"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Czy chcesz otworzyć swoją przeglądarkę internetową by zobaczyć zawartość?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć stronę internetową" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- By dokonać zmian i aktualizacji swojego konta, odwiedź [http://secondlife.com/account/ Dashboard].
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by dokonać zmian w konfiguracji mojego konta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgłaszać problemy z bezpieczeństwem danych.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by dowiedzieć się więcej na temat zgłaszania problemów bezpieczeństwa" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Odwiedź [SECOND_LIFE] Wiki pytań i odpowiedzi.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć QA Wiki" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Odwiedź [SECOND_LIFE] katalog publicznych problemów, gdzie możesz zgłaszać błędy i inne problemy.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by wysłać Błędy klienta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Otwórz oficjalny blog Lindenów żeby zobaczyć nowe wiadomości i informacje.
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć blog" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Czy chcesz otworzyć samouczek Języka skryptowania?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by samouczek Języka skryptowania" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Czy napewno chcesz odwiedzić portal LSL Portal?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by LSL Portal" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ReturnToOwner">
- Czy na pewno chcesz zwrócić wybrane obiekty do ich właścicieli? Wszystkie udostępnione obiekty z prawem transferu zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wszystkie udostępnione obiekty bez prawa transferu zostaną usunięte!
- <usetemplate ignoretext="Potwierdź zanim zwrócisz obiekty do ich właścicieli" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- Jesteś członkiem grupy [GROUP].
-Chcesz opuścić grupę?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Napewno chcesz wyrzucić wszystkich Rezydentów z gridu?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Wyrzuć wszystkich Rezydentów"/>
- </notification>
- <notification name="MuteLinden">
- Przepraszamy, ale nie możesz zablokować Lindena.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Aukcja nie może zostać rozpoczęta w posiadłości, która została już wcześniej wystawiona na aukcję. Deaktywuj opcję sprzedaży posiadłości jeżeli chcesz rozpocząć aukcję.
- </notification>
- <notification label="Zablokuj obiekty według wpisanej nazwy" name="MuteByNameFailed">
- Rezydent/obiekt jest już zablokowany.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Pomimo, że jest to dozwolone, usunięcie zawartości może zniszczyć obiekt. Chcesz usunąć?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Nie możesz dać wizytówki w tym momencie. Spróbuj jeszcze raz za chwilę.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Nie możesz zaoferować znajomości w tym momencie. Spróbuj jeszcze raz za chwilę.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- Tryb Pracy jest włączony.
-Czat i IM będą ukryte. Wysłane IM będą otrzymywały Twoją odpowiedź Trybu Pracy. Propozycje teleportacji będą odrzucone.
-Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywane w folderze &quot;Kosz&quot; w Twojej szafie.
- <usetemplate ignoretext="Status zmieniony na Tryb pracy" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Należysz już do maksymalnej ilości grup. Opuść proszę przynajmniej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
-[NAME] oferuje Ci członkostwo w grupie.
- <usetemplate name="okcancelbuttons" notext="Odmów" yestext="Przyjmij"/>
- </notification>
- <notification name="JoinedTooManyGroups">
- Należysz już do maksymalnej ilości grup. Opuść proszę przynajmiej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="KickUser">
- Wyrzuć tego Rezydenta, wysyłając następujący komunikat.
- <form name="form">
- <input name="message">
- Administrator wylogował Cię.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu?
- <form name="form">
- <input name="message">
- Administrator wylogował Cię.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Unieruchom tego Rezydenta, wysyłając następujący komunikat.
- <form name="form">
- <input name="message">
- Unieruchomiono Cię. Nie możesz się ruszać ani rozmawiać. Administrator skontaktuje się z Tobą poprzez IM.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Cofnij unieruchomienie tego Rezydenta, wysyłając następujący komunikat.
- <form name="form">
- <input name="message">
- Odblokowano Cię.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="SetDisplayNameSuccess">
- Witaj [DISPLAY_NAME]!
-
-Podobnie jak w realnym życiu potrzeba trochę czasu zanim wszyscy dowiedzą się o nowej nazwie. Kolejne kilka dni zajmie [http://wiki.secondlife.com/wiki/Setting_your_display_name aktualizacja nazwy] w obiektach, skryptach, wyszukiwarce, etc.
- </notification>
- <notification name="SetDisplayNameBlocked">
- Przepraszamy, nie można zmienić Twojej wyświetlanej nazwy. Jeśli uważasz ze jest to spowodowane błędem skontaktuj się z obsługą klienta.
- </notification>
- <notification name="SetDisplayNameFailedLength">
- Przepraszamy, ta nazwa jest zbyt długa. Wyświetlana nazwa może mieć maksymalnie [LENGTH] znaków.
-
-Proszę wprowadzić krótszą nazwę.
- </notification>
- <notification name="SetDisplayNameFailedGeneric">
- Przepraszamy, nie można ustawić Twojej wyświetlanej nazwy. Spróbuj ponownie później.
- </notification>
- <notification name="SetDisplayNameMismatch">
- Podana wyświetlana nazwa nie pasuje. Proszę wprowadzić ją ponownie.
- </notification>
- <notification name="AgentDisplayNameUpdateThresholdExceeded">
- Przepraszamy, musisz jeszcze poczekać zanim będzie można zmienić Twoją wyświetlaną nazwę.
-
-Zobacz http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Proszę spróbować ponownie później.
- </notification>
- <notification name="AgentDisplayNameSetBlocked">
- Przepraszamy, nie można ustawić wskazanej nazwy, ponieważ zawiera zabronione słowa.
-
- Proszę spróbować wprowadzić inną nazwę.
- </notification>
- <notification name="AgentDisplayNameSetInvalidUnicode">
- Wyświetlana nazwa, którą chcesz ustawić zawiera niepoprawne znaki.
- </notification>
- <notification name="AgentDisplayNameSetOnlyPunctuation">
- Twoje wyświetlane imię musi zawierać litery inne niż znaki interpunkcyjne.
- </notification>
- <notification name="DisplayNameUpdate">
- [OLD_NAME] ([SLID]) jest od tej pory znana/znany jako [NEW_NAME].
- </notification>
- <notification name="OfferTeleport">
- Zaproponować teleportację do miejsca Twojego pobytu z tą wiadomością?
- <form name="form">
- <input name="message">
- Zapraszam do siebie. Region: [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Wysłać propozycję teleportacji do Twojego miejsca?
- <form name="form">
- <input name="message">
- Zapraszam do siebie. Region: [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Na pewno chcesz się teleportować do &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
- <usetemplate ignoretext="Potwierdź próbę teleportacji do zapisanego miejsca" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification name="TeleportToPick">
- Teleportuj do [PICK]?
- <usetemplate ignoretext="Potwierdź, że chcesz teleportować się do miejsca w Ulubionych" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification name="TeleportToClassified">
- Teleportuj do [CLASSIFIED]?
- <usetemplate ignoretext="Potwierdź, że chcesz teleportować się do lokalizacji z reklamy" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification name="TeleportToHistoryEntry">
- Teleportuj do [HISTORY_ENTRY]?
- <usetemplate ignoretext="Potwierdź teleportację do lokalizacji z historii" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
- </notification>
- <notification label="Wiadomość do Wszystkich w Twoim Majątku" name="MessageEstate">
- Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w Twoim majątku.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zmiana Majątku Lindenów" name="ChangeLindenEstate">
- Czy napewno chcesz zmienić ustawienia majątku Linden (mainland, teen grid, orientacja, itp).
-
-Jest to wyjątkowo niebezpieczna decyzja, odczuwalna przez wszystkich Rezydentów. Dla mainland, spowoduje to zmianę tysięcy regionów oraz ich przestrzeń serwerową.
-
-Kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification label="Zmiana Dostępu do Majątku Lindenów" name="ChangeLindenAccess">
- Dokonujesz zmiany w liście dostępu Regionu głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja).
-
-Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci.
-Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
-
-Kontynuować?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedAgentAdd">
- Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedAgentRemove">
- Usunąć z listy dostępu do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedGroupAdd">
- Dodać do listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateAllowedGroupRemove">
- Usunąć z listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateBannedAgentAdd">
- Zablokować dostęp do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateBannedAgentRemove">
- Zdjąć tego Rezydenta z listy niepożądanych (bany) dla tego majątku czy dla [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateManagerAdd">
- Dodać zarządce majątku do tego majątku czy do [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Wybierz Majątek" name="EstateManagerRemove">
- Usunąć zarządce majątku z tego majątku czy z [ALL_ESTATES]?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/>
- </notification>
- <notification label="Potwierdź Wyrzucenie" name="EstateKickUser">
- Wyrzucić [EVIL_USER] z tego majątku?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Na pewno chcesz zminić treść umowy dla tego majątku?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Nie masz zezwolenia na przebywanie w tym Regionie z powodu Twojego statusu ustawień wieku.
-
-W celu uzyskania dostępu do tego regiony zmień proszę swój status ustawień wieku. Będziesz mógł/mogła szukać i mieć dostęp do treści [REGIONMATURITY]. W celu cofnięcia zmian wybierz z menu Ja &gt; Ustawienia &gt; Ogólne.
- <form name="form">
- <button name="OK" text="Zmień ustawienia"/>
- <button default="true" name="Cancel" text="Zamknij"/>
- <ignore name="ignore" text="Moje ustawienia wieku nie dopuszczają do regionu"/>
- </form>
- </notification>
- <notification name="PreferredMaturityChanged">
- Twoja obecna klasyfikacja wieku to [RATING].
- </notification>
- <notification name="LandClaimAccessBlocked">
- W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości.
-
-Możesz wybrać &apos;Zmień Ustawienia&apos; by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja &gt; Ustawienia &gt; Główne.
- <usetemplate ignoretext="Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- <url name="url">
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
- </url>
- <usetemplate ignoretext="Ze względu na Twój wiek, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości.
-
-Możesz wybrać &apos;Zmień Ustawienia&apos; by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja &gt; Ustawienia &gt; Główne.
- <usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- Zbyt wiele wybranych obiektów. Wybierz [MAX_PRIM_COUNT] lub mniej i spróbuj ponownie
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Problem z importem umowy majątku.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Problemy z dodawaniem nowego zarządcy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę zarządców.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Problemy z dodawaniem do listy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Brak możliwości załadowania noty w tej chwili.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Niewystarczające prawa do zobaczenia notki przypisanej do wybranego ID.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- ID notki nie znalezione w bazie danych.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Pamiętaj: Opłaty za reklamę są bezzwrotne.
-
-Zamieścić tą reklamę za [AMOUNT]L$?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Czy ta reklama zawiera treść &apos;Mature&apos;?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="SetGroupMature">
- Czy ta grupa zawiera treść &apos;Mature&apos;?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification label="Potwierdź Restart" name="ConfirmRestart">
- Na pewno chcesz zrobić restart tego regionu za 2 minuty?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification label="Wiadomość do Wszystkich w tym Regionie" name="MessageRegion">
- Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w tym regionie.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Zmienione Restrykcje Wieku dla Regionu" name="RegionMaturityChange">
- Ustawienie restrykcji wieku dla regionu zostało zmienione.
-Zazwyczaj musi upłynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona na mapie.
-
-Aby wejść do regionu Adult, Rezydenci muszą posiadać zweryfikowane konto, albo w wyniku weryfikacji wieku albo płatości.
- </notification>
- <notification label="Wersja Niezgodna z Systemem Rozmów" name="VoiceVersionMismatch">
- Ta wersja [APP_NAME] nie jest kompatybilna z systemem rozmów w tym Regionie. Musisz zainstalować aktualną wersję [APP_NAME] aby komunikacja głosowa działała poprawnie.
- </notification>
- <notification label="Nie Można Kupić Obiektów" name="BuyObjectOneOwner">
- Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification label="Nie Można Kupić Zawartości" name="BuyContentsOneOnly">
- Jednorazowo możesz kupić zawartość tylko jednego obiektu.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification label="Nie Można Kupić Zawartości" name="BuyContentsOneOwner">
- Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
- </notification>
- <notification name="BuyOriginal">
- Kupić oryginalny obiekt od [OWNER] za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Kupić oryginalny obiekt za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Kupić kopię obiektu od [OWNER] za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Kupić kopię obiektu za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Kupić zawartość od [OWNER] za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Kupić zawartość za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
-Wpisz hasło ponownie i kliknij OK.
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Uwaga:
-Lokalizacja tego wyboru została zaktualizowana ale pozostałe szczegóły zachowają oryginalne wartości.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- Wybrane obiekty Szafy nie mają praw kopiowania.
-Obiekty zostaną przeniesione do Twojej Szafy, nie zostaną skopiowane.
-
-Przenieść obiekty Szafy?
- <usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- Wybrane obiekty Szafy nie mają praw kopiowania.
-Obiekty zostaną przeniesione do Twojej Szafy, nie zostaną skopiowane.
-Ponieważ obiekty zawierają skrypty, przeniesienie obiektów do Twojej Szafy może spowodować niepoprawne działanie skryptów.
-
-Przenieść obiekty szafy?
- <usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu, która może uszkodzić skrypty obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Uwaga: Opcja Zapłać obiektowi została wybrana, ale żeby ta opcja działała musi być dodany skrypt z funkcją money().
- <form name="form">
- <ignore name="ignore" text="Opcja Zapłać Obiektowi została aktywowana podczas budowania obiektów bez skryptu z funkcją money()."/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- W tym obiekcie nie ma elementów które możesz skopiować.
- </notification>
- <notification name="WebLaunchAccountHistory">
- Przejść na stronę [http://secondlife.com/account/ Dashboard] żeby zobaczyć historię konta?
- <usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć historię konta" name="okcancelignore" notext="Anuluj" yestext="Idź na stronę"/>
- </notification>
- <notification name="ConfirmQuit">
- Na pewno chcesz skończyć?
- <usetemplate ignoretext="Na pewno chcesz skończyć?" name="okcancelignore" notext="Nie kończ" yestext="Wyłącz"/>
- </notification>
- <notification name="DeleteItems">
- [QUESTION]
- <usetemplate ignoretext="Potwierdź, że na pewno chcesz skasować obiekty" name="okcancelignore" notext="Cofnij" yestext="OK"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Używaj tej opcji do zgłaszania nadużyć [http://secondlife.com/corporate/tos.php Warunków Umowy (Terms of Service)] i [http://secondlife.com/corporate/cs.php Standardów Społeczeństwa (Community Standards)].
-
-Wszystkie zgłoszone nadużycia są badane i rozwiązywane.
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Wybierz kategorię dla tego raportu o nadużyciu.
-Określenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Wprowadź imię i nazwisko osoby popełniającej nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Wprowadź nazwę miejsca gdzie popełniono nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Wprowadź opis popełnionego nadużycia.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Wprowadź szczgółowy opis popełnionego nadużycia.
-Podaj maksymalną ilość szczgółów oraz imiona i nazwiska osób związanych z nadużyciem które zgłaszasz.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Szanowny Rezydencie,
-
-Jeżeli składasz raport dotyczący naruszenia praw autorskich proszę się upewnić, że robisz to poprawnie:
-
-(1) Przypadek Nadużycia. Możesz złożyć raport jeżeli sądzisz, że Rezydent narusza system przywilejów [SECOND_LIFE], na przykład używając CopyBot lub podobnych narzędzi robiących kopie, naruszając prawa autorskie. Komisja Nadużyć bada wykroczenia i stosuje akcje dyscyplinarne za zachowania sprzeczne z zasadami Warunków Umowy [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Terms of Service] i Standardów Społeczeństwa [http://secondlife.com/corporate/cs.php Community Standards]. Komisja Nadużyć nie zajmuje się i nie odpowiada na żądania usunięcia treści ze środowiska [SECOND_LIFE].
-
-(2) Przypadek DMCA lub Usuwanie Treści. Aby wystąpić z żądaniem o usunięcie treści ze środowiska [SECOND_LIFE] MUSISZ przedłożyć ważne zawiadomienie o nadużyciu zgodne z naszą polityką DMCA [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Jeżeli chcesz kontynuować dalej zamknij to okno i dokończ wysyłanie raportu. Może być potrzebny wybór kategorii &apos;CopyBot albo Nadużycie Przywilejów&apos;.
-
-Dziękujemy,
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- Brak następujących wymaganych komponentów w [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Zamień Istniejący Dodatek" name="ReplaceAttachment">
- Obecnie masz już dołączony obiekt do tej części Twojego ciała.
-Chcesz go zamienić na wybrany obiekt?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Obecnie masz już dołączony obiekt do tej części Twojego ciała.Chcesz go zamienić na wybrany obiekt?"/>
- <button ignore="Zamień automatycznie" name="Yes" text="OK"/>
- <button ignore="Nie zamieniaj" name="No" text="Anuluj"/>
- </form>
- </notification>
- <notification label="Ostrzeżenie Trybu Pracy" name="BusyModePay">
- Jesteś w Trybie pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę.
-
-Chcesz wyłączyć Tryb pracy przed zakończeniem tej tranzakcji?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Jesteś w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę. Chcesz wyłączyć Tryb Pracy przed zakończeniem tej transakcji?"/>
- <button ignore="Zawsz wyłączaj tryb pracy" name="Yes" text="OK"/>
- <button ignore="Nie wyłączaj trybu pracy" name="No" text="Anuluj"/>
- </form>
- </notification>
- <notification name="ConfirmDeleteProtectedCategory">
- Ten folder &apos;[FOLDERNAME]&apos; to folder systemowy. Usunięcie foldera systemowego spowoduje niestabilność. Czy na pewno chcesz go skasować?
- <usetemplate ignoretext="Potwierdź zanim folder systemu zostanie skasowany" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Na pewno chcesz permanentnie usunąć zawartość Kosza?
- <usetemplate ignoretext="Potwierdź przed usunięciem zawartości Kosza" name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Na pewno chcesz wyczyścić bufor przeglądarki?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Na pewno chcesz wyczyścić ciasteczka?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Na pewno chcesz wyczyścić listę zapisanych linków?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Na pewno chcesz permanentnie usunąć zawartość Twojego foldera Zgubione i odnalezione?
- <usetemplate ignoretext="Potwierdź przed usunięciem zawartości foldera Zagubione i odnalezione" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="CopySLURL">
- Następujący link SLURL został skopiowany do schowka:
- [SLURL]
-
-Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do tego miejsca, albo wklej go do panela adresu Twojej przeglądarki żeby go otworzyć.
- <form name="form">
- <ignore name="ignore" text="SLurl skopiowany do schowka"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- Chcesz zmienić zapisane ustawienia?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- Chcesz usunąć [SKY]?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="WLNoEditDefault">
- Nie możesz edytować lub usunąć domyślnych ustawień.
- </notification>
- <notification name="WLMissingSky">
- Ten plik cyklu dziennego używa brakującego pliku nieba: [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Efekt post-procesu już istnieje. Chcesz zapisać nowy na jego miejsce?
- <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="NewSkyPreset">
- Nazwij nowe niebo.
- <form name="form">
- <input name="message">
- Nowe ustawienie
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- Ustawienie już istnieje!
- </notification>
- <notification name="NewWaterPreset">
- Nazwij nowe ustawienie wody.
- <form name="form">
- <input name="message">
- Nowe ustawienie
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- Ustawienie już istnieje!
- </notification>
- <notification name="WaterNoEditDefault">
- Domyślne ustawienie nie może być zmienione ani usunięte.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Błąd podczas rozpoczynania czatu/IM z [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- Twój czat/IM z [NAME] zostanie zamknięty.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Rzeczy nie mogą być kupione jeżeli są częścią załącznika.
- </notification>
- <notification label="Prośba o Zgodę na Pobieranie L$" name="DebitPermissionDetails">
- Akceptując tą prośbę wyrażasz zgodę na ciągłe pobieranie Lindenów (L$) z Twojego konta. Żeby cofnąć to pozwolenie właściciel obiektu będzie musiał usunąć ten obiekt albo zresetowć skrypty obieku.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Czy chcesz automatycznie nosić ubranie które tworzysz?
- <usetemplate ignoretext="Załóż ubranie automatycznie będąc w trybie Edycji Wyglądu" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="NotAgeVerified">
- Nie masz dostępu do tej posiadłości ze względu na brak weryfikacji Twojego wieku. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php
- </url>
- <usetemplate ignoretext="Brak weryfikacji wieku" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Nie masz dostępu do tej posiadłości ze względu na brak danych o Twoim koncie. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/
- </url>
- <usetemplate ignoretext="Brak danych o koncie" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="MissingString">
- Zdanie [STRING_NAME] nie znalezione w strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="IMSystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Anulowane
- </notification>
- <notification name="CancelledSit">
- Siadanie anulowane
- </notification>
- <notification name="CancelledAttach">
- Dołączenie anulowane
- </notification>
- <notification name="ReplacedMissingWearable">
- Barkujące ubranie/części ciała zastąpiono domyślnymi obiektami.
- </notification>
- <notification name="GroupNotice">
- Temat: [SUBJECT], Treść: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [NAME] jest w Second Life
- </notification>
- <notification name="FriendOffline">
- [NAME] opuszcza Second Life
- </notification>
- <notification name="AddSelfFriend">
- Nie możesz dodać siebie do listy znajomych.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Ładowanie obrazu z Internetu...
-(Zajmuje około 5 minut.)
- </notification>
- <notification name="UploadPayment">
- Ładowanie kosztowało [AMOUNT]L$.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Ładowanie obrazu z Internetu zakończne pomyślnie.
- </notification>
- <notification name="UploadSnapshotDone">
- Ładowanie zdjęcia zakończone pomyślnie.
- </notification>
- <notification name="TerrainDownloaded">
- Plik terrain.raw ściągniety.
- </notification>
- <notification name="GestureMissing">
- Gesturka [NAME] nie znaleziony w bazie danych.
- </notification>
- <notification name="UnableToLoadGesture">
- Ładowanie gesturki [NAME] nie powiodło się.
- </notification>
- <notification name="LandmarkMissing">
- Miejsce (LM) nie znalezione w bazie danych.
- </notification>
- <notification name="UnableToLoadLandmark">
- Ładowanie miejsca (LM) nie powiodło się.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="CapsKeyOn">
- Twój Caps Lock jest włączony.
-Ponieważ to ma wpływ na wpisywane hasło, możesz chcieć go wyłączyć.
- </notification>
- <notification name="NotecardMissing">
- Notka nie została znaleziona w bazie danych.
- </notification>
- <notification name="NotecardNoPermissions">
- Nie masz pozwolenia na zobaczenie notki.
- </notification>
- <notification name="RezItemNoPermissions">
- Nie masz pozwolenia na stworzenie obiektu.
- </notification>
- <notification name="UnableToLoadNotecard">
- Nie można załadować danych notki w tym momencie.
- </notification>
- <notification name="ScriptMissing">
- Skrypt nie znaleziony w bazie danych.
- </notification>
- <notification name="ScriptNoPermissions">
- Nie masz pozwolenia na zobaczenie skryptu.
- </notification>
- <notification name="UnableToLoadScript">
- Ładowanie skryptu nie powiodło się.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="IncompleteInventory">
- Zawartość obiektów którą chcesz podarować nie jest dostępna lokalnie. Spróbuj podarować te obiekty jeszcze raz za jakiś czas.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Nie możesz zmienić chronionych kategorii.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Nie możesz usunąć chronionych kategorii.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Nie można kupować w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Nie można łączyć w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Nie możesz jednocześnie kupować obiektów od różnych osób.
-Wybierz jeden obiekt.
- </notification>
- <notification name="ObjectNotForSale">
- Obiekt nie jest na sprzedaż.
- </notification>
- <notification name="EnteringGodMode">
- Włącznie trybu boskiego, poziom [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Wyłączanie trybu boskiego, poziom [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Nie masz praw do skopiowania wybranych obiektów.
- </notification>
- <notification name="InventoryAccepted">
- Podarunek od Ciebie został przyjęty przez [NAME].
- </notification>
- <notification name="InventoryDeclined">
- Podarunek od Ciebie został odrzucony przez [NAME].
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Twoja wizytówka została przyjęta.
- </notification>
- <notification name="CallingCardDeclined">
- Twoja wizytówka została odrzucona.
- </notification>
- <notification name="TeleportToLandmark">
- Jesteś w Głównym Regionie i możesz się stąd teleportować do innych miejsc jak &apos;[NAME]&apos; wybierając Moja Szafa w prawym dolnym rogu ekranu
-i wybierając folder Zapisane Miejsca (LM).
-(Kliknij dwa razy na miejsce (LM) i wybierz &apos;Teleport&apos; żeby tam się przenieść.)
- </notification>
- <notification name="TeleportToPerson">
- Możesz skontaktować się z Rezydentem &apos;[NAME]&apos; poprzez otworzenie panelu Ludzie po prawej stronie ekranu.
-Wybierz Rezydenta z listy, następnie kliknij &apos;IM&apos; na dole panelu.
-(Możesz także kliknąć podwójnie na ich imię na liście, lub prawym przyciskiem i wybrać &apos;IM&apos;).
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Nie możesz przekraczać granic serwera wybierając obszar.
-Spróbuj wybrać mniejszy obszar.
- </notification>
- <notification name="SearchWordBanned">
- Pewne frazy podczas wyszukiwania zostały usunięte w związku z restrykcjami zawartymi w Standardach Społecznościowych (Community Standards).
- </notification>
- <notification name="NoContentToSearch">
- Proszę wybrać przynajmiej jeden z podanych rodzajów treści jaką zawiera region podczas wyszukiwania (&apos;General&apos;, &apos;Moderate&apos;, lub &apos;Adult&apos;).
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="PaymentReceived">
- [MESSAGE]
- </notification>
- <notification name="PaymentSent">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Zawiadomienie o imprezie:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Details" text="Szczegóły"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Obiekty na tej posiadłości które zostaną przekazane kupcowi tej posiadłości są teraz rozjaśnione.
-
-* Drzewa i trawy które zostaną przekazne nie są rozjaśnione.
- <form name="form">
- <button name="Done" text="Zastosuj"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Zablokowane gesturki z jednakowym aktywowaniem:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Wygląda na to, że QuickTime z Apple nie jest zainstalowany na Twoim komputerze.
-Jeżeli chcesz odtwarzać media na tej posiadłości które używają QuickTime idź do [http://www.apple.com/quicktime strona QuickTime] i zainstaluj odtwarzacz.
- </notification>
- <notification name="NoPlugin">
- Nie znaleziono wtyczki mediów dla &quot;[MIME_TYPE]&quot; typu mime. Media tego typu będą niedostępne.
- </notification>
- <notification name="MediaPluginFailed">
- Następujące wtyczki mediów nie działają:
- [PLUGIN]
-
-Zainstaluj proszę wtyczki ponownie lub skontaktuj się z dostawcą jeśli nadal problem będzie występował.
- <form name="form">
- <ignore name="ignore" text="Wtyczka mediów nie działa"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- Twoje obiekty z wybranej posiadłości zostały zwrócone do Twojej Szafy.
- </notification>
- <notification name="OtherObjectsReturned">
- Obiekty należące do [NAME] na wybranej posiadłości zostały zwrócone do Szafy tej osoby.
- </notification>
- <notification name="OtherObjectsReturned2">
- Obiekty z posiadłości należącej do Rezydenta&apos;[NAME]&apos; zostały zwrócone do właściciela.
- </notification>
- <notification name="GroupObjectsReturned">
- Obiekty z wybranej posiadłości przypisane do grupy [GROUPNAME] zostały zwrócone do szafy ich właścicieli.
-Przekazywalne obiekty przekazne grupie zostały zwrócone do ich poprzednich właścicieli.
-Nieprzekazywalne obiekty przekazane grupie zostały usunięte.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Obiekty z wybranej posiadłości które nie należą do Ciebie zostały zwrócone do ich właścicieli.
- </notification>
- <notification name="ServerObjectMessage">
- Wiadomość od [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
- </notification>
- <notification name="NotSafe">
- Ta posiadłość pozwala na uszkodzenia.
-Możesz doznać tutaj urazu. Jeżeli zginiesz nastąpi teleportacja do Twojego miejsca startu.
- </notification>
- <notification name="NoFly">
- Ta posiadłość nie pozwala na latanie.
-Nie możesz tutaj latać.
- </notification>
- <notification name="PushRestricted">
- Popychanie niedozwolone. Nie możesz tutaj popychać innych, chyba, że jesteś właścicielem tej posiadłości.
- </notification>
- <notification name="NoVoice">
- Ta posiadłość nie pozwala na rozmowy.
- </notification>
- <notification name="NoBuild">
- Ta posiadłość nie pozwala na budowanie. Nie możesz tworzyć tutaj obiektów.
- </notification>
- <notification name="ScriptsStopped">
- Administrator czasowo zatrzymał skrypty w tym regionie.
- </notification>
- <notification name="ScriptsNotRunning">
- Żadne skrypty nie działają w tym regionie.
- </notification>
- <notification name="NoOutsideScripts">
- Ta posiadłość nie pozwala na zewnętrzne skrypty.
-
-Żadne skrypty nie będą tutaj działać za wyjątkiem skryptów należących do właściciela posiadłości.
- </notification>
- <notification name="ClaimPublicLand">
- Tylko publiczne posiadłości w tym regionie mogą być przejęte.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
- </notification>
- <notification name="URBannedFromRegion">
- Zostałeś zbanowany w regionie.
- </notification>
- <notification name="NoTeenGridAccess">
- Twoje konto nie może zostać połączone z podanym regionem Teen Grid.
- </notification>
- <notification name="ImproperPaymentStatus">
- Nie posiadasz odpowiedniego statusu płatniczego by uzyskać dostęp do regionu.
- </notification>
- <notification name="MustGetAgeParcel">
- By móc przebywać na tej posiadłości wymagana jest weryfikacja Twojego wieku.
- </notification>
- <notification name="NoDestRegion">
- Żądana lokalizacja regionu nie została odnaleziona.
- </notification>
- <notification name="NotAllowedInDest">
- Brak dostępu do podanej lokalizacji.
- </notification>
- <notification name="RegionParcelBan">
- Nie możesz przejść przez zamkniętą posiadłość. Spróbuj skorzystać z innej drogi.
- </notification>
- <notification name="TelehubRedirect">
- Zostałeś przeniesiony do teleportera.
- </notification>
- <notification name="CouldntTPCloser">
- Brak możliwości teleportacji do bliższej lokacji.
- </notification>
- <notification name="TPCancelled">
- Teleportacja anulowana.
- </notification>
- <notification name="FullRegionTryAgain">
- Region, który chcesz odwiedzić jest w tej chwili pełny.
-Spróbuj ponowanie za kilka minut.
- </notification>
- <notification name="GeneralFailure">
- Nieudana próba.
- </notification>
- <notification name="RoutedWrongRegion">
- Wysłano niewłaściwe połączenie do regionu. Proszę spróbować ponownie.
- </notification>
- <notification name="NoValidAgentID">
- Nieważny identyfikator agenta.
- </notification>
- <notification name="NoValidSession">
- Nieważny identyfikator sesji.
- </notification>
- <notification name="NoValidCircuit">
- Nieważny obwód kodowania.
- </notification>
- <notification name="NoValidTimestamp">
- Niewłaściwy czas zapisu.
- </notification>
- <notification name="NoPendingConnection">
- Brak możliwości wykonania połączenia.
- </notification>
- <notification name="InternalUsherError">
- Podczas teleportacji nastąpił błąd wewnętrzny, który może być wynikiem problemów serwera.
- </notification>
- <notification name="NoGoodTPDestination">
- Brak lokalizacji punktu do teleportacji w podanym regionie.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Podczas próby odnalezienia globalnych współrzędych dla żądanej teleportacji pojawił się wewnętrzny błąd. Może być to wynikiem problemów serwera.
- </notification>
- <notification name="NoValidLanding">
- Nieważny punkt lądowania.
- </notification>
- <notification name="NoValidParcel">
- Nieważana posiadłość.
- </notification>
- <notification name="ObjectGiveItem">
- Obiekt o nazwie &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, którego właścicielem jest [NAME_SLURL] oferuje Tobie &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
- <form name="form">
- <button name="Keep" text="Zaakceptuj obiekt"/>
- <button name="Discard" text="Odrzuć obiekt"/>
- <button name="Mute" text="Zablokuj obiekt"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME_SLURL] proponuje Tobie [ITEM_SLURL]. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
- <form name="form">
- <button name="Show" text="Zaakceptuj obiekt"/>
- <button name="Discard" text="Odrzuć obiekt"/>
- <button name="Mute" text="Zablokuj użytkownika"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Info" text="Info"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME_SLURL] proponuje Ci teleportację do siebie:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
- <form name="form">
- <button name="Teleport" text="Teleportuj"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="TeleportOfferSent">
- Oferta teleportacji wysłana do [TO_NAME]
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Póżniej"/>
- <button name="GoNow..." text="Teraz..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME_SLURL] proponuje znajomość.
-
-[MESSAGE]
-
-(Będziecie mogli widzieć swój status online)
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- </form>
- </notification>
- <notification name="FriendshipOffered">
- Oferta znajomości dla [TO_NAME]
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME_SLURL] proponuje Ci znajomość.
-
-(Z zalożenia będzie widzić swój status online.)
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- Twoja propozycja znajomości została przyjęta przez [NAME].
- </notification>
- <notification name="FriendshipDeclined">
- Twoja propozycja znajomości została odrzucona przez [NAME].
- </notification>
- <notification name="FriendshipAcceptedByMe">
- Propozycja znajomości została zaakceptowana.
- </notification>
- <notification name="FriendshipDeclinedByMe">
- Propozycja znajomości została odrzucona.
- </notification>
- <notification name="OfferCallingCard">
- [NAME] oferuje swoją wizytówkę.
-Wizytówka w Twojej Szafie umożliwi szybki kontakt IM z tym Rezydentem.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Restart regionu za [MINUTES] min.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
- </notification>
- <notification name="RegionRestartSeconds">
- Restart regionu za [SECONDS] sec.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
- </notification>
- <notification name="LoadWebPage">
- Załadować stronę [URL]?
-
-[MESSAGE]
-
-Od obiektu: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, właściciel właściciel: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Załaduj"/>
- <button name="Cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- [TYPE] - nie znaleziono w bazie danych.
- </notification>
- <notification name="FailedToFindWearable">
- [TYPE] [DESC] - nie znaleziono w bazie danych.
- </notification>
- <notification name="InvalidWearable">
- Obiekt, który chcesz założyć używa narzędzia nieobecnego w wersji klienta, którą używasz. By go założyć ściągnij najnowszą wersję [APP_NAME].
- </notification>
- <notification name="ScriptQuestion">
- Obiekt &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, którego właścicielem jest &apos;[NAME]&apos;, chciałby:
-
-[QUESTIONS]
-Czy się zgadzasz?
- <form name="form">
- <button name="Yes" text="Tak"/>
- <button name="No" text="Nie"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Obiekt &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, którego właścicielem jest &apos;[NAME]&apos; chciałby:
-
-[QUESTIONS]
-Jeśli nie ufasz temu obiektowi i jego kreatorowi, odmów.
-
-Czy się zgadzasz?
- <form name="form">
- <button name="Grant" text="Zaakceptuj"/>
- <button name="Deny" text="Odmów"/>
- <button name="Details" text="Szczegóły..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Zignoruj"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Zignoruj"/>
- </form>
- </notification>
- <notification name="BuyLindenDollarSuccess">
- Dziękujemy za wpłatę!
-
-Twój stan konta L$ zostanie zaktualizowany w momencie zakończenia transakcji. Jeżeli w ciągu 20 minut, Twój balans konta nie ulegnie zmianie, transakcja została anulowana. W tym przypadku, pobrana kwota zostanie zwrócona na stan konta w US$.
-
-Status transkacji możesz sprawdzić odwiedzając Historię Transakcji swojego konta na [http://secondlife.com/account/ Dashboard]
- </notification>
- <notification name="FirstOverrideKeys">
- Twoje sterujące klawisze zostały przejęte przez obiekt.
-Użyj strzałek lub AWSD żeby sprawdzić ich działanie.
-Niektóre obiekty (np broń) wymagają trybu panoramicznego.
-Nacisnij &apos;M&apos; żeby go wybrać.
- </notification>
- <notification name="FirstSandbox">
- Ten region to piaskownica.
-
-Obiekty które tu zbudujesz mogą zostać usunięte jak opuścisz ten obszar - piaskownice są regularnie czyszczone, sprawdź informacje na górze ekranu obok nazwy regionu.
- </notification>
- <notification name="MaxListSelectMessage">
- Maksymalnie możesz wybrać [MAX_SELECT] rzeczy
-z tej listy.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] zaprasza Cię do rozmowy głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia.
-Wybierz Zablokuj żeby wyciszyć dzwoniącą osób
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- Wysłano [NAME] prywatną wiadomość i ta osoba została automatycznie odblokowana.
- </notification>
- <notification name="AutoUnmuteByMoney">
- Przekazano [NAME] pieniądze i ta osoba została automatycznie odblokowana.
- </notification>
- <notification name="AutoUnmuteByInventory">
- Zaoferowno [NAME] obiekty i ta osoba została automatycznie odblokowana.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] zaczyna rozmowę z grupą [GROUP].
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] zaczyna konferencję głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Zablokuj"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] zaprasza Cię do konferencji poprzez Czat/IM.
-Wybierz Zaakceptuj żeby zacząć czat albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć tą osobę.
- <form name="form">
- <button name="Accept" text="Zaakceptuj"/>
- <button name="Decline" text="Odmów"/>
- <button name="Mute" text="Block"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- Rozmowa w której chcesz uczestniczyć, [VOICE_CHANNEL_NAME], nie akceptuje więcej rozmówców. Spróbuj póżniej.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Przepraszamy. Limit rozmów został przekroczony w tym obszarze. Spróbuj w innym miejscu.
- </notification>
- <notification name="VoiceChannelDisconnected">
- [VOICE_CHANNEL_NAME] odłączył się. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] skończył rozmowę. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] odmówił połączenia. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] nie odpowiada. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Brak połączenia z [VOICE_CHANNEL_NAME], spróbuj póżniej. Przełączanie do rozmowy przestrzennej.
- </notification>
- <notification name="VoiceLoginRetry">
- Tworzymy kanał głosu dla Ciebie. Moze potrwać minutę.
- </notification>
- <notification name="VoiceEffectsExpired">
- Subskrypcja jednego lub więcej z Voice Morph wygasła.
-[[URL] Kliknij tutaj] oby odnowić subskrypcję.
- </notification>
- <notification name="VoiceEffectsExpiredInUse">
- Czas aktywności Voice Morph wygasł, normalne ustawienia Twojego głosu zostały zastosowane.
-[[URL] Kliknij tutaj] aby odnowić subskrypcję.
- </notification>
- <notification name="VoiceEffectsWillExpire">
- Jedno lub więcej z Twoich Voice Morph wygaśnie za mniej niż [INTERVAL] dni.
-[[URL] Klinij tutaj] aby odnowić subskrypcję.
- </notification>
- <notification name="VoiceEffectsNew">
- Nowe Voice Morph są dostępne!
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Nie masz dostępu do posiadłości, nie należysz do właściwej grupy.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Masz wzbroniony wstęp na tą posiadłości (ban).
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Nie masz dostępu do posiadłości, nie jesteś na liście dostępu.
- </notification>
- <notification name="VoiceNotAllowed">
- Nie masz pozwolenia na połączenie z rozmową [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- Błąd podczas łączenia z rozmową [VOICE_CHANNEL_NAME]. Spróbuj póżniej.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Nie można otworzyć wybranego SLurl.
- </notification>
- <notification name="BlockedSLURL">
- SLurl został otrzymany z niesprawdzonej przeglądarki i został zablokowany dla bezpieczeństwa.
- </notification>
- <notification name="ThrottledSLURL">
- Wiele SLurlów zostało otrzymanych w krótkim czasie od niesprawdzonej przeglądarki.
-Zostaną zablokowane na kilka sekund dla bezpieczeństwa.
- </notification>
- <notification name="IMToast">
- [MESSAGE]
- <form name="form">
- <button name="respondbutton" text="Odpowiedź"/>
- </form>
- </notification>
- <notification name="ConfirmCloseAll">
- Czy chcesz zamknąć wszystkie wiadomości IM?
- <usetemplate ignoretext="Potwierdź, przed zamknięciem wszystkich wiadomości prywatnych (IM)." name="okcancelignore" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="AttachmentSaved">
- Załącznik został zapisany.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Nie można znależć tematu pomocy dla tego elementu.
- </notification>
- <notification name="ObjectMediaFailure">
- Błąd serwera: aktualizacja mediów nie powiodła się.
-&apos;[ERROR]&apos;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TextChatIsMutedByModerator">
- Twój czat został wyciszony przez moderatora.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="VoiceIsMutedByModerator">
- Twoja rozmowa głosowa została wyciszona przez moderatora.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearTeleportHistory">
- Czy na pewno chcesz usunąć historię teleportacji?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
- </notification>
- <notification name="BottomTrayButtonCanNotBeShown">
- Wybrany przycisk nie może zostać wyświetlony w tej chwili.
-Przycisk zostanie wyświetlony w przypadku dostatecznej ilości przestrzeni.
- </notification>
- <notification name="ShareNotification">
- Zaznacz Rezydentów, z którymi chcesz się podzielić.
- </notification>
- <notification name="ShareItemsConfirmation">
- Czy na pewno chcesz udostępnić następujące obiekty:
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-następującym Rezydentom:
-
-[RESIDENTS]
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ok"/>
- </notification>
- <notification name="ItemsShared">
- Obiekty zostały udostępnione.
- </notification>
- <notification name="DeedToGroupFail">
- Przekazanie grupie nie powiodło się.
- </notification>
- <notification name="AvatarRezNotification">
- ( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; rozchmurzył się po [TIME] sekundach.
- </notification>
- <notification name="AvatarRezSelfBakedDoneNotification">
- ( [EXISTENCE] sekund w Second Life)
-You finished baking your outfit after [TIME] seconds.
- </notification>
- <notification name="AvatarRezSelfBakedUpdateNotification">
- ( [EXISTENCE] sekund w Second Life )
-Wysłano aktualizację wyglądu po [TIME] sekundach.
-[STATUS]
- </notification>
- <notification name="AvatarRezCloudNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; stał się chmurą.
- </notification>
- <notification name="AvatarRezArrivedNotification">
- ( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; pojawił się.
- </notification>
- <notification name="AvatarRezLeftCloudNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; pozostał [TIME] sekund chmurą.
- </notification>
- <notification name="AvatarRezEnteredAppearanceNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; rozpoczął edycję wyglądu.
- </notification>
- <notification name="AvatarRezLeftAppearanceNotification">
- ( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; opuścił edycję wyglądu.
- </notification>
- <notification name="NoConnect">
- Występuje problem z połączeniem [PROTOCOL] [HOSTID].
-Proszę sprawdź swoją sieć i ustawienia firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NoVoiceConnect">
- Występuje problem z Twoim połączniem głosowym:
-
-[HOSTID]
-
-Komunikacja głosowa nie będzie dostępna.
-Proszę sprawdź swoją sieć i ustawienia firewall.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AvatarRezLeftNotification">
- ( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; pozostał w pełni załadowany.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUploadNotification">
- ( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury [RESOLUTION] dla &apos;[BODYREGION]&apos; zostały załadowane po[TIME] sekundach.
- </notification>
- <notification name="AvatarRezSelfBakedTextureUpdateNotification">
- ( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury zostały lokalnie zaktualizowane [RESOLUTION] dla &apos;[BODYREGION]&apos; po [TIME] sekundach.
- </notification>
- <notification name="ConfirmLeaveCall">
- Czy jestes pewien/pewna, że chcesz zakończyć rozmowę?
- <usetemplate ignoretext="Potwierdź zanim rozmowa głosowa zostanie zakończona" name="okcancelignore" notext="Nie" yestext="Tak"/>
- </notification>
- <notification name="ConfirmMuteAll">
- Wybrano wyciszenie wszystkich uczestników rozmowy głosowej w grupie.
-To spowoduje również wyciszenie wszystkich Rezydentów, którzy dołączą póżniej do rozmowy, nawet jeśli zakończysz rozmowę.
-
-Wyciszyć wszystkich?
- <usetemplate ignoretext="Potwierdź zanim zostaną wyciszeni wszyscy uczestnicy rozmowy głosowej w grupie" name="okcancelignore" notext="Anuluj" yestext="Ok"/>
- </notification>
- <notification label="Czat" name="HintChat">
- W celu przylączenia się do rozmowy zacznij pisać w poniższym polu czatu.
- </notification>
- <notification label="Wstań" name="HintSit">
- Aby wstać i opuścić pozycję siedzącą, kliknij przycisk Wstań.
- </notification>
- <notification label="Odkrywaj Świat" name="HintDestinationGuide">
- Destination Guide zawiera tysiące nowych miejsc do odkrycia. Wybierz lokalizację i teleportuj się aby rozpocząć zwiedzanie.
- </notification>
- <notification label="Schowek" name="HintSidePanel">
- Schowek umożliwia szybki dostęp do Twojej Szafy, ubrań, profili i innych w panelu bocznym.
- </notification>
- <notification label="Ruch" name="HintMove">
- Aby chodzić lub biegać, otwórz panel ruchu i użyj strzałek do nawigacji. Możesz także używać strzałek z klawiatury.
- </notification>
- <notification label="Wyświetlana nazwa" name="HintDisplayName">
- Ustaw wyświetlaną nazwę, którą możesz zmieniać tutaj. Jest ona dodatkiem do unikatowej nazwy użytkownika, która nie może być zmieniona. Możesz zmienić sposób w jaki widzisz nazwy innych osób w Twoich Ustawieniach.
- </notification>
- <notification label="Ruch" name="HintMoveArrows">
- Użyj przycisków ze strzałkami z klawiatury aby chodzić. Jeśli wciśniesz strzałkę &apos;do góry&apos; podwójnie, zaczniesz biec.
- </notification>
- <notification label="Widok" name="HintView">
- To change your camera view, use the Orbit and Pan controls. Zresetuj widok poprzez wciśnięcie klawisza Esc lub chodzenie.
- </notification>
- <notification label="Szafa" name="HintInventory">
- Sprawdź swoją Szafę aby znaleźć obiekty. Najnowsze obiekty mogą być łatwo odnalezione w zakładce Nowe obiekty.
- </notification>
- <notification label="Otrzymano L$!" name="HintLindenDollar">
- Tutaj znajduje się Twoj bieżący bilans L$. Kliknij Kup aby kupić więcej L$.
- </notification>
- <notification name="PopupAttempt">
- Wyskakujące okienko zostało zablokowane.
- <form name="form">
- <ignore name="ignore" text="Zezwól na wyskakujące okienka"/>
- <button name="open" text="Otwórz wyskakujące okno."/>
- </form>
- </notification>
- <notification name="AuthRequest">
- Strpna &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; w domenie &apos;[REALM]&apos; wymaga nazwy użytkownika i hasła.
- <form name="form">
- <input name="username" text="Nazwa użytkownika"/>
- <input name="password" text="Hasło"/>
- <button name="ok" text="Wyślij"/>
- <button name="cancel" text="Anuluj"/>
- </form>
- </notification>
- <notification label="" name="ModeChange">
- Zmiana trybu wymaga restartu.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoClassifieds">
- Tworzenie i edycja reklam jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoGroupInfo">
- Tworzenie i edycja grup jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoPicks">
- Tworzenie i edycja Ulubionych jest możliwa jedynie w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoWorldMap">
- Oglądanie mapy świata jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoVoiceCall">
- Rozmowy głosowe są możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb?
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoAvatarShare">
- Udostępnienie jest możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <notification label="" name="NoAvatarPay">
- Płacenie innym Rezydentom jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
- <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
- </notification>
- <global name="UnsupportedCPU">
- - Prędkość Twojego CPU nie spełnia minimalnych wymagań.
- </global>
- <global name="UnsupportedGLRequirements">
- Wygląda na to, że Twój system nie spełnia wymagań sprzętowych [APP_NAME]. [APP_NAME] wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz taką kartę zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego.
-
-Jeżeli wciąż masz problemy sprawdź: [SUPPORT_SITE].
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - Twoja karta graficzna nie spełnia minimalnych wymagań.
- </global>
- <global name="UnsupportedRAM">
- - Pamięć Twojego systemu nie spełnia minimalnych wymagań.
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Jeśli jesteś właścicielem posiadłości, możesz ustawić na niej miejsce startu.
-W innym przypadku możesz poszukać na mapie miejsca oznaczone jako &quot;Infohub&quot;.
- </global>
- <global name="You died and have been teleported to your home location">
- Nastąpiła śmierć i teleportacja do Miejsca Startu.
- </global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
deleted file mode 100644
index ba0c85e4ef..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Dzwoń" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Zakończ rozmowę" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Przełączniki głosu" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
deleted file mode 100644
index f49d820938..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Włącza/wyłącza mikrofon"/>
- <string name="VoiceControlBtnToolTip" value="Pokazuje/Ukrywa panel kontroli głosu"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesturki" name="Gesture" tool_tip="Pokazuje/Ukrywa gesturki"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Widok" name="camera_btn" tool_tip="Pokaż/Ukryj ustawienia kamery"/>
- </layout_panel>
- <layout_panel name="avatar_and_destinations_panel">
- <bottomtray_button label="Atrakcje turystyczne" name="destination_btn" tool_tip="Pokaż okno dotyczące ludzi"/>
- </layout_panel>
- <layout_panel name="avatar_and_destinations_panel">
- <bottomtray_button label="Mój awatar" name="avatar_btn"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Ludzie" name="show_people_button" tool_tip="Pokazuje okno dotyczące ludzi"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Pokazuje okno profilu."/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="POMOC" name="show_help_btn" tool_tip="Otwiera temat pomocy Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Rozmowy"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Ogłoszenia"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
deleted file mode 100644
index 074f572a4c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="group_info_btn_panel">
- <button label="Grupa" name="group_info_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Dzwoń" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Zakończ rozmowę" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Otwórz kontroler głosu" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
deleted file mode 100644
index 4aadd3b93b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Profil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Poznaj" name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj"/>
- </layout_panel>
- <layout_panel name="share_btn_panel">
- <button label="Udostępnij" name="share_btn"/>
- </layout_panel>
- <layout_panel name="pay_btn_panel">
- <button label="Zapłać" name="pay_btn"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Dzwoń" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Zakończ rozmowę" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Przełączniki głosu" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_login.xml b/indra/newview/skins/minimal/xui/pl/panel_login.xml
deleted file mode 100644
index dc8e7399af..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_login.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Użytkownik:
- </text>
- <combo_box name="username_combo" tool_tip="Nazwę użytkownika wybierasz przy rejestracji, np. bobsmith12 lub Steller Sunshine"/>
- <text name="password_text">
- Hasło:
- </text>
- <check_box label="Zapamiętaj hasło" name="remember_check"/>
- <button label="Połącz" name="connect_btn"/>
- <text name="mode_selection_text">
- Tryb życia:
- </text>
- <combo_box name="mode_combo" tool_tip="Wybierz tryb życia. Wybierz tryb turystyczny dla łatwego zwiedzania i czatowania. Wybierz tryb zaawansowany aby mieć dostęp do większej ilości opcji.">
- <combo_box.item label="Turystyczny" name="Basic"/>
- <combo_box.item label="Zaawansowany" name="Advanced"/>
- </combo_box>
- <text name="start_location_text">
- Rozpocznij w:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation"/>
- <combo_box.item label="Moje Miejsce Startu" name="MyHome"/>
- <combo_box.item label="&lt;Wpisz Region&gt;" name="Typeregionname"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Utwórz nowe konto
- </text>
- <text name="forgot_password_text">
- Zapomniałeś swojej nazwy użytkownika lub hasła?
- </text>
- <text name="login_help">
- Potrzebujesz pomocy z logowaniem się?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
deleted file mode 100644
index b01e686c41..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Wróć do poprzedniej lokalizacji"/>
- <pull_button name="forward_btn" tool_tip="Idź do następnej lokalizacji"/>
- <button name="home_btn" tool_tip="Teleportuj do miejsca startu"/>
- <location_input label="Lokalizacja" name="location_combo"/>
- <search_combo_box label="Szukaj" name="search_combo_box" tool_tip="Szukaj">
- <combo_editor label="Szukaj [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
- <label name="favorites_bar_label" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
- Pasek Ulubionych
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Pokaż więcej Moich Ulubionych"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_people.xml b/indra/newview/skins/minimal/xui/pl/panel_people.xml
deleted file mode 100644
index 3b3aaa0987..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Ludzie" name="people_panel">
- <string name="no_recent_people" value="Brak ostatnich rozmówców. Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej."/>
- <string name="no_filtered_recent_people" value="Brak ostatnich rozmówców posiadających wskazane imię."/>
- <string name="no_one_near" value="Nie ma nikogo w pobliżu. Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej."/>
- <string name="no_one_filtered_near" value="Nie ma nikogo o wskazanym imieniu w pobliżu."/>
- <string name="no_friends_online" value="Brak dostępnych znajomych"/>
- <string name="no_friends" value="Brak znajomych"/>
- <string name="no_friends_msg">
- Kliknij prawym przyciskiem na Rezydenta aby dodać go do listy znajomych.
-Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej.
- </string>
- <string name="no_filtered_friends_msg">
- Nie znaleziono tego czego szukasz? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej.
- </string>
- <string name="people_filter_label" value="Filtruj ludzi"/>
- <string name="groups_filter_label" value="Filtruj grupy"/>
- <string name="no_filtered_groups_msg" value="Nie znaleziono tego czego szukasz? Spróbuj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj]."/>
- <string name="no_groups_msg" value="Chcesz dołączyć do grup? Spróbuj [secondlife:///app/search/groups Szukaj]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Podwójne kliknięcie otwiera mapę, wciśnij Shift i przeciągnij myszką aby przesunąć)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Podwójne kliknięcie aktywuje teleportację, wciśnij Shift i przeciągnij myszką aby przesunąć)"/>
- <filter_editor label="Filtr" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="W POBLIŻU" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="nearby_view_sort_btn" tool_tip="Opcje"/>
- <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
- </panel>
- </panel>
- <panel label="ZNAJOMI" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Dostępni"/>
- <accordion_tab name="tab_all" title="Wszyscy"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="options_gear_btn_panel">
- <menu_button name="friends_viewsort_btn" tool_tip="Pokaż opcje dodatkowe"/>
- </layout_panel>
- <layout_panel name="add_btn_panel">
- <button name="add_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
- </layout_panel>
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Usuń zaznaczoną osobę ze swojej listy znajomych"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="GRUPY" name="groups_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="groups_viewsort_btn" tool_tip="Opcje"/>
- <button name="plus_btn" tool_tip="Dołącz do grupy/Stwórz nową grupę"/>
- <button name="activate_btn" tool_tip="Aktywuj wybraną grupę"/>
- </panel>
- </panel>
- <panel label="OSTATNIE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <menu_button name="recent_viewsort_btn" tool_tip="Opcje"/>
- <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="IM" name="im_btn" tool_tip="Otwórz wiadomości IM"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Dzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
- </layout_panel>
- <layout_panel name="share_btn_lp">
- <button label="Udostępnij" name="share_btn" tool_tip="Udostępnij obiekt z Szafy"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Czat grupy" name="chat_btn" tool_tip="Otwórz sesję czatu"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Rozmowa głosowa w grupie" name="group_call_btn" tool_tip="Rozmowa głosowa w tej grupie"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 95cd7c53dc..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Schowek"/>
- <button name="undock" tool_tip="Odłącz"/>
- <button name="dock" tool_tip="Przyłącz"/>
- <button name="show_help" tool_tip="Pomoc"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
deleted file mode 100644
index 6aa0d27bb8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- Niedziela:Poniedziałek:Wtorek:Środa:Czwartek:Piątek:Sobota
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień
- </panel.string>
- <panel.string name="packet_loss_tooltip">
- Utracone pakiety
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Przepustowość
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <panel name="balance_bg">
- <text name="balance" tool_tip="Kliknij aby odświeżyć bilans L$" value="L$20"/>
- <button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupić więcej L$"/>
- </panel>
- <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)">
- 24:00 AM PST
- </text>
- <button name="media_toggle_btn" tool_tip="Start/Stop wszystkie media (Muzyka, Video, WWW)"/>
- <button name="volume_btn" tool_tip="Regulacja głośności"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_camera.xml b/indra/newview/skins/minimal/xui/pt/floater_camera.xml
deleted file mode 100644
index 4f3729c623..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
- <floater.string name="rotate_tooltip">
- Girar a Câmera ao redor do Foco
- </floater.string>
- <floater.string name="zoom_tooltip">
- Aproximar a Câmera in direção ao Foco
- </floater.string>
- <floater.string name="move_tooltip">
- Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
- </floater.string>
- <floater.string name="camera_modes_title">
- Modos de câmera
- </floater.string>
- <floater.string name="pan_mode_title">
- Pan zoom orbital
- </floater.string>
- <floater.string name="presets_mode_title">
- Ângulos predefinidos
- </floater.string>
- <floater.string name="free_mode_title">
- Visualizar objeto
- </floater.string>
- <panel name="controls">
- <panel name="preset_views_list">
- <panel_camera_item name="front_view">
- <panel_camera_item.text name="front_view_text">
- Vista frontal
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="group_view">
- <panel_camera_item.text name="side_view_text">
- Vista lateral
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="rear_view">
- <panel_camera_item.text name="rear_view_text">
- Vista de trás
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="camera_modes_list">
- <panel_camera_item name="object_view">
- <panel_camera_item.text name="object_view_text">
- Vista de objetos
- </panel_camera_item.text>
- </panel_camera_item>
- <panel_camera_item name="mouselook_view">
- <panel_camera_item.text name="mouselook_view_text">
- Vista do mouse
- </panel_camera_item.text>
- </panel_camera_item>
- </panel>
- <panel name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco">
- <joystick_rotate name="cam_rotate_stick" tool_tip="Girar câmera ao redor do foco"/>
- <slider_bar name="zoom_slider" tool_tip="Zoom de câmera para focalizar"/>
- <joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/>
- </panel>
- </panel>
- <panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Ângulos predefinidos"/>
- <button label="" name="pan_btn" tool_tip="Pan zoom orbital"/>
- <button label="" name="avatarview_btn" tool_tip="Modos de câmera"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
deleted file mode 100644
index 11428ff651..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="COMO">
- <floater.string name="loading_text">
- Carregando...
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="external_controls"/>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
deleted file mode 100644
index da7428007e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVEGADOR DE MÍDIA">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Atrás" name="back"/>
- <button label="Frente" name="forward"/>
- <button label="Recarregar" name="reload"/>
- <button label="OK" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="p/ trás" name="rewind"/>
- <button label="parar" name="stop"/>
- <button label="p/ frente" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Enviar esta página para lote" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Abrir no meu navegador" name="open_browser"/>
- <check_box label="Abrir sempre no meu navegador" name="open_always"/>
- <button label="Fechar" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
deleted file mode 100644
index 60edfa505f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="Bate-papo local">
- <check_box label="Traduzir bate-papo (via Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml b/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
deleted file mode 100644
index 5101579c6f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button name="back" tool_tip="Navegar para trás"/>
- <button name="forward" tool_tip="Navegar para frente"/>
- <button name="stop" tool_tip="Parar a navegação"/>
- <button name="reload" tool_tip="Recarregar página"/>
- <combo_box name="address" tool_tip="Digite a URL aqui"/>
- <icon name="media_secure_lock_flag" tool_tip="Navegação segura"/>
- <button name="popexternal" tool_tip="Abrir a URL atual no navegador do seu computador"/>
- </layout_panel>
- </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
deleted file mode 100644
index a199c58c15..0000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [IDADE]
- </string>
- <string name="Details">
- [PERFIL_SL]
- </string>
- <text name="user_details">
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
- </text>
- <slider name="volume_slider" tool_tip="Volume de Voz" value="0.5"/>
- <button label="Adicionar amigo" name="add_friend_btn"/>
- <button label="MI" name="im_btn"/>
- <button label="Perfil" name="view_profile_btn"/>
- <panel name="moderator_panel">
- <button label="Disabilitar Voz" name="disable_voice"/>
- <button label="Habilitar Voz" name="enable_voice"/>
- </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_object.xml b/indra/newview/skins/minimal/xui/pt/inspect_object.xml
deleted file mode 100644
index b72de7038d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_object">
- <string name="Creator">
- Autor: [CREATOR]
- </string>
- <string name="CreatorAndOwner">
- Autor [CREATOR]
-Proprietário [OWNER]
- </string>
- <string name="Price">
- L$[AMOUNT]
- </string>
- <string name="PriceFree">
- Grátis!
- </string>
- <string name="Touch">
- Tocar
- </string>
- <string name="Sit">
- Sentar
- </string>
- <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
- <text name="price_text">
- L$30.000
- </text>
- <text name="object_description">
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
- </text>
- <button label="Comprar" name="buy_btn"/>
- <button label="Pagar" name="pay_btn"/>
- <button label="Pegar uma cópia" name="take_free_copy_btn"/>
- <button label="Tocar" name="touch_btn"/>
- <button label="Sentar" name="sit_btn"/>
- <button label="Abrir" name="open_btn"/>
- <icon name="secure_browsing" tool_tip="Navegação segura"/>
- <button label="Mais" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
deleted file mode 100644
index 4b81276ab3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
- <menu_item_check label="Ordenar por mais recente" name="sort_by_most_recent"/>
- <menu_item_check label="Ordenar por nome" name="sort_by_name"/>
- <menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
deleted file mode 100644
index cfd69158bc..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver perfil" name="Profile..."/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/>
- <menu_item_call label="Bloquear" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Ejetar" name="Eject..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
- <menu_item_call label="Mais zoom" name="Zoom In"/>
- <menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_call label="Perfil do objeto" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
deleted file mode 100644
index 09060cf3ae..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
- <menu_item_call label="Tocar" name="Attachment Object Touch"/>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Tirar" name="Detach"/>
- <menu_item_call label="Sentar" name="Sit Down Here"/>
- <menu_item_call label="Ficar de pé" name="Stand Up"/>
- <menu_item_call label="Trocar de look" name="Change Outfit"/>
- <menu_item_call label="Editar meu look" name="Edit Outfit"/>
- <menu_item_call label="Editar meu corpo" name="Edit My Shape"/>
- <menu_item_call label="Meus amigos" name="Friends..."/>
- <menu_item_call label="Meus grupos" name="Groups..."/>
- <menu_item_call label="Meu perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
- <menu_item_call label="Largar" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
deleted file mode 100644
index beba969b7e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Ver perfil" name="Show Profile"/>
- <menu_item_call label="Enviar MI..." name="Send IM"/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="Remover amigo..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
deleted file mode 100644
index a4a26144c7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
- <menu_item_call label="Ver perfil" name="Profile..."/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="MI" name="Send IM..."/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/>
- <menu_item_call label="Bloquear" name="Avatar Mute"/>
- <menu_item_call label="Denunciar" name="abuse"/>
- <menu_item_call label="Congelar" name="Freeze..."/>
- <menu_item_call label="Ejetar" name="Eject..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
- <menu_item_call label="Mais zoom" name="Zoom In"/>
- <menu_item_call label="Pagar" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
deleted file mode 100644
index 6e203d5a25..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
- <menu_item_call label="Sentar" name="Sit Down Here"/>
- <menu_item_call label="Ficar de pé" name="Stand Up"/>
- <context_menu label="Tirar" name="Take Off &gt;">
- <context_menu label="Roupa" name="Clothes &gt;">
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Calças" name="Pants"/>
- <menu_item_call label="Saia" name="Skirt"/>
- <menu_item_call label="Sapatos" name="Shoes"/>
- <menu_item_call label="Meias" name="Socks"/>
- <menu_item_call label="Jaqueta" name="Jacket"/>
- <menu_item_call label="Luvas" name="Gloves"/>
- <menu_item_call label="Camiseta" name="Self Undershirt"/>
- <menu_item_call label="Roupa de baixo" name="Self Underpants"/>
- <menu_item_call label="Tatuagem" name="Self Tattoo"/>
- <menu_item_call label="Alpha" name="Self Alpha"/>
- <menu_item_call label="Todas as roupas" name="All Clothes"/>
- </context_menu>
- <context_menu label="HUD" name="Object Detach HUD"/>
- <context_menu label="Tirar" name="Object Detach"/>
- <menu_item_call label="Tirar tudo" name="Detach All"/>
- </context_menu>
- <menu_item_call label="Trocar de look" name="Chenge Outfit"/>
- <menu_item_call label="Editar meu look" name="Edit Outfit"/>
- <menu_item_call label="Editar meu corpo" name="Edit My Shape"/>
- <menu_item_call label="Meus amigos" name="Friends..."/>
- <menu_item_call label="Meus grupos" name="Groups..."/>
- <menu_item_call label="Meu perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
deleted file mode 100644
index 479d02512f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Botão de gestos" name="ShowGestureButton"/>
- <menu_item_check label="Botão de movimento" name="ShowMoveButton"/>
- <menu_item_check label="Botão de ver" name="ShowCameraButton"/>
- <menu_item_check label="Botão de fotos" name="ShowSnapshotButton"/>
- <menu_item_check label="Botão da Barra lateral" name="ShowSidebarButton"/>
- <menu_item_check label="Botão Construir" name="ShowBuildButton"/>
- <menu_item_check label="Botão Buscar" name="ShowSearchButton"/>
- <menu_item_check label="Botão Mapa" name="ShowWorldMapButton"/>
- <menu_item_check label="Botão do Mini Mapa" name="ShowMiniMapButton"/>
- <menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
- <menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
- <menu_item_call label="Colar" name="NearbyChatBar_Paste"/>
- <menu_item_call label="Excluir" name="NearbyChatBar_Delete"/>
- <menu_item_call label="Selecionar tudo" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
deleted file mode 100644
index 527e3af3c9..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
- <menu_item_call label="Separar" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
deleted file mode 100644
index 704fd226eb..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
- <menu_item_call label="Trocar" name="replace"/>
- <menu_item_call label="Editar" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
deleted file mode 100644
index 051323ae6a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
- <menu_item_call label="Tirar" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Trocar" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
deleted file mode 100644
index 8716992a5e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
- <menu label="Roupas novas" name="COF.Gear.New_Clothes"/>
- <menu label="Nova parte do corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_edit.xml b/indra/newview/skins/minimal/xui/pt/menu_edit.xml
deleted file mode 100644
index ff431c9a21..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Editar" name="Edit">
- <menu_item_call label="Desfazer" name="Undo"/>
- <menu_item_call label="Repetir" name="Redo"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
- <menu_item_call label="Replicar" name="Duplicate"/>
- <menu_item_call label="Selecionar tudo" name="Select All"/>
- <menu_item_call label="Desfazer seleção" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml b/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
deleted file mode 100644
index 062820fbca..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teletransportar" name="Teleport To Landmark"/>
- <menu_item_call label="Ver/Editar marco" name="Landmark Open"/>
- <menu_item_call label="Copiar SLurl" name="Copy slurl"/>
- <menu_item_call label="Mostrar no mapa" name="Show On Map"/>
- <menu_item_call label="Copiar" name="Landmark Copy"/>
- <menu_item_call label="Colar" name="Landmark Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
deleted file mode 100644
index 70d8ae7a8e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
- <menu_item_call label="Adicionar/remover de favoritos" name="activate"/>
- <menu_item_call label="Copiar" name="copy_gesture"/>
- <menu_item_call label="Colar" name="paste"/>
- <menu_item_call label="Copiar UUID" name="copy_uuid"/>
- <menu_item_call label="Salvar para look atual" name="save_to_outfit"/>
- <menu_item_call label="Editar" name="edit_gesture"/>
- <menu_item_call label="Verificar" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
deleted file mode 100644
index 1083845d68..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Entrar no grupo..." name="item_join"/>
- <menu_item_call label="Novo grupo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
deleted file mode 100644
index c2b063193e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
- <menu_item_check label="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/>
- <menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/>
- <menu_item_check label="Mostrar minibarra de localização" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
deleted file mode 100644
index 2d37cefd6f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
- <menu_item_call label="Fechar tudo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
deleted file mode 100644
index ead949ba13..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
- <menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
deleted file mode 100644
index dd177d1b8d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
- <menu_item_call label="Sobre o grupo" name="Show Profile"/>
- <menu_item_call label="Mostrar sessão" name="Chat"/>
- <menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
deleted file mode 100644
index d821b3ded0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Ver perfil" name="Show Profile"/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="Mostrar sessão" name="Send IM"/>
- <menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 90b321e0a2..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
- <menu_item_call label="Ver perfil" name="view_profile"/>
- <menu_item_call label="Adicionar amigo..." name="add_friend"/>
- <menu_item_call label="MI" name="im"/>
- <menu_item_call label="Ligar" name="call"/>
- <menu_item_call label="Teletransportar" name="teleport"/>
- <menu_item_call label="Bloquear" name="block"/>
- <menu_item_call label="Desbloquear" name="unblock"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Ejetar" name="eject"/>
- <menu_item_call label="Chutar" name="kick"/>
- <menu_item_call label="CSR" name="csr"/>
- <menu_item_call label="Depurar texturas" name="debug"/>
- <menu_item_call label="Localizar no mapa" name="find_on_map"/>
- <menu_item_call label="Mais zoom" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
deleted file mode 100644
index 184db26538..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
- <menu_item_call label="Tocar" name="touch"/>
- <menu_item_call label="Sentar" name="sit"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Comprar" name="buy"/>
- <menu_item_call label="Pegar" name="take"/>
- <menu_item_call label="Pegar uma cópia" name="take_copy"/>
- <menu_item_call label="Abrir" name="open"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Vestir" name="wear"/>
- <menu_item_call label="Adicionar" name="add"/>
- <menu_item_call label="Denunciar" name="report"/>
- <menu_item_call label="Bloquear" name="block"/>
- <menu_item_call label="Mais zoom" name="zoom_in"/>
- <menu_item_call label="Tirar" name="remove"/>
- <menu_item_call label="Mais informações" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
deleted file mode 100644
index c1f27e765d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
- <menu_item_call label="Sentar" name="Sit Down Here"/>
- <menu_item_call label="Ficar de pé" name="Stand Up"/>
- <menu_item_call label="Meus amigos" name="Friends..."/>
- <menu_item_call label="Meu perfil" name="Profile..."/>
- <menu_item_call label="Depurar texturas" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c404719c95..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
- <menu_item_call label="Fechar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
deleted file mode 100644
index 1b1efd3270..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Comprar" name="Task Buy"/>
- <menu_item_call label="Abrir" name="Task Open"/>
- <menu_item_call label="Executar" name="Task Play"/>
- <menu_item_call label="Propriedades" name="Task Properties"/>
- <menu_item_call label="Renomear" name="Task Rename"/>
- <menu_item_call label="Apagar" name="Task Remove"/>
- <menu_item_call label="Limpar lixeira" name="Empty Trash"/>
- <menu_item_call label="Limpar Achados &amp; perdidos" name="Empty Lost And Found"/>
- <menu_item_call label="Nova pasta" name="New Folder"/>
- <menu_item_call label="Novo script" name="New Script"/>
- <menu_item_call label="Nova anotação" name="New Note"/>
- <menu_item_call label="Novo gesto" name="New Gesture"/>
- <menu label="Novas roupas" name="New Clothes">
- <menu_item_call label="Nova camisa" name="New Shirt"/>
- <menu_item_call label="Nova calça" name="New Pants"/>
- <menu_item_call label="Novos sapatos" name="New Shoes"/>
- <menu_item_call label="Novas meias" name="New Socks"/>
- <menu_item_call label="Nova jaqueta" name="New Jacket"/>
- <menu_item_call label="Nova saia" name="New Skirt"/>
- <menu_item_call label="Novas luvas" name="New Gloves"/>
- <menu_item_call label="Nova anágua" name="New Undershirt"/>
- <menu_item_call label="Nova roupa de baixo" name="New Underpants"/>
- <menu_item_call label="Nova máscara alfa" name="New Alpha Mask"/>
- <menu_item_call label="Nova tatuagem" name="New Tattoo"/>
- </menu>
- <menu label="Nova parte do corpo" name="New Body Parts">
- <menu_item_call label="Nova forma" name="New Shape"/>
- <menu_item_call label="Nova pele" name="New Skin"/>
- <menu_item_call label="Novo cabelo" name="New Hair"/>
- <menu_item_call label="Novos olhos" name="New Eyes"/>
- </menu>
- <menu label="Alterar fonte" name="Change Type">
- <menu_item_call label="Padrão" name="Default"/>
- <menu_item_call label="Luvas" name="Gloves"/>
- <menu_item_call label="Jaqueta" name="Jacket"/>
- <menu_item_call label="Calças" name="Pants"/>
- <menu_item_call label="Silhueta" name="Shape"/>
- <menu_item_call label="Sapatos" name="Shoes"/>
- <menu_item_call label="Camisa" name="Shirt"/>
- <menu_item_call label="Saia" name="Skirt"/>
- <menu_item_call label="Roupa de baixo" name="Underpants"/>
- <menu_item_call label="Camiseta" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teletransporte" name="Landmark Open"/>
- <menu_item_call label="Abrir" name="Animation Open"/>
- <menu_item_call label="Abrir" name="Sound Open"/>
- <menu_item_call label="Substituir look" name="Replace Outfit"/>
- <menu_item_call label="Adicionar a look" name="Add To Outfit"/>
- <menu_item_call label="Tirar do look atual" name="Remove From Outfit"/>
- <menu_item_call label="Encontrar original" name="Find Original"/>
- <menu_item_call label="Remover item" name="Purge Item"/>
- <menu_item_call label="Restaurar item" name="Restore Item"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Abrir original" name="Open Original"/>
- <menu_item_call label="Propriedades" name="Properties"/>
- <menu_item_call label="Renomear" name="Rename"/>
- <menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Colar como link" name="Paste As Link"/>
- <menu_item_call label="Excluir" name="Remove Link"/>
- <menu_item_call label="Apagar" name="Delete"/>
- <menu_item_call label="Excluir pasta do sistema" name="Delete System Folder"/>
- <menu_item_call label="Pasta conversa em conferência" name="Conference Chat Folder"/>
- <menu_item_call label="Executar som" name="Sound Play"/>
- <menu_item_call label="Sobre o marco" name="About Landmark"/>
- <menu_item_call label="Executar animação" name="Animation Play"/>
- <menu_item_call label="Executar áudio" name="Animation Audition"/>
- <menu_item_call label="Mandar MI" name="Send Instant Message"/>
- <menu_item_call label="Oferecer teletransporte..." name="Offer Teleport..."/>
- <menu_item_call label="Bate-papo em conferência" name="Conference Chat"/>
- <menu_item_call label="Ativar" name="Activate"/>
- <menu_item_call label="Desativar" name="Deactivate"/>
- <menu_item_call label="Salvar como" name="Save As"/>
- <menu_item_call label="Tirar de si mesmo" name="Detach From Yourself"/>
- <menu_item_call label="Vestir" name="Wearable And Object Wear"/>
- <menu label="Anexar a" name="Attach To"/>
- <menu label="Anexar ao HUD" name="Attach To HUD"/>
- <menu_item_call label="Editar" name="Wearable Edit"/>
- <menu_item_call label="Adicionar" name="Wearable Add"/>
- <menu_item_call label="Tirar" name="Take Off"/>
- <menu_item_call label="--Sem opções--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
deleted file mode 100644
index 2723f39287..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <menu label="Upload" name="upload">
- <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/>
- <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/>
- <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/>
- <menu_item_call label="Volume (L$[COST] per file)..." name="Bulk Upload"/>
- <menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
- </menu>
- <menu_item_call label="Nova pasta" name="New Folder"/>
- <menu_item_call label="Novo script" name="New Script"/>
- <menu_item_call label="Nova anotação" name="New Note"/>
- <menu_item_call label="Novo gesto" name="New Gesture"/>
- <menu label="Novas roupas" name="New Clothes">
- <menu_item_call label="Nova camisa" name="New Shirt"/>
- <menu_item_call label="Novas calças" name="New Pants"/>
- <menu_item_call label="Novos sapatos" name="New Shoes"/>
- <menu_item_call label="Novas meias" name="New Socks"/>
- <menu_item_call label="Nova blusa" name="New Jacket"/>
- <menu_item_call label="Nova saia" name="New Skirt"/>
- <menu_item_call label="Novas luvas" name="New Gloves"/>
- <menu_item_call label="Nova camiseta" name="New Undershirt"/>
- <menu_item_call label="Novas roupa de baixo" name="New Underpants"/>
- <menu_item_call label="Novo alpha" name="New Alpha"/>
- <menu_item_call label="Nova tatuagem" name="New Tattoo"/>
- </menu>
- <menu label="Nova parte do corpo" name="New Body Parts">
- <menu_item_call label="Nova forma" name="New Shape"/>
- <menu_item_call label="Nova pele" name="New Skin"/>
- <menu_item_call label="Novo cabelo" name="New Hair"/>
- <menu_item_call label="Novos olhos" name="New Eyes"/>
- </menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
deleted file mode 100644
index 3400578d9a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
- <menu_item_call label="Nova janela de inventário" name="new_window"/>
- <menu_item_check label="Ordenar por nome" name="sort_by_name"/>
- <menu_item_check label="Ordenar por mais recente" name="sort_by_recent"/>
- <menu_item_check label="Pastas do sistema no topo" name="sort_system_folders_to_top"/>
- <menu_item_call label="Mostrar filtros" name="show_filters"/>
- <menu_item_call label="Restabelecer filtros" name="reset_filters"/>
- <menu_item_call label="Fechar todas as pastas" name="close_folders"/>
- <menu_item_call label="Esvaziar achados e perdidos" name="empty_lostnfound"/>
- <menu_item_call label="Salvar textura como" name="Save Texture As"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Encontrar original" name="Find Original"/>
- <menu_item_call label="Encontrar todos os links" name="Find All Links"/>
- <menu_item_call label="Esvaziar lixeira" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_land.xml b/indra/newview/skins/minimal/xui/pt/menu_land.xml
deleted file mode 100644
index 9182ce321a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
- <menu_item_call label="Sobre terrenos" name="Place Information..."/>
- <menu_item_call label="Sentar aqui" name="Sit Here"/>
- <menu_item_call label="Comprar este terreno" name="Land Buy"/>
- <menu_item_call label="Comprar passe" name="Land Buy Pass"/>
- <menu_item_call label="Construir" name="Create"/>
- <menu_item_call label="Editar a topografia" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
deleted file mode 100644
index 6accfebee7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copiar SLurl" name="copy"/>
- <menu_item_call label="Excluir" name="delete"/>
- <menu_item_call label="Criar destaque" name="pick"/>
- <menu_item_call label="Adicionar à barra de favoritos" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_login.xml b/indra/newview/skins/minimal/xui/pt/menu_login.xml
deleted file mode 100644
index 3dff3d7c8a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
- <menu label="Eu" name="File">
- <menu_item_call label="Preferências" name="Preferences..."/>
- <menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
- </menu>
- <menu label="Ajuda" name="Help">
- <menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/>
- <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
- </menu>
- <menu_item_check label="Exibir menu de depuração" name="Show Debug Menu"/>
- <menu label="Depurar" name="Debug">
- <menu_item_call label="Mostrar configurações" name="Debug Settings"/>
- <menu_item_call label="Configurações da interface e cor" name="UI/Color Settings"/>
- <menu label="Testes de UI" name="UI Tests"/>
- <menu_item_call label="Definir tamanho da janela:" name="Set Window Size..."/>
- <menu_item_call label="Mostrar TOS" name="TOS"/>
- <menu_item_call label="Mostrar mensagem crítica" name="Critical"/>
- <menu_item_call label="Teste de mídia do navegador" name="Web Browser Test"/>
- <menu_item_call label="Teste de conteúdo web" name="Web Content Floater Test"/>
- <menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
- <menu_item_call label="Exibir painel de notificações" name="Show Notifications Console"/>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
deleted file mode 100644
index 6a3fe55de5..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Zoom Perto" name="Zoom Close"/>
- <menu_item_call label="Zoom Médio" name="Zoom Medium"/>
- <menu_item_call label="Zoom Longe" name="Zoom Far"/>
- <menu_item_call label="Zoom padrão" name="Zoom Default"/>
- <menu_item_check label="Girar mapa" name="Rotate Map"/>
- <menu_item_check label="Auto Center" name="Auto Center"/>
- <menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/>
- <menu_item_call label="Mapa-múndi" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
deleted file mode 100644
index 57c1471de3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/>
- <menu_item_call label="Marco" name="Landmark"/>
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
- <menu_item_call label="Selecionar tudo" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
deleted file mode 100644
index f1ea83c837..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
- <menu_item_call label="Mostrar quem está aqui..." name="nearby_people"/>
- <menu_item_check label="Mostrar texto bloqueado" name="muted_text"/>
- <menu_item_check label="Mostrar ícones de amigos" name="show_buddy_icons"/>
- <menu_item_check label="Mostrar nomes" name="show_names"/>
- <menu_item_check label="Mostrar ícones e nomes" name="show_icons_and_names"/>
- <menu_item_call label="Tamanho da fonte" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
deleted file mode 100644
index 43ad4134ec..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
- <menu_item_call label="Fechar tudo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object.xml b/indra/newview/skins/minimal/xui/pt/menu_object.xml
deleted file mode 100644
index bf94859699..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
- <menu_item_call label="Tocar" name="Object Touch">
- <menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/>
- </menu_item_call>
- <menu_item_call label="Editar" name="Edit..."/>
- <menu_item_call label="Construir" name="Build"/>
- <menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Sentar aqui" name="Object Sit"/>
- <menu_item_call label="Ficar de pé" name="Object Stand Up"/>
- <menu_item_call label="Perfil do objeto" name="Object Inspect"/>
- <menu_item_call label="Mais zoom" name="Zoom In"/>
- <context_menu label="Colocar no(a)" name="Put On">
- <menu_item_call label="Vestir" name="Wear"/>
- <menu_item_call label="Adicionar" name="Add"/>
- <context_menu label="Anexar" name="Object Attach"/>
- <context_menu label="Anexar o HUD" name="Object Attach HUD"/>
- </context_menu>
- <context_menu label="Tirar" name="Remove">
- <menu_item_call label="Denunciar abuso" name="Report Abuse..."/>
- <menu_item_call label="Bloquear" name="Object Mute"/>
- <menu_item_call label="Devolver" name="Return..."/>
- <menu_item_call label="Excluir" name="Delete"/>
- </context_menu>
- <menu_item_call label="Pegar" name="Pie Object Take"/>
- <menu_item_call label="Pegar uma cópia" name="Take Copy"/>
- <menu_item_call label="Pagar" name="Pay..."/>
- <menu_item_call label="Comprar" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
deleted file mode 100644
index 7af760a6ee..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
- <menu_item_call label="Perfil do objeto..." name="Object Profile"/>
- <menu_item_call label="Bloquear..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
deleted file mode 100644
index 11b3e653c6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
- <menu_item_call label="Vestir - Substituir look atual" name="wear"/>
- <menu_item_call label="Vestir - Adicionar ao look atual" name="wear_add"/>
- <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/>
- <menu label="Roupas novas" name="New Clothes">
- <menu_item_call label="Nova camisa" name="New Shirt"/>
- <menu_item_call label="Novas calças" name="New Pants"/>
- <menu_item_call label="Novos sapatos" name="New Shoes"/>
- <menu_item_call label="Novas meias" name="New Socks"/>
- <menu_item_call label="Nova blusa" name="New Jacket"/>
- <menu_item_call label="Nova saia" name="New Skirt"/>
- <menu_item_call label="Novas luvas" name="New Gloves"/>
- <menu_item_call label="Nova camiseta" name="New Undershirt"/>
- <menu_item_call label="Novas roupa de baixo" name="New Underpants"/>
- <menu_item_call label="Novo alpha" name="New Alpha"/>
- <menu_item_call label="Nova tatuagem" name="New Tattoo"/>
- </menu>
- <menu label="Nova parte do corpo" name="New Body Parts">
- <menu_item_call label="Nova silhueta" name="New Shape"/>
- <menu_item_call label="Nova pele" name="New Skin"/>
- <menu_item_call label="Novo cabelo" name="New Hair"/>
- <menu_item_call label="Novos olhos" name="New Eyes"/>
- </menu>
- <menu_item_call label="Renomear look" name="rename"/>
- <menu_item_call label="Excluir visual" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
deleted file mode 100644
index 8db5e405b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
- <menu_item_call label="Vestir - Substituir look atual" name="wear_replace"/>
- <menu_item_call label="Vestir - Sem tirar look atual" name="wear_add"/>
- <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/>
- <menu_item_call label="Editar look" name="edit"/>
- <menu_item_call label="Renomear look" name="rename"/>
- <menu_item_call label="Excluir visual" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
deleted file mode 100644
index 01f1d4ef80..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
- <menu_item_check label="Ordenar por nome" name="SortByName"/>
- <menu_item_check label="Ordenar por conversas mais recentes" name="SortByRecentSpeakers"/>
- <menu_item_call label="Ver perfil" name="View Profile"/>
- <menu_item_call label="Adicionar amigo..." name="Add Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ver ícones de pessoas" name="View Icons"/>
- <menu_item_check label="Bloquear voz" name="Block/Unblock"/>
- <menu_item_check label="Bloquear texto" name="MuteText"/>
- <context_menu label="Opções do moderador &gt;" name="Moderator Options">
- <menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>
- <menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Silenciar todos" name="ModerateVoiceMute"/>
- <menu_item_call label="Desfazer silenciar para todos" name="ModerateVoiceUnmute"/>
- </context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
deleted file mode 100644
index e7c325010f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por nome" name="sort_name"/>
- <menu_item_check label="Ordenar por status" name="sort_status"/>
- <menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
- <menu_item_check label="Autorizações de visualização dadas" name="view_permissions"/>
- <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
deleted file mode 100644
index 9a924ad7b9..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Ver dados" name="View Info"/>
- <menu_item_call label="Bate-papo" name="Chat"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Ativar" name="Activate"/>
- <menu_item_call label="Sair" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
deleted file mode 100644
index 86a9d2263f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Mostrar ícones de grupos" name="Display Group Icons"/>
- <menu_item_call label="Sair do grupo selecionado" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
deleted file mode 100644
index b446a2fe81..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
- <menu_item_call label="Ver perfil" name="View Profile"/>
- <menu_item_call label="Adicionar amigo" name="Add Friend"/>
- <menu_item_call label="Remover amigo" name="Remove Friend"/>
- <menu_item_call label="IM" name="IM"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Mapa" name="Map"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
- <menu_item_call label="Teletransportar?" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 79edb96b1c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Adicionar amigo..." name="Add Friends"/>
- <menu_item_call label="Remover amigo..." name="Remove Friend"/>
- <menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Ligar" name="Call"/>
- <menu_item_call label="Compartilhar" name="Share"/>
- <menu_item_call label="Pagar" name="Pay"/>
- <menu_item_call label="Teletransportar?" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 228ce46a31..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/>
- <menu_item_check label="Ordenar por nome" name="sort_name"/>
- <menu_item_check label="Ordenar por distância" name="sort_distance"/>
- <menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
- <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
deleted file mode 100644
index f3b89e01cd..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_check label="Ordenar por mais recente" name="sort_most"/>
- <menu_item_check label="Ordenar por nome" name="sort_name"/>
- <menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
- <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks.xml b/indra/newview/skins/minimal/xui/pt/menu_picks.xml
deleted file mode 100644
index 8b9e10fc02..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Editar" name="pick_edit"/>
- <menu_item_call label="Teletransportar" name="pick_teleport"/>
- <menu_item_call label="Mapa" name="pick_map"/>
- <menu_item_call label="Excluir" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
deleted file mode 100644
index 95a7c05262..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
- <menu_item_call label="Adicionar" name="create_pick"/>
- <menu_item_call label="Novo anúncio" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place.xml b/indra/newview/skins/minimal/xui/pt/menu_place.xml
deleted file mode 100644
index 282ea20a7a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Criar marco" name="landmark"/>
- <menu_item_call label="Criar destaque" name="pick"/>
- <menu_item_call label="Comprar passe" name="pass"/>
- <menu_item_call label="Editar" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
deleted file mode 100644
index d099d04f8d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Adicionar pasta" name="add_folder"/>
- <menu_item_call label="Adicionar marco" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
deleted file mode 100644
index 2059a9ed2d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
- <menu_item_call label="Adicionar marco" name="add_landmark"/>
- <menu_item_call label="Adicionar pasta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar" name="copy_folder"/>
- <menu_item_call label="Colar" name="paste"/>
- <menu_item_call label="Renomear" name="rename"/>
- <menu_item_call label="Excluir" name="delete"/>
- <menu_item_call label="Expanda" name="expand"/>
- <menu_item_call label="Recolher" name="collapse"/>
- <menu_item_call label="Expandir todas as pastas" name="expand_all"/>
- <menu_item_call label="Recolher todas as pastas" name="collapse_all"/>
- <menu_item_check label="Ordenar por data" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
deleted file mode 100644
index 52a9d13735..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teletransportar" name="teleport"/>
- <menu_item_call label="Mais informações" name="more_info"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Adicionar marco" name="add_landmark"/>
- <menu_item_call label="Adicionar pasta" name="add_folder"/>
- <menu_item_call label="Cortar" name="cut"/>
- <menu_item_call label="Copiar marco" name="copy_landmark"/>
- <menu_item_call label="Copiar SLurl" name="copy_slurl"/>
- <menu_item_call label="Colar" name="paste"/>
- <menu_item_call label="Renomear" name="rename"/>
- <menu_item_call label="Excluir" name="delete"/>
- <menu_item_call label="Expandir todas as pastas" name="expand_all"/>
- <menu_item_call label="Recolher todas as pastas" name="collapse_all"/>
- <menu_item_check label="Ordenar por data" name="sort_by_date"/>
- <menu_item_call label="Criar destaque" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
deleted file mode 100644
index d41ecbd755..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
- <menu_item_call label="Mapa" name="show_on_map"/>
- <menu_item_call label="Pagar" name="pay"/>
- <menu_item_call label="Compartilhar" name="share"/>
- <menu_item_call label="Bloquear" name="block"/>
- <menu_item_call label="Desbloquear" name="unblock"/>
- <menu_item_call label="Chutar" name="kick"/>
- <menu_item_call label="Congelar" name="freeze"/>
- <menu_item_call label="Descongelar" name="unfreeze"/>
- <menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
deleted file mode 100644
index 61c6b9202f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
- <menu_item_call label="Salvar" name="save_outfit"/>
- <menu_item_call label="Salvar como" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
deleted file mode 100644
index ccf3878e14..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
- <menu_item_call label="Fechar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
deleted file mode 100644
index 6d4c84fc3c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Sobre a URL" name="about_url"/>
- <menu_item_call label="Teletransporte para a URL" name="teleport_to_url"/>
- <menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
deleted file mode 100644
index f034509be8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
- <menu_item_call label="Expandir todas as pastas" name="Expand all folders"/>
- <menu_item_call label="Recolher todas as pastas" name="Collapse all folders"/>
- <menu_item_call label="Limpar histórico de teletransporte" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
deleted file mode 100644
index ec1e7a0950..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Teletransportar" name="Teleport"/>
- <menu_item_call label="Mais informações" name="More Information"/>
- <menu_item_call label="Copiar" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
deleted file mode 100644
index 6a633cf74c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
- <menu_item_call label="Abrir" name="TabOpen"/>
- <menu_item_call label="Fechar" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
deleted file mode 100644
index 31c284c6ed..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
- <menu_item_call label="Cortar" name="Cut"/>
- <menu_item_call label="Copiar" name="Copy"/>
- <menu_item_call label="Colar" name="Paste"/>
- <menu_item_call label="Excluir" name="Delete"/>
- <menu_item_call label="Selecionar tudo" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
deleted file mode 100644
index d9347950b1..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
- <menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/>
- <menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/>
- <menu_item_call label="Marco" name="Landmark"/>
- <menu_item_call label="Copiar" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
deleted file mode 100644
index ba5e055124..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar perfil de residente" name="show_agent"/>
- <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml b/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
deleted file mode 100644
index 5b67a69c9a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações do grupo" name="show_group"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml b/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
deleted file mode 100644
index e53a2572b8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Abrir página da web" name="url_open"/>
- <menu_item_call label="Abrir no navegador do SL" name="url_open_internal"/>
- <menu_item_call label="Abrir no navegador externo" name="url_open_external"/>
- <menu_item_call label="Copiar URL para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
deleted file mode 100644
index 45c14355d0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar item de inventário" name="show_item"/>
- <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml b/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
deleted file mode 100644
index ba114cccaa..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
deleted file mode 100644
index c197444181..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações sobre o objeto" name="show_object"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
- <menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
deleted file mode 100644
index 6cc668bfd3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações sobre este lote" name="show_parcel"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
deleted file mode 100644
index d0784149ac..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Executar este comando" name="run_slapp"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
deleted file mode 100644
index 7216ccf0b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Mostrar informações sobre este lugar" name="show_place"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
deleted file mode 100644
index f007425646..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Teletransportar para este lugar" name="teleport"/>
- <menu_item_call label="Mostrar no mapa" name="show_on_map"/>
- <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml b/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
deleted file mode 100644
index 2bd1e88279..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
- <menu label="Ajuda" name="Help">
- <menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
- </menu>
- <menu label="Avançado" name="Advanced">
- <menu label="Atalhos" name="Shortcuts">
- <menu_item_check label="Voar" name="Fly"/>
- <menu_item_call label="Fechar janela" name="Close Window"/>
- <menu_item_call label="Fechar todas as janelas" name="Close All Windows"/>
- <menu_item_call label="Visão padrão" name="Reset View"/>
- </menu>
- </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
deleted file mode 100644
index 2487f6779f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
- <menu_item_call label="Trocar" name="wear_replace"/>
- <menu_item_call label="Vestir" name="wear_wear"/>
- <menu_item_call label="Adicionar" name="wear_add"/>
- <menu_item_call label="Tirar / Separar" name="take_off_or_detach"/>
- <menu_item_call label="Separar" name="detach"/>
- <context_menu label="Colocar em" name="wearable_attach_to"/>
- <context_menu label="Anexar ao HUD" name="wearable_attach_to_hud"/>
- <menu_item_call label="Tirar" name="take_off"/>
- <menu_item_call label="Editar" name="edit"/>
- <menu_item_call label="Perfil do item" name="object_profile"/>
- <menu_item_call label="Mostrar original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
deleted file mode 100644
index 7b6ce4d87e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
- <menu_item_call label="Editar look" name="edit"/>
- <menu_item_call label="Tirar" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
deleted file mode 100644
index 4e6e52ebc7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
- <menu_item_call label="Tirar" name="take_off"/>
- <menu_item_call label="Tirar" name="detach"/>
- <menu_item_call label="Editar look" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/notifications.xml b/indra/newview/skins/minimal/xui/pt/notifications.xml
deleted file mode 100644
index 69c4cb3b3e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <notification name="UserGiveItem">
- [NAME_SLURL] quer lhe dar [ITEM_SLURL]. Esta ação requer o modo Avançado. Passe para o modo avançado e você verá o item em seu inventário. Para passar para o modo avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
- <form name="form">
- <button name="Show" text="Guardar item"/>
- <button name="Discard" text="Recusar item"/>
- <button name="Mute" text="Bloquear usuário"/>
- </form>
- </notification>
- <notification name="ObjectGiveItem">
- Um objeto chamado &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, de [NAME_SLURL], está oferecendo &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; a você. Esta ação requer o modo Avançado. Passe para o modo Avançado e você verá o item em seu Inventário. Para passar para o modo Avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
- <form name="form">
- <button name="Keep" text="Guardar item"/>
- <button name="Discard" text="Recusar item"/>
- <button name="Mute" text="Bloquear objeto"/>
- </form>
- </notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
deleted file mode 100644
index bd50d4953d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="call_btn_panel">
- <button label="Ligar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Desligar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Controles de voz" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
deleted file mode 100644
index 9b4eb2c2b8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
- <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
- <string name="SpeakBtnToolTip" value="Liga e desliga o microfone"/>
- <string name="VoiceControlBtnToolTip" value="Mostra/oculta os controles de voz"/>
- <layout_stack name="toolbar_stack">
- <layout_panel name="speak_panel">
- <button label="Falar" name="speak_btn" tool_tip="Ligar/desligar seu microfone"/>
- </layout_panel>
- <layout_panel name="speak_flyout_panel">
- <button label="" name="flyout_btn" tool_tip="Mudar as preferências de áudio"/>
- </layout_panel>
- <layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesto" name="Gesture" tool_tip="Fazer seu avatar agir"/>
- </layout_panel>
- <layout_panel name="cam_panel">
- <bottomtray_button label="Exibir" name="camera_btn" tool_tip="Controlar ângulo da câmera"/>
- </layout_panel>
- <layout_panel name="destinations_panel">
- <bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar no Second Life"/>
- </layout_panel>
- <layout_panel name="avatar_panel">
- <bottomtray_button label="Meu avatar" name="avatar_btn" tool_tip="Trocar seu visual"/>
- </layout_panel>
- <layout_panel name="people_panel">
- <bottomtray_button label="Pessoas" name="show_people_button" tool_tip="Encontrar pessoas no Second Life"/>
- </layout_panel>
- <layout_panel name="profile_panel">
- <bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Ver e editar seu perfil"/>
- </layout_panel>
- <layout_panel name="howto_panel">
- <bottomtray_button label="Como..." name="show_help_btn" tool_tip="Opções de ajuda do Second Life"/>
- </layout_panel>
- <layout_panel name="im_well_panel">
- <chiclet_im_well name="im_well">
- <button name="Unread IM messages" tool_tip="Conversas"/>
- </chiclet_im_well>
- </layout_panel>
- <layout_panel name="notification_well_panel">
- <chiclet_notification name="notification_well">
- <button name="Unread" tool_tip="Notificações"/>
- </chiclet_notification>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
deleted file mode 100644
index 177cee28a6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="vertical_stack">
- <layout_panel name="end_call_btn_panel">
- <button label="Desligar" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="voice_ctrls_btn_panel">
- <button label="Abrir controles de voz" name="voice_ctrls_btn"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
deleted file mode 100644
index 190323c3b0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <layout_stack name="button_stack">
- <layout_panel name="view_profile_btn_panel">
- <button label="Perfil" name="view_profile_btn"/>
- </layout_panel>
- <layout_panel name="add_friend_btn_panel">
- <button label="Adicionar amigo..." name="add_friend_btn"/>
- </layout_panel>
- <layout_panel name="teleport_btn_panel">
- <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
- </layout_panel>
- <layout_panel name="call_btn_panel">
- <button label="Ligar" name="call_btn"/>
- </layout_panel>
- <layout_panel name="end_call_btn_panel">
- <button label="Encerrar ligação" name="end_call_btn"/>
- </layout_panel>
- <layout_panel name="block_btn_panel">
- <button label="Bloquear" name="block_btn"/>
- </layout_panel>
- <layout_panel name="unblock_btn_panel">
- <button label="Desbloquear" name="unblock_btn"/>
- </layout_panel>
- <layout_panel name="volume_ctrl_panel">
- <slider name="volume_slider" tool_tip="Volume da ligação" value="0.5"/>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_login.xml b/indra/newview/skins/minimal/xui/pt/panel_login.xml
deleted file mode 100644
index de9717874f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://join.secondlife.com/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php?lang=pt
- </panel.string>
- <layout_stack name="login_widgets">
- <layout_panel name="login">
- <text name="username_text">
- Nome de usuário:
- </text>
- <combo_box name="username_combo" tool_tip="O nome de usuário que você escolheu ao fazer seu cadastro, como zecazc12 or Magia Solar"/>
- <text name="password_text">
- Senha:
- </text>
- <check_box label="Lembrar senha" name="remember_check"/>
- <button label="conectar" name="connect_btn"/>
- <text name="mode_selection_text">
- Modo:
- </text>
- <combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
- <combo_box.item label="Básico" name="Basic"/>
- <combo_box.item label="Avançado" name="Advanced"/>
- </combo_box>
- </layout_panel>
- <layout_panel name="links">
- <text name="create_new_account_text">
- Cadastre-se
- </text>
- <text name="forgot_password_text">
- Esqueceu seu nome ou senha?
- </text>
- <text name="login_help">
- Precisa de ajuda ao conectar?
- </text>
- </layout_panel>
- </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
deleted file mode 100644
index 01930bf3b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
- <panel name="navigation_panel">
- <pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
- <pull_button name="forward_btn" tool_tip="Avançar uma região"/>
- <button name="home_btn" tool_tip="Teletransportar para meu início"/>
- <location_input label="Onde" name="location_combo"/>
- <search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca">
- <combo_editor label="Buscar no [SECOND_LIFE]" name="search_combo_editor"/>
- </search_combo_box>
- </panel>
- <favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
- <label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
- Barra Destaques
- </label>
- <chevron_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos"/>
- </favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_people.xml b/indra/newview/skins/minimal/xui/pt/panel_people.xml
deleted file mode 100644
index 0e98c586c6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Pessoas" name="people_panel">
- <string name="no_recent_people" value="Ninguém, recentemente. Em busca de alguém para conversar? Confira o botão Destinos abaixo."/>
- <string name="no_filtered_recent_people" value="Não há ninguém com esse nome ultimamente."/>
- <string name="no_one_near" value="Ninguém por perto Em busca de alguém para conversar? Confira o botão Destinos abaixo."/>
- <string name="no_one_filtered_near" value="Não há ninguém com esse nome por perto."/>
- <string name="no_friends_online" value="Nenhum amigo online"/>
- <string name="no_friends" value="Nenhum amigo"/>
- <string name="no_friends_msg">
- Clique em um residente com o botão direito to mouse para adicioná-lo como amigo.
-Em busca de alguém para conversar? Confira o botão Destinos abaixo.
- </string>
- <string name="no_filtered_friends_msg">
- Não encontrou o que procura? Confira o botão Destinos abaixo.
- </string>
- <string name="people_filter_label" value="Filtro de pessoas"/>
- <string name="groups_filter_label" value="Filtro de grupos"/>
- <string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/>
- <string name="no_groups_msg" value="À procura de grupos interessantes? Tente fazer uma [secondlife:///app/search/groups Busca]."/>
- <string name="MiniMapToolTipMsg" value="[REGION](Clique duplo para abrir o Mapa, botão Shift e arrastar para ver mais)"/>
- <string name="AltMiniMapToolTipMsg" value="[REGION](Clique duplo para se teletransportar, botão Shift e arrastar para ver mais)"/>
- <filter_editor label="Filtro" name="filter_input"/>
- <tab_container name="tabs">
- <panel label="PROXIMIDADE" name="nearby_panel">
- <panel label="bottom_panel" name="bottom_panel"/>
- </panel>
- <panel label="MEUS AMIGOS" name="friends_panel">
- <accordion name="friends_accordion">
- <accordion_tab name="tab_online" title="Online"/>
- <accordion_tab name="tab_all" title="Todos"/>
- </accordion>
- <panel label="bottom_panel" name="bottom_panel">
- <layout_stack name="bottom_panel">
- <layout_panel name="trash_btn_panel">
- <dnd_button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/>
- </layout_panel>
- </layout_stack>
- </panel>
- </panel>
- <panel label="RECENTE" name="recent_panel">
- <panel label="bottom_panel" name="bottom_panel">
- <button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
- </panel>
- </panel>
- </tab_container>
- <panel name="button_bar">
- <layout_stack name="bottom_bar_ls">
- <layout_panel name="view_profile_btn_lp">
- <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
- </layout_panel>
- <layout_panel name="im_btn_lp">
- <button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
- </layout_panel>
- <layout_panel name="call_btn_lp">
- <button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
- </layout_panel>
- <layout_panel name="teleport_btn_lp">
- <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
- </layout_panel>
- </layout_stack>
- <layout_stack name="bottom_bar_ls1">
- <layout_panel name="group_info_btn_lp">
- <button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir dados do grupo"/>
- </layout_panel>
- <layout_panel name="chat_btn_lp">
- <button label="Bate-papo de grupo" name="chat_btn" tool_tip="Nova sessão de bate-papo"/>
- </layout_panel>
- <layout_panel name="group_call_btn_lp">
- <button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/>
- </layout_panel>
- </layout_stack>
- </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 09444a5535..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
- <text name="sidetray_tab_title" value="Bandeja lateral"/>
- <button name="undock" tool_tip="Soltar janela"/>
- <button name="dock" tool_tip="Ancorar janela"/>
- <button name="show_help" tool_tip="Mostrar ajuda"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
deleted file mode 100644
index db564d2aaa..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="packet_loss_tooltip">
- Perda de pacote
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Banda
- </panel.string>
- <panel.string name="time">
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
- </panel.string>
- <panel.string name="timeTooltip">
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
- <combo_box.item label="Modo básico" name="Basic"/>
- <combo_box.item label="Modo avançado" name="Advanced"/>
- </combo_box>
- <button name="media_toggle_btn" tool_tip="Tocar/Pausar todas mídias (música, vídeo, páginas web)"/>
- <button name="volume_btn" tool_tip="Volume geral"/>
-</panel>
diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp
new file mode 100644
index 0000000000..10e37fae97
--- /dev/null
+++ b/indra/newview/tests/lltranslate_test.cpp
@@ -0,0 +1,345 @@
+/**
+ * @file lltranslate_test.cpp
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "../test/lltut.h"
+#include "../lltranslate.h"
+#include "../llversioninfo.h"
+#include "../llviewercontrol.h"
+
+#include "llbufferstream.h"
+#include "lltrans.h"
+#include "llui.h"
+
+static const std::string GOOGLE_VALID_RESPONSE1 =
+"{\
+ \"data\": {\
+ \"translations\": [\
+ {\
+ \"translatedText\": \"привет\",\
+ \"detectedSourceLanguage\": \"es\"\
+ }\
+ ]\
+ }\
+}";
+
+static const std::string GOOGLE_VALID_RESPONSE2 =
+"{\
+ \"data\": {\
+ \"translations\": [\
+ {\
+ \"translatedText\": \"привет\"\
+ }\
+ ]\
+ }\
+}\
+";
+
+static const std::string GOOGLE_VALID_RESPONSE3 =
+"{\
+ \"error\": {\
+ \"errors\": [\
+ {\
+ \"domain\": \"global\",\
+ \"reason\": \"invalid\",\
+ \"message\": \"Invalid Value\"\
+ }\
+ ],\
+ \"code\": 400,\
+ \"message\": \"Invalid Value\"\
+ }\
+}";
+
+static const std::string BING_VALID_RESPONSE1 =
+"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет</string>";
+
+static const std::string BING_VALID_RESPONSE2 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: </p>\
+<p>Message: 'from' must be a valid language</p><code></code>\
+<p>message id=3743.V2_Rest.Translate.58E8454F</p></body></html>";
+
+static const std::string BING_VALID_RESPONSE3 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p>\
+<p>Parameter: appId</p><p>Message: Invalid appId&#xD;\nParameter name: appId</p>\
+<code></code><p>message id=3737.V2_Rest.Translate.56016759</p></body></html>";
+
+namespace tut
+{
+ class translate_test
+ {
+ protected:
+ void test_translation(
+ LLTranslationAPIHandler& handler,
+ int status, const std::string& resp,
+ const std::string& exp_trans, const std::string& exp_lang, const std::string& exp_err)
+ {
+ std::string translation, detected_lang, err_msg;
+ bool rc = handler.parseResponse(status, resp, translation, detected_lang, err_msg);
+ ensure_equals("rc", rc, (status == 200));
+ ensure_equals("err_msg", err_msg, exp_err);
+ ensure_equals("translation", translation, exp_trans);
+ ensure_equals("detected_lang", detected_lang, exp_lang);
+ }
+
+ LLGoogleTranslationHandler mGoogle;
+ LLBingTranslationHandler mBing;
+ };
+
+ typedef test_group<translate_test> translate_test_group_t;
+ typedef translate_test_group_t::object translate_test_object_t;
+ tut::translate_test_group_t tut_translate("LLTranslate");
+
+ template<> template<>
+ void translate_test_object_t::test<1>()
+ {
+ test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE1, "привет", "es", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<2>()
+ {
+ test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE2, "привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<3>()
+ {
+ test_translation(mGoogle, 400, GOOGLE_VALID_RESPONSE3, "", "", "Invalid Value");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<4>()
+ {
+ test_translation(mGoogle, 400,
+ "",
+ "", "", "* Line 1, Column 1\n Syntax error: value, object or array expected.\n");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<5>()
+ {
+ test_translation(mGoogle, 400,
+ "[]",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<6>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"oops\": \"invalid\"}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<7>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": {}}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<8>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": { \"translations\": [ {} ] }}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<9>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": { \"translations\": [ { \"translatedTextZZZ\": \"привет\", \"detectedSourceLanguageZZZ\": \"es\" } ] }}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<10>()
+ {
+ test_translation(mBing, 200, BING_VALID_RESPONSE1, "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<11>()
+ {
+ test_translation(mBing, 400, BING_VALID_RESPONSE2, "", "", "'from' must be a valid language");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<12>()
+ {
+ test_translation(mBing, 400, BING_VALID_RESPONSE3, "", "", "Invalid appId\nParameter name: appId");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<13>()
+ {
+ test_translation(mBing, 200,
+ "Привет</string>",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<14>()
+ {
+ test_translation(mBing, 200,
+ "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<15>()
+ {
+ test_translation(mBing, 200,
+ "Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<16>()
+ {
+ test_translation(mBing, 400,
+ "Message: some error</p>",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<17>()
+ {
+ test_translation(mBing, 400,
+ "Message: some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<18>()
+ {
+ test_translation(mBing, 400,
+ "some error</p>",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<19>()
+ {
+ test_translation(mBing, 400,
+ "some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<20>()
+ {
+ std::string url;
+ mBing.getTranslateURL(url, "en", "es", "hi");
+ ensure_equals("bing URL", url,
+ "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es&from=en");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<21>()
+ {
+ std::string url;
+ mBing.getTranslateURL(url, "", "es", "hi");
+ ensure_equals("bing URL", url,
+ "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<22>()
+ {
+ std::string url;
+ mGoogle.getTranslateURL(url, "en", "es", "hi");
+ ensure_equals("google URL", url,
+ "https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es&source=en");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<23>()
+ {
+ std::string url;
+ mGoogle.getTranslateURL(url, "", "es", "hi");
+ ensure_equals("google URL", url,
+ "https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es");
+ }
+}
+
+//== Misc stubs ===============================================================
+LLControlGroup gSavedSettings("test");
+
+std::string LLUI::getLanguage() { return "en"; }
+std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return "dummy"; }
+
+LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) {}
+std::string LLControlGroup::getString(const std::string& name) { return "dummy"; }
+LLControlGroup::~LLControlGroup() {}
+
+namespace boost {
+ void intrusive_ptr_add_ref(LLCurl::Responder*) {}
+ void intrusive_ptr_release(LLCurl::Responder*) {}
+}
+
+LLCurl::Responder::Responder() {}
+void LLCurl::Responder::completedHeader(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::completedRaw(U32, const std::string&, const LLChannelDescriptors&, const LLIOPipe::buffer_ptr_t& buffer) {}
+void LLCurl::Responder::completed(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::error(U32, std::string const&) {}
+void LLCurl::Responder::errorWithContent(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::result(LLSD const&) {}
+LLCurl::Responder::~Responder() {}
+
+void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32) {}
+void LLHTTPClient::get(const std::string&, boost::intrusive_ptr<LLCurl::Responder>, const LLSD&, const F32) {}
+
+LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer)
+: std::iostream(&mStreamBuf), mStreamBuf(channels, buffer) {}
+LLBufferStream::~LLBufferStream() {}
+
+LLBufferStreamBuf::LLBufferStreamBuf(const LLChannelDescriptors&, LLBufferArray*) {}
+#if( LL_WINDOWS || __GNUC__ > 2)
+LLBufferStreamBuf::pos_type LLBufferStreamBuf::seekoff(
+ off_type off,
+ std::ios::seekdir way,
+ std::ios::openmode which)
+#else
+streampos LLBufferStreamBuf::seekoff(
+ streamoff off,
+ std::ios::seekdir way,
+ std::ios::openmode which)
+#endif
+{ return 0; }
+int LLBufferStreamBuf::sync() {return 0;}
+int LLBufferStreamBuf::underflow() {return 0;}
+int LLBufferStreamBuf::overflow(int) {return 0;}
+LLBufferStreamBuf::~LLBufferStreamBuf() {}
+
+S32 LLVersionInfo::getBuild() { return 0; }
+const std::string& LLVersionInfo::getChannel() {static std::string dummy; return dummy;}
+S32 LLVersionInfo::getMajor() { return 0; }
+S32 LLVersionInfo::getMinor() { return 0; }
+S32 LLVersionInfo::getPatch() { return 0; }
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index f0bee2bfee..0931c4ec9b 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -495,8 +495,9 @@ class WindowsManifest(ViewerManifest):
# tag:"crash-logger" here as a cue to the exporter
self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'],
dst="win_crash_logger.exe")
- self.path(src='../win_updater/%s/windows-updater.exe' % self.args['configuration'],
- dst="updater.exe")
+# For CHOP-397, windows updater no longer used.
+# self.path(src='../win_updater/%s/windows-updater.exe' % self.args['configuration'],
+# dst="updater.exe")
if not self.is_packaging_viewer():
self.package_file = "copied_deps"
@@ -573,10 +574,10 @@ class WindowsManifest(ViewerManifest):
grid_vars_template = """
OutFile "%(installer_file)s"
!define INSTFLAGS "%(flags)s"
- !define INSTNAME "SecondLifeViewer2"
- !define SHORTCUT "Second Life Viewer 2"
+ !define INSTNAME "SecondLifeViewer"
+ !define SHORTCUT "Second Life Viewer"
!define URLNAME "secondlife"
- Caption "Second Life ${VERSION}"
+ Caption "Second Life"
"""
else:
# beta grid viewer
@@ -804,7 +805,7 @@ class DarwinManifest(ViewerManifest):
self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script))
def package_finish(self):
- channel_standin = 'Second Life Viewer 2' # hah, our default channel is not usable on its own
+ channel_standin = 'Second Life Viewer' # hah, our default channel is not usable on its own
if not self.default_channel():
channel_standin = self.channel()